|
|
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>
| |
− | }
| |