.MD3
Quake III Arena Model
Introduction
MD3 is the model format of Quake III Arena, released by id Software in 1999. It stores animation as a sequence of whole frames, every vertex position saved for every frame, and the engine blends between neighbouring frames as it draws. Named tags mark attachment points, so a player is built from separate head, upper body and lower body models joined at their tags, with a weapon fixed to another.
The Quake III Arena engine source was released under the GPL in 2005, and games built on it and later engines kept using the format.
Software
- ioquake3 (Windows, macOS, Linux)
- Quake III Arena source code (id Software, GPL)
Structure
An MD3 file is binary and little-endian. The header starts with IDP3
and version 15, then the model’s name, the counts of frames, tags, surfaces and skins,
and the offsets where each list starts. Frames hold a bounding box, origin and radius
for each frame. Tags hold a name, a position and an orientation for each frame.
Each surface is a separate mesh with its own header, also starting with
IDP3, listing its shaders, triangles, texture coordinates and a full set
of vertices for every frame. Vertex positions are 16-bit integers in units of 1/64,
with each normal packed into two bytes as two angles.
0HeaderIDP3, version, name, counts, offsets108 bytes…Frames bounds, origin, radius and name per frame56 bytes each…Tags name, position and axes per tag per frame112 bytes each…Surfaces one mesh eachvaries+0Surface headerIDP3, name, counts, offsets108 bytes…Shaders, triangles, texture coordinatesvaries…Vertices position and packed normal, for every frame8 bytes each