Hubbry Logo
FBXFBXMain
Open search
FBX
Community hub
FBX
logo
7 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
FBX
FBX
from Wikipedia
Autodesk FBX Technology (.fbx)
Filename extension
.fbx
Internet media typeapplication/octet-stream
Type code'FBX'
Developed byAutodesk

FBX (from Filmbox) is a proprietary file format (.fbx) developed by Kaydara and owned by Autodesk since 2006. It is used to provide interoperability between digital content creation applications. FBX is also part of Autodesk Gameware, a series of video game middleware.

History

[edit]

FBX originated as a replacement file format for Canadian company Kaydara's Filmbox, a software for recording data from motion capture devices. Prior to 1996, Filmbox 1.0 used a file format called FLM. The format only supported motion data, user preferences and a list of devices used in the capturing of the motion data. This data was a serialized version of the libraries (binary dump), containing read/write memory data. This method of storing data did not work well with different versions of Filmbox. There was also demand from early adopters of Filmbox to implement a target character in a scene with the motion capture data, to enable the visualization of the data in a 3D view with display markers.

In 1996, Kaydara released a new native file format with Filmbox 1.5 called FBX, which used an object-based model, allowing for the storing of motion, along with 2D, 3D, audio, and video data. The format saw wider support from other 3D software packages such as Cinema 4D, SoftImage 3D, PowerAnimator, LightWave 3D, 3D Studio MAX and TurboCAD.

Filmbox was renamed MotionBuilder in 2002 with the release of version 4.0. In 2003, Kaydara launched FBX for Apple's QuickTime Viewer. Alias announced its intention to acquire Kaydara on August 8, 2004, reaching an agreement in September. A Software Development Kit was developed in 2005 to standardize the object model and allow other software developers to provide plug-ins of their own. Alias was acquired by Autodesk on January 10, 2006. Later in 2006, support for properties was added to FBX.

Limitations

[edit]

The FBX file format is proprietary; however, the format description is exposed in the FBX Extensions SDK which provides header files for the FBX readers and writers.

There are two FBX SDK bindings for C++ and Python supplied by Autodesk. Blender includes a Python import and export script for FBX, written without using the FBX SDK[1] and The OpenEnded Group's Field includes a Java-based library for loading and extracting parts from a FBX file.[2]

The Godot game engine can import FBX files without using the FBX SDK. In Godot 3.2 this was handled by the Assimp library.[3] This was rewritten in Godot 3.3,[4] and replaced by a fork of Facebook's FBX2glTF utility in Godot 4.0.[5] Support for the open-source ufbx importer was added for the Godot 4.3 release. Godot 4.3 allows both ufbx and FBX2glTF to work in tandem by keeping the previously used importer for a given file as the default importer for that file. New FBX files in the same project will, by default, use ufbx.[6]

File format

[edit]

The FBX can be represented on-disk as either binary or ASCII data; its SDK supports reading and writing both.

While neither of the formats is documented, the ASCII format is a tree structured document with clearly named identifiers. For the FBX binary file format, the Blender Foundation published an unofficial specification, as well as a higher level unofficial spec (work in progress) for how actual data is laid out in FBX (independent of ASCII or binary format).

List of FBX versions (and alternate names in brackets):

  • 6.x (FBX 2006, FBX 2009, FBX 2010)
  • 7.1 (FBX 2011)
  • 7.2 (FBX 2012)
  • 7.3 (FBX 2013)
  • 7.4 (FBX 2014)
  • 7.5 (FBX 2016.1.2)

See also

