Root motion position jumps back when clip loops or blends

Slate Forums Support Root motion position jumps back when clip loops or blends

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #2262
    tor
    Participant

    Hi, root motion works fine for rig animation type humanoid, but I have issues with rig animation type generic. The position jumps back when the animation clip loops or when the animation clip blends. Any idea what could cause this issue? I veryfied that the animation itself is ok, e.g. the animation root motion works fine for this animation using the animation controller when I disable SLATE. I use starting transform mode Auto Match Transforms on all clips, but it also happens on long SLATE animation clips when the assigned animation clip loops.

    #2268
    Gavalakis
    Keymaster

    Hello there,
    Are the “offsets” in each Slate Animation Clip inspector set to 0?
    Can you please post a gif or video showcasing this behaviour?

    Thank you!

    Join us on Discord: https://discord.gg/97q2Rjh

    #2270
    tor
    Participant

    I wonder if the issue is caused by by the configured ‘root node’ that is not the ‘actor’ transform:

     

    I guess animator does handle the Avatar’s ‘root node’ but SLATE isn’t.

    Attachments:
    You must be logged in to view attached files.
    #2272
    tor
    Participant

    Here is one more useful finding: Everything works fine if I turn on ‘Apply Root Motion’ on the Animator component after SLATE gets activated (I just use scrubbing in SLATE). The thing is that SLATE turns ‘Apply Root Motion’ off when it gets activated.

    #2273
    tor
    Participant

    Aha, after some debugging of the SLATE code it makes sense why it fails. When SLATE does BakeRootMotion it only stores the pos and rot from the animators transform. But thing is that Animator also modifies the ‘Root Motion Bone’. In practice Animator will set the ‘Root Motion Bone’s local pos and rot to zero. A workaround is to delete the ‘Root Motion Bone’ keys from each animation clip, but that needs to be fixed by SLATE. A quick fix that works for me is to temporarily enable ApplyRootMotion on the animator when calling graph.Evaluate(…) in Slate.AnimatorTrack.OnUpdate

    #2275
    Gavalakis
    Keymaster

    Thank for the information. Having different root node could be the problem of this as you found out. I will have to dig a bit deeper into this to find out the exact cause and solution.
    Thanks again 🙂

    Join us on Discord: https://discord.gg/97q2Rjh

Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.