Big Blue Box Mesh Format
3D Mesh File
(File Size of all Chunks)
Material List (File Size of All MTRL Chunks)
Material Description
Extended Material Properties
Mapping Info
Sub-Mesh
Transformation Matrix
Primitive
Triangle List
Smoothing Groups
Vertex List
Unique Vertex Information
Vertex Group
Bone
Cloth
Helpers
Helper Point
Dummy Object
Convex Volume
//char NullTerminatedString[x]; byte SkeletonPresent; float floats[10]; //Model Origin?? Listed in .big Sub-header... word HPNT_Count; word HDMY_Count; dword HLPR_Index_Uncompressed; word padding; word HPNT_Compressed;
Helper Points[HPNT_Count];
word HDMY_Compressed;
Helper Dummies[HDMY_Count];
word HLPR_Index_Compressed; word HPNT_IndexSize; char HPNT_Index[HPNT_IndexSize-2]; //Subtract the size char HDMY_Index[HLPR_Index_Uncompressed-HPNT_IndexSize]; //Rest of helper index deduced dword NumberMaterials; dword NumberSurfaces; dword NumberBones; dword SizeOfBoneIndex; byte Unknown; word Unknown; word Unknown; word Compressed; word Bone_Index_Reference[NumberBones-1]; word BoneIndexCompressed; char BoneIndex[SizeOfBoneIndex]; word CompressedSize;
Bones SUB CHUNK 1[NumberBones];
word CompressedSize;
Bones SUB CHUNK 2[NumberBones];
word CompressedSize;
Bones SUB CHUNK 3[NumberBones];
float Matrix[12]; //Transform Matrix
float Matrix[4]; //No Rotation long hierarchy;
float Matrix[13]; long hierarchy;
long Index; long Parent; long nChild; float Matrix[12];
float Matrix[12];
float Matrix[16];
dword Material_Index; char NullTerminatedString[x]; dword Padding; dword BASE_Texture_ID; //From Texture.big dword BUMPMAP_Texture_ID; //From Texture.big dword REFLECT_Texture_ID; //From Texture.big dword Unknown; dword Max_Texture_Layers; dword Glow_Strength; byte Unknown; byte Alpha_Enabled; byte Unknown; word Ignored; //For degenerate Tri's
dword Hierarchy; dword DestroyableMeshLevels; float floats[5]; dword nFaceVertexIndices; dword nFaceVertexIndices_BoneIndice; dword nVerts; dword nFaces; dword nSourceVerts; dword Unknown; dword Unknown; dword Unknown; struct structMTRLnFaceVertexIndices FaceIndices[nFaceVertexIndices]; struct structMTRLnFaceVertexIndicesBoneIndice Face_BoneIndices[nFaceVertexIndices_BoneIndice]; float floats[8]; dword sVert; dword padding; //Start of Mesh
Quick notes on sVert “Size Vertice Blocks”….
20 - 28byte float coords, bones, packed normals, s11e4 tu tv
6 - 28byte packed coords, bones, packed normals, s11e4 tu, tv, dword[2]
4 - 36byte float coords, float normals, float tu tv, dword meshlevel
22 - 36byte float coords, bones, packed normals, s11e4 tu,tv, dword[2]
4 - 12byte packed coords, packed normals, s11e4 tu tv
4 - 20byte packed coords, bones, packed normals, s11e4 tu tv
20 - 20byte float coords, packed normals, s11e4 tu tv
struct CLTH { //DWORD SubMesh_ClothCount; DWORD Cloth_ID; DWORD ??_ID; //possibly material ID DWORD sChunk; //Size of full clothing data DWORD Unknown5; DWORD sDistanceIndice; CLTH_Distance* DistanceIndice;//[sDistanceIndice/28]; //Distance between two particles float Unknown8; float Unknown9; float Unknown10; DWORD sParticleIndice; CLTH_Particle* ParticleIndice;//[sParticleIndice]; float* ParticleAlphaIndice;//[sParticleIndice]; //How "free" they are. 0.0 = Static and gets a duped entry in verts DWORD Unknown11; float WindStrength; //strength char EnableDragging; //enable char RotationalDragging; //rotational float StrengthDragging; //strength char EnableAcceleration; //enable float AccelerationDampening; //damping DWORD nTriIndice; CLTH_Tri* TriIndice;//[nTriIndice] Particles+"Unique" Verts DWORD Unknown12; // looks like padding it DWORD sTexIndice; CLTH_Tex* TexIndice;//[sTexIndice]; //v1 = Particle/"unique" Vert, v2 = TexIndice DWORD sVertexIndice; CLTH_Vertex* VertexIndice;//[sVertexIndice]; DWORD sTexCoordIndice; CLTH_TexCoord* TexCoordIndice;//[sTexCoordIndice]; DWORD sParticleMask; CLTH_PartMask* ParticleMask;//[sParticleMask]; //Unique Particles in TriIndice DWORD sVertMask; CLTH_VertMask* Vertmask;//[sVertMask]; //Unique Verts in TriIndice //9 bytes of padding // 1 group for particles, 1 for verts DWORD VGRPCount; // = Number of Bones VGRP** VGRPs; };