The full version of Grim Fandango uses a model format very like the one found in jedi knight and the Grim Fandango demo. It is binary instead of text though and some things seem to have been moved around a bit. The below was worked out by comparing models in the demo to the full game. However it is both incomplete and untested. See documentation on Jedi Knight 3do models for meanings of fields/examples etc (FP) means number is IEEE-754 Floating Point LE means data is in little endian format BE means data is in big endian format 4 bytes LE "MODL" 4 bytes LE number of materials 32 bytes BE * num materials material name (note does not repeat materials like older .3DOs) 32 bytes LE model name 4 bytes LE GEOSET? (0 in bread.3do) 4 bytes LE GEOSETS? (1 in bread.3do) 4 bytes LE number of meshes For each mesh do the following ------------------------------ 32 bytes BE mesh name 4 bytes LE mesh number 4 bytes LE GEOMETRYMODE 4 bytes LE LIGHTINGMODE 4 bytes LE VERTICES 4 bytes LE TEXTURE VERTICES 4 bytes LE FACES VERTICES list * num vertices ---------------------------- 4 bytes LE (FP) x 4 bytes LE (FP) y 4 bytes LE (FP) z TEXTURE VERTICES list * num texture vertices -------------------------------------------- 4 bytes LE (FP) x? 4 bytes LE (FP) y? 96 bytes in bread.3do ? (depends on number of something) FACES list * num faces ? ---------------------- FACE NORMALS? * num faces ------------------------- 4 bytes LE (FP) x 4 bytes LE (FP) y 4 bytes LE (FP) z 36 bytes in bread.3do ? (depends on number of something?) VERTEX NORMALS * num vertices ----------------------------- 4 bytes LE (FP) x 4 bytes LE (FP) y 4 bytes LE (FP) z fill in blanks... 40 bytes in bread.3do ? (depends on number of something?) 4 bytes LE number of hierarchy nodes for each hierachy node... ---------------- 64 bytes BE hnodename 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 72 bytes in bread.3do ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) ? 4 bytes LE (FP) pivotx 4 bytes LE (FP) pivoty 4 bytes LE (FP) pivotz 4 bytes LE ? 4 bytes LE ? 4 bytes LE ? flags type mesh parent child sibling numChildren x y z pitch yaw roll