rojo/.cursor/rules/roblox/reference/engine/classes/CurveAnimation.yaml
2026-02-02 12:08:47 -06:00

71 lines
3.2 KiB
YAML

# This file is automatically generated. Please don't edit it manually.
# To submit a bug report on the content, see
# https://devforum.roblox.com/c/bug-reports/documentation-issues/72
name: CurveAnimation
type: class
memory_category: Instances
summary: |
Stores animation data in the form of curves for each individual channel to
animate.
description: |
`CurveAnimation` is a subtype of `Class.AnimationClip` consumed by Roblox's
animation system. It stores animation data for each animated channel in a rig
as a separate, individual curve. For example, `CurveAnimation` stores the
position channel for an articulated joint as a `Class.Vector3Curve`, and it
might store the rotation channel as a `Class.EulerRotationCurve` or
`Class.RotationCurve`.
#### Structure
`CurveAnimation` stores curves in a hierarchical manner, matching the
hierarchy of the structure of `Class.Motor6D|Motor6Ds` or `Class.Bone|Bones`
in the animated model. Under each `CurveAnimation` instance lies a hierarchy
of `Class.Folder` instances representing animated joints in the model. Under
each such folder instance, several possible instances may exist. An instance
named `Position` of type `Class.Vector3Curve` can drive the local translation
of the `Class.Motor6D` or `Class.Bone` on the animated model, while an
instance named `Rotation` of type `Class.EulerRotationCurve` or
`Class.RotationCurve` can drive the local rotation of the `Class.Motor6D` or
`Class.Bone` on the animated model.
#### Partial matching of hierarchy
You can match partial hierarchies to a model when playing a `CurveAnimation`
in Roblox's animation system. This means that not all joints need to be
present in the hierarchy for the existing joints to apply properly.
Furthermore, you can match hierarchies in a "relative" manner. For example,
the first child `Class.Folder` instance root can be `UpperTorso` and the
animation system matches that to any existing sub-hierarchies in the model.
#### Animating miscellaneous channels
`CurveAnimation` can also animate other numerical values in a model. For
example, you can animate FACS controls for facial animations by creating a
`Class.Folder` under the `CurveAnimation` instance named after an existing
`Class.FaceControls` instance in the model. Then, to animate individual facial
controllers, you can store individual `Class.FloatCurve` instances named after
the animated `Class.FaceControls` property.
#### Usage when making animations
As with other `Class.AnimationClip` types such as `Class.KeyframeSequence`,
you must first upload `CurveAnimation` instances to Roblox before playing
them. If you want to preview an animation before uploading it to Roblox, you
can generate a temporary ID using
`Class.AnimationClipProvider:RegisterAnimationClip()`; this generates a hash
ID that you can use for localized animation testing.
If you want to download the `CurveAnimation` corresponding to an existing
uploaded animation using Luau scripts, use
`Class.AnimationClipProvider:GetAnimationClipAsync()`.
code_samples: []
inherits:
- AnimationClip
descendants: []
tags: []
deprecation_message: ''
properties: []
methods: []
events: []
callbacks: []