Joint scale problems when importing

Someone please HELP!!

I created a character in Maya 2011. Just before I started rigging the character, I imported it into Unity via FBX - worked 100%!

After rigging the character, something weird it happening. At first it looked like my model disappeared, but I realized that the joints have scaled down to 0.01 instead of 1. I used the scale factor in Unity, but nothing works. Only the top joint of the hierarchy is scaled to 1, the joints below it remains 0.01.

I’ve checked my Maya file, and all the joints are at scale 1. When I manually scale every joint to 1 in Unity, the character looks fine, but that poses a huge problem for animation, since you can’t scale the joints in the Project panel of the animation files. Any ideas? Please! Painting the weights was a huge task, and I would not like to redo it.

UPDATE…

I’ve detached the skin of the character, made a couple of joints without touching them in any way - then I skinned the model to the new joints and exported to FBX and the same effect happens. The joint at the top of the hierarchy is fine, but everything below it is down to 0.01, which means that I can’t import any animation for the character, even if I manually scale the joints to 1!

SOLUTION!!!

I’ve found the solution! I’m posting this so that if anyone else comes across this problem, they won’t bang their heads against the wall (like I did).

There is a joint scale conversion problem with Maya 2011 and FBX. I read somewhere that Maya added some new features to the FBX export to allow for non-uniform scale compensation. This results in bad data for Unity. Here’s the solution, and it’s really simple:

Select your mesh with your joints (you can only select the group or the very top object/joint in the hierarchy) and export to FBX using Maya 2006 version.
Next, create a new scene in Maya and import that file you just exported. Your model will look about 10x bigger than in your original scene, but resist from scaling it - unity will interpret it correctly. Clear your selection and goto export all. Export your FBX for unity with the 2006 version again. Now when you go into unity, the scale will be perfect!

I hope it helps!

Still on Maya 2009…
But the scale issue could be your Maya Unit? you have to work with meter units when exporting to Unity.
Also be careful with FBX plugin because he will export with his own unit.

Then Maya + FBX to meter unit should be ok…?

Thanks! Everything is working fine now. It seems to be a pseudo-bug in Maya 2011 and its FBX exporter. I found a program from Autodesk called FBX Converter. Its free to download, and it does pretty much the same as I’ve explained above, just quicker, and Unity seems to like the file-type.

stephanmaya, you are my savior! I just spent multiple hours basically discovering the Segment Scale Compensate checkbox that you directed me to here.

For what it’s worth, I was able to solve my almost identical problem by selecting every joint in my rig and unchecking Segment Scale Compensate underneath the Joint section in the Attribute Editor.

The Attribute Editor doesn’t seem to support multi-edit in this regard, though, so a quicker way:

  • Edit > Select All By Type > Joints
  • Window > General Editors > Attribute Spread Sheet
  • Attribute Filter: compensate
  • Segment Scale Compensate for all joints: off

Anyway, thanks again!

2 Likes

Even 8 years later this thread is still gold.
From maya 2018 things seems to be a bit more different for the Segment Scale Compensate…
A direct url to Autodesk documentation with some old school melscript :

Cheers! :slight_smile:

Just adding this bit here for anyone else experiencing strange scale behavior from Maya to Unity.

The Segment Scale Compensate attribute on the joints definitely needs to be disabled IF you have animation on any of the scale attributes on any joints in a parent-child hierarchy.

For context:
If you have a row of 3 joints laid flat along the Z-Axis and select them all, animated the Scale-Z attributes from 1 to 3 for example, then baked that animation and exported it to Unity it will look different.
In Maya it will look reasonable but side by side in Unity it will look the equivalent of scaling the z axis by 20 or 30 in Maya and look like it’s stretching infinitely.

This was an issue on the project I am working on and we determined that it was because of this “Segment Scale Compensate” attribute.

Once we updated the rig by disabling that attribute we simply updated the Scale-Z attribute in our animations to look nice again by adjusting the numbers (disabling the attribute caused our animations to look messed up in Maya like in Unity ). Not a big deal!

Sorry to bump an older thread, I just wanted to add my experience in case it’s similar to anyone else who needs help.

cheers sorted !