Root motion not scaling in 4.8

The scale set upon importing my FBX (under Transform, the field “Import Uniform Scale”) is ignored when Root Motion applies its movement to the capsule of my character.

I’ve imported my animation/mesh at a scale of 30. The root motion is being correctly read out of the animation clip, and its applied to the transform of the character, but its always off by a factor of 30.

I found this bug reported already, here:

The only comment on it says it was aiming to be fixed in 4.6. Is this bug still present in 4.8? If so, are there any reasonable work arounds?

Hi cadmean -

Thank you for your report. We have assigned this issue to a member of our support staff, and they will begin investigation as soon as possible. If we are unable to reproduce the issue, or we need additional information, our staff member will comment here with additional questions. Otherwise, we will post an ‘Answer’ once we have logged the issue in our bug database or we have a solution for it.

In the meantime, please be sure to review our suggestions for how to report a bug, and feel free to edit your post if you have additional information to provide:

Thank you -

Eric Ketchum

Hey cadmean,

The issue still does exist in the current build of the engine. Resources were dedicated elsewhere over the past few engine releases due to various reasons. With that in mind, I was able to contact the engineers and they plan to have this fixed in an upcoming release. There is a suggested workaround in the AnswerHub post you linked that should work for you in the meantime.

This is currently all the information I am able to provide at this time, but if you have any further questions please let me know and I will be glad to assist you.

Regards,

Hey Andrew!

We’re still seeing this issue in 4.11. It is possible that we’re seeing a different issue but using the work around found in the answer hub solved the root motion us. Is this expected?

Yes, the work around is still your best route as this issue has not been fixed yet. I made sure to increase the community interest level on the bug report, and added a comment that users are still waiting to have this fixed.

Cheers,

@AndrewHurley

I’ve run into this issue in 4.14.3. It does not only affect “Import uniform scale”, but all parts of the transformation (translation, rotation, scaling). Can you give us an idea of when to expect a fix?

edit: (half a) workaround within unreal: use “Transform (Modify) Bone” like here: "Transform/rotate bones in animation blueprint - Skeletal controls not working - Character & Animation - Epic Developer Community Forums . Set bone to root and don’t forget to change Scale Mode in the details panel. (This transformation doesn’t seem to change the root capsule component though, only the pose. So it’s not really useful).

I can also confirm this; the root motion doesn’t get scaled along with the Import Uniform Scale value.

We have reached out to the devs to inquire as to when a potential fix can be put in place. As of now we cannot give you an exact time frame, but you can track the issue by following the link I have provided below to the public tracker.

UE-3155

This is all the information I have at this time regarding this issue.

Thank you,

So, I just had this issue, going to spread how I solved it, as it may not work for all but might help some.

There is a non blueprint exposed function in character.h called SetAnimRootMotionTranslationScale() . I went in and exposed it to blueprints and then can just set it to compensate for whatever the scaling issue is (mine was 100). Not sure why this is not exposed to blueprints by default… but yeah, if your using C++ you can just call that function, or if you want to build your own engine from source you can expose it to blueprints yourself.

Sorry to bother you about this, but can you explain how to expose the SetAnimRootMotionTranslationScale function to blueprints? This is what I’ve edited it to in my character.h file but it’s still not showing up

/** Sets scale to apply to root motion translation on this Character */
UFUNCTION(BlueprintCallable, Category = Animation)
void SetAnimRootMotionTranslationScale(float InAnimRootMotionTranslationScale = 1.f);

Can you see anything wrong? I’m still very new to UE4 so it’s pretty likely I’ve screwed something up, haha