how should I mirror joints?

466 views
Skip to first unread message

Rudi Hammad

unread,
Jan 15, 2016, 5:01:31 AM1/15/16
to Python Programming for Autodesk Maya
hello,
there are 2 ways to mirror a joint. 1- using the mirror joint menu in mode behavior, or 2-creating a parent group to that joint and giving the group a negative scaling in one axis ( usually  -x)
I always use the first method, but then I though that the second method has an advantage which is that you get a nice behavior in translation. In the first method, only in rotation.
I guess I never went for the second method because I don´t like negative scaling, but what the hell?? why not?
what do you think?

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 5:49:41 AM1/15/16
to python_in...@googlegroups.com
Hey man
Mirroring in rig symetrical characters are a little tricky.
1. Joints should be mirrored in mode behavioral
2. Controlers should mirror in two ways:
    a. duplicate groups then scale -1 then freeze
    b. duplicate groups then scale -1 then no freeze

it is depend on capability of controlers.

good luck!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/ace61768-ccf0-401f-b65c-944dc4252b63%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--


Bests,
madoodia

Rudi Hammad

unread,
Jan 15, 2016, 7:46:32 AM1/15/16
to Python Programming for Autodesk Maya
sure, but if we talk only about joints, let´s say that you mirror an arm.
If you mirror in mode behavioral it is ok, but if you try to translate both arm to the front, one will go to the front, but the other will go back in the opposite direction.
if you do the mirror, by duplicating one arm, then group, and the scale -1 the group, both arms will translate in the same direction.


El viernes, 15 de enero de 2016, 11:49:41 (UTC+1), Mahmoodreza Aarabi escribió:
Hey man
Mirroring in rig symetrical characters are a little tricky.
1. Joints should be mirrored in mode behavioral
2. Controlers should mirror in two ways:
    a. duplicate groups then scale -1 then freeze
    b. duplicate groups then scale -1 then no freeze

it is depend on capability of controlers.

good luck!
On Fri, Jan 15, 2016 at 1:31 PM, Rudi Hammad <rudih...@gmail.com> wrote:
hello,
there are 2 ways to mirror a joint. 1- using the mirror joint menu in mode behavior, or 2-creating a parent group to that joint and giving the group a negative scaling in one axis ( usually  -x)
I always use the first method, but then I though that the second method has an advantage which is that you get a nice behavior in translation. In the first method, only in rotation.
I guess I never went for the second method because I don´t like negative scaling, but what the hell?? why not?
what do you think?

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--


Bests,
madoodia

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 8:58:46 AM1/15/16
to python_in...@googlegroups.com
yes, but in a rig you will not rotate joints, you will rotate controlers. so if you use rotation in gimbal lock mode when you select left_ and right_ controlers, you will see same result in rotation.

On Fri, Jan 15, 2016 at 4:16 PM, Rudi Hammad <rudih...@gmail.com> wrote:
sure, but if we talk only about joints, let´s say that you mirror an arm.
If you mirror in mode behavioral it is ok, but if you try to translate both arm to the front, one will go to the front, but the other will go back in the opposite direction.
if you do the mirror, by duplicating one arm, then group, and the scale -1 the group, both arms will translate in the same direction.

El viernes, 15 de enero de 2016, 11:49:41 (UTC+1), Mahmoodreza Aarabi escribió:
Hey man
Mirroring in rig symetrical characters are a little tricky.
1. Joints should be mirrored in mode behavioral
2. Controlers should mirror in two ways:
    a. duplicate groups then scale -1 then freeze
    b. duplicate groups then scale -1 then no freeze

it is depend on capability of controlers.

good luck!
On Fri, Jan 15, 2016 at 1:31 PM, Rudi Hammad <rudih...@gmail.com> wrote:
hello,
there are 2 ways to mirror a joint. 1- using the mirror joint menu in mode behavior, or 2-creating a parent group to that joint and giving the group a negative scaling in one axis ( usually  -x)
I always use the first method, but then I though that the second method has an advantage which is that you get a nice behavior in translation. In the first method, only in rotation.
I guess I never went for the second method because I don´t like negative scaling, but what the hell?? why not?
what do you think?

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/1dd19f75-60d5-4b4c-8fee-200e878f8255%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--


Bests,
madoodia

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 9:06:02 AM1/15/16
to python_in...@googlegroups.com
i'm capturing a video for you from one of my characters that is related to Pyblish.com project.
i hope you can use it
--


Bests,
madoodia

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 9:18:12 AM1/15/16
to python_in...@googlegroups.com
look at it, if you have any question, you can ask.
and i say again, it is a open source project that you can study it in www.Pyblish.com.
you can find the character in here in my dropbox:
https://dl.dropboxusercontent.com/u/70052012/pyblish_character_rig_madoodia_13_final_03_07012015.ma

good luck man
i hope you can use it in your work
:)
--


Bests,
madoodia
joint_transformation_left_right.mp4

Rudi Hammad