[edit]

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
FBX is a 3D asset exchange file format (.fbx) developed by Autodesk for the efficient transfer and interoperability of 3D data, including models, animations, cameras, lights, and meshes, between various animation and graphics software applications. It originated as the native format for Autodesk MotionBuilder, a tool for creating, editing, and blending motion capture and keyframe animations. FBX files support both binary and ASCII encodings, enabling high-fidelity preservation of scene elements such as material assignments, shadow casting, and keyframe data during import and export workflows. The format facilitates seamless integration across Autodesk products like Maya, 3ds Max, and Mudbox, as well as third-party tools, making it a standard for 3D content creation in industries including film, television, and game development. Autodesk provides the FBX SDK, a free C++ that allows developers to build plug-ins, converters, and applications for reading, writing, and manipulating FBX files across platforms such as Windows, macOS, , and . This SDK supports multiple FBX versions, including 7.5 through 6.0, and includes utilities like the FBX Converter for transforming files between FBX and other formats such as OBJ, DAE, DXF, and . Key features of FBX technology encompass a platform-independent that embeds 2D textures and media into single files, customizable pipelines for data manipulation, and tools for playback and scene review, enhancing collaborative workflows in 3D production environments.

Overview

Definition and Purpose

FBX (Filmbox) is a proprietary 3D file format developed by Kaydara for its Filmbox software, now known as MotionBuilder, and owned by since its acquisition in 2006. The format supports both binary and ASCII encodings, allowing for compact storage in binary mode or human-readable text in ASCII mode to facilitate and editing. Originally designed as a replacement for earlier data formats, FBX derives its name from "Filmbox," reflecting its roots in animation and visual effects workflows. The primary purpose of FBX is to enable seamless interchange of 3D content across diverse software applications, preserving complex scene data during transfer. It facilitates the exchange of static elements like 3D models and textures, as well as dynamic components such as s, cameras, and lighting setups, which are essential for collaborative pipelines in industries including , video games, and . This reduces disruptions by maintaining , such as animation curves and skeletal rigs, without requiring proprietary converters. Over time, FBX has evolved from a specialized tool for into a industry standard for 3D pipelines, supporting both static and dynamic simulations to streamline production in environments. For instance, its capabilities allow keyframe data and motion blending to transfer reliably between tools like Maya and 3ds Max.

Key Features

The FBX format supports hierarchical scene structures that enable the organization of complex 3D assets, including meshes for polygonal , skeletons for , for deformation, and NURBS surfaces for precise curve-based modeling. These elements allow for the representation of interconnected scene components, such as parent-child relationships between objects, facilitating efficient management of intricate models in pipelines. FBX embeds a wide range of data directly within files, including keyframe animations for precise and morph targets for shape-based deformations. It also incorporates materials for surface properties, textures for visual detailing, and essential metadata such as measurement units and orientations to ensure consistent interpretation across tools. This comprehensive embedding reduces the need for separate files, streamlining workflows in 3D content creation. The format offers two primary encoding options: a binary variant optimized for efficiency in handling large files through compact storage and faster read/write operations, and an ASCII variant that provides human-readable text for easier , , and manual editing. Binary files are the default for production use due to their reduced size and benefits, while ASCII supports transparency in development processes. FBX integrates data seamlessly, originating from its roots in tools like MotionBuilder, which blend mocap with keyframe for realistic character movements. It also accommodates multiple takes or variants within a single file, allowing creators to store and switch between different performance iterations without fragmentation. Despite its proprietary development by , FBX maintains vendor-neutral interoperability by supporting data exchange with third-party software, promoting broad adoption in the 3D industry. The availability of the free FBX SDK, a C++ toolkit for Windows, macOS, , , and more, empowers developers to implement custom functionality and extend format support in their applications.

History

Origins and Early Development

The FBX (Filmbox) format was developed by the Canadian software company Kaydara in 1996 as the native file format for its Filmbox 1.5 software, replacing the earlier FLM format and introducing an object-based model to store motion capture data alongside 2D, 3D, audio, and video elements. This innovation addressed limitations in prior formats by enabling the visualization of motion data within 3D scenes, complete with display markers, to support efficient workflows in animation and visual effects production. Kaydara, founded in the early 1990s, aimed to create a versatile toolset for motion capture and character animation, positioning Filmbox as a comprehensive platform for integrating real-time data processing in creative pipelines. Initially released around 1996-1997, FBX was designed primarily for and VFX pipelines, facilitating the interchange of 3D data across applications such as , , and 3D Studio MAX to streamline collaboration in complex projects. Its object-oriented structure preserved scene hierarchies and kinematic information, making it suitable for exporting animated characters and scenes without significant data loss. Early versions emphasized integration, allowing users to capture, edit, and blend movements from performers directly into 3D environments. FBX saw rapid early adoption in Hollywood during the late , particularly for in and VFX-heavy films, where Kaydara's tools became essential for real-time previewing and editing of performance data to accelerate production timelines. For instance, Filmbox's capabilities enabled seamless integration of live with , supporting tools for scene export that were critical in high-stakes workflows. A key pre- innovation was the introduction of real-time previewing features, which allowed animators to view and refine motion blends interactively, enhancing efficiency in iterative creative processes. By the early 2000s, Filmbox was renamed MotionBuilder (version 4.0 in 2002), further solidifying FBX's role in professional animation pipelines before Kaydara's acquisition by in 2006.

Acquisition and Evolution

In 2006, Autodesk acquired , which had previously acquired Kaydara in 2004, thereby gaining ownership of the FBX format and integrating it deeply into its ecosystem of 3D software tools. This acquisition facilitated seamless data exchange between Autodesk products such as Maya and 3ds Max, where FBX became the primary format for importing and exporting 3D models, animations, and scenes, preserving attributes like rigging and materials during transfers. Following the acquisition, released its first major version, FBX 2006, marking the transition to proprietary stewardship while maintaining with earlier Kaydara formats. Subsequent releases progressed through annual updates, including FBX 2008, 2010, and beyond, culminating in FBX 2020 as the core standard, with the accompanying SDK receiving iterative enhancements up to version 2020.3.4 to support legacy files from versions 6.0 through 7.5. These updates focused on refining the binary and ASCII encodings for broader without altering the fundamental structure. To promote widespread adoption, began distributing the FBX SDK freely in 2007, allowing developers to build custom plug-ins and converters for third-party applications under a permissive that supported commercial use. This shift encouraged integration beyond 's tools, fostering ecosystem growth in development and . As of 2025, FBX continues to evolve within the suite, with enhancements emphasizing real-time rendering capabilities, such as the Real-Time Exporter in 3ds Max 2025 for optimized FBX exports to engines like Unity, enabling interactive previews of animations and geometry. Additionally, integrations with cloud-based workflows in tools like Revit and Rendering support FBX for collaborative asset sharing and photorealistic outputs, streamlining remote team exchanges in architecture and media projects.

Technical Specifications

File Format Structure

