Wrp File Format - 4WVR: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (→‎Note1: Fixed Microsoft spelling - No irony in technical documents, please.)
m (→‎General: Visitor is used to edit wrp, not O2)
Line 1: Line 1:
{{unsupported-doc}}
{{unsupported-doc}}
==General==
==General==
''Flashpoint wrp files use two different file formats to contain the data. This document contains information on 4WVR format as used by [[OFP: Community Tools | WrpTool]] and with BIStudio's tool "O2light"[[Oxygen Light | "O2light"]].  
''Flashpoint wrp files use two different file formats to contain the data. This document contains information on 4WVR format as used by [[OFP: Community Tools | WrpTool]] and [[Visitor 2]].  


This document does '''not''' discuss the alternate format, [[Wrp File Format - OPRW|OPRW]]. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon). ''
This document does '''not''' discuss the alternate format, [[Wrp File Format - OPRW|OPRW]]. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon). ''

Revision as of 10:44, 31 January 2007

Template:unsupported-doc

General

Flashpoint wrp files use two different file formats to contain the data. This document contains information on 4WVR format as used by WrpTool and Visitor 2.

This document does not discuss the alternate format, OPRW. Both file formats can be used directly by the engine, whether the file exists independently in ~\worlds, or, packed inside a pbo (addon).

See General Wrp format for further info.

"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 Microsoft 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

See Wrp file format. General

Note2

The number of models varies from none, to end of file. Each model is 128 bytes in length.