unread,
Jan 15, 2016, 10:19:45 AM1/15/16
to Python Programming for Autodesk Maya
hey man, thanks for your feedback. I ´ve check your rig and in my opinion there are some basic mistakes you should avoid doing.
You said " in a rig you will not rotate joints, you will rotate controlers".
That´s not true. 90% of the cases, you should animate directly your joints.Let me explain:You are overcharging your rig unnecessarily. in the head for example, you are creating a curve, that is driving the joint by a parent constraint. Don´t do that,
instead just parent the shape of the curve directly to the joint ( cmds.parent( "yourShape", "yourJoint", shape=True, r=True ). So in your rig, you are creating an extra transform (the controller), and extra parentConstraint that you don´t need.
Parenting the shape directly to a joint will avoid extra calculations that will make your rig faster. that´s why you should indeed use joints (with a shape) as controllers.

cheers



El viernes, 15 de enero de 2016, 14:58:46 (UTC+1), Mahmoodreza Aarabi escribió:
yes, but in a rig you will not rotate joints, you will rotate controlers. so if you use rotation in gimbal lock mode when you select left_ and right_ controlers, you will see same result in rotation.
On Fri, Jan 15, 2016 at 4:16 PM, Rudi Hammad <rudih...@gmail.com> wrote:
sure, but if we talk only about joints, let´s say that you mirror an arm.
If you mirror in mode behavioral it is ok, but if you try to translate both arm to the front, one will go to the front, but the other will go back in the opposite direction.
if you do the mirror, by duplicating one arm, then group, and the scale -1 the group, both arms will translate in the same direction.

El viernes, 15 de enero de 2016, 11:49:41 (UTC+1), Mahmoodreza Aarabi escribió:
Hey man
Mirroring in rig symetrical characters are a little tricky.
1. Joints should be mirrored in mode behavioral
2. Controlers should mirror in two ways:
    a. duplicate groups then scale -1 then freeze
    b. duplicate groups then scale -1 then no freeze

it is depend on capability of controlers.

good luck!
On Fri, Jan 15, 2016 at 1:31 PM, Rudi Hammad <rudih...@gmail.com> wrote:
hello,
there are 2 ways to mirror a joint. 1- using the mirror joint menu in mode behavior, or 2-creating a parent group to that joint and giving the group a negative scaling in one axis ( usually  -x)
I always use the first method, but then I though that the second method has an advantage which is that you get a nice behavior in translation. In the first method, only in rotation.
I guess I never went for the second method because I don´t like negative scaling, but what the hell?? why not?
what do you think?

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--


Bests,
madoodia

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 10:42:50 AM1/15/16
to python_in...@googlegroups.com
yes, i used parenting curve to shape but in this way i wanted to seperate controls on joints locking.
anyway, i sure that you will find the best way in your situation. :)

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/a12a3f17-eaaa-4894-8fb5-bee518b2222b%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--


Bests,
madoodia

Marcus Ottosson

unread,
Jan 15, 2016, 11:00:29 AM1/15/16
to python_in...@googlegroups.com

90% of the cases, you should animate directly your joints.

I better call the guys at {any studio here} and tell them they’ve been doing it wrong all this time!

Rudi Hammad

unread,
Jan 15, 2016, 11:55:05 AM1/15/16
to Python Programming for Autodesk Maya
I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 11:59:04 AM1/15/16
to python_in...@googlegroups.com
the rig have fk and ik, i just show you fk, your need on symetrical works on ik too.
just check the rig.
many things should be checked in a rig, and we can't use just parenting in rig.
make sense?

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/9f4d80f2-1f70-44bc-828f-97d3104144cc%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--


Bests,
madoodia

Marcus Ottosson

unread,
Jan 15, 2016, 12:07:02 PM1/15/16
to python_in...@googlegroups.com

I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?

Why stop there?

Did you know skinning is actually very slow? It’s a basic mistake you should avoid doing. In 90% of cases, you should animate the vertices directly. It’s has much better performance.



For more options, visit https://groups.google.com/d/optout.



--
Marcus Ottosson
konstr...@gmail.com

Rudi Hammad

unread,
Jan 15, 2016, 12:10:58 PM1/15/16
to Python Programming for Autodesk Maya
okey then...


El viernes, 15 de enero de 2016, 18:07:02 (UTC+1), Marcus Ottosson escribió:

I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?

Why stop there?

Did you know skinning is actually very slow? It’s a basic mistake you should avoid doing. In 90% of cases, you should animate the vertices directly. It’s has much better performance.

On 15 January 2016 at 16:59, Mahmoodreza Aarabi <mado...@gmail.com> wrote:
the rig have fk and ik, i just show you fk, your need on symetrical works on ik too.
just check the rig.
many things should be checked in a rig, and we can't use just parenting in rig.
make sense?
On Fri, Jan 15, 2016 at 8:25 PM, Rudi Hammad <rudih...@gmail.com> wrote:
I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?


El viernes, 15 de enero de 2016, 17:00:29 (UTC+1), Marcus Ottosson escribió:

90% of the cases, you should animate directly your joints.

I better call the guys at {any studio here} and tell them they’ve been doing it wrong all this time!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--
Marcus Ottosson
konstr...@gmail.com

