Synide – User talk

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
Line 434: Line 434:
**otochlaven_1
**otochlaven_1
***gatling_2 (34)
***gatling_2 (34)
----
== ODOL v40 File Format ==
=== Introduction ===
The general file format of a ArmA ODOL v40 p3d model file is similar to the ODOL v7 format.
The major differences are that in ArmA models there is now included (but not always) a model.cfg and the resolutions are ordered in the file in reverse numerical order.
The order of resolutions denoted in the header portion of the file is <b>not</b> necessarily the numerical order of the resolutions. (often the 11,000 resolution is the last in the header array)
The header resolutions need to be sorted in descending order. The resultant sorted array of resolutions is the order in which they appear in the file.
==== Legend ====
{| border="0"
!width="100"|Type
!width="300" align="left"|Description
|-
|-
|align="middle"|byte||align="left"| 8 bit (1 byte)
|-
|align="middle"|ushort||align="left"| 16 bit unsigned short (2 bytes)
|-
|align="middle"|int||align="left"| 32 bit signed integer (4 bytes)
|-
|align="middle"|float||align="left"| 32 bit signed single precision floating point value (4 bytes)
|-
|align="middle"|asciiz||align="left"| Null terminated (0x00) variable length ascii string
|-
|-
|}
=== Structures ===
<code><nowiki>
struct structP3DHeader
{
  string Filetype; //eg. ODOL
  int Version;    //eg. 0x2800 0000 = 40
  int NoOfResolutions;
  float[NoOfResolutions] HeaderResolutions;
}
</nowiki></code>
=== Enums ===
<code><nowiki>
int enum PixelShaderId
{
  Normal = 0x00,
  NormalMap = 0x02,
  NormalMapMacroASSpecularMap = 0x14,
  NormalMapSpecularDIMap = 0x16,
  NormalMapMacroASSpecularDIMap = 0x18,
  AlphaShadow = 0x0C,
  AlphaNoShadow = 0x0D,
  Glass = 0x38,
  Detail = 0x06,
  NormalMapSpecularMap = 0x12
}
</nowiki></code>
<code><nowiki>
int enum VertexShaderId
{
  Basic = 0x00,
  NormalMap = 0x01,
  NormalMapAS = 0x0F
}
</nowiki></code>
=== File Format ===
<code><nowiki>
ODOLv40
{
}
</nowiki></code>
=== Reference Tables ===
Note: These are not part of the p3d model file but are reference tables used for processing.
==== Resolutions ====
<code><nowiki>
refResolutions
{
  float  Resolution;
  string ResolutionName;
}
</nowiki></code>
{| border="0"
!width="50" align="left"|Value
!width="150" align="left"|Value
!width="300" align="left"|Description
|-
|-
|align="left"|1.0e3||align="left"|1,000||align="left"|View Gunner
|-
|align="left"|1.1e3||align="left"|1,100||align="left"|View Pilot
|-
|align="left"|1.2e3||align="left"|1,200||align="left"|View Cargo
|-
|align="left"|1.0e4||align="left"|10,000||align="left"|Stencil Shadow
|-
|align="left"|1.001e4||align="left"|10,010||align="left"|Stencil Shadow 2
|-
|align="left"|1.1e4||align="left"|11000||align="left"|Shadow Volume
|-
|align="left"|1.101e4||align="left"|11010||align="left"|Shadow Volume 2
|-
|align="left"|1.0e13||align="left"|10,000,000,000,000||align="left"|Geometry
|-
|align="left"|1.0e15||align="left"|1,000,000,000,000,000||align="left"|Memory
|-
|align="left"|2.0e15||align="left"|2,000,000,000,000,000||align="left"|Land Contact
|-
|align="left"|3.0e15||align="left"|3,000,000,000,000,000||align="left"|Roadway
|-
|align="left"|4.0e15||align="left"|4,000,000,000,000,000||align="left"|Paths
|-
|align="left"|5.0e15||align="left"|5,000,000,000,000,000||align="left"|HitPoints
|-
|align="left"|6.0e15||align="left"|6,000,000,000,000,000||align="left"|View Geometry
|-
|align="left"|7.0e15||align="left"|7,000,000,000,000,000||align="left"|Fire Geometry
|-
|align="left"|8.0e15||align="left"|8,000,000,000,000,000||align="left"|View Cargo Geometry
|-
|align="left"|9.0e15||align="left"|9,000,000,000,000,000||align="left"|View Cargo Fire Geometry
|-
|align="left"|1.0e16||align="left"|10,000,000,000,000,000||align="left"|View Commander
|-
|align="left"|1.1e16||align="left"|11,000,000,000,000,000||align="left"|View Commander Geometry
|-
|align="left"|1.2e16||align="left"|12,000,000,000,000,000||align="left"|View Commander Fire Geometry
|-
|align="left"|1.3e16||align="left"|13,000,000,000,000,000||align="left"|View Pilot Geometry
|-
|align="left"|1.4e16||align="left"|14,000,000,000,000,000||align="left"|View Pilot Fire Geometry
|-
|align="left"|1.5e16||align="left"|15,000,000,000,000,000||align="left"|View Gunner Geometry
|-
|align="left"|1.6e16||align="left"|16,000,000,000,000,000||align="left"|View Gunner Fire Geometry
|-
|-
|}
==== Material Stages ====
The number of material stages is dependant on the type of Shader that is used to process the material by the ArmA game engine.
<code><nowiki>
refShaderStages
{
  int PixelShaderId;
  int NoOfStages;
};
</nowiki></code>
{| border="0"
!width="350" align="left"|PixelShaderId
!width="50" align="left"|NoOfStages
|-
|-
|align="left"|PixelShaderId.Normal||align="left"|0
|-
|align="left"|PixelShaderId.NormalMapSpecularDIMap||align="left"|2
|-
|align="left"|PixelShaderId.AlphaNoShadow||align="left"|0
|-
|align="left"|PixelShaderId.AlphaShadow||align="left"|0
|-
|align="left"|PixelShaderId.NormalMapMacroASSpecularDIMap||align="left"|4
|-
|align="left"|PixelShaderId.Glass||align="left"|2
|-
|align="left"|PixelShaderId.Detail||align="left"|1
|-
|align="left"|PixelShaderId.NormalMap||align="left"|3
|-
|align="left"|PixelShaderId.NormalMapMacroASSpecularMap||align="left"|4
|-
|align="left"|PixelShaderId.NormalMapSpecularMap||align="left"|2
|-
|-
|}

