A Comprehensive Guide to Data Types Storable in FBX Files

This article is a translated version of my original post on Qiita. Original (Japanese): https://qiita.com/segur/items/4daff7100f509a179661

Elements That Can Be Contained Within FBX Files

As a beginner learning about the structure of FBX files, I investigated the elements that can be set in an FBX scene, and here I note down my findings.

I've aimed to express things in a way that's easy to understand for beginners, so the explanations of terms might not be completely accurate. Please let me know if you spot any mistakes.

Referenced: Autodesk FBX 2017

Target Audience

This article is for those who can program but are not familiar with CG terminology.

FBX

FBX is a widely used file format in the CG industry. It can define the shape, texture, movements, etc., of objects within a 3D space.

FBX SDK

This tool allows you to read and write FBX files using programming languages. There are two versions: C++ and Python.

Scene

The content of an FBX file is organized in a hierarchical structure, much like HTML. The top layer is the Scene, equivalent to the <html> tag in HTML, with various Elements hanging beneath it.

Referenced: Autodesk FBX 2017 / FBX Scenes

The elements include the following types:

Element FBX SDK Class Name
Mesh FbxMesh
LOD Group FbxLodGroup
Camera FbxCamera
Light FbxLight
Gobo FbxGobo
NURBS FbxNurbs
Texture FbxTexture
Material FbxSurfaceMaterial
Constraint FbxConstraint
Deformer FbxDeformer
Global Settings FbxGlobalSettings
Axis System FbxAxisSystem
Node FbxNode
Marker FbxMarker
Line FbxLine
Skeleton FbxSkeleton
Animation Curve FbxAnimCurve
Pose FbxPose

Mesh

A mesh is a collection of polygons. It represents the shape of an object as a combination of flat surfaces (polygons) rather than curved surfaces.

Referenced: Wikipedia / Polygon Mesh

LOD Group

LOD stands for Level of Detail, also known in Japanese as 詳細レベル (detail level).

When you want distant objects to be displayed with a coarse mesh and closer objects with a finer mesh, you set the LOD.

Though the article is about Unity, this concept of LOD is well explained in this article!

Referenced: Reduce Load with LOD to Keep 60FPS in Unity Reduce Load with LOD to Keep 60FPS in Unity

Camera

In the physical world we live in, we use cameras to shoot videos, which we then watch on rectangular displays like smartphones.

Similarly, in the 3D CG space, FBX includes a camera element to capture the scene.

When creating games in Unity, you might use Unity's Main Camera instead, but when crafting 3D animations in tools like Blender or Maya, you store the camera's movement within the FBX file.

Referenced: Unity Documentation / Physical Camera

Light

Light refers to illumination. Without it, the space would remain in darkness. There are multiple types, such as sunlight and spotlights.

Referenced: Unity / FBX Exporter / Prefabs

Gobo

Gobo refers to images attached to spotlights which can create shadow-like effects.

Referenced: MOTIONBUILDER / Attach a Gobo to a Spot Light MOTIONBUILDER / Attach a Gobo to a Spot Light

NURBS

NURBS (Non-Uniform Rational B-Splines) are a type of curved surface. They represent the shape of objects with surfaces rather than polygons.

Referenced: Wikipedia / NURBS Wikipedia / NURBS

NURBS can depict smoother shapes than meshes (polygons), but they require more calculations, making them difficult for real-time rendering in games.

Moreover, polygons can form complex shapes by combining triangles, quadrilaterals, etc., but NURBS require control points to be arranged in a grid (like a Go board), limiting the range of shapes they can express.

Thus, using NURBS to model living beings like humans, animals, and plants is challenging, and they're not often used in films. However, because NURBS allow precise control over curvature, they are frequently used for accurately defining shapes for cars, ships, and similar items.

Texture

A texture is an image affixed to a mesh to represent an object's pattern. If the mesh is the globe, the texture is the world map.

There's also data defining how the texture is affixed to the mesh, called a UV map.

Referenced: SECOND LIFE MARKETPLACE / Maruti Textures # Texture - Full Perm

Material

Material refers to the texture of a surface, including its color, reflectivity, transparency, etc.

Referenced: Adjust Materials for Metal and Plastic in MAYA Arnold

Constraint

Constraints restrict the movement of objects, effectively "binding" them. For instance, if you constrain a ball to a hand, it moves with the hand. Removing the constraint lets the ball fall from the hand.

Referenced: Maya / Example of an Aim Constraint

Deformer

A deformer moves a mesh (vertices) using control points and is akin to Photoshop's warp feature. Skeleton animation (skinning), where the mesh deforms with bone movement, is one type of deformer.

Referenced: Maya / Create a Lattice Deformer

Global Settings

Global Settings refer to configurations affecting the entire scene. Some call these metadata or headers.

Axis System

The axis system determines the direction of the coordinate axes, with two types: right-handed and left-handed.

Whether to use the right or left hand is determined by imagining the x-axis as a thumb, the y-axis as an index finger, and the z-axis as a middle finger.

Referenced: stack overflow / OpenCV triangulatePoints handedness

Node

In FBX, a node encapsulates an object's position, rotation, and size, corresponding to a Transform in Unity.

All nodes have parent-child relationships, such as shoulder β†’ elbow β†’ wrist.

The position, rotation, and size of nodes are influenced by their parents. For instance, if the shoulder moves 1m forward, the wrist also moves 1m forward.

Referenced: Autodesk FBX 2017 / FBX Nodes

Marker

Markers are used as motion capture reference points, applied to the skin. They help calculate the position of joints.

Referenced: Recommended marker set for full body capture

Line

A line is a straight pathway utilized, for example, to guide an object's movement along it.

Skeleton

A skeleton is a human-like framework composed of bones and joints. While it suggests a "biological" concept, it is more mechanical in nature. For instance, to simulate hair movement, you could add bones for the bangs.

The expression skeleton animation describes the animation of human motion.

Referenced: STYLY MAGAZINE / Autodesk Maya–Skeleton Setup

Animation Curve

Animation curves are data sets defining an object's movement. In skeleton animation, they adjust the timeline for the joint rotation direction.

Referenced: Unity Documentation / Using Animation Curves

Pose

A pose refers to a posture and can be understood as a non-changing animation.

Referenced: DIGITAL FRONTIER / Character Setup for MotionBuilder

In Conclusion

This article was informed by the following resources: