Maya: Multipiece Character Rigging
by Entr0py · 07/03/2006 (11:31 am) · 3 comments
Due to the way Maya handles skin clusters, it can be tricky to rig characters that must be in seperate peices (such as player characters with swappable parts) yet appear seamless during animation. In this tutorial I will show you how to work around this.
When cutting polys into seperate pieces, maya wants to keep a copy of the entire skin cluster node with each individual part, which is highly undesirable since it will cause a huge file and eat up all your memory.
For TGE you want small parts each with accurate skin data. This is particularly a problem if you want to paint your skin weights on a low poly model and apply the results later to your high poly model (it's MUCH easier weighting with low polys!).
For this tutorial I will assume you have a basic working knowledge of maya's tools (I used maya 7.0.1) and you have your low-polygon model with all it's parts assembled into one seamless piece, and your skeleton all ready to go.
You will probably want to assign a separate texture to each individual part, it will make selecting them a LOT easier during this process. You can always remap the UV's later on if you want.
Some tools you will need:
zooWeightSave.mel -
http://www.macaronikazoo.com/download/zooToolBox.rar
skinXFer.mel -
http://www.highend3d.com/maya/downloads/mel_scripts/animation/3509.html
1: smooth bind to skeleton
- Make sure in the skin->bind skin->smooth bind options window you have "Remove Unused Influences" UNCHECKED. If you leave it checked you will run into a lot of problems later on.
- Go ahead and smooth bind your model to the skeleton
2: work on skin weights
- Using Isolate select with add/remove selected will help you a lot if you are working with several layers of pieces.
- Paint on your weights and move the joints around until you are happy with how it animates.
3: export the rigged lowpoly character
- export the low-poly rigged model, we will need it again later for it's weight info
4: smooth and detail
- poly->smooth your model and add details (if you wish), personally I prefer to smooth and add details later on.
5: delete all history
- the file is about to get pretty big, so we want to get rid of any unnecessary data that may be eating our memory
6: cut into pieces
- there are a bunch of ways you can cut your pieces, but I personally find the best way (although the most time consuming) to be by duplicating the entire model and deleting all the faces that don't belong on the current part. If you have a separate texture on each part you can select your faces in hypershade by "select objects with material".
- you probably want to put the pieces in layers so you can hide/unhide them
7: delete history
- My model had almost 100 parts, so by the time I got to this step my computer was about to blow up. Now is a good time to delete history. There will be a lot of history from having a bunch of copies of the skin cluster.
8: combine all the pieces into one polygon (don't join the edges)
- select all the parts and edit polygons -> combine
9: import the rigged low-poly model back into the scene
10: bind the high-poly model to the same skeleton as low-poly model
11: Copy the skin weights from the low poly model to the high poly model.
- "Copy Skin Weights" will not be sufficient to handle this, since it does not interpolate the new verts you added upon smoothing the model. The SkinXFer mel script will copy the skin weights and interpolate them for you.
- Select the source object (the low poly model) and the target object (your high poly model). Make sure "interpolate" is checked or we won't have full weighting
- copy skin weights from low poly to smoothed model.
12: Separating the parts
- separating the parts will cause them to lose their weighting information, so you will need a way to keep from having this information lost. Using mayas "Export skin weights" will not work, since it expects a single UV map over the entire object. ZooWeightSave will save the weight information as blind data, and is therefore immune to deletion of history.
- select the combined model and use zooweightsave to save all skin weights (take a long break, it takes a while)
- separate the parts with poly->separate
- select all the parts and zooweightsave->restore weights
- name all pieces
- you can also use the low poly model for LOD, just repeat all these steps with it, using the backup copy for weight info.
- now it's ready! Animate, export and enjoy!
When cutting polys into seperate pieces, maya wants to keep a copy of the entire skin cluster node with each individual part, which is highly undesirable since it will cause a huge file and eat up all your memory.
For TGE you want small parts each with accurate skin data. This is particularly a problem if you want to paint your skin weights on a low poly model and apply the results later to your high poly model (it's MUCH easier weighting with low polys!).
For this tutorial I will assume you have a basic working knowledge of maya's tools (I used maya 7.0.1) and you have your low-polygon model with all it's parts assembled into one seamless piece, and your skeleton all ready to go.
You will probably want to assign a separate texture to each individual part, it will make selecting them a LOT easier during this process. You can always remap the UV's later on if you want.
Some tools you will need:
zooWeightSave.mel -
http://www.macaronikazoo.com/download/zooToolBox.rar
skinXFer.mel -
http://www.highend3d.com/maya/downloads/mel_scripts/animation/3509.html
1: smooth bind to skeleton
- Make sure in the skin->bind skin->smooth bind options window you have "Remove Unused Influences" UNCHECKED. If you leave it checked you will run into a lot of problems later on.
- Go ahead and smooth bind your model to the skeleton
2: work on skin weights
- Using Isolate select with add/remove selected will help you a lot if you are working with several layers of pieces.
- Paint on your weights and move the joints around until you are happy with how it animates.
3: export the rigged lowpoly character
- export the low-poly rigged model, we will need it again later for it's weight info
4: smooth and detail
- poly->smooth your model and add details (if you wish), personally I prefer to smooth and add details later on.
5: delete all history
- the file is about to get pretty big, so we want to get rid of any unnecessary data that may be eating our memory
6: cut into pieces
- there are a bunch of ways you can cut your pieces, but I personally find the best way (although the most time consuming) to be by duplicating the entire model and deleting all the faces that don't belong on the current part. If you have a separate texture on each part you can select your faces in hypershade by "select objects with material".
- you probably want to put the pieces in layers so you can hide/unhide them
7: delete history
- My model had almost 100 parts, so by the time I got to this step my computer was about to blow up. Now is a good time to delete history. There will be a lot of history from having a bunch of copies of the skin cluster.
8: combine all the pieces into one polygon (don't join the edges)
- select all the parts and edit polygons -> combine
9: import the rigged low-poly model back into the scene
10: bind the high-poly model to the same skeleton as low-poly model
11: Copy the skin weights from the low poly model to the high poly model.
- "Copy Skin Weights" will not be sufficient to handle this, since it does not interpolate the new verts you added upon smoothing the model. The SkinXFer mel script will copy the skin weights and interpolate them for you.
- Select the source object (the low poly model) and the target object (your high poly model). Make sure "interpolate" is checked or we won't have full weighting
- copy skin weights from low poly to smoothed model.
12: Separating the parts
- separating the parts will cause them to lose their weighting information, so you will need a way to keep from having this information lost. Using mayas "Export skin weights" will not work, since it expects a single UV map over the entire object. ZooWeightSave will save the weight information as blind data, and is therefore immune to deletion of history.
- select the combined model and use zooweightsave to save all skin weights (take a long break, it takes a while)
- separate the parts with poly->separate
- select all the parts and zooweightsave->restore weights
- name all pieces
- you can also use the low poly model for LOD, just repeat all these steps with it, using the backup copy for weight info.
- now it's ready! Animate, export and enjoy!
About the author
Torque Owner Jeremy Eubanks