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
- Fixing Message Loss in UMPE During Domain Reload
- The Editor freezes when ScheduleReadOnly of IJobParallelForTransform with dependency is used
- Text is truncated in the Inspector when the display scale is set to 150%
- CancellationTokenSource(<timeout>) has incorrect cancellation status when used in WebGL Player
- VFX property value names are cut off when properties with 'Arc' are viewed in the VFX Blackboard
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.