.MEF -- 3D Models & Geometry

1. What the available evidence establishes

.MEF is a chunked model file used by Project I.G.I. 1. The repository’s common ILFF template and MEF parser/compiler represent a 20-byte outer header whose file type is OCEM. A 16-byte chunk header precedes each payload; the first chunk is not guaranteed by the container format to occur at a fixed offset.

The template/parser recognize model types 0, 1, and 3. The stride descriptions below are parser/template interpretations; this checkout does not include a retail asset corpus to independently validate every variant.

2. Container and chunk structure

MEF container and chunk layoutILFF file header followed by linked 16-byte chunk headers and payloads such as HSEM, XTRV, and ECFC.MEF FILE: CONTAINER → CHUNK STREAMILFF header20 bytestype OCEMChunk header16 bytesFourCC, size, linkChunk payloadHSEM / XTRVECFC / other dataNext chunkvia link field

The chunk link/skip field is used to traverse chunk data. FourCC labels identify payloads; they should not be mistaken for a single packed C++ struct shared by every model.

3. Vertex records and related chunks

Chunk / recordLayout represented in template/parserEvidence note
XTRV, type 032 bytes: position (3 floats), normal (3 floats), UV (2 floats)8 float values
XTRV, type 140 bytes: position, normal, UV, weight float, local vertex ID uint16, bone index uint16Skinning-related interpretation follows parser fields
XTRV, type 340 bytes: position, normal, UV0, UV1Secondary UV begins at byte offset 32 in parser
ECFC8 bytes per record: four uint16 fieldsTriangle indices plus material/group field in parser
ECAF6 bytes per recordThree uint16 indices
ATTA68 bytes per recordRecord size only; field semantics need file-level confirmation
XTVC16 bytes per recordTemplate/parser layout
XTVM16 bytes per recordPurpose is not established here

4. Reading this specification

Sizes and offsets are useful for parsing, but semantic labels can be uncertain. Coordinates are scaled by some conversion paths; that does not establish the game’s native unit system. No claims are made here about a particular graphics API, draw-call pipeline, or exact model inventory.

Evidence: Templates/IGI1/IGI1_MEF.bt, Templates/common/ILFF.bt, and the IGI 1 converter’s mef_native.cpp / mef_compiler.cpp. See About for source links and verification limits.