Vixen
dd8b0a81
csharp
public record class AnimationChannel

What 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 Target

    Which node or joint it drives, by name.

  • public float[] PositionTimes

    When each position key is, in seconds.

  • public Vector3[] Positions

    The position keys.

  • public float[] RotationTimes

    When each rotation key is, in seconds.

  • public Quaternion[] Rotations

    The rotation keys.

  • public float[] ScaleTimes

    When each scale key is, in seconds.

  • public Vector3[] Scales

    The scale keys.

  • public string Shape

    Which blend shape the scalar track drives, by name, or empty for a transform channel.

  • public float[] WeightTimes

    When each weight key is, in seconds.

  • public float[] Weights

    The 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