Reusable collections of AnimationChannels, together representing a discrete animation clip.
One Animation represents one playable unit in an animation system. Each may contain channels
affecting multiple paths (
weights) on multiple
Nodes. An Animation's channels must be played together, and do not have any meaning in
Multiple Animations may be played together: for example, one character's Walk animation might play while another character's Run animation plays. Or a single character might have both an Idle and a Talk animation playing at the same time. However, glTF does not define any particular relationship between top-level Animations, or any particular playback behavior like looping or sequences of Animations. General-purpose viewers typically autoplay the first animation and provide UI controls for choosing another. Game engines may have significantly more advanced methods of playing and blending animations.
For example, a very simple skinned Mesh might have two Animations, Idle and Walk. Each of those Animations might affect the rotations of two bones, LegL and LegR, where the keyframes for each target-path pair are stored in AnimationChannel instances. In total, this model would contain two Animations and Four AnimationChannels.
const animation = doc.createAnimation('machineRun') .addChannel(rotateCog1) .addChannel(rotateCog2) .addChannel(rotateCog3);
Adds an AnimationChannel to this Animation.
Adds an AnimationSampler to this Animation.
Makes a copy of this property, with the same resources (by reference) as the original.
Copies all data from another property to this one. Child properties are copied by reference, unless a 'resolve' function is given to override that.
Removes both inbound references to and outbound references from this object. At the end of the process the object holds no references, and nothing holds references to it. A disposed object is not reusable.
Returns true if two properties are deeply equivalent, recursively comparing the attributes of the properties. Optionally, a 'skip' set may be included, specifying attributes whose values should not be considered in the comparison.
Example: Two Primitives are equivalent if they have accessors and materials with equivalent content — but not necessarily the same specific accessors and materials.
Returns default attributes for the property. Empty lists and maps should be initialized
to empty arrays and objects. Always invoke
super.getDefaults() and extend the result.
Returns a reference to the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.
Returns the name of this property. While names are not required to be unique, this is encouraged, and non-unique names will be overwritten in some tools. For custom data about a property, prefer to use Extras.
Returns true if the node has been permanently removed from the graph.
Lists AnimationChannels in this Animation.
Lists all ExtensionProperty instances attached to this Property.
Returns a list of all properties that hold a reference to this property. For example, a material may hold references to various textures, but a texture does not hold references to the materials that use it.
It is often necessary to filter the results for a particular type: some resources, like Accessors, may be referenced by different types of properties. Most properties include the Root as a parent, which is usually not of interest.
const materials = texture .listParents() .filter((p) => p instanceof Material)
Lists AnimationSamplers in this Animation.
Removes an AnimationChannel from this Animation.
Removes an AnimationSampler from this Animation.
Updates the Extras object, containing application-specific data for this Property. Extras should be an Object, not a primitive value, for best portability.
Sets the name of this property. While names are not required to be unique, this is encouraged, and non-unique names will be overwritten in some tools. For custom data about a property, prefer to use Extras.