The FBX file format primarily utilizes a binary encoding for efficient storage and transmission of 3D scene data, structured into three main sections: a header, a node graph representing the hierarchical object structure, and a footer. The header spans the first 27 bytes and includes identifying metadata: bytes 0-20 contain the magic number "Kaydara FBX Binary " followed by a null terminator, bytes 21-22 are fixed values [0x1A, 0x00], and bytes 23-26 encode an unsigned 32-bit little-endian integer for the file version (e.g., 7300 for version 7.3). As of 2025, the FBX SDK supports versions from 6.0 to 2020.9, with binary version codes from 6000 to 20209. Following the header is the node graph, which forms the core of the file as a tree of object records starting with a top-level null node. The footer, appended after the node graph, consists of 13 zero bytes indicating no further nested nodes for versions before 7.5, serving to mark the end of the root node without explicit checksums in standard implementations. At its foundation, the FBX format employs a to organize scene elements hierarchically, where each node corresponds to an object such as models, lights, or cameras. For FBX versions before 7.5, a node record begins with a 4-byte little-endian unsigned for the end offset (pointing to the node's conclusion), followed by 4 bytes for the number of properties, 4 bytes for the total property list length, 1 byte for the name length, and then the variable-length null-terminated name string. For versions 7.5 and later, the first three fields (end offset, number of properties, property list length) are 8-byte little-endian unsigned s, followed by 1 byte for the name length, and then the variable-length name string. Properties follow, each prefixed by a single-byte type identifier (e.g., 'I' for 32-bit , 'F' for 32-bit float), with support for nested child nodes that recurse the same layout to build the graph; if no children are present, 13 null bytes (or 25 bytes in versions 7.5+) mark the end. This design enables compact representation of complex relationships, such as parent-child transformations in a scene. An ASCII variant of the FBX format exists for human-readable editing, mirroring the binary structure in a text-based tree with nodes delimited by curly braces (e.g., "NodeName: "NodeType" { Property1: value; }"). Like the binary version, it uses little-endian conventions where applicable and supports hierarchical nesting, but properties are expressed as key-value pairs separated by colons and semicolons for clarity. Encoding across both variants adheres to little-endian byte order for multi-byte values, promoting cross-platform compatibility. Arrays of primitive data types (e.g., integers or floats) are optimized for storage efficiency through a dedicated format: 4 bytes for array length, 4 bytes for encoding type (0 for uncompressed, 1 for zlib-compressed), 4 bytes for compressed length if applicable, and the data payload, allowing compact handling of large datasets like vertex positions. Stacks, as compound property groups, further enhance this by bundling related arrays (e.g., for animations) into layered structures that reduce redundancy in hierarchical data. FBX files are identified by the .fbx extension and, in , by the distinctive header magic number for parser recognition.

Supported Data Elements

The FBX file format supports a wide range of 3D data elements essential for representing complex scenes, enabling across and modeling software. These elements encompass , , materials, scene components, and metadata, organized within a hierarchical that preserves relationships and hierarchies. Geometry in FBX includes polygonal meshes, which store vertices (control points), edges, faces, normals, colors, edge visibility, smoothing groups, and user-defined attributes; for example, a cube mesh can define 8 vertices and 24 normals total (4 per face) for precise surface representation with flat shading. Additionally, FBX accommodates NURBS surfaces and curves via control points and knot vectors, patches through control point grids, and trimmed NURBS by incorporating trimming curves to define boundaries on parametric surfaces. These geometric primitives support UV coordinates for texture mapping and can be layered, with multiple layers (e.g., Layer 0 for base geometry) holding elements like normals and UV sets using indexed arrays for efficiency. Animation data in FBX is driven by keyframe-based curves and stacks, allowing representation of transformations such as translation, rotation, scaling, and visibility over time; each curve consists of keyframes (e.g., positioned at specific timestamps like 0.0s to 20.0s) connected to node properties via curve nodes. Skeletal animation is facilitated through skeletons with root, limb, and end segments, bind poses (defining initial bone-geometry alignments), rest poses, and deformers like clusters for skinning vertices to bones. Rigid body dynamics are supported via constraints (e.g., parent-child, aim, or single-chain IK) and blends for mixing animation layers, enabling complex motion hierarchies without external simulation data. Materials and Textures are defined with shaders such as Phong, specifying properties like diffuse color, specular highlights, transparency, and emissive factors, which can be assigned to geometric elements. Textures include embedded images (e.g., TIFF files in binary FBX) or references, mapped via UV coordinates in channels for diffuse, specular, or ; multiple textures per material layer ensure flexible surface detailing. Scene Elements cover lights (point, spot, directional with parameters like intensity and gobos), cameras (with , , stereo pairs, and switchers for cuts), and poses for static transformations. Global settings include up-axis orientation (X, Y, or ) and scale factors to normalize units across applications, alongside null nodes as placeholders and markers for reference points in the scene hierarchy. Metadata extends FBX's capabilities through bind poses linking bones to , for vertex influences, and custom properties (e.g., booleans, integers, strings) attached to nodes for extensibility, allowing users to store application-specific data without altering core structures. Scene information like titles, authors, and comments is also preserved for .

Usage and Compatibility

Software Support

Autodesk provides full native support for the FBX format across its core 3D animation and modeling applications, including , 3ds Max, and MotionBuilder, enabling seamless import and export of geometry, animations, and materials between these tools and other compatible software. This integration stems from FBX's origins as the proprietary format of MotionBuilder, ensuring high-fidelity data preservation in professional workflows. Third-party software widely adopts FBX for in game development, VFX, and texturing pipelines. Unity natively imports FBX files for 3D models, animations, and scenes, with additional support for exporting via its dedicated FBX package to facilitate round-trip editing with external tools. leverages FBX through its content pipeline for importing assets like skeletal es and animations, supporting both individual files and full scenes to streamline asset integration. In VFX and modeling, offers read/write compatibility for FBX, allowing users to exchange complex scenes with embedded textures and hierarchies. Houdini includes built-in FBX import and export capabilities via its File menu and dedicated nodes, accommodating procedural geometry and simulations. Substance Painter supports FBX import for texturing 3D models, preserving UV maps and from upstream applications. Open-source tools like incorporate FBX support through an official add-on enabled by default, providing import and export functions for meshes, armatures, and animations since the 2.80 release in 2019, with ongoing community-driven enhancements for better compatibility up to version 4.5 LTS as of 2025. This add-on utilizes the FBX SDK under license, bridging open-source workflows with proprietary ecosystems without requiring external plugins. FBX has become a in industry pipelines, particularly for where it facilitates asset exchange in workflows, for gaming where it powers asset ingestion in engines like Unity and Unreal, and for AR/VR applications such as Medium by , which exports sculpts directly to FBX for further processing in DCC tools. Its widespread adoption ensures consistent data flow across diverse creative disciplines, from initial modeling to final rendering.

Import and Export Processes

The for FBX files typically begins with selecting the elements to include, such as , animations, and materials, within the source application. For instance, in , users select File > Export All or Export Selected, then choose FBX from the file type dropdown to access options for baking animations, which converts unsupported constraints into animation curves using timeline or custom frame ranges. Unit scaling is managed by setting a scale factor, defaulting to 1.0 to preserve the source units like centimeters or meters, preventing unintended resizing in the target software. Optimization options include enabling smoothing groups to convert edge information into groups that ensure accurate normal rendering upon , along with toggles for deformed models like skin weights or blend shapes. The import workflow involves loading the FBX file into the target application while addressing potential discrepancies in structure and assets. Hierarchies are handled by options to add or update node structures without merging, preserving parent-child relationships and avoiding naming conflicts, as seen in Maya's import settings where "Update animation" maintains existing transforms while applying keyed changes. Material remapping requires manual assignment in the target software if textures or shaders differ, often by importing into a matching scene setup to align UVs and properties. Resolving missing references, such as unembedded media or undefined nodes, uses log generation and statistics views to identify issues like unit mismatches or frame rate differences, allowing corrections before final integration. Best practices emphasize using the FBX Converter tool for multiple files, which supports converting between FBX versions and formats like OBJ or DAE to streamline workflows across applications. Version selection is crucial, with the tool allowing exports to specific FBX iterations (e.g., 2018 or 2020) that match the target software's compatibility, reducing errors in pipelines involving tools like Maya or 3ds Max. Pre-export checks for consistent units and baked elements, combined with post-import verification of hierarchies, ensure data integrity without redundant adjustments. For custom import and export in proprietary applications, the FBX SDK provides C++ APIs to integrate FBX handling directly. Import starts with creating an FbxManager and FbxImporter, initializing it with the file path and FbxIOSettings for options like embedded media, then calling Import() to populate an FbxScene from which nodes are read using GetSrcObject() to traverse hierarchies. Export mirrors this by initializing an FbxExporter, building or modifying the FbxScene, and invoking Export() to write the file in binary or ASCII format, enabling tailored processing of scene graphs in specialized tools.

Limitations

Technical Constraints

The FBX binary format often exhibits file size bloat due to inherent redundancies in its record-based structure, particularly in complex scenes involving high-polygon models where multiple property lists and nested nodes duplicate transformation and connectivity data. This redundancy arises from the format's design, which includes empty node records and repeated array encodings for elements like vertex positions and normals, leading to inefficient storage without explicit optimization during export. While the FBX SDK provides optional compression for specific array properties using algorithms (via an encoding flag and zlib decoding), the format lacks standardized, whole-file compression mechanisms, resulting in larger files relative to modern alternatives like that incorporate built-in compression by default. Consequently, unoptimized FBX files for intricate scenes can exceed practical limits, such as the 2 GB threshold historically imposed by the FBX SDK on resource-constrained systems, exacerbating storage and transfer inefficiencies. FBX offers limited native support for advanced procedural elements, such as subdivision surfaces (SubD) or particle systems, which are often unsupported or emulated with partial fidelity, requiring custom extensions or conversions for full functionality. Similarly, volumetric data like grids is not inherently accommodated, confining the format primarily to polygonal meshes and baked animations without built-in primitives for procedural volumes or simulations. Version-specific quirks in FBX introduce challenges, including deprecated features like full SubD support in pre-2015 iterations, where such elements are excluded or approximated, potentially causing data loss when loading older files into newer SDKs. For instance, structural changes, such as the expansion of NULL record sizes from 13 to 25 bytes in version 7.5, can disrupt parsing in legacy implementations without updates. Parsing large node graphs in FBX imposes overhead on resource-constrained devices, stemming from the format's recursive record traversal and variable-length handling, which demands significant CPU cycles for validation and hierarchy resolution in expansive scenes. Empirical evaluations of FBX loading in web environments reveal times up to 43 seconds for models with over 500,000 vertices, highlighting the computational burden compared to streamlined formats.

Compatibility Challenges

One significant compatibility challenge with the FBX format arises from version mismatches between exporting and importing software, which can lead to data loss or incomplete transfers, particularly for animations. For instance, animation layers exported without the Bake Animation option enabled may not import correctly into 3ds Max, resulting in lost keyframe data across different FBX versions. Similarly, geometry vertex normals from MotionBuilder 2010 or earlier lack full support in later versions, causing shading discrepancies unless the Split Per-Vertex Normals option is applied during export. These issues stem from evolving format specifications that prioritize newer features, making backward compatibility inconsistent for complex elements like skinned meshes and curves. Despite the availability of the Autodesk FBX SDK for third-party integration, vendor lock-in persists in non-Autodesk tools due to licensing restrictions that prevent full adoption. , for example, cannot incorporate the proprietary FBX SDK because of its incompatibility with the GPL license, leading to a reverse-engineered implementation that supports only a subset of features. This results in incomplete handling of elements such as vertex shape keys (unsupported in export) and animated simulations (not supported at all), causing data loss when transferring assets from Autodesk software to or vice versa. Older versions exacerbate this, often failing to preserve or material hierarchies accurately. Platform differences further complicate compatibility, as FBX adheres to a right-handed, Y-up coordinate system by default, while tools like Blender use Z-up and Unity employs Y-up but with left-handed conventions in some contexts. Importing without proper conversion can flip axes, leading to inverted orientations or scaling errors—for example, models exported from 3ds Max may appear stretched or rotated incorrectly in Unity due to unhandled unit mismatches. As of 2025, real-time engines like Unreal Engine 5.5 continue to face partial import issues, where custom metadata from FBX files (e.g., user-defined attributes) is renamed or omitted during Interchange Framework processing, disrupting pipeline automation. To mitigate these challenges, workflows often rely on workarounds such as intermediate format conversions (e.g., exporting via before FBX re-import) or manual adjustments in production pipelines. Enabling options like Embed Media during embeds textures to prevent path-related losses across platforms, while matching system units (e.g., setting 3ds Max to feet for Revit compatibility) reduces scaling errors. animations prior to preserves motion data in version transitions, and import settings like Unity's Bake Axis Conversion automatically handle coordinate flips, though these steps add overhead to cross-tool exchanges.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.