Logo Mibo

BonePose Type

One evaluated pose of an animated mesh: the per-bone model-space world transforms for the current frame plus the shader skinning palette derived from them.

Produced once per instance per frame by Animation3DState.computePose (or AnimatedModel.computePose) and shared between the skinned draw (Palette) and any number of bone queries / attachment draws (WorldPoses). The caller owns the value — there is no per-frame caching on Animation3DState. All matrices are in MonoGame's row-vector convention, consumed as-is (no transpose/inversion anywhere in the query/attachment path).

Record fields

Record Field Description

Palette

Full Usage: Palette

Field type: Matrix[]
Modifiers: mutable

Skinning palette: InverseBindPose[i] * WorldPoses[i], per bone.

Mutable for the same reason as WorldPoses — grown in place by computePoseInto and reused.

Field type: Matrix[]

WorldPoses

Full Usage: WorldPoses

Field type: Matrix[]
Modifiers: mutable

Model-space bone transform for the current frame, per bone.

Mutable so computePoseInto can grow the backing array in place on first use (or skeleton change) and reuse it thereafter — no per-frame allocation after warmup. Caller-owned; never aliased across frames.

Field type: Matrix[]

Static members

Static member Description

BonePose.empty

Full Usage: BonePose.empty

Returns: BonePose

A pose with no bones. Use as the starting point for computePoseInto — arrays are grown on first use and reused on subsequent calls, so no per-frame allocation after the first frame.

Returns: BonePose

Type something to start searching.