Download

Anyone here managed to import bone stretching/scaling into UE?

Hi,

Recently been trying to import bone stretching from max into Unreal.

I’m running into a few problems. Unreal doesn’t seem to be importing them correctly, instead of scaling or stretching the bone it simply moves the bone on its scaled axis. It may look deceptively like stretching but its not.

I have a feeling that it has to do with Unreal not reading the stretchy bone setup correctly. I tested if it is perhaps an FBX issue but by importing the fBX back into max it was working as expected.

Perhaps Unreal is expecting actual Scaling to happen on the bone itself while in max it is stretching the bone by moving its pivot without any Scalar transform info being manipulated directly on the bone. Its just a little confusing as to why the FBX would be working but the same file in Unreal does not seem to work.

If this is the case then the setup in max must change to have bone scaling done directly on a certain axis from both ends of the bone chain, which may be a very tricky process to accomplish vs the usual setup of constraints and bakes.

I did go over some of the forum posts but no definitive answers there, perhaps i missed it. Anyone here managed this issue before?

I also enabled preserve local transform and played around other import parameters in UE with no successful results so far.

Thanks.

This might not help your cause, but on the maya side of things I have worked a lot with bone scaling and stretching and it behaves pretty predictable and stable. I found that if the bone hierarchy isnt setup correctly and baked properly it can bug out:
Correct hierarchy setup:
Each bone needs the .scale from its parent connected into its .inverseScale channel. Each bone needs to have .segmentScaleCompensate checked on.

Correct way to bake scale:
dont use a scale constraint to drive from your anim rig to the bake rig. That has issues with the hierarchy setup from above. So instead just do direct attribute connections from .scale of the source rig to .scale of the export rig bones.

If you do those two things correctly, scaling will work perfectly in maya. Now for max im afraid im not sure how that workflow can be transferred.

Thx will look up maya’s and see how to adapt scale parameter same way in max.

Ok Thanks got it working.

It’s in similar logic to Maya’s but in Max things are hooked up a little differently. For anyone interested:

Max does bone stretching internally in a way that the transform of the scale is not transferred in a way that Unreal or other real time apps may understand, the solution is to link up the stretch bone with the scale transform of another bone which has position and orientation constraint following the original bone, then assign scale float script controller and use the following expression on that bone after picking the original bone as a node, with a variable (in this case I named it “Scaler”):

Hope this helps.