Problem this feature should fix
Currently, CSkinnedMeshRenderer can only play one animation at a time. This limitation prevents developers from:
- Layering independent animations: Cannot play multiple animation tracks simultaneously (e.g., base locomotion + upper body action, or idle + gesture)
- Reusing animation clips across contexts: Animation combinations must be pre-baked as separate clips instead of dynamically composed
- Smooth animation blending: No built-in support for weighted blending between multiple poses
This results in animation clip duplication, increased asset management complexity, and reduced runtime flexibility.
Expected solution
Implement an Animation Layers system in CSkinnedMeshRenderer:
Features:
- Multiple simultaneous animation layers per renderer
- Each layer operates independently with its own playback state:
animationIndex / animationName
currentTimeTicks (per-layer animation time)
playbackSpeed (per-layer speed control)
isPlaying / isLooping (per-layer playback mode)
weight (0.0–1.0, contribution to final pose blending)
- Blend skeletal poses at the bone level using:
- Linear interpolation (Lerp) for position and scale channels
- Spherical linear interpolation (Slerp) for rotation channels
- Automatic weight normalization (sum to 1.0)
Problem this feature should fix
Currently,
CSkinnedMeshRenderercan only play one animation at a time. This limitation prevents developers from:This results in animation clip duplication, increased asset management complexity, and reduced runtime flexibility.
Expected solution
Implement an Animation Layers system in
CSkinnedMeshRenderer:Features:
animationIndex/animationNamecurrentTimeTicks(per-layer animation time)playbackSpeed(per-layer speed control)isPlaying/isLooping(per-layer playback mode)weight(0.0–1.0, contribution to final pose blending)