Rukhanka - ECS Animation System
Rukhanka is a ECS Animation System that uses standard Unity animation editing tools (i.e. 'Mecanim') as authoring workflow.
Rukhanka depends on the 'Entities' package. It prepares animation data for rendering with the 'Entities Graphics' package. These two packages are required for the functioning of Rukhanka.
Rukhanka is an ECS animation system that mimics the standard 'Mecanim' animation system of Unity. Use familiar tools for authoring animations and animation state machines without any difference from the 'Monobehaviour' world. During the baking phase, it converts all required Animator, Animation, Skinned Mesh Renderer, and Avatar Mask data into its internal structures. All converted data is 'Burst' compatible and processed in a parallel and very performant way.
Rukhanka has the following main features:
- Unity Animator Controller conversion and processing
- Generic and Humanoid animations and avatars
- Animation data preparation for Entities Graphics skinned meshes
- Bone visualization system
- Extended logging and validation layer
- Arbitrary (non-skinned meshes) object hierarchy animation
- Avatar masks
- Root motion
- All 2D blend tree types support (Direct, 1D, 2D Simple Directional, 2D Freeform Directional, 2D Freeform Cartesian)
- Client-server animations synchronization with 'Unity Netcode for Entites' package
- Works with Unity.Physics
- Animation and animator controller events
- Inverse Kinematics
- Full source code
The package contains samples for HDRP and URP.
Rukhanka has limitations:
- Legacy animations are not supported.
- Although Rukhanka implements all core animation functionality it is not 100% equivalent to Unity 'Mecanim'. For a full feature support matrix please refer to documentation.
Technical details
Dependencies:
- Unity 2022.3.0f1
- Entities 1.0.16
Performance:
- 100% Burst compatible. All core systems are ISystem based.
- Animations processed on per-bone basis, not per-object. This allows fully utilize all available processor cores in high-bone and low-bone skinned meshes.