Motion Warping with Bone

Hello!

Did you guys got working the motion warping using a Bone? (i.e., setting “Bone” in the Warp Point Anim Provider). I’m trying to set my character position using the hand_r bone, but the translation that I get with motion warping is weird… Maybe it is still under development, or I’m doing something wrong?

Thanks!

I’ve tried an easier setup and it still is not working. Seriously I don’t know what to do anymore :sweat_smile:

Just in case lemme write here the process I’m following:

  1. Create an animation montage containing an animation sequence. Inside of the animation, this sequence contains a bit of root translation in order to get warping correctly in UE. The animation sequence is also set to Root Motion.

  2. In the montage, add a Motion Warping notify state. The setting is:

  • Root Motion Modifier: SkewWarp
  • Warp Target Name: Jump (because I wan the character to jump to a position)
  • Warp Point Anim Provider: Bone
  • Warp Point Anim Bone Name: hand_r
  • Warp Translation: True
  • Ignore Z Axis: False
  • Warp Rotation: False
  1. Before playing the Animation Sequence, in the blueprint add a AddOrUpdateWarpTargetFromTransform node and set the world position that you want the bone hand_r to be when the warping occurs

However, when I play this the warping translation is weird, like scaled by a weird factor, and the character ends up way higher than the expected position.

And for the record, I tested exacly the same code but changing in 2 “Bone” to “None”, which warps translating the root of the skeleton. In this case, the character warps as expected, translating its root bone to the location setted in 3.

So… maybe the warping with Bone is not still working properly? Or I’m understanding something wrong?

Thank you in advance guys!

I have the exact same issue.
I couldn’t manage to wrap my head around how motion warping with bone is supposed to work. What you describe is what I would have expected. I followed the same steps as you and ended with a weird result too.

In the end I worked around this by using regular motion warping
warp point anim provider = None
Warp translation: true
Ignore Z axis: false
Warp rotation: false

Then before updating the warp target location in my blueprint, I subtract the relative offset from my target bone to the root bone (in world space). But I couldn’t find a way to compute this for a given frame, so it’s basically subtracting a magic vector found through trial and error.
If that can help someone.


this works fine. But it’s far from ideal because the “magic” vector will change for different animation, so I’ll have to somehow carry some additional data.