Mahmoodreza Aarabi

unread,
Jan 15, 2016, 12:14:40 PM1/15/16
to python_in...@googlegroups.com
yes, vertex animating is a good way for extra animating.
btw, good luck man.


On Fri, Jan 15, 2016 at 8:40 PM, Rudi Hammad <rudih...@gmail.com> wrote:
okey then...

El viernes, 15 de enero de 2016, 18:07:02 (UTC+1), Marcus Ottosson escribió:

I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?

Why stop there?

Did you know skinning is actually very slow? It’s a basic mistake you should avoid doing. In 90% of cases, you should animate the vertices directly. It’s has much better performance.

On 15 January 2016 at 16:59, Mahmoodreza Aarabi <mado...@gmail.com> wrote:
the rig have fk and ik, i just show you fk, your need on symetrical works on ik too.
just check the rig.
many things should be checked in a rig, and we can't use just parenting in rig.
make sense?
On Fri, Jan 15, 2016 at 8:25 PM, Rudi Hammad <rudih...@gmail.com> wrote:
I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?


El viernes, 15 de enero de 2016, 17:00:29 (UTC+1), Marcus Ottosson escribió:

90% of the cases, you should animate directly your joints.

I better call the guys at {any studio here} and tell them they’ve been doing it wrong all this time!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--
Marcus Ottosson
konstr...@gmail.com

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/650b6f45-5be5-4e40-b0a3-fd6c74931fef%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--


Bests,
madoodia

Marcus Ottosson

unread,
Jan 15, 2016, 12:22:47 PM1/15/16
to python_in...@googlegroups.com

okey then…

Haha, no, but how silly does that sound, right?

Parenting, like skinning, can be used as an abstraction. As the result taking a lot of data and turning it into less data. In that way, we can start thinking about things at a higher level, such as where to put the clavicle joint, as opposed to worrying about whether vertex[203] is moving correctly in relation to vertex[204] when you are actually sitting there animating. You instead worry about whether the upper arm can bend in this direction. You think anatomy, not math.

In the same way can you create hierarchies of joints, and hierarchies of arbitrary groups per-joint, and arbitrary relationships, constraints, in between groups, so as to provide a higher-level interface to otherwise raw data. Facilitating not just the animator during animation, but facilitating change and improvements, without breaking existing animation.


On 15 January 2016 at 17:10, Rudi Hammad <rudih...@gmail.com> wrote:
okey then...

El viernes, 15 de enero de 2016, 18:07:02 (UTC+1), Marcus Ottosson escribió:

I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?

Why stop there?

Did you know skinning is actually very slow? It’s a basic mistake you should avoid doing. In 90% of cases, you should animate the vertices directly. It’s has much better performance.

On 15 January 2016 at 16:59, Mahmoodreza Aarabi <mado...@gmail.com> wrote:
the rig have fk and ik, i just show you fk, your need on symetrical works on ik too.
just check the rig.
many things should be checked in a rig, and we can't use just parenting in rig.
make sense?
On Fri, Jan 15, 2016 at 8:25 PM, Rudi Hammad <rudih...@gmail.com> wrote:
I mean that if you have an fk chain of joints, why don´t parent a shape and animate directly the joints?


El viernes, 15 de enero de 2016, 17:00:29 (UTC+1), Marcus Ottosson escribió:

90% of the cases, you should animate directly your joints.

I better call the guys at {any studio here} and tell them they’ve been doing it wrong all this time!

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.



--
Marcus Ottosson
konstr...@gmail.com

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/650b6f45-5be5-4e40-b0a3-fd6c74931fef%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Marcus Ottosson
konstr...@gmail.com

Marcus Ottosson

unread,
Jan 15, 2016, 12:27:14 PM1/15/16
to python_in...@googlegroups.com
To bring it all home and back to programming land, I would go as far as to say that rigging has a lot in common with programming. And what you're suggesting is the programming equivalent of reaching into an object to change private variables directly, as opposed to going through the public interface. The same problems arises that way as it does here.

It is slower; it does require that extra function-call or whatever to get the job done. Why would you want that? The answers to that are the same as to the one here.
--
Marcus Ottosson
konstr...@gmail.com

Andres Weber

unread,
Jan 20, 2016, 10:20:27 AM1/20/16
to Python Programming for Autodesk Maya
Also on top of what Marcus is saying (which is all GOLD you should be paying good attention to) I would like to mention that as you abstract all of these rigging processes, you get greater extensibility on your rigs with the ability to "plug and play" modules of control setups/styles and to be able to pull out deformation mesh + skeletons easier (which makes mocap etc much easier).  The more you decouple these things the better since it tends to make things more usable in the future and less of one-off, super weird, non-modification friendly rigs.  It REALLY does have severe benefits especially when it comes to layering things in and out when you need things like twist/tweak joints etc.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--


Bests,
madoodia

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--
Marcus Ottosson
konstr...@gmail.com

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.



--
Marcus Ottosson
konstr...@gmail.com




--
Marcus Ottosson
konstr...@gmail.com

Reply all
Reply to author
Forward
0 new messages