API

Interface FBXFileLoaderOptions

Defines options for the FBX loader.

interface FBXFileLoaderOptions {
    attachCamerasAndLights?: boolean;
    constraints?: "metadata" | "apply";
    curves?: "lines" | "skip";
    materials?: "auto" | "standard" | "pbr";
    normalMapCoordinateSystem?: FBXNormalMapCoordinateSystem;
    nurbsSubdivision?: number;
    onWarning?: (warning: FBXLoaderWarning) => void;
    preset?: "compatible" | "full";
    rebaseAnimations?: boolean;
    shareGeometry?: boolean;
    unitScale?: number | "preserve" | "meters";
}
Index
attachCamerasAndLights?: boolean

Parent cameras and lights to their FBX node so they follow its animation (default false, "full" preset: true). Otherwise they are created at the node's world position and orientation, unparented.

constraints?: "metadata" | "apply"

Constraints (aim, parent, position, rotation, scale): "metadata" (default) only records them on the nodes, "apply" ("full" preset) attaches an FBXConstraintBehavior to each constrained node so it is solved before every render. IK chains are always metadata only.

curves?: "lines" | "skip"

How curve geometry (Line, NurbsCurve) is imported: skipped (default) or as lines meshes ("full" preset).

materials?: "auto" | "standard" | "pbr"

Which Babylon material to build.

  • "standard" (default, "full" preset: "auto"): always StandardMaterial (PBR parameters are approximated).
  • "auto": PBRMaterial for physically based FBX materials (Standard Surface, Arnold, 3ds Max Physical, 3ds Max PBR, glTF, OpenPBR, Stingray PBS) and StandardMaterial for classic Lambert/Phong materials.
  • "pbr": always PBRMaterial (Lambert/Phong parameters are converted).
normalMapCoordinateSystem?: FBXNormalMapCoordinateSystem

Source convention for tangent-space normal maps connected through FBX normal-map slots. FBX does not standardize this convention, so the loader defaults to the glTF/USD-style Y-up convention. Set to "y-down" for assets authored with inverted green/Y normal maps.

nurbsSubdivision?: number

Segments per knot span when tessellating NURBS surfaces. Zero or undefined uses the subdivision stored in the file (usually 4), capped at 16.

onWarning?: (warning: FBXLoaderWarning) => void

Called for every recoverable issue found while loading (unsupported features, malformed data that was skipped, approximations). The same list is stored on the root node's metadata as fbxDiagnostics.

preset?: "compatible" | "full"

Bundle of defaults for the options that change what the loaded scene looks like.

  • "compatible" (default): the behaviour of the loader as first shipped: StandardMaterial for every material, one Babylon geometry per model, curve geometry skipped, constraints recorded as metadata only, clips rebased to start at frame 0, cameras and lights placed in world space.
  • "full": everything the loader can do: PBRMaterial for physically based shaders, geometry shared between instances, curves as lines meshes, constraints solved at runtime, authored clip times, cameras and lights parented to their nodes so they animate. An option set explicitly always wins over the preset.
rebaseAnimations?: boolean

Shift every clip so its first keyframe sits at frame 0 (default true). With false ("full" preset) keys keep the times authored in the file, so clips of one file stay aligned with each other and with their declared ranges.

shareGeometry?: boolean

Share vertex data between models that reference the same FBX geometry (default false, "full" preset: true). Skinned meshes are never shared.

unitScale?: number | "preserve" | "meters"

Unit conversion applied at the root of the loaded hierarchy.

  • "preserve" (default): keep the file's units (1 Babylon unit = 1 FBX unit).
  • "meters": scale so that 1 Babylon unit is 1 meter, using the file's UnitScaleFactor.
  • a number: centimeters per Babylon unit (100 = meters, 1 = centimeters, 2.54 = inches).