P3D File Format - ODOLV4x – Talk

From Bohemia Interactive Community
Revision as of 06:55, 14 January 2009 by Mikero (talk | contribs) (Determining stage count)
Jump to navigation Jump to search

In structSkeleton the data type bool is used. Is it 1 byte with possible values 0 and 1? --Vektorboson 22:55, 19 July 2008 (CEST)

Yes, I believe it is. Amended, article to a 'byte' with 0x00=false, 0x01=true. -- Sy 04:56, 20 July 2008 (CEST)


I will use this page to keep track of some of my thoughts: --T_D 23:56, 3 January 2009 (CET)

  1. ModelProxies should be part of structResolution imo
  2. byteArrayUnknown1 could consist of at least a few floats
  3. Unknown could contain something like modelCenter or boundingBox
  4. Mass data should be somewhere


Yeah, sorry, haven't updated this article in a long time. Quite, alot of extra info. could be added but tbh haven't had the motivation and of course some or all of the stuff may or may not be accurate.
Here's the area 'tween the Header and the Skeleton...
Information moved into main text Mikero (nee Ook?) 07:40, 10 January 2009 (CET)
btw... the ModelInfo.ModelMassVector1_blah's are inaccurately identified, just old placeholder names that have never been updated.
Cheers, -- Sy 10:59, 6 January 2009 (CET)

Stage UVtransforms

i have altered the struct from

float aside[3]; //this doesn't appear to be correct
float up[3];    //it looks more like a direct X transform matrix
float dir[3];   //
float pos[3];   //

to

float Transform[3][4];  

because it appears to closely match the directX as per other p3d type files (MLOD for ofp eg)

Mikero (nee Ook?) 12:20, 10 January 2009 (CET)

Determining stage count

the values for PixelShaderID's 8,10 and 0x3C are 'wrong' for some few official arma p3d's

it *seems* to be dependent on the VertexShaderId

pond.p3d par exemple

type 10 needs to be +1 if VertexShaderId==8 and perhaps any other non-zero value (only ever seen 0, or 8)

type 8 needs to be +1 only a VertexShaderId==8 ever seen

jablon.p3d eg

type 0x3c needs to be = 3 (not 0) for all files encountered (all files encountered have a non zero VertexShaderId of varying counts)