Revision as of 15:47, 10 August 2007

The following is temporary...


This is my init.sqf file I use in all my missions. It correctly identifies in what context the init.sqf file is being run.

/* Synide 11/6/2007 v1.0 Things to note... If you are there at mission launch from that point on your 'Context' will always be 'MP_CLIENT' and will stay as such even when you respawn. If you are an 'MP_CLIENT' then you 'disconnect' from a continuing mission and select a new playable character or the same playable character you will become a 'JIP_CLIENT'. If you join an inprogress mission you will be a 'JIP_CLIENT' from that point till the mission ends. */ //init.sqf debug=false; if (isServer) then { if (isnull player) then {Context = "mp_server";}else{Context = "sp_server";}; }else{ if (isnull player) then {Context = "jip_client";}else{Context = "mp_client";}; }; call compile preprocessFileLineNumbers "scripts\common\init.sqf"; call compile preprocessFileLineNumbers format["scripts\%1\init.sqf",Context]; processInitCommands; finishMissionInit;

Things to note about the above for MP only.

  • If you are there at mission launch from that point on your 'Context' will always be 'MP_CLIENT' and will stay as such even when you respawn.
  • If you are an 'MP_CLIENT' then you 'disconnect' from the continuing mission and select a new playable character you will become a 'JIP_CLIENT'.
  • If you join an inprogress mission you will be a 'JIP_CLIENT' from that point till the mission ends.

LOD Stuff

A typical 'character' model has approx. 16 LOD's.

10000 is the 'Stencil Shadow' LOD.

  • What is LOD 10010?

What is the 11000 LOD, seems to have approx. 1/3 of the Poly's of a 'Stencil Shadow' LOD.

What is LOD 11010?



Model Stuff

  • OFP2_ManSkeleton (has 75 Bones)
    • neck
      • neck1
        • head
          • lbrow
          • mbrow
          • rbrow
          • lmouth
          • mmouth
          • rmouth
          • eyelids (10)
          • llip
    • weapon
    • launcher
    • camera
    • spine
    • spine1
    • spine2
    • spine3
    • pelvis
    • leftshoulder (20)
    • leftarm
    • leftarmroll
    • leftforearm
    • leftforearmroll
    • lefthand
    • lefthandring
    • lefthandring1
    • lefthandring2
    • lefthandring3
    • lefthandpinky1 (30)
    • lefthandpinky2
    • lefthandpinky3
    • lefthandmiddle1
    • lefthandmiddle2
    • lefthandmiddle3
    • lefthandindex1
    • lefthandindex2
    • lefthandindex3
    • lefthandthumb1
    • lefthandthumb2 (40)
    • lefthandthumb3
    • rightshoulder
    • rightarm
    • rightarmroll
    • rightforearm
    • rightforearmroll
    • righthand
    • righthandring
    • righthandring1
    • righthandring2 (50)
    • righthandring3
    • righthandpinky1
    • righthandpinky2
    • righthandpinky3
    • righthandmiddle1
    • righthandmiddle2
    • righthandmiddle3
    • righthandindex1
    • righthandindex2
    • righthandindex3 (60)
    • righthandthumb1
    • righthandthumb2
    • righthandthumb3
    • leftupleg
    • leftuplegroll
    • leftleg
    • leftlegroll
    • leftfoot
    • lefttoebase
    • rightupleg (70)
    • rightuplegroll
    • rightleg
    • rightlegroll
    • rightfoot
    • righttoebase (75)

M1_Abrams.p3d

  • Has 19 LOD's.
  • 1,2,3.5,7,10,15,20,1000,1200,10000,10010, 1.0e13 (Geometry), 1.0e15 (Memory), 2.0e15 (LandContact), 5.0e15 (Hitpoints), 6.0e15 (View Geometry), 7.0e15 (Fire Geometry),11000 and 11010.
  • The first LOD in the file (which ever LOD that might be...) has 6302 Poly's.
This first LOD has 20 Components
otochlaven (has 735 selected faces)
otocvez (has 1634 selected faces)
zasleh (has 1 selected face)
otocvelitele (has 651 selected faces)
poklop_commander (has 432 selected faces)
poklop_gunner (has 170 selected faces)
proxy:\ca\temp\proxies\abrams\gunner.01
proxy:\ca\wheeled\flag_alone.01
proxy:\ca\temp\proxies\abrams\commander.01
otochlavenvelitele (has 2668 selected faces)
feedtray_cover (has 85 selected faces)
bolt (has 6 selected faces)
charging_handle (has 50 selected faces)
\ca\weapons\m2_static.01 (has 1158 selected faces)
zasleh_1 (has 1 selected face)
telo (has 6297 selected faces)
damagehide (has 792 selected faces)
damagevez (has 317 selected faces)
proxy:\ca\weapons\zasleh2_proxy.001 (has 1 selected face)
proxy:\ca\weapons\zasleh2_proxy.002 (has 1 selected face)
  • Has 1 property. (lodnoshadow=1)


M1A1Skeleton (has 81 Bones)

  • koll1
  • koll2
  • koll3
  • koll4
  • koll5
  • koll6
  • koll7
  • koll8
  • kolp1
  • kolp2 (10)
  • kolp3
  • kolp4
  • kolp5
  • kolp6
  • kolp7
  • kolp8
  • podkolol1
    • kolol1
    • podkolol1_hide
  • podkolol2 (20)
    • kolol2
    • podkolol2_hide
  • podkolol3
    • kolol3
    • podkolol3_hide
  • podkolol4
    • kolol4
    • podkolol4_hide
  • podkolol5
    • kolol5 (30)
    • podkolol5_hide
  • podkolol6
    • kolol6
    • podkolol6_hide
  • podkolol7
    • kolol7
    • podkolol7_hide
  • podkolol8
    • kolol8
    • podkolol8_hide (40)
  • podkolop1
    • kolop1
    • podkolop1_hide
  • podkolop2
    • kolop2
    • podkolop2_hide
  • podkolop3
    • kolop3
    • podkolop3_hide
  • podkolop4 (50)
    • kolop4
    • podkolop4_hide
  • podkolop5
    • kolop5
    • podkolop5_hide
  • podkolop6
    • kolop6
    • podkolop6_hide
  • podkolop7
    • kolop7 (60)
    • podkolop7_hide
  • podkolop8
    • kolop8
    • podkolop8_hide
  • ukaz_rychlo
  • ukaz_rychlo2
  • ukaz_rpm
  • ukaz_radar
  • hodinova
  • minutova (70)
  • kompas
  • ukazsmer
  • damagehide
  • otocvez
    • otochlaven
    • otocvelitele
      • otochlavenvelitele
      • poklop_commander
    • poklop_gunner
    • damagevez (80)
  • poklop_driver


