Parent joint per joint (-1 for roots); also defines jointCount.
Inverse-bind matrices, jointCount × 16 column-major.
Rest-pose translations, jointCount × 3.
Rest-pose rotations (xyzw), jointCount × 4.
Rest-pose scales, jointCount × 3.
OptionalrootTransform: Float32Array<ArrayBufferLike>Optional ancestor transform above the root joint; defaults to identity.
ReadonlyjointReadonlyparentParent joint index per joint, or -1 for roots.
ReadonlyinvInverse-bind matrices, jointCount × 16 column-major.
ReadonlyrootAccumulated ancestor transform above the skeleton root joint (16 floats, column-major).
ReadonlyrestRest-pose translations from GLTF node defaults (jointCount × 3).
ReadonlyrestRest-pose rotations from GLTF node defaults (jointCount × 4, xyzw).
ReadonlyrestRest-pose scales from GLTF node defaults (jointCount × 3).
Computes final skinning matrices (global × invBind per joint) from per-joint TRS arrays.
Parents must appear before children in the joint list (guaranteed by GLTF).
Per-joint translations (jointCount × 3).
Per-joint rotations as xyzw quaternions (jointCount × 4).
Per-joint scales (jointCount × 3).
Destination buffer for the final joint matrices (jointCount × 16, column-major).
GLTF-style joint hierarchy with rest pose and inverse-bind matrices.
Joints are stored as a flat array; parentIndices encodes the hierarchy (-1 = root). The skeleton itself is static — animation state lives in TRS arrays passed into Skeleton.computeJointMatrices, which produces the final joint matrices used for skinning. The skin layout matches the source GLTF: parents always appear before their children.