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

  1. 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.

Add comment

Log in to post comment