I'm new to 3D model examining, but have managed to work out some of the models from the game Platoon. A single model seems to be comprised of a number of separate meshes (with separate faces, verts, etc) - all this looks OK, but I'm struggling to get the separate meshes to fit together into the complete model.
See attached for example - it's a tank that's made up of 4 meshes (body, turret, cannon, gun), but I can't seem to get the pieces to fit on top of each other. The OBOX appears to be (at my guess) a set of co-ordinates which I assumed was to position each mesh, but I'm not sure.
Is anyone able to help me with the final bit of understanding here, please?
The specs I have worked out are...
Code: Select all
// for each block
4 - Block Name
4 - Block Length (including these 2 header fields)
if (BlockName = DUMY){
// Dummy, can contain objects in it
4 - Object Number (incremental from 0)
4 - Name Length
X - Name
68 - Unknown
}
else if (BlockName == OBST){
// Object
4 - Object Number (incremental from 0)
4 - Name Length
X - Name
68 - Unknown
}
else if (BlockName == MESH){
// Mesh
4 - Unknown
4 - Unknown
4 - Number of Vertex Points
}
else if (BlockName == VERT){
// Vertex block, contained within a MESH
4 - Number of Vertex Points
4 - Unknown
4 - null
// for each vertex (32 bytes per entry)
4 - Vertex X
4 - Vertex Y
4 - Vertex Z
4 - Normal X
4 - Normal Y
4 - Normal Z
4 - UV X
4 - UV Y
4 - Number of Entries? (1)
// for each entry
4 - Unknown
}
else if (BlockName == ISTR){
// Face Indexs block, contained within a MESH
4 - Number of Face Indexes
// for each Face Index
2 - Face Index
}
else if (BlockName == FACE){
// Faces block, contained within a MESH
4 - Number of Faces
// for each Face
// LODP entry
}
else if (BlockName == LODP){
// Unknown block, contained within a FACE
4 - Unknown
4 - Number of FSEC Entries? (1)
// for each FSEC entry
// FSEC entry
}
else if (BlockName == FSEC){
// Face Sequence? block, contained within a LODP
2 - null
4 - Unknown (0)
4 - Unknown
4 - Number of Face Indexes
4 - Unknown (101)
4 - First Face Index Number
4 - Last Face Index Number
}
else if (BlockName == OBOX){
// Object Center Point
4 - Center Vertex X
4 - Center Vertex Y
4 - Center Vertex Z
4 - Center Normal X
4 - Center Normal Y
4 - Center Normal Z
}
else if (BlockName == MBOX){
// Unknown block
24 - Unknown
}
else if (BlockName == TEXT){
// Unknown block
4 - null
4 - String Length
X - String
}
else if (BlockName == MATE){
// Material block
4 - Material Number? (0/1)
4 - Texture Filename Length
X - Texture Filename
4 - Number of Entries
96 - Unknown
// for each entry
20 - Unknown
}
else if (BlockName == BLST){
// Unknown block
4 - null
}
else if (BlockName == ASEL){
// Unknown block
4 - Number of Strings
// for each string
4 - String ID
4 - Unknown
4 - String Length
X - String
}
else if (BlockName == ASEC){
// Unknown block
4 - null
}
else if (BlockName == TIME){
// Timestamp Block
24 - Timestamp String
}
Appreciate your help!