public record class AnimationChannelWhat one animation does to one node, as three vector tracks and a scalar one.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
Position, rotation and scale keep their own time arrays, because an exporter emits keys only where a track actually changes. A character that translates for two seconds while rotating on every frame would otherwise carry two hundred position keys that all say the same thing.
Rotation is a quaternion and is deliberately not decomposed into Euler angles: a track sampled between two Euler triples takes a different path than one sampled between the rotations they represent, and the difference is the gimbal artefact everybody has seen.
The fourth track is a scalar and it drives a blend shape. WeightTimes/Weights against Shape is what glTF's weights sampler and FBX's morph channel bake down to — one curve per shape per morphed mesh. It is on this type rather than beside it because a track is a track: the same time arrays, the same held-at-both-ends rule, the same bucket index.
⚠ A channel is a transform channel or a weight channel, and nothing produces both. Target names a joint for the first and the morphed mesh's node for the second, which is why AnimationClip's unresolved count does not include a weight channel that names no joint — a face mesh is not expected to be one.
Fields and properties (10)
public string TargetWhich node or joint it drives, by name.
public float[] PositionTimesWhen each position key is, in seconds.
public Vector3[] PositionsThe position keys.
public float[] RotationTimesWhen each rotation key is, in seconds.
public Quaternion[] RotationsThe rotation keys.
public float[] ScaleTimesWhen each scale key is, in seconds.
public Vector3[] ScalesThe scale keys.
public string ShapeWhich blend shape the scalar track drives, by name, or empty for a transform channel.
public float[] WeightTimesWhen each weight key is, in seconds.
public float[] WeightsThe weight keys, one per WeightTimes entry.
Used by (21)
- RigsVixen.Benchmarks.Animation
- AnimationClipVixen.Animation
- AnimationClipContentVixen.Animation
- AnimationClipDataVixen.Rendering
- AnimationClipTestsVixen.Animation.Tests
- AnimationCurveCompressorVixen.Animation
- AuthoringTestsVixen.Animation.Tests
- BlendShapeTrackTestsVixen.Animation.Tests
- CompressionTestsVixen.Animation.Tests
- ModelDataTestsVixen.Rendering.Tests
- RigVixen.Ai.Nodes.Tests
- SkeletonRetargetVixen.Animation
- TestRigsVixen.Animation.Tests
- TypeRegistrationVixen.Rendering
- Vixen_Rendering_AnimationChannelSerializerVixen.Rendering
- Vixen_Rendering_AnimationClipDataSerializerVixen.Rendering
- AnimationClipAssetVixen.Editor.Assets
- AnimationClipImporterTestsVixen.Editor.Assets.Tests
- AuthoringTestsVixen.Editor.AssetEditors.Tests
- ModelReaderVixen.Editor.Assets
- ModelReaderTestsVixen.Editor.Assets.Tests