Home Technical Talk

[Maya] How can I bake a Joint's scale into the Local Joint Orient values? (GfyCat example inside)

null
Offline / Send Message
Pinned
AmitKilo null
Hey there, I'm trying to mirror a joint chain to the other side with the negative local joint orient values, scaling the mirrored joints with -1 is really effective for this, although I can't find a way to bake and keep the new orientation in, freezing transforms won't do the trick, anyone knows a workaround for this?

Take a look:  

Basically I want to keep the result but make sure the scale values are positive 1.

Replies

  • Mark Dygert
    Put the joints in a group, duplicate it and scale the new group -1, usually on Z. 

    The negative scale is on the parent object (the group) and your joints retain their orientation and values.

    That transform history will stay with the joints, even if you delete history. So if you want clean joints without a group transform, you'll need to create new joints and snap/orient them to the duplicated joints.


  • AmitKilo
    Offline / Send Message
    AmitKilo null
    Alright it semi works!, when I try to freeze them and unparent them from the group they gain a transform node I can't get rid off, any idea? :)
  • AmitKilo
    Offline / Send Message
    AmitKilo null
    Put the joints in a group, duplicate it and scale the new group -1, usually on Z. 

    The negative scale is on the parent object (the group) and your joints retain their orientation and values.

    That transform history will stay with the joints, even if you delete history. So if you want clean joints without a group transform, you'll need to create new joints and snap/orient them to the duplicated joints.
    I just tried that, It orients them just like before unfortunately, take a look:
    https://gfycat.com/TerrificObeseBeaver
    (Sorry if it's too sped up, 15 sec limit on gfycat, you can press the "-" button to slow it down)

    (Doesn't work either with Point\Orient Constraint or the Maya New Match Options)
  • Mark Dygert
    Oh crap I didn't hit post! I hope you figured it out or this can be helpful to someone else.

    Yea that is to be expected. The flip isn't happening in the joint axis, its happening on the parent group/transform node, in some cases that can be pretty useful. But it sounds like you want to mirror AND flip an axis, like this:

    The right side flows down positive X, the left side flows down negative X.

    So you can rotate on the same axis and have the animation mirror, like this:

    I thought you wanted identical orientation...

    You have a few options:

    1) Use the Skeleton > Mirror Joint tool
     That is what I used in the example above. It will change the orientation of the joints, which is something to keep in mind when you hook up your controllers. You want to make sure to check on "Behavior". Using "Orientation" will be the same as doing the group scale method, but it won't have a group attached to it.

    2) Use Skeleton > Orient Joint
    This can reorient your joints with this tool but most people find it frustrating and lacking. There are a bunch of scripts out there that handle this operation a lot better.

    3) Leave them as is 
    Invert the controller/group that will control them, this is what I thought you where going to do. In some ways this can be easier because you don't have to treat one side different than the other.

    4) Do it by hand
    Un-parent the joints rotate them the way you want them to go, freeze transforms or create new joints and snap.

    I lean heavily toward option 1 but all of them can be useful in specific situations under certain circumstances.


Sign In or Register to comment.