Vixen
02b45cc4
csharp
public sealed class Skeleton

A skeleton as the runtime uses it: parents, inverse bind poses, a bind pose to start from, and a name lookup that costs nothing after load.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

SkeletonData is what an import writes and what the object database stores. This is what a frame reads. The difference is small and it is all precomputation: the local bind transform of every joint, which the data only holds inverted and in model space, and a name-to-index map, which a clip needs once when it is baked and which nothing should ever build in a frame.

Parents precede children, which TryCreate checks rather than assumes. Every model-space pass in this assembly is a single forward loop that reads its parent's already-composed transform; an out-of-order skeleton would silently read last frame's value for one joint and produce a limb that lags by a frame, which is a far worse failure than refusing to load.

Immutable once built. A skeleton is shared by every character wearing it — a hundred instances of the same enemy hold one of these and a pose each — so nothing about it may depend on who is looking.

Fields and properties (7)

  • public string Name

    What the skeleton is called.

  • public int JointCount

    How many joints it has.

  • public ReadOnlySpan<int> Parents

    Every joint's parent index, in joint order. −1 for a root.

  • public ReadOnlySpan<string> Names

    Every joint's name, in joint order.

  • public ReadOnlySpan<Matrix4x4> InverseBindPoses

    Every joint's model-space-to-joint-space transform at bind time, in joint order.

  • public ReadOnlySpan<BoneTransform> BindPose

    The pose a character is in when nothing is playing: every joint's local transform at bind time.

  • public bool HasLimits

    Whether any joint on this rig has a range of motion.

Methods (7)

  • public JointLimit LimitOf(int index)

    How far a joint may turn from where it was modelled.

  • public int IndexOf(string jointName)

    The index of a joint, or −1 if the skeleton has no joint by that name.

  • public string NameOf(int index)

    The name of a joint.

  • public int ParentOf(int index)

    The parent of a joint, or −1 if it is a root.

  • public bool IsDescendantOf(int joint, int ancestor)

    Whether is or hangs off it.

  • public static bool TryCreate(SkeletonData data, out Skeleton? skeleton, out string? error)

    Builds the runtime skeleton from what a content build produced.

  • public static Skeleton Create(SkeletonData data)

    Builds the runtime skeleton, or throws if the data is not usable.

Used by (95, showing 40)

  • CompressionBenchmarksVixen.Benchmarks.Animation
  • ConstraintStageBenchmarksVixen.Benchmarks.Animation
  • CrowdBenchmarksVixen.Benchmarks.Animation
  • MoveSelectionBenchmarksVixen.Benchmarks.Animation
  • RigsVixen.Benchmarks.Animation
  • SamplingBenchmarksVixen.Benchmarks.Animation
  • AnimationClipVixen.Animation
  • AnimationClipCacheVixen.Animation
  • AnimationClipContentVixen.Animation
  • AnimationClipTestsVixen.Animation.Tests
  • AnimatorVixen.Animation
  • AnimatorTestsVixen.Animation.Tests
  • AuthoringTestsVixen.Animation.Tests
  • BakedVixen.Animation
  • BakedVixen.Animation
  • BakedVixen.Animation
  • BlendTreeTestsVixen.Animation.Tests
  • BodiesVixen.Animation
  • BodyVariationVixen.Animation
  • BoneMaskVixen.Animation
  • BuilderVixen.Animation
  • BuilderVixen.Animation
  • CameraConstraintsVixen.Animation
  • CameraSubjectVixen.Animation
  • ChainSpecVixen.Animation
  • ClipMotionVixen.Animation
  • CompressionTestsVixen.Animation.Tests
  • ConstraintContextVixen.Animation
  • ConstraintFrameRecordVixen.Animation
  • ConstraintGizmoSystemVixen.Animation
  • ConstraintGizmosVixen.Animation
  • ConstraintProposalsVixen.Animation
  • ConstraintSolveContextVixen.Animation
  • ConstraintStackVixen.Animation
  • ConstraintStageTestsVixen.Animation.Tests
  • ConstraintTagRecordVixen.Animation
  • ConstraintTestsVixen.Animation.Tests
  • DefaultChainSolverVixen.Animation
  • DefaultConstraintArbiterVixen.Animation
  • EcsIntegrationTestsVixen.Animation.Tests