Geometry (RW Section)
|RW Stream Section|
Geometry is a container section used in DFF files as child of a Geometry List section. The section itself does not store any data at all. All additional information get stored inside a struct section which directly follows this one as a child. Geometry is one of the most important sections inside a
.dff model file. It stores geometry information for models (like the mesh and the texture maps).
The structure differs for most files, but it always gets introduced by the following set of values:
2b - WORD - Flags (See below) 1b - BYTE - Number of UV coordinates (up to 8 sets of UVs, GTA default is 1, 2 for vehicles with reflection maps) 1b - BYTE - Geometry native flags // 0x01 rpGEOMETRYNATIVE // 0x02 rpGEOMETRYNATIVEINSTANCE 4b - DWORD - Triangle count 4b - DWORD - Vertex count 4b - DWORD - Number of morphing targets (blend shapes). Morphing is not used in GTA series, so only one "target" is presented.
For all versions below 184.108.40.206 also some lightning color values are stored.
4b - float - Ambient 4b - float - Diffuse 4b - float - Specular
The following flags descripe the behaviour of the mesh during the rendering progress. Some of the flags indicate the existance of data inside the following file format.
||Is triangle strip (if disabled it will be an triangle list)|
||Vertex translation (|
||Texture coordinates 1 (|
||Vertex colors (|
||Store normals (|
||Dynamic vertex lightning (?)|
||Modulate material color|
||Texture coordinates 2 (|
All of those flags (except the first) are used to build up the flexible vertex format (FVF) .
If flag 8 is enabled vertex color information for each vertex get stored up next:
4b - DWORD - Vertex color (RwRGBA)
With San Andreas Rockstar's engine is able to change the vertex colors for ingame nights. Therefor there is an custom section called Night Vertex Colors. This prevents the game from loading new models at different times and increments the performance of the engine. Previous games stored copies of the model with different prelightning information and defined it inside the TOBJ IDE section.
If flag 4 or 128 is set texture coordinates are following next. If both are set then the texture coordinates for the first texture of all vertices are listed before the texture coordinates for the second chanel of all vertices. There's a maximum of 8 sets for texture coordinates, but GTA games use only first (diffuse map) or second (reflection map) set.
4b - FLOAT - Texture coordinate U 4b - FLOAT - Texture coordinate V
The following array holds indices and material IDs for each triangle. The number of indices is represented by the third multiple of the triangle count value. So for each triangle the following format gets used:
2b - WORD - Index of second vertex 2b - WORD - Index of first vertex 2b - WORD - Material ID 2b - WORD - Index of third vertex
NOTE! Since vertex index number is limited within 16 bits value, it's not possible to store more than 65535 vertices in Geometry.
The bounding information are used to check weather the mesh is visible for the camera, or not. It only exists once per geometry section.
4b - FLOAT - Center X 4b - FLOAT - Center Y 4b - FLOAT - Center Z 4b - FLOAT - Radius of bounding sphere 4b - DWORD - Has positions 4b - DWORD - Has normals
The central vector (
RwV3d) describes the center of the bounding sphere as an offset from the placement of the object inside the real world.
Vertex translation info
The number of vertices gets defined inside the geometry structure. If flag 2 is set the translation information gets stored for each vertex as a
4b - FLOAT - Position X 4b - FLOAT - Position Y 4b - FLOAT - Position Z
The position values are an offset relative to the mesh pivot.
In case flag 16 is set the normal vectors are the last part of the geometry data structure. They are also stored as a
RwV3d for each vertex:
4b - FLOAT - Direction X 4b - FLOAT - Direction Y 4b - FLOAT - Direction Z
The extension of an geometry usually holds the following sections in the order they are listed in here:
- Bin Mesh PLG
- Native Data PLG – (Only for consoles)
- Skin PLG
- Mesh Extension
- Night Vertex Colors
- Morph PLG
|Grand Theft Auto: Vice City|
|File Formats||.adf • .b • .col • .cfg • .dff • .dat • .gxt • .ide • .ifp • .img/.dir • .ipl • .raw/.sdt • .rep • .scm • .txd|
|Documentation||Audio • Handling • Map Listing • Opcodes • Script Paths • Saves • Sound Effects • Statistics • Vehicles|
|Tools||CLEO • Collision File Editor II • G-Tools • GXT Editor • IMG Tool • Limit Adjuster • KEd (map editor) • Sanny Builder • TXD Workshop|
|Tutorials||How to create a mission • How to create a thread • Vehicle Mod Installation|