Search Issue Tracker
By Design
Votes
0
Found in
2018.3.0a1
2018.4.0f1
2019.1.0a1
2019.2.0a1
2019.2.2f1
2019.3.0a1
2020.1.0a1
Issue ID
1179527
Regression
No
AnimationLayerMixer messes up Animation when mixing 2 AnimatorControllerPlayables with the second playable set to Additive
Customer using AnimationLayerMixerPlayable to mix up AnimatorControllerPlayable, however, if one of the AnimatorControllerPlayable is set to additive using SetLayerAdditive API, the Animation messes up
To reproduce:
1. Download attached "AnimationLayerMixerPlayable.zip" project and open in Unity
2. Open "SampleScene" scene
3. Enter to Play mode
4. Observe that AnimationLayerMixer messes up Animation when mixing 2 AnimatorControllerPlayables with the second playable set to Additive
Notes:
- Mixing AnimatorControllerPlayable with AnimationClipPlayable works as expected
- Could not check for Regression on Unity 2017.4 because the project becomes Corrupted
Reproduced on Unity 2018.3.14f1, 2018.4.7f1, 2019.1.14f1, 2019.2.3f1, 2019.3.0b1 and 2020.1.0a1
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- “[Worker0] Could not generate preview image“ error when opening macOS native plugin in the Inspector with Architecture to build for set to ARM 64-bit
- [iOS] Application.absoluteURL is empty on Awake/Start when opening via deep link with Splash Screen disabled
- Crash on MemoryManager::Deallocate when rapidly calling Addressables.LoadAssetAsync
- Crash on physx::shdfnd::atomicIncrement when adjusting values on a character controller component after entering Play mode in Prefab edit mode
- [Rendering Debugger] [NewInputSystem] Debug Overlays in Play mode throws InvalidOperationException when using New Input System
Resolution Note:
We can't support animation controller on additive layer. There is too many edge case that won't works like root motion so we can't build a generic solution that will works for everybody.
By definition an additive layer doesn't blend the animation like an override layer and need additive animation to works.
The only supported way to generate additive animation is with an animation clip setup with a reference pose.
That been said if the user want to experiment stuff on his own he can use animation jobs with AnimationScriptPlayable and build his own additive controller
The playable connection would look like this
LayerMixer.Layer1.input <--- MyScriptPlayable <-- Controller
in your animation job for MyScriptPlayable you will need to iterate over all the animation stream values to subtract a reference pose to yield an additive animation stream.
But there is no guarantee that it will work for your use case.