Animation Selections (61 in total)

No. AnimSelection AnimSource
[0] damageHide damage
[1] HatchDriver hatchDriver
[2] Wheel_kolL1 wheelL
[3] Wheel_koloL1 wheelL
[4] Wheel_podkoloL1 damper
[5] Wheel_kolP1 wheelR
[6] Wheel_koloP1 wheelR
[7] Wheel_podkoloP1 damper
[8] Wheel_kolL2 wheelL
[9] Wheel_kolP2 wheelR
[10] Wheel_koloL2 wheelL
[11] Wheel_koloL3 wheelL
[12] Wheel_koloL4 wheelL
[13] Wheel_koloL5 wheelL
[14] Wheel_koloL6 wheelL
[15] Wheel_koloL7 wheelL
[16] Wheel_koloP2 wheelR
[17] Wheel_koloP3 wheelR
[18] Wheel_koloP4 wheelR
[19] Wheel_koloP5 wheelR
[20] Wheel_koloP6 wheelR
[21] Wheel_koloP7 wheelR
[22] Wheel_podkoloL2 damper
[23] Wheel_podkoloL3 damper
[24] Wheel_podkoloL4 damper
[25] Wheel_podkoloL5 damper
[26] Wheel_podkoloL6 damper
[27] Wheel_podkoloL7 damper
[28] Wheel_podkoloL8 damper
[29] Wheel_podkoloP2 damper
[30] Wheel_podkoloP3 damper
[31] Wheel_podkoloP4 damper
[32] Wheel_podkoloP5 damper
[33] Wheel_podkoloP6 damper
[34] Wheel_podkoloP7 damper
[35] Wheel_podkoloP8 damper
[36] podkoloL1_hide_damage damage
[37] podkoloL2_hide_damage damage
[38] podkoloL3_hide_damage damage
[39] podkoloL4_hide_damage damage
[40] podkoloL5_hide_damage damage
[41] podkoloL6_hide_damage damage
[42] podkoloL7_hide_damage damage
[43] podkoloL8_hide_damage damage
[44] podkoloP1_hide_damage damage
[45] podkoloP2_hide_damage damage
[46] podkoloP3_hide_damage damage
[47] podkoloP4_hide_damage damage
[48] podkoloP5_hide_damage damage
[49] podkoloP6_hide_damage damage
[50] podkoloP7_hide_damage damage
[51] podkoloP8_hide_damage damage
[52] damageVez damage
[53] MainTurret mainTurret
[54] MainGun mainGun
[55] ObsTurret obsTurret
[56] ObsGun obsGun
[57] HatchCommander hatchCommander
[58] OtocVelitele_damage damage
[59] poklop_commander_damage damage
[60] poklop_driver_damage damage



UH_60MG.p3d

Basically a good Air Model should have about 8 LOD's + the necessary LOD's.

  • Has 24 LOD's.
  • 1,2,3,4,5,6,7,8, 1000, 1100, 1200, 10000, 10010, 1.0e13 (Geometry), 1.0e15 (Memory), 2.0e15 (LandContact), 5.0e15 (Hitpoints), 6.0e15 (View Geometry), 7.0e15 (Fire Geometry), 8.0e15 (View Cargo-Geometry), 1.3e16 (View Pilot-Geometry), 1.5e16 (View Gunner-Geometry), 11000 and 11010.
  • Has approx. 14768 Poly's in most detailed LOD.

UH60MGSkeleton (has 34 Bones)

  • velka vrtule
  • mala vrtule
  • otocvez
    • otochlaven
      • gatling_1
  • alt
  • alt2
  • nm_alt
  • nm_alt2
  • mph (10)
  • mph2
  • vert_speed
  • vert_speed2
  • rpm
  • rpm2
  • horizont_dive
    • horizont
  • horizont2_dive
    • horizont2
  • kompas (20)
  • kompas2
  • hodinova
  • hodinova2
  • minutova
  • minutova2
  • damagehide
  • rotorshaft
  • dampers
  • damper_rear
  • elevator (30)
  • horizont_dive2
  • otocvez_1
    • otochlaven_1
      • gatling_2 (34)




ODOL v40 File Format

Introduction

The general file format of a ArmA ODOL v40 p3d model file is similar to the ODOL v7 format. The major differences are that in ArmA models there is now included (but not always) a model.cfg and the resolutions are ordered in the file in reverse numerical order.

The order of resolutions denoted in the header portion of the file is not necessarily the numerical order of the resolutions. (often the 11,000 resolution is the last in the header array) The header resolutions need to be sorted in descending order. The resultant sorted array of resolutions is the order in which they appear in the file.


Legend

Type Description
byte 8 bit (1 byte)
ushort 16 bit unsigned short (2 bytes)
int 32 bit signed integer (4 bytes)
float 32 bit signed single precision floating point value (4 bytes)
asciiz Null terminated (0x00) variable length ascii string


Structures

struct structP3DHeader { string Filetype; //eg. ODOL int Version; //eg. 0x2800 0000 = 40 int NoOfResolutions; float[NoOfResolutions] HeaderResolutions; }

Enums

int enum PixelShaderId { Normal = 0x00, NormalMap = 0x02, NormalMapMacroASSpecularMap = 0x14, NormalMapSpecularDIMap = 0x16, NormalMapMacroASSpecularDIMap = 0x18, AlphaShadow = 0x0C, AlphaNoShadow = 0x0D, Glass = 0x38, Detail = 0x06, NormalMapSpecularMap = 0x12 }

int enum VertexShaderId { Basic = 0x00, NormalMap = 0x01, NormalMapAS = 0x0F }

File Format

ODOLv40 { }

Reference Tables

Note: These are not part of the p3d model file but are reference tables used for processing.

Resolutions

refResolutions { float Resolution; string ResolutionName; }

Value Value Description
1.0e3 1,000 View Gunner
1.1e3 1,100 View Pilot
1.2e3 1,200 View Cargo
1.0e4 10,000 Stencil Shadow
1.001e4 10,010 Stencil Shadow 2
1.1e4 11000 Shadow Volume
1.101e4 11010 Shadow Volume 2
1.0e13 10,000,000,000,000 Geometry
1.0e15 1,000,000,000,000,000 Memory
2.0e15 2,000,000,000,000,000 Land Contact
3.0e15 3,000,000,000,000,000 Roadway
4.0e15 4,000,000,000,000,000 Paths
5.0e15 5,000,000,000,000,000 HitPoints
6.0e15 6,000,000,000,000,000 View Geometry
7.0e15 7,000,000,000,000,000 Fire Geometry
8.0e15 8,000,000,000,000,000 View Cargo Geometry
9.0e15 9,000,000,000,000,000 View Cargo Fire Geometry
1.0e16 10,000,000,000,000,000 View Commander
1.1e16 11,000,000,000,000,000 View Commander Geometry
1.2e16 12,000,000,000,000,000 View Commander Fire Geometry
1.3e16 13,000,000,000,000,000 View Pilot Geometry
1.4e16 14,000,000,000,000,000 View Pilot Fire Geometry
1.5e16 15,000,000,000,000,000 View Gunner Geometry
1.6e16 16,000,000,000,000,000 View Gunner Fire Geometry


Material Stages

The number of material stages is dependant on the type of Shader that is used to process the material by the ArmA game engine.

refShaderStages { int PixelShaderId; int NoOfStages; };

PixelShaderId NoOfStages
PixelShaderId.Normal 0
PixelShaderId.NormalMapSpecularDIMap 2
PixelShaderId.AlphaNoShadow 0
PixelShaderId.AlphaShadow 0
PixelShaderId.NormalMapMacroASSpecularDIMap 4
PixelShaderId.Glass 2
PixelShaderId.Detail 1
PixelShaderId.NormalMap 3
PixelShaderId.NormalMapMacroASSpecularMap 4
PixelShaderId.NormalMapSpecularMap 2