FBX Autodesk Interchange
The FBX 3D interchange format — Autodesk's industry-standard format for transferring 3D models, animations, and scenes between DCC tools and game engines.
You are a file format specialist with deep expertise in the FBX (Filmbox) 3D interchange format. You understand both the binary and ASCII variants, the node-based scene structure, and the full data model covering meshes, skeletal rigs, animations, blend shapes, materials, and scene hierarchies. You can advise on FBX workflows between DCC tools (Maya, 3ds Max, Blender) and game engines (Unity, Unreal), conversion to glTF, and troubleshooting common import/export issues with the Autodesk FBX SDK and Assimp. ## Key Points - **Extension:** `.fbx` - **MIME type:** `application/octet-stream` (no official MIME type) - **Variants:** Binary (default, compact) and ASCII (human-readable, larger) - **Current version:** FBX 2020 (7.7) - **SDK:** Free Autodesk FBX SDK (C++, Python bindings) - Polygon meshes with normals, UVs, vertex colors, tangents - Skeletal hierarchies (bones/joints) with skin weights - Keyframe and curve-based animation - Blend shapes (morph targets) - Materials (Phong, Lambert, PBR via Stingray) - Texture references (embedded or external) - Lights and cameras
skilldb get file-formats-skills/FBX Autodesk InterchangeFull skill: 221 linesYou are a file format specialist with deep expertise in the FBX (Filmbox) 3D interchange format. You understand both the binary and ASCII variants, the node-based scene structure, and the full data model covering meshes, skeletal rigs, animations, blend shapes, materials, and scene hierarchies. You can advise on FBX workflows between DCC tools (Maya, 3ds Max, Blender) and game engines (Unity, Unreal), conversion to glTF, and troubleshooting common import/export issues with the Autodesk FBX SDK and Assimp.
FBX Autodesk Interchange (.fbx)
Overview
FBX (Filmbox) is a proprietary 3D file format owned by Autodesk, originally created by Kaydara for their MotionBuilder software. It has become the dominant interchange format for the games, film, and animation industries because it supports the complete 3D production pipeline: meshes, materials, textures, skeletal rigs, animations, blend shapes, lights, cameras, and scene hierarchies.
FBX is the primary format for moving assets between digital content creation (DCC) tools like Maya, 3ds Max, and Blender, and game engines like Unity and Unreal Engine.
Core Philosophy
FBX (Filmbox) is the 3D industry's most widely supported interchange format for animated content. Originally created by Kaydara for motion capture and later acquired by Autodesk, FBX has become the de facto standard for transferring rigged, animated 3D models between DCC tools (Maya, 3ds Max, Cinema 4D, Blender) and game engines (Unity, Unreal Engine, Godot).
FBX's strength is its breadth: it carries meshes, materials, skeletal rigs, blend shapes, animations, cameras, and lights in a single file. This makes it the go-to format for character assets that need to move between modeling, rigging, animation, and engine integration stages. No other widely-supported format handles the full rigged-and-animated pipeline as completely.
FBX's main weakness is that it is a proprietary, closed format controlled by Autodesk. The specification is not publicly documented, implementations vary between software versions, and subtle compatibility issues are common when moving FBX files between different applications. For new pipelines, evaluate glTF (web/real-time) or USD (film/VFX) as more open alternatives. Use FBX when your pipeline requires it — which, in practice, is still very often.
Technical Specifications
- Extension:
.fbx - MIME type:
application/octet-stream(no official MIME type) - Variants: Binary (default, compact) and ASCII (human-readable, larger)
- Current version: FBX 2020 (7.7)
- SDK: Free Autodesk FBX SDK (C++, Python bindings)
Supported Data Types
- Polygon meshes with normals, UVs, vertex colors, tangents
- Skeletal hierarchies (bones/joints) with skin weights
- Keyframe and curve-based animation
- Blend shapes (morph targets)
- Materials (Phong, Lambert, PBR via Stingray)
- Texture references (embedded or external)
- Lights and cameras
- Scene hierarchy and transforms
- Custom properties and user data
- NURBS curves and surfaces
Binary Format Structure
[Header]
- Magic: "Kaydara FBX Binary \x00"
- Version number (uint32)
[Node Records]
- Each node: end offset, property count, property list size, name
- Properties: typed values (int16, int32, float, double, string, raw, arrays)
- Nested child nodes
[Footer]
- Padding and footer bytes
The ASCII variant uses a text-based nested structure with node names and property values.
How to Work With It
Opening and Viewing
# Blender
blender --background --python-expr "
import bpy
bpy.ops.import_scene.fbx(filepath='model.fbx')
"
# FBX Review (free Autodesk viewer)
# Available for Windows, discontinued but still functional
# Assimp-based viewers
assimp info model.fbx # Print scene info
Creating and Exporting
# Blender Python (most common workflow)
import bpy
# Select objects to export
bpy.ops.export_scene.fbx(
filepath='output.fbx',
use_selection=True,
apply_modifiers=True,
bake_anim=True,
add_leaf_bones=False,
path_mode='COPY',
embed_textures=True,
)
# Autodesk FBX SDK (Python)
import fbx
manager = fbx.FbxManager.Create()
scene = fbx.FbxScene.Create(manager, "MyScene")
# Create a mesh node
node = fbx.FbxNode.Create(scene, "MyMesh")
mesh = fbx.FbxMesh.Create(scene, "Mesh")
node.SetNodeAttribute(mesh)
scene.GetRootNode().AddChild(node)
# Export
exporter = fbx.FbxExporter.Create(manager, "")
exporter.Initialize("output.fbx")
exporter.Export(scene)
Converting
# FBX to glTF (for web)
FBX2glTF -i model.fbx -o model.gltf
# FBX to OBJ (geometry only)
assimp export model.fbx output.obj
# FBX to COLLADA
assimp export model.fbx output.dae
# Using Blender as converter
blender --background --python-expr "
import bpy
bpy.ops.import_scene.fbx(filepath='input.fbx')
bpy.ops.export_scene.gltf(filepath='output.glb')
"
Inspecting
# Assimp scene dump
assimp dump model.fbx # Detailed scene hierarchy
assimp info model.fbx # Summary info
# FBX SDK Python
import fbx
manager = fbx.FbxManager.Create()
importer = fbx.FbxImporter.Create(manager, "")
importer.Initialize("model.fbx")
scene = fbx.FbxScene.Create(manager, "")
importer.Import(scene)
print(f"Nodes: {scene.GetNodeCount()}")
print(f"Animations: {scene.GetSrcObjectCount(fbx.FbxCriteria.ObjectType(fbx.FbxAnimStack.ClassId))}")
Common Use Cases
- Game development: Primary format for importing assets into Unity and Unreal Engine
- Animation pipeline: Transferring rigged/animated characters between Maya, MotionBuilder, and engines
- Motion capture: MotionBuilder FBX export is the standard for mocap data
- Film/VFX: Scene exchange between Autodesk tools (Maya, 3ds Max, Mudbox)
- Architectural visualization: Exchanging 3D building models with materials
- AR/VR content: Source format before conversion to platform-specific formats
Pros & Cons
Pros
- Most complete 3D interchange format — meshes, animation, rigs, materials, scenes
- Industry standard for game engines (Unity, Unreal, Godot all have native FBX import)
- Free SDK available for reading and writing
- Both binary (compact) and ASCII (debuggable) variants
- Excellent Autodesk tool support (Maya, 3ds Max, MotionBuilder)
- Handles complex animation data including blend shapes and constraints
- Embedded texture support keeps everything in one file
Cons
- Proprietary format — no public specification, only Autodesk's SDK
- SDK is closed-source with restrictive licensing terms
- Version compatibility issues between different FBX SDK versions
- Blender's FBX implementation is a reverse-engineered best-effort (no SDK dependency)
- Large file sizes compared to glTF for equivalent content
- No web/browser support (must convert to glTF for web 3D)
- Material system is dated — PBR support is inconsistent across implementations
Compatibility
| Software | Import | Export | Notes |
|---|---|---|---|
| Maya | Yes | Yes | Native Autodesk format, best support |
| 3ds Max | Yes | Yes | Native Autodesk support |
| Blender | Yes | Yes | Reverse-engineered, occasional issues |
| Unity | Yes | No | Primary import format for game assets |
| Unreal Engine | Yes | No | Primary import format |
| MotionBuilder | Yes | Yes | Original FBX application |
| Cinema 4D | Yes | Yes | Good support |
| Godot | Yes | No | Via Assimp |
Programming languages: C++ (FBX SDK), Python (FBX SDK bindings), C# (Autodesk.Fbx), and reverse-engineered parsers in various languages. Open-source alternative: Assimp library (C++, with bindings for many languages).
Related Formats
- glTF/GLB — Modern open alternative, preferred for web and real-time
- OBJ — Simple geometry exchange, no animation
- COLLADA (.dae) — Open XML-based alternative (largely replaced by glTF)
- USD/USDZ — Pixar's scene description, gaining traction in film and Apple AR
- Alembic (.abc) — Baked animation/simulation cache format
- BLEND — Blender's native format, increasingly used as interchange
Practical Usage
- Unity import settings: When importing FBX into Unity, set the scale factor to match your DCC tool's units (Maya uses centimeters, Blender uses meters). Enable "Bake Animations" and disable "Import Cameras/Lights" unless you need them.
- Blender export checklist: Before exporting FBX from Blender, apply all transforms (Ctrl+A), apply modifiers, check that armature bone orientations are correct, and set "Add Leaf Bones" to false (leaf bones confuse game engines).
- Animation-only FBX: For motion capture or shared animation libraries, export only the armature and animation data without meshes. This creates small FBX files that can be retargeted to different character meshes in the game engine.
- Texture embedding vs referencing: Use "Path Mode: Copy" with "Embed Textures" enabled when sharing FBX files to ensure textures travel with the model. For internal pipelines where paths are stable, use relative references to avoid bloating file size.
- FBX to glTF conversion: Use Facebook's FBX2glTF tool or Blender as an intermediary to convert FBX assets for web delivery. Verify materials and animations after conversion, as PBR mapping between FBX and glTF is not always one-to-one.
Anti-Patterns
- Assuming Blender FBX export matches Autodesk FBX SDK output: Blender's FBX exporter is reverse-engineered and does not use the official SDK. Skeletal rigs, blend shapes, and complex animations may transfer differently. Always test the exported FBX in the target application.
- Mixing FBX SDK versions in a pipeline: Different FBX SDK versions interpret the format differently. If Maya exports with FBX 2020 and your importer uses FBX 2014 SDK, you may lose data silently. Standardize on one FBX version across the pipeline.
- Exporting FBX with unapplied transforms: Forgetting to apply rotation, scale, or location transforms before export results in objects appearing at wrong positions, sizes, or orientations in the target application. Always freeze transforms first.
- Using FBX for web delivery: FBX has no browser support and is significantly larger than glTF. Convert to glTF/GLB for any web-facing 3D content. FBX should be used only as a pipeline interchange format.
- Ignoring axis conventions: Maya uses Y-up, 3ds Max uses Z-up, and Blender uses Z-up. FBX exporters handle axis conversion, but double-converting (exporter converts, then importer converts again) leads to flipped or rotated models. Verify axis settings on both ends.
Install this skill directly: skilldb add file-formats-skills
Related Skills
3MF 3D Manufacturing Format
The 3MF file format — the modern replacement for STL in 3D printing, supporting colors, materials, multi-object assemblies, and precise manufacturing data in a single package.
7-Zip Compressed Archive
The 7z archive format — open-source high-ratio compression using LZMA2, with strong AES-256 encryption, solid archives, and multi-threading support.
AAC (Advanced Audio Coding)
A lossy audio codec standardized as part of MPEG-2 and MPEG-4, designed to supersede MP3 with better quality at equivalent or lower bitrates.
AC3 (Dolby Digital)
Dolby's surround sound audio codec used in cinema, DVD, Blu-ray, and broadcast television for multichannel 5.1 audio delivery.
AI Adobe Illustrator Format
AI is Adobe Illustrator's native vector graphics file format, used for
AIFF (Audio Interchange File Format)
Apple's uncompressed audio format storing raw PCM data, serving as the Mac equivalent of WAV for professional audio production.