CGTalk > Software Specific Forums > Autodesk Maya > Maya Character Setup
To minimize the ads you see on this page create a CGTalk account and log in HERE
reply share thread « Previous Thread | Next Thread »
 
Thread Tools Search this Thread Display Modes
Old 04-10-2014, 10:47 AM   #1
JonnySmithAnimator
New Member
portfolio
Jonny Smith
Character Animator, model building
Wolverhampton university
Cannock, United Kingdom
 
Join Date: Dec 2012
Posts: 3
Send a message via ICQ to JonnySmithAnimator Send a message via AIM to JonnySmithAnimator Send a message via MSN to JonnySmithAnimator Send a message via Yahoo to JonnySmithAnimator
Making of clean rig controls

Hi all i seen this video yesterday and the one thing i loved
was the way you could access the controls its so clean.

http://vimeo.com/90687696

I was just wondering how you could do this in MAYA.
I was thinking that you could assign faces on the mesh to a control
and then hide the controls so you just have to click on the mesh and
then your able to access the rotate and move controls.

Thanks in advance,

Jon
 
Old 04-13-2014, 07:03 AM   #2
gonzalimator
Animator
 
gonzalimator's Avatar
Marcos González
Vancouver, Canada
 
Join Date: Jan 2006
Posts: 230
Check out Paolo Dominici's example from 2008.
http://www.youtube.com/watch?v=V911_DcsaH8

There's a duplicate face chopped up into control sized chunks/regions. The deformation they drive is being fed back into these meshes. How? That's the question. This guy writes plugins so he might have written custom nodes in the API or made some creative connections with native Maya nodes.

Last edited by gonzalimator : 04-17-2014 at 07:35 AM. Reason: typo
 
Old 04-13-2014, 03:50 PM   #3
JonnySmithAnimator
New Member
portfolio
Jonny Smith
Character Animator, model building
Wolverhampton university
Cannock, United Kingdom
 
Join Date: Dec 2012
Posts: 3
Send a message via ICQ to JonnySmithAnimator Send a message via AIM to JonnySmithAnimator Send a message via MSN to JonnySmithAnimator Send a message via Yahoo to JonnySmithAnimator
Thank you buddy ill try and ask him how he managed to accomplish that.
it looks so much nicer to animate with.
 
Old 04-14-2014, 07:02 AM   #4
Ollarin
Lord of the Pings
 
Ollarin's Avatar
portfolio
Raveen Rajadorai
Character TD
SA Polygon Pictures
Malaysia
 
Join Date: Nov 2003
Posts: 2,105
Send a message via MSN to Ollarin
It's pretty simple to set that up really.

First you're going to have joints/controls in the locations that you want to have the control pivots. Then what you can do is shape parent ("parent -r -add", using the add flag so it creates a shape node for each control) from the source mesh (That's the mesh that's skinned to the joints that the controls are affecting).

Now you'll have the shape on each transform/joint. Though, it's going to double transform since you have the same transform affect the skinning, and it's going to snap the pivot to the space of the transform. What you need to do it is create a transform geometry node, take the outmesh of your skinned mesh's shape and connect it into "Input Geometry" of the transform geometry node.

Next you need to put the shape's space back to it's origin, you can do that by connecting the world inverse matrix of the transform into the transform geometry's "transform" attribute. You can pump it through a multMatrix node if you need.

That should snap the shape back to it's original position. You can now select the faces and delete whatever you don't need for the shape (Don't delete history afterwards, as everything will pump into the deleteComponent node before going into the final shape.)

Now, you should be able to just select that area, it'll select and move it around, the control will have the same deformation as the mesh (You can reference the original mesh to avoid selecting it).

Making this into a node would make it a lot quicker obviously.

I hope that makes sense. I'm at work right now. So just typed this out quickly.
 
Old 04-15-2014, 08:51 PM   #5
eadatto
New Member
portfolio
Ezequiel
Bs As, Argentina
 
Join Date: Jun 2008
Posts: 3
Hi!
This looks great man!
BUT! Always a but... I'm lost!

Quote:
Originally Posted by Ollarin

Next you need to put the shape's space back to it's origin, you can do that by connecting the world inverse matrix of the transform into the transform geometry's "transform" attribute. You can pump it through a multMatrix node if you need.



Which nodes, and in which order should I connect? When you talk about a "transform geometry node".. are you referring to a simple null?
I understand that I should connect my output (skinned) mesh to the null inputGeomtry. Then connect this one, with the inverse world matrix , to some node to reset the position of the shape that is under my joint/control. This is where I get lost! What is that node whose transform will bring my shape to it's exact position?

Any clue about this?
Thanks in advance for any help!

Cheers, from Argentina.

Bye.
 
Old 04-17-2014, 01:58 AM   #6
Ollarin
Lord of the Pings
 
Ollarin's Avatar
portfolio
Raveen Rajadorai
Character TD
SA Polygon Pictures
Malaysia
 
Join Date: Nov 2003
Posts: 2,105
Send a message via MSN to Ollarin
Quote:
Originally Posted by eadatto
Hi!
This looks great man!
BUT! Always a but... I'm lost!



Which nodes, and in which order should I connect? When you talk about a "transform geometry node".. are you referring to a simple null?
I understand that I should connect my output (skinned) mesh to the null inputGeomtry. Then connect this one, with the inverse world matrix , to some node to reset the position of the shape that is under my joint/control. This is where I get lost! What is that node whose transform will bring my shape to it's exact position?

Any clue about this?
Thanks in advance for any help!

Cheers, from Argentina.

Bye.


The transform geometry node is a separate node that you need to create using 'createNode "transformGeometry"'

The skinned mesh should be connect into that node, as well as the inverse matrix. The output from the transform geometry node will go back into the shape node attached to your control/joint.

Sorry, I'll make a quick video or something outlining it better when I get home.
 
Old 04-23-2014, 02:34 PM   #7
eadatto
New Member
portfolio
Ezequiel
Bs As, Argentina
 
Join Date: Jun 2008
Posts: 3
i've done it!!!

thank you, man!!!

the only correction! i could realized because i created a new EMPTY shape below the control, and put the output geometry of the transofrm to that new one. which is very logic but i couldn't got it right yesterday.


thank you again!

cheers!

Last edited by eadatto : 04-25-2014 at 03:21 PM. Reason: problem resolved!
 
Old 04-26-2014, 07:58 AM   #8
gonzalimator
Animator
 
gonzalimator's Avatar
Marcos González
Vancouver, Canada
 
Join Date: Jan 2006
Posts: 230
Ok, my turn...

When I try this method, I end up with a cycle. The reason is, when I parent the shape of the skinned mesh to my joint/control, I get an instance of the original mesh shape. If I try the connections as described, I'm connecting the outMesh of the skinned shape to the transformGeometry.inputGeometry, and the transformGeometry.outputGeometry back into the skinned shape's inputMesh. Because it's an instance, I'm affecting the original no matter what and get a cycle. If I delete faces, the original skinned faces are deleted. What am I missing?

I tried feeding the outputGeometry of the skinCluster through the transformGeometry, then into the shape and that worked but the original shape swings around in an inverse manner due to the joint/control's worldInverseMatrix connection. The fact that they are the same shape means that one looks right and the other is botched.

By the way, I used "parent -s -r -add" and not "parent -r -add". When I tried the latter I got an instance of the object as a child of the joint I'm using. Selecting it did not select the joint/control (obviously) like it would if I parented the shape node to the joint.

Ollarin, eadatto, could you help me to understand this technique?

Thanks,
 
Old 04-27-2014, 04:12 PM   #9
Ollarin
Lord of the Pings
 
Ollarin's Avatar
portfolio
Raveen Rajadorai
Character TD
SA Polygon Pictures
Malaysia
 
Join Date: Nov 2003
Posts: 2,105
Send a message via MSN to Ollarin
Quote:
Originally Posted by gonzalimator
Ok, my turn...

When I try this method, I end up with a cycle. The reason is, when I parent the shape of the skinned mesh to my joint/control, I get an instance of the original mesh shape. If I try the connections as described, I'm connecting the outMesh of the skinned shape to the transformGeometry.inputGeometry, and the transformGeometry.outputGeometry back into the skinned shape's inputMesh. Because it's an instance, I'm affecting the original no matter what and get a cycle. If I delete faces, the original skinned faces are deleted. What am I missing?

I tried feeding the outputGeometry of the skinCluster through the transformGeometry, then into the shape and that worked but the original shape swings around in an inverse manner due to the joint/control's worldInverseMatrix connection. The fact that they are the same shape means that one looks right and the other is botched.

By the way, I used "parent -s -r -add" and not "parent -r -add". When I tried the latter I got an instance of the object as a child of the joint I'm using. Selecting it did not select the joint/control (obviously) like it would if I parented the shape node to the joint.

Ollarin, eadatto, could you help me to understand this technique?

Thanks,


Urgh! I'm sorry, I wrote in such a rush the other day I didn't explain that right. Haha!

You can either create an empty shape node and parent -s -r it to your control/joint. Or just duplicate the skinned object and parent -s -r that into the control.

The output from the transform geometry node will go into each respective shapes.

I've attached a quick screenshot to illustrate.

Let me know if that makes sense.Sorry, I havent had time this last couple of weeks to make a video. :/
Attached Images
File Type: jpg skinnedControls.jpg (50.6 KB, 92 views)
 
Old 04-27-2014, 09:21 PM   #10
gonzalimator
Animator
 
gonzalimator's Avatar
Marcos González
Vancouver, Canada
 
Join Date: Jan 2006
Posts: 230
Thanks Ollarin! Very clean. I get it now, makes total sense. I've recreated it here and all is well. Very cool technique!

I forget how useful using the outMesh of shapes can be. I saw it a few years ago, then it came up recently (at work), and now this! I should pay better attention.
 
Old 04-28-2014, 03:08 AM   #11
Ollarin
Lord of the Pings
 
Ollarin's Avatar
portfolio
Raveen Rajadorai
Character TD
SA Polygon Pictures
Malaysia
 
Join Date: Nov 2003
Posts: 2,105
Send a message via MSN to Ollarin
No problem!

By the way, I learned this technique from my supervisor(Wasim Khan of http://creaturerigs.com/), so it's not something I came up with.

Connecting shape nodes can be very powerful, especially for rigging, you can split your deformations up into separate layers and flatten them all down to a final mesh, very handy.

Last edited by Ollarin : 06-01-2014 at 09:00 AM.
 
Old 04-29-2014, 01:39 PM   #12
eadatto
New Member
portfolio
Ezequiel
Bs As, Argentina
 
Join Date: Jun 2008
Posts: 3
haha, so thank's to you and to supervisor, Ollarin!!!
awesome stuff here

cheers !!!
 
Old 04-30-2014, 03:11 AM   #13
hazmondo
Expert
 
hazmondo's Avatar
portfolio
Harry
Aberdeen, United Kingdom
 
Join Date: Jan 2013
Posts: 315
Hello,

This is an interesting technique and one that I'd like to explore, but I'm not very experienced with Maya's nodes. I tried to follow along using your instructions and using some other posts on CGTalk but the result I'm getting is strange, I'm not sure if it's double transforms.

I tried to set things up similar to you but I'm not sure what you mean when you say
Quote:
The output from the transform geometry node will go into each respective shapes

Taking your image as the example, do you mean your connecting the transform attribute from bot_transformGeometry to botShape?

In my scene I have
  • bot_jnt.worldMatrix[0] -> bot_transformGeometry.transform
  • skinnedShape.outMesh -> bot_transformGeometry.inputGeometry
  • bot_transformGeometry.outGeometry -> botShape.inMesh

Thanks,
-Harry
__________________
LinkedIn | Website | Vimeo | YouTube | Twitter | Facebook
 
Old 04-30-2014, 03:33 AM   #14
Ollarin
Lord of the Pings
 
Ollarin's Avatar
portfolio
Raveen Rajadorai
Character TD
SA Polygon Pictures
Malaysia
 
Join Date: Nov 2003
Posts: 2,105
Send a message via MSN to Ollarin
What you have is right except, you want to connect the inverse world matrix of the joint rather than the world matrix into the transformGeometry.transform, as you want to negate the transforms of the joint and pump that back into the shape.

So:
bot_jnt.inverseWorldMatrix[0] -> bot_transformGeometry.transform
skinnedShape.outMesh -> bot_transformGeometry.inputGeometry
bot_transformGeometry.outGeometry -> botShape.inMesh
 
Old 04-30-2014, 09:09 PM   #15
hazmondo
Expert
 
hazmondo's Avatar
portfolio
Harry
Aberdeen, United Kingdom
 
Join Date: Jan 2013
Posts: 315
Thanks for the response,

I got it working, I used empty shape nodes first but they only give a wireframe display so I then tried out duplicating the skin mesh which in the end gives you the shaded model which is nice!

I think I could reproduce the method, but I couldn't properly explain it to someone else - but like I said, I'm pretty inexperienced with Maya.

Thanks for the explanation,
-Harry
__________________
LinkedIn | Website | Vimeo | YouTube | Twitter | Facebook
 
reply share thread


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
CGSociety
Society of Digital Artists
www.cgsociety.org

Powered by vBulletin
Copyright ©2000 - 2006,
Jelsoft Enterprises Ltd.
Minimize Ads
Forum Jump
Miscellaneous

All times are GMT. The time now is 10:49 AM.


Powered by vBulletin
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.