Lucky Robots Blog Open Roles

2.14 · Animation

Skeletal animation with graph-based blending. Driven by AnimationGraph assets and bone entity hierarchies, ticked from a TimeManager callback.

Module: Hazel/src/Hazel/Animation/ AnimationComponent UpdateAnimation
Bone hierarchy child entities AnimationComponent on root entity AnimationGraph asset UpdateAnimation TimeManager callback Blended pose applied to bones
Bones + graph asset feed UpdateAnimation, which writes a blended pose back into the bone hierarchy.

Overview

The animation system blends skeletal poses described by an AnimationGraph asset and applies them to a hierarchy of bone entities. It is intentionally small: there is no separate animation runtime — the bones are real Scene entities, the graph is an asset, and the per-step update is a single TimeManager callback.

Ownership & lifecycle

An AnimationComponent on the root entity points at an AnimationGraph asset and at the bone hierarchy under that entity. The component's lifetime follows the entity. The graph asset is shared and managed by the asset system.

Key types

Type / hookHeaderRole
AnimationComponentHazel/src/Hazel/Animation/Component on the animated entity. References the AnimationGraph asset and the bone hierarchy.
AnimationGraphHazel/src/Hazel/Animation/Asset describing animation clips, blends, and transitions.
UpdateAnimation(StepContext)TimeManager callbackPer-step tick: evaluates graphs, computes blended pose, writes back to bone transforms.

Extending

Add new blend behaviour by extending the AnimationGraph asset format and the matching evaluator inside Hazel/src/Hazel/Animation/. Bone hierarchies are ordinary entities, so additional rigs do not require runtime changes — only assets and an AnimationComponent.

Not for robot joints

Robot joints are driven by MuJoCo via the motion graph + policy pipeline (see 2.13 Robot / MotionGraph), not by AnimationComponent. Use animation for character meshes and other non-physics-driven rigs.