Wrp File Format - 4WVR: Difference between revisions
m (WRP 4WVR FORMAT moved to Wrp File Format 4WVR: changed title for alphabetic sanity in category) |
m (Wrp File Format 4WVR moved to Wrp File Format - 4WVR: sanity in alphabetic listing) |
(No difference)
|
Revision as of 13:51, 13 July 2006
General
Flashpoint wrp files use two different file formats to contain the data. This document contains information on 4WVR format as used by WrpTool (necromatix.com), and with BIStudio's tool "O2light".
This document does not discuss the alternate format, OPWR. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon).
"Binarize" tool by BIStudio will convert 4WVR to OPRW if desired.
(some problems exist with 2 versions of binarize)
Conventions
Intel byte order, lsb first byte = 1 char = 8 bits ulong = unsigned long, 4 bytes ushort= unsigned short 2 bytes asciiz= variable length zero terminated string. float= 4byte (single precision)
Structure
struct { byte Signature[4]; //"4WVR" ulong Xsize; //(=256) cell dimension ulong Ysize; //(=256) cell dimension short Elevations[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes See Note short TextureIndex[Ysize][Xsize]; // eg 2*256*256 = 131072 bytes //Each 'index' refers to a filename below. Max value = 511 Asciiz TextureFilenames[512][32]; /* A max of 512 texture files can be listed. Each is held as an asciiz string inside a fixed 32 byte record. Eg max length of filename is 31 characters. example: data\pi.paa */
struct model { float TransformMatrix[12]; //see below long 3DobjectIndex; //the unique ouid for this model asciiz Filename[76]; //each string is held within a 76 byte record. Therefore filename is 75 chars max. }[variable];
//...see below
};
Note1
TransformMatrix[4][3];
This is the transform matrix used directly by Micro$oft DirectX engines.
In fact, the 'correct' matrix is actually 4 x 4, but the last column always represents 0,0,0,1 thus
M11,M12 M13 (0.0) M21,M22,M23 (0.0) M31,M32,M33 (0.0) M41,M42,M43 (1.0)
and so is never stored. This identical matrix is used for WRP files (both formats) and RTM files. The last row (M41...) happens to be the position of the object X Z Y co-ordinates, and is often referred to separately.
For further information visit here
Note2
The number of models varies from none, to end of file. Each model is 128 bytes in length.