How to turn off segment scale compensate in finished model without ruining it?

How to turn off segment scale compensate in finished model without ruining it?

Anonymous
Not applicable
3,399 Views
3 Replies
Message 1 of 4

How to turn off segment scale compensate in finished model without ruining it?

Anonymous
Not applicable

Hello! I'm trying to export my rigged model of a flower from Maya 2017 to Unity 2018.1.1f1. It looks like this: 
normalflower.JPG
When I exported it as fbx to unity it looked like this: 

messedupflower.JPG
I figured this was because of the segment scale compensation from Maya so I ran this script I found on the forum to turn it off for all the joints in Maya: 
{
string $selected[] = `ls -type joint`;
select -r $selected;
}

string $sel[] = `ls -sl`;
string $singleJnt;
for ($singleJnt in $sel)
{
setAttr ($singleJnt + ".segmentScaleCompensate") 0;
}

But now in Maya it looks like the messed up version as well.
Is it possible to turn off segment scale compensate in Maya and preserve my model? Or do I just have to redo it....

0 Likes
3,400 Views
3 Replies
Replies (3)
Message 2 of 4

trs_andre
Collaborator
Collaborator

Hi @Anonymous,

 

I was having precisely the same problem. Were you able to solve it?

André Moreira

Game Developer / Technical Artist

LinkedIn

0 Likes
Message 3 of 4

Anonymous
Not applicable

I fixed this issue as apparently Autodesk doesn't give a flying **** about us.

You know; us, who defend it in front of all the Blender haters on various social media platforms.

Today I learnt a bitter truth, it deserves neither or loyality, nor our love. 

Anyway.

After countless hours of crying and searching (some only to come as far as simply figuring out THIS absolut %&@# was the problem btw) I figured out a solution for this ****show:

First of all, your joints have rotations and scale values on them, which they shouldn't have. Normally you would have figured that out as soon as you'd skin the mesh, but hey, thanks to that lovely segment scale compensate function it's now possible to waste away weeks of your life with rigging and animating to then be potentially worthless because Autodesk implemented this lovely feature. Aren't you a peach Autodesk.

I won't dream about coming for all of you and skin you in your sleep like I'm Sir goddamn Bolton. Noooo waaay. 

 

Back to topic.

To fix this absolute cluster**** at this advanced point rather than in the beginning of production because Autodesk utterly failed us and left us to rot in our misery, (for details, see above);

first of all, if you didn't reference your rig, and animated in the rig file, go to the bind pose (if you have none, simply go to an empty frame, select -> all by type -> nurb curves, which should select all controllers, then go to the channel box, shift select all translate and rotate and type in 0; 1 for the scale) and you should have your bind pose. lovely.

2. select the mesh, go to deform (rigging menu) -> Export Weights, then delete the history of the mesh, which should unbind it.

3. Fix all joints, put the &%§$& Tick away from the even more &%$& segment scale compensate bs, then set every rotation to zero and scales to 1.

4. bind the skin again to the joint chain.

5. Import your saved skin weights again (Deform -> Import Weights)

 

Hopefully I could help some fellow lost souls.

 

Autodesk, be ashamed of yourself. Truly. 

What kind of function is that? Other than to torture your users, seriously? 

0 Likes
Message 4 of 4

jmreinhart
Advisor
Advisor

Hi just wanted to offer some explanation that might help you in the future, I'm not an Autodesk employee, just someone who's had their own frustrating experiences with Maya.

 

I fixed this issue as apparently Autodesk doesn't give a flying **** about us.

You know; us, who defend it in front of all the Blender haters on various social media platforms.

Today I learnt a bitter truth, it deserves neither or loyality, nor our love. 

Most of the responses on this forum do not come directly from Autodek employees, they come from other Maya users that are giving there time to try and help other Maya users.

 

First of all, your joints have rotations and scale values on them, which they shouldn't have. Normally you would have figured that out as soon as you'd skin the mesh, but hey, thanks to that lovely segment scale compensate function it's now possible to waste away weeks of your life with rigging and animating to then be potentially worthless because Autodesk implemented this lovely feature. Aren't you a peach Autodesk.

I won't dream about coming for all of you and skin you in your sleep like I'm Sir goddamn Bolton. Noooo waaay. 

Maya won't stop you from doing things incorrectly. You are responsible for setting the scale to 1 and the rotations to 0. There are good reasons for implementing the segmentScaleCompensate mainly because it prevents shearing of the child joints when you scale a parent joint, though I don't understand why they removed the shear functionality of joints.

 

There are many things in Maya that are worthy of criticism, but this is not an issue with Maya, it's a compatibility issue between Maya and the game engine. Maya has features that the game engine does not, so you need to be aware of those differences when you are working. It's unreasonable to expect Maya to stop you if you are rigging in a way that is incompatible with a game engine that Autodesk doesn't own.