Skip to content

Kiln API / kiln / ModelAnimation

Class: ModelAnimation ​

A 3D entity's animation: the shared controller (set, trigger, play, state, time, weight) driving a Three.js AnimationMixer on the entity's MeshRef. mixer and action(clip) are there for inspection; the plugin sets every action's time and weight each fixed step.

Extends ​

Constructors ​

Constructor ​

ts
new ModelAnimation(options?): ModelAnimation;

Parameters ​

ParameterType
optionsAnimatorOptions

Returns ​

ModelAnimation

Overrides ​

AnimationController.constructor

Properties ​

graph ​

ts
graph: AnimationGraph | null;

Inherited from ​

AnimationController.graph


state ​

ts
state: string = '';

The current state's name ('' until the clips are known).

Inherited from ​

AnimationController.state


time ​

ts
time: number = 0;

Seconds of clip time since the state was entered (keeps growing across loops).

Inherited from ​

AnimationController.time


speed ​

ts
speed: number = 1;

Playback rate for the whole animator, multiplied with each state's speed.

Inherited from ​

AnimationController.speed


paused ​

ts
paused: boolean = false;

Holds the playhead (events and transitions wait too).

Inherited from ​

AnimationController.paused


params ​

ts
readonly params: Record<string, number | boolean> = {};

Parameter values; write them with set().

Inherited from ​

AnimationController.params


triggers ​

ts
readonly triggers: Set<string>;

Triggers set since the last animation step.

Inherited from ​

AnimationController.triggers


fade ​

ts
fade: Fade | null = null;

The crossfade in progress, or null.

Inherited from ​

AnimationController.fade


request ​

ts
protected request: 
  | {
  state: string;
  fade: number | undefined;
  restart: boolean;
}
  | null = null;

play() requests, applied at the start of the next animation step.

Inherited from ​

AnimationController.request


startState ​

ts
protected startState: string | null;

The state to enter first, overriding the graph's initial state.

Inherited from ​

AnimationController.startState


source ​

ts
source: 
  | AssetHandle<GLTF>
  | readonly AnimationClip[]
  | null;

Clips given in options, instead of the Model's.


mixer ​

ts
mixer: AnimationMixer<AnimationMixerEventMap> | null = null;

root ​

ts
root: Object3D<Object3DEventMap> | null = null;

The object the mixer animates (the MeshRef).


clipsByName ​

ts
readonly clipsByName: Map<string, AnimationClip>;

Accessors ​

stateSpec ​

Get Signature ​

ts
get stateSpec(): AnimationStateSpec | undefined;

The current state's spec.

Returns ​

AnimationStateSpec | undefined

Inherited from ​

AnimationController.stateSpec


clip ​

Get Signature ​

ts
get clip(): string;

The current state's clip name.

Returns ​

string

Inherited from ​

AnimationController.clip


loop ​

Get Signature ​

ts
get loop(): LoopMode;

The current state's loop mode.

Returns ​

LoopMode

Inherited from ​

AnimationController.loop


normalizedTime ​

Get Signature ​

ts
get normalizedTime(): number;

Plays of the current clip so far: 0..1 through the first, 1 at the end of a 'once' clip, 2.5 halfway through a third loop.

Returns ​

number

Inherited from ​

AnimationController.normalizedTime


finished ​

Get Signature ​

ts
get finished(): boolean;

A 'once' clip has reached its end.

Returns ​

boolean

Inherited from ​

AnimationController.finished


weight ​

Get Signature ​

ts
get weight(): number;

The crossfade weight of the current state: 0 just after a faded transition, 1 when settled.

Returns ​

number

Inherited from ​

AnimationController.weight


bound ​

Get Signature ​

ts
get bound(): boolean;

True once the plugin has told the controller about its clips.

Returns ​

boolean

Inherited from ​

AnimationController.bound

Methods ​

set() ​

ts
set(name, value): this;

Sets a parameter declared in the graph's params.

Parameters ​

ParameterType
namestring
valuenumber | boolean

Returns ​

this

Inherited from ​

AnimationController.set


get() ​

ts
get(name): number | boolean | undefined;

A parameter's value.

Parameters ​

ParameterType
namestring

Returns ​

number | boolean | undefined

Inherited from ​

AnimationController.get


trigger() ​

ts
trigger(name): this;

Sets a trigger declared in the graph's triggers. It lasts one animation step unless a transition takes it.

Parameters ​

ParameterType
namestring

Returns ​

this

Inherited from ​

AnimationController.trigger


play() ​

ts
play(state, options?): this;

Enters a state at the next animation step, skipping transitions. Already in it: nothing, unless restart. fade overrides the graph's crossfade seconds.

Parameters ​

ParameterType
statestring
options{ fade?: number; restart?: boolean; }
options.fade?number
options.restart?boolean

Returns ​

this

Inherited from ​

AnimationController.play


is() ​

ts
is(state): boolean;

True when the current state is state.

Parameters ​

ParameterType
statestring

Returns ​

boolean

Inherited from ​

AnimationController.is


bind() ​

ts
bind(clips, what): void;

Called by the plugin when the clips are known. Checks every state's clip exists, then enters the first state.

Parameters ​

ParameterType
clipsReadonlyMap<string, ClipInfo>
whatstring

Returns ​

void

Inherited from ​

AnimationController.bind


clipInfo() ​

ts
clipInfo(name): ClipInfo | undefined;

Info for a clip by name.

Parameters ​

ParameterType
namestring

Returns ​

ClipInfo | undefined

Inherited from ​

AnimationController.clipInfo


step() ​

ts
step(dt, out): void;

One animation step of dt seconds: play() requests, then transitions, then the playhead and its events.

Parameters ​

ParameterType
dtnumber
outAnimationSink

Returns ​

void

Inherited from ​

AnimationController.step


toJSON() ​

ts
toJSON(): Record<string, unknown>;

Returns ​

Record<string, unknown>

Inherited from ​

AnimationController.toJSON


action() ​

ts
action(clip): AnimationAction | undefined;

The mixer action for a clip (created on first use), or undefined before the model is bound.

Parameters ​

ParameterType
clipstring

Returns ​

AnimationAction | undefined


attach() ​

ts
attach(
   root, 
   clips, 
   what
): void;

Binds to a root object and its clips: makes the mixer, checks the graph's clips exist.

Parameters ​

ParameterType
rootObject3D
clipsreadonly AnimationClip[]
whatstring

Returns ​

void


detach() ​

ts
detach(): void;

Stops the mixer and frees its cached bindings.

Returns ​

void


apply() ​

ts
apply(): void;

Writes the playhead and crossfade into the mixer's actions and samples the pose.

Returns ​

void