View Full Version : Mirror skin issue (on objects with the same pivot point location)
04 April 2007, 07:36 PM
I'm skinning the face of a model right now which is perfectly symetrical, I had rigged the jaw and lips and mirrored those, worked perfectly.
Then I started working on the eyebrows. The eyebrows consist of 7 bones, one for the center control and 3 for each side, this gives me great free control over the eyebrows, and it works great.
All these 7 eyebrow bones share the same pivot point in the center of the face, to sort of simulate the skin wrapping around the head, I'm sure you get the idea. They're named eyebrow_l_01, 02, 03 and _r_01, 02, 03 for the other side. Now when mirroring the skin data, maya doesn't seem to take bone names into account at all and frustratingly enough it assigns the 'mirrored' weights to the original eyebrow bones as well, probably since they share the same pivot point. These bones do have different (mirrored) orientation, though.
So the verts skinned to eyebrow_l_01 should be mirror-skinned to eyebrow_r_01 (which happens to have the same pivot point), instead the corresponding verts on the other side are also assigned to eyebrow_l_01.\
Does anybody have any suggestions? It was a pretty tedious amount of work to get it skinned as well as it turned out, and I'm pretty neurotic so I really can't deal with it not rigged entirely mirrored either. :P
Thanks in advance!
04 April 2007, 11:23 PM
Well I sort of found a workaround for this issue, so I figured I'd post it. I'd still like to know an easier solution if there is any, so any advise is still very much appeciated.
On default 'mirror skin weights' settings, all the mirrored weights were transfered to a single bone, brow_l_01. Using the 'one by one' setting for influence, it at the very least ported the weights that should belong to brow_r_02 to brow_l_02 (and so on). By mirroring this way and deleting the proper weights for the left side eyebrows, I could expor ta weightmap for the vertexes on the right side.
Then I'd rename the brow_l_01 (etc) weihtmaps to brow_r_01 (etc) and use them along with the 'old' weightmaps. This also required an additional export of the 'head' bone, since obviously in either the original as well as the mirrored version only one side of the eyebrows had weights.
I hope this is clear enough, if anyone even cares that is. :) It required some minor cleanup afterwards but no big deal. Anyway here is the current status, some geometry is still temp and it's unsmoothed in these shots, but using bones for the larger cotrol area's really gave me a shitload of extra control. It's working great so far...
Although in these shots the mouth is not nearly in any extremes.
04 April 2007, 03:42 AM
I think there was another way. In the mirror-weights options you can specify two "influence associations". If you choose "label" for association 1, then you need to also establish joint labels in the joints attribute editor (Joint Labeling tab). Here you can assign "side" (right or left) to each eyebrow joint, and "type"=other, and call them eyeBrow for example. Then for association 2 choose "one to one". Now as long as the heirarchy on the right and left sides is the same, then the weights should be mirrored correctly.
I think a "name" option would have been far more useful, since you always name stuff, but how often do you also do labels?
Sounds like you have it under control anyway though.
04 April 2007, 10:39 AM
Thanks a lot! I had to set each corresponding bone to the same type other than just labeling left from right (so brow_l_03 and brow_r_03 were both type brow_03, etc), but it worked perfectly after that.
It's pretty odd indeed it can't take bone names into account. Most skins you mirror usually have properly mirrored bones anyway. I had never even heard of labeling joints before.
Thanks again, this gives me a much cleaner result!
04 April 2007, 10:39 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.