What is the B3D file format?
A .b3d file is a binary chunk-based 3D model format developed by Blitz Research Ltd for the Blitz3D game SDK (released 2001). It stores a complete scene graph in a single file: mesh geometry, UV coordinates, material and texture references, skeletal bone weights, and keyframe animation sequences.
The format uses a hierarchical chunk structure. Each chunk opens with a 4-character ASCII tag and a 4-byte little-endian data length. The mandatory root chunk BB3D wraps TEXS (texture filename list), BRUS (brush and material definitions), and NODE chunks. NODE chunks are recursive, forming a parent-child scene tree. A MESH node contains VRTX (vertex buffer with positions, normals, UVs, and vertex colors) and TRIS (triangle index arrays with material assignments). KEYS and ANIM chunks define named animation sequences with per-frame position, rotation, and scale keyframes.
Blitz Research open-sourced Blitz3D in 2013. The format gained a prominent second life as the primary 3D model format for Luanti (formerly Minetest), the open-source voxel game engine, ensuring active community tooling well beyond the original SDK. The Irrlicht 3D engine also natively loads .b3d files. Blender can import .b3d via a community plug-in.
For modern production pipelines, glTF or FBX are preferred; .b3d remains widely used in Luanti modding communities.
Security & safety
RISK: LOWBinary 3D model file; no executable code. No known CVEs for B3D parsers. Normal caution when opening files from unknown sources in game engines.
Format details
in a nutshell- BodyPaint 3D (MAXON) - MAXON's BodyPaint 3D paint application has been associated with .b3d by some databases, but its actual native format is .c4d; .b3d is not a documented BodyPaint format.
Programs that open B3D files
Technical details
deep spec| Magic bytes | 42 42 33 44 ("BB3D" ASCII) at offset 0 - mandatory root chunk tag |
| Byte order | Little-endian throughout |
| Chunk structure | 4-char ASCII tag + 4-byte little-endian data length precedes each chunk payload; chunks are nestable to arbitrary depth |
| Root chunk | `BB3D` - contains a version integer (major×100 + minor) and wraps all content chunks |
| Texture chunk | `TEXS` - ordered list of texture file path strings referenced by material indices |
| Material chunk | `BRUS` - brush definitions with color, shininess, blend mode, and texture index references |
| Geometry chunks | `MESH` → `VRTX` (vertex positions, normals, UVs, vertex colors) + `TRIS` (triangle index arrays with per-triangle material assignment) |
| Animation chunks | `BONE` (vertex weights per bone), `KEYS` (per-node position/rotation/scale keyframes), `ANIM` (named sequence with start/end frame range) |
| Scene graph | `NODE` chunks are recursive, supporting hierarchical pivot and parent-child transform relationships |
| Typical size | 10 KB - 20 MB (simple static prop to complex rigged character with animation sequences) |
| Compression | None - all data stored as uncompressed binary |
| Primary active use | Luanti (formerly Minetest) open-source voxel engine - `.b3d` is the recommended format for entity and NPC models in Luanti mods |
| Engine support | Irrlicht 3D engine (native); Blitz3D open-source (original host); Blender (community import plug-in) |
| Open-source history | Blitz3D open-sourced on GitHub (blitz-research/blitz3d) by Mark Sibly in 2013; format spec documented by the Luanti community |
| Released | 2001 (Blitz3D 1.0) |
| Latest version | No versioning after Blitz3D open-sourced; format spec frozen |
| Open standard | Yes · royalty-free |
| Specification | docs.luanti.org |
B3D conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about B3D files.