API

Interface GltfAnimationData

Everything the animation system needs, parsed from a glTF file.

interface GltfAnimationData {
    boneOverrides?: ReadonlyMap<number, unknown>;
    clips: readonly AnimationClip[];
    excludedNodeIndices: ReadonlySet<number>;
    morphBindings: readonly MorphBinding[];
    nodeNames: readonly (string | undefined)[];
    nodes: readonly NodeRest[];
    nodeTargets: readonly (AnimatedNodeTarget | undefined)[];
    skeletons: readonly SkeletonBinding[];
}
Index
boneOverrides?: ReadonlyMap<number, unknown>

Shared node-index → bone override map, present only when enableBoneControl() installed bone control. Handed to every AnimationController so a playing clip honours user bone overrides (animation wins per-component). undefined on the default path. Typed as unknown value to keep the internal BoneOverride shape out of the public API surface.

clips: readonly AnimationClip[]
excludedNodeIndices: ReadonlySet<number>

Node indices excluded from node-TRS writeback: skin joints (driven by the skeleton path) plus skinned-mesh nodes and all their ancestors (their bone matrices bake an invMeshWorld captured at load, so moving them at runtime would double-transform the skinned vertices).

morphBindings: readonly MorphBinding[]
nodeNames: readonly (string | undefined)[]

glTF node names indexed by node index (undefined for unnamed nodes). Used by AnimationGroupMask to resolve include/exclude target names to the node indices its channels animate.

nodes: readonly NodeRest[]
nodeTargets: readonly (AnimatedNodeTarget | undefined)[]

Scene-node targets indexed by glTF node index. Used to write plain node-TRS channels (non-skeletal node animation) back onto the live scene graph so the affected meshes — and their descendants — actually move.

skeletons: readonly SkeletonBinding[]