Skip to content

Animation

About 100 animations live in one shared assets/animation_library.blend, appended at runtime and usable by every rig. Play any of them with character.actor.perform("<name>") (or the idle/say/walk_to wrappers for the common ones).

Whole library verified

All 100 actions load, render, and play their full motion — a fast load-check (animation_set.py) and a full-length render (animation_full.py) both pass 100/100. Natural lengths vary widely — from ~1 s gestures to ~48 s (talking_on_phone) and 17–35 s dances — so bound a shot with shot.clip(seconds) (note: perform(duration=…) is currently ignored — see Known Issues). A representative pose per family is below; the full list is in the Asset Catalogue.

Families (representative samples)

walking · running · sneak_walk · crouch_walking · injured_walking · sprint · jogging · zombie_walk

walking running
walking running

breathing_idle · looking_around · waving · talking · thinking · cheering · angry_gesture · crying · laughing · shrugging

waving cheering
waving cheering

punching · sword_and_shield_slash · firing_rifle · picking_up · drinking · sitting · hit_reaction · dying · falling

punching sitting dying
punching sitting dying

The full ~100-name list is in the Asset Catalogue.

Playing an animation

# in place (the gait cycle plays without translating)
a.actor.perform("running")
shot.mark_actor_has_action(a)     # suppress the auto default-idle

# while speaking
bob.say("Victory!", action_name="cheering")

In place vs travelling

perform("walking") runs the gait without moving. To actually travel, use walk_to/move_to (see Actors) — that adds root motion.

Locomotion whitelist

Only the gaits in LOCOMOTION_ANIMS (walks/runs) loop + repeat to cover distance. Other actions play once.