public sealed class SkeletonA 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 NameWhat the skeleton is called.
public int JointCountHow many joints it has.
public ReadOnlySpan<int> ParentsEvery joint's parent index, in joint order. −1 for a root.
public ReadOnlySpan<string> NamesEvery joint's name, in joint order.
public ReadOnlySpan<Matrix4x4> InverseBindPosesEvery joint's model-space-to-joint-space transform at bind time, in joint order.
public ReadOnlySpan<BoneTransform> BindPoseThe pose a character is in when nothing is playing: every joint's local transform at bind time.
public bool HasLimitsWhether 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