|
|
| Line 1: |
Line 1: |
| − | === Simple Types ===
| |
| − | These are all stored as little-endian
| |
| | | | |
| − | ----
| |
| − |
| |
| − | * bool = 1 byte
| |
| − | * unsigned char = 1 byte
| |
| − | * int = 4 bytes
| |
| − | * float = 4 bytes
| |
| − |
| |
| − | === Compound types ===
| |
| − |
| |
| − | ----
| |
| − |
| |
| − | * vec3 = float x, float y, float z
| |
| − | * bounds = vec3 mins, vec3 maxs
| |
| − | * string = int length, char[ length ]
| |
| − |
| |
| − |
| |
| − | === File Structure ===
| |
| − | chunk id;
| |
| − | chunk data;
| |
| − | ...
| |
| − | chunk id;
| |
| − | chunk data;
| |
| − |
| |
| − | === Chunks needed for loading geometry data ===
| |
| − | ----
| |
| − |
| |
| − | ==== Material Table ====
| |
| − | material chunk {
| |
| − | string id = "materials";
| |
| − | int numMaterials;
| |
| − | string array[ numMaterials ];
| |
| − | }
| |
| − |
| |
| − | ==== Model Chunk ====
| |
| − | model chunk {
| |
| − | string id = "model";
| |
| − | int chunkLength;
| |
| − | string name;
| |
| − |
| |
| − | int numSurfaces;
| |
| − | int numAreas;
| |
| − | int array[ numAreas ];
| |
| − |
| |
| − | for each of numSurfaces {
| |
| − | int materialIndex;
| |
| − | bool hasVertexColor;
| |
| − | bounds surfaceBounds;
| |
| − |
| |
| − | int numVerts;
| |
| − | int numIndices;
| |
| − | int __privateCount;
| |
| − |
| |
| − | for each of numVerts {
| |
| − | int numVertexElements; // should always be 12
| |
| − | float vertex[ numVertexElements ];
| |
| − |
| |
| − | int numColorElements; // should always be 4
| |
| − | unsigned char color[ numColorElements ];
| |
| − | // if hasVertexColor is true, use the color read above; otherwise the color is "255 255 255 255"
| |
| − |
| |
| − | // vertex[ 0 ] - x
| |
| − | // vertex[ 1 ] - y
| |
| − | // vertex[ 2 ] - z
| |
| − |
| |
| − | // vertex[ 3 ] - s
| |
| − | // vertex[ 4 ] - t
| |
| − |
| |
| − | // vertex[ 5 ] - normal x
| |
| − | // vertex[ 6 ] - normal y
| |
| − | // vertex[ 7 ] - normal z
| |
| − |
| |
| − | // vertex[ 8 ] - tangent x
| |
| − | // vertex[ 9 ] - tangent y
| |
| − | // vertex[ 10 ] - tangent z
| |
| − | // vertex[ 11 ] - bitangent sign
| |
| − | }
| |
| − | for each of numIndices {
| |
| − | int index;
| |
| − | }
| |
| − |
| |
| − | for each of __privateCount {
| |
| − | float __private[ 6 ];
| |
| − | int __private;
| |
| − | int __private;
| |
| − | int __private;
| |
| − | int __private;
| |
| − | }
| |
| − | }
| |
| − | }
| |
| − |
| |
| − | all_other_chunks {
| |
| − | string id;
| |
| − | int chunkLength;
| |
| − | <skip ahead by chunklength to get to the next chunk>
| |
| − | }
| |