Search Issue Tracker
By Design
Votes
0
Found in
2020.3.43f1
2021.3.16f1
2022.2.2f1
2023.1.0a24
Issue ID
UUM-25292
Regression
No
Animation Curves values are blended wrong on Imported Clips when "Loop Parse" is enabled in the Animation Clip
How to reproduce:
1. Open the project "IN_13401"
2. Enter the Play Mode
3. Press "S" to run backwards
Expected result: actual value and expected value are the same in the Console
Actual result: actual value and expected value are different in the Console
Reproducible with: 2020.3.43f1, 2021.3.16f1, 2022.2.2f1, 2023.1.0a24
Reproducible on: Windows 10 Pro
Note: reproducible in Player and in Play Mode
Workaround: disable the "Loop Parse" in the Animation Clip
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
- Search field in UI Builder's Library has no character limit
- Changing the value in UI Builder by dragging increases it by a few thousand points when reaching the borders of the screen
- ARM64 architecture DLL incorrectly copied instead of x64 when building for Windows x64
- Crash on TypeTreeIterator::GetNode when opening a specific folder
- Crash on WriteSerializedAssetsV2 when (re)entering the Play Mode in a specific project when IEnumerator Start() is used
Resolution Note:
Because of how our current animation system works, this behaviour is to be expected. We understand what you are trying to do here, but this will unfortunately not work using this approach. The current behaviour is limited, but logical. Because the created Curve is part of one of your clips in the blend tree and is set to Loop Pose, it is treated like all other curves in this clip. When a clip is set to Loop Pose, the differences between the first frame and last frame are blended throughout the duration of the clip so that values match on the last frame. This works well when there is a slight difference between the pose on the first and last frame (ex: walk or run cycle). In this case, you have a constant curve stepping from 0 to 1 and ending with a value of 3. This means that value of the original curve and the value of this curve after the loop pose blend are not going to be the same and this is expected.
The only way to address this issue would be to separate the looping clips from the clip/curve you do not want to loop.
Workaround: Duplicate the backwards-run.FBX that contains the desired constant Curve and rename it CurveClip. Delete the Animator.Curve in the backwards-run.FBX using the Curves option in the Importer (Inspector). Ensure Loop Pose is enabled in the backwards-run clip. Delete everything except the Animator.Curve in the duplicated CurveClip. Ensure Loop Pose is disabled in the CurveClip. Create a new Layer in the Animator. Set the Weight to 1, enable Sync and ensure the Base Layer is set as the Source Layer. Assign the new CurveClip to the presently empty Movement state on the new synced layer. This setup will ensure only the locomotion clips loop their values, while the constant curve gives expected values synced with the locomotion blend tree.