Skip to main content

Animation Engines

The animation engine is a part of Rukhanka that reads, processes and blends animation tracks for the animated rigs.

Rukhanka has two animation engine implementations:

  • One that is completely implemented on parallel jobs and Burst-compatible C# code. In the documentation, this engine is referred to as CPU Animator.
  • Another with the core routines implemented using compute shaders. In the documentation, this engine is referred to as GPU Animator.

The reference Rukhanka animation engine is the CPU Animator. The GPU Animator is closely followed by the CPU Animator and produces exactly the same animation results, but due to the CPU-GPU interprocess communication aspects, cannot provide all functionality available from the CPU Animator.

Animators Feature Support Table

The following table shows available animator features and their support status.

Feature NameCPU Animator Support StatusGPU Animator Support Status
Legacy animations
Generic animations and avatars
Humanoid animations and avatars
Weighted animation blending
Avatar mask application
Loop pose calculation
Altering animation results
Inverse Kinematics
Root motion
User animation curves
Blend shapes
Bone position writeback
Working with physics
Working with Netcode
Animation frustum culling
Render bounding box update
Bone attachements
Works with Rukhanka Deformation System
Works with Entities.Graphics Deformation System

Animation Engine Selection

Rig Definition Authoring has the Animation Engine dropdown, where you can choose animator for a baked entity:

RigDef Animation Engine

Animation Engine Runtime Switching

Rukhanka can switch between CPU and GPU animators at runtime. The switch will be performed seamlessly and can be made at any time (even during animation playback). Use GPUAnimationEngineTag enableable component state to switch between animators:

  • If the component is enabled, Rukhanka will use GPUAnimator for that entity.
  • If the component is disabled, Rukhanka will use CPUAnimator for that entity.