Advanced Character Rigging - Part Three: Difference between revisions

From The DarkMod Wiki
Jump to navigationJump to search
No edit summary
Ascottk (talk | contribs)
m typo
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
== Advanced Character Rigging with Maya 7.0 ==
== Advanced Character Rigging with Maya 7.0 ==


== Part Three ==
'''Part Three'''


Back to [[Advanced character rigging]] Introduction
Back to [[Advanced character rigging]] Introduction
Back to [[Advanced Character Rigging - Part Two]]
Back to [[Advanced Character Rigging - Part Two]]


 
After all that work of painting those skin weights (wait, you didn't rig the left arm mesh to the right upper leg joint did you?) it's time to refine our rig. So far my left upper leg mesh is rigged to LeftUpLeg, while the lower leg mesh is rigged to . . . well . . . LeftLeg:
After all that work of paint those skin weights (wait, you didn't rig the left arm mesh to the right upper leg joint did you?) it's time to refine our rig. So far my left upper leg mesh is rigged to LeftUpLeg, while the lower leg mesh is rigged to . . . well . . . LeftLeg:


http://img294.imageshack.us/img294/9205/leftlegweightedlf1.jpg
http://img294.imageshack.us/img294/9205/leftlegweightedlf1.jpg
Line 19: Line 20:




This will expand the joint hierarchy. Now select the LeftLeg joint & rotate that joint backwards. For this example I didn't have to rotate it too far:
This will expand the joint hierarchy. Now select the LeftLeg joint & rotate that joint backwards. For this example I didn't have to rotate it too far but rotate all the necessary joints at extreme angles to find your issues:


http://img408.imageshack.us/img408/1641/leftlegweirdweightvc9.jpg
http://img408.imageshack.us/img408/1641/leftlegweirdweightvc9.jpg
Line 26: Line 27:




Keep the leg in that rotation while we do a little something extra to it. This is where those handy-dandy functions like Add & Smooth come in. Select the leg mesh again then go back to the weight painter. Resize the brush so you don't accidentally paint somewhere else & select the solid round brush at the top:
Here's a shot of an unusual pose thus easily spotting rigging issues (notice the stray vertex on the right leg & the torso, near the hips, has major issues):
 
http://img505.imageshack.us/img505/4954/unusualposekr3.jpg
 
 
Keep the leg in that rotation while we do a little something extra to it. This is where those handy-dandy functions like Add & Smooth come in. Select the leg mesh again then go back to the weight painter. Select the Smooth function, resize the brush so you don't accidentally paint somewhere else & select the solid round brush at the top:


http://img83.imageshack.us/img83/5253/brushselectionif2.jpg
http://img83.imageshack.us/img83/5253/brushselectionif2.jpg




Now click on the smooth function, select the LeftUpLeg joint (or whichever upper left leg joint you have), & paint the vertices ''below'', and back of, the lower leg:
Now click on the smooth function, select the LeftUpLeg joint (or whichever upper left leg joint you have), & paint the vertices ''below'', and back of, the upper leg:


http://img481.imageshack.us/img481/7558/smoothingvb1.jpg
http://img481.imageshack.us/img481/7558/smoothingvb1.jpg




Now select the LeftLeg joint (or lower left leg joint you may have) & paint the vertices ''above'', and back of, the upper leg.  
Now select the LeftLeg joint (or lower left leg joint you may have) & paint the vertices ''above'', and back of, the lowerleg.  




Line 44: Line 50:




When you're done refining your rig, select the origin bone in the Outliner, go to the menu and click - '''Skin > Go to Bind Pose''' & your original pose will spring back to where it was.
When you're done refining your rig, select the origin bone in the Outliner, go to the menu and click - '''Skin > Go to Bind Pose''' & your original pose will spring back to where it was. It's a good idea to go to bind pose when ever you rotate joint & edit your weights.




Line 53: Line 59:
I normally use weight values of 0.1000 when I'm adding weights so I don't overdo it the first time.
I normally use weight values of 0.1000 when I'm adding weights so I don't overdo it the first time.


 
== Other tips ==
== Other tips: ==


*When working with leg meshes, I flood them with the "Hips" with a weight value of one
*When working with leg meshes, I flood them with the "Hips" with a weight value of one
*When I'm working on a torso, I flood them with the "Spine"
*When I'm working on a torso, I flood them with the "Spine"
*You don't have to edit the md5mesh to assign shaders if your character's material names match the directory structure & texture names. For example the mercenary elite's material:
Maya's material is pointed to:
C:\Doom3\darkmod\models\md5\chars\guards\merc_elite\merc_elite_armor.tga
Thus the shader in the md5mesh is automatically pointed to the material name:
shader "models/md5/chars/guards/merc_elite/merc_elite_armor"


Just because I hate stray weights . . .
which is:


models/md5/chars/guards/merc_elite/merc_elite_armor
{
surftype15
description "armor_plate"
noselfshadow
        noShadows
bumpmap addnormals(models/md5/chars/guards/merc_elite/merc_elite_local, heightmap( models/md5/chars/guards/merc_elite/merc_elite_armor_h, 3 ) )
diffusemap    models/md5/chars/guards/merc_elite/merc_elite_armor
specularmap    models/md5/chars/guards/merc_elite/merc_elite_armor_s
    {
        if ( parm11 > 0 )
        blend      gl_dst_color, gl_one
        map        _white
        rgb        0.40 * parm11
    }
    {
        if ( parm11 > 0 )
        blend      add
        map        models/md5/chars/guards/merc_elite/merc_elite_armor
        rgb        0.15 * parm11
    }
}


*When using exportmodels in Doom3Ed, The Dark Mod is using the same animations as another character. So the rigging varies between AI & that causes a lot of problem at runtime. The export decl in the def file needs extra options:
export merc_elite {
options -scale .94
mesh merc_elitemesh.mb -dest tdm_ai_merc_elite
This tells the maya export plugin to scale the rigs a specified amount. This is really handy for different sized AI.
    addoptions -keep Hips LeftHips_Dummy blah blah2 blah3 -scale .94
    addoptions -sourcedir models/model_src/citywatch_mb -destdir models/md5/chars/guards/merc_elite
The mercenary elite uses the citywatch's animations but the rigging between the two do not match. The -keep joint option is used for these occasions. Open the md5mesh with a text editor & the af_pose.md5anim (or whichever animation you choose), exportmodels command in D3Ed, & add/subtract any joint in the def file to match joint numbers and names.
== Related Articles ==
* [[Scaling And Rotating AI Meshes]]
* [[Getting Characters and their Anims into Doom]]
* [[Setting up Ragdolls for Custom Joint Hierarchies]]
* [[Swapping Heads on AI Models]]
* [[Adding Heads and Weapons to AI]]
----
Back to [[Advanced character rigging]] Introduction
Back to [[Advanced character rigging]] Introduction
Back to [[Advanced Character Rigging - Part Two]]
Back to [[Advanced Character Rigging - Part Two]]
[[Category:Models]]
[[Category:Animation]]

Latest revision as of 20:13, 2 February 2008

Advanced Character Rigging with Maya 7.0

Part Three

Back to Advanced character rigging Introduction

Back to Advanced Character Rigging - Part Two


After all that work of painting those skin weights (wait, you didn't rig the left arm mesh to the right upper leg joint did you?) it's time to refine our rig. So far my left upper leg mesh is rigged to LeftUpLeg, while the lower leg mesh is rigged to . . . well . . . LeftLeg:

leftlegweightedlf1.jpg

Easy enough? But wait (weight?) . . . What happens if we rotate the lower leg back? Let's find out!


Open the Outliner & shift-click the square to the left of the origin joint:

expandselectionhj7.jpg


This will expand the joint hierarchy. Now select the LeftLeg joint & rotate that joint backwards. For this example I didn't have to rotate it too far but rotate all the necessary joints at extreme angles to find your issues:

leftlegweirdweightvc9.jpg

The lower leg is not behaving naturally. So how do we fix it? I'll tell you but you'd better be nice to me & send money to my PayPal account . . . oh wait, I need to update that account . . .


Here's a shot of an unusual pose thus easily spotting rigging issues (notice the stray vertex on the right leg & the torso, near the hips, has major issues):

unusualposekr3.jpg


Keep the leg in that rotation while we do a little something extra to it. This is where those handy-dandy functions like Add & Smooth come in. Select the leg mesh again then go back to the weight painter. Select the Smooth function, resize the brush so you don't accidentally paint somewhere else & select the solid round brush at the top:

brushselectionif2.jpg


Now click on the smooth function, select the LeftUpLeg joint (or whichever upper left leg joint you have), & paint the vertices below, and back of, the upper leg:

smoothingvb1.jpg


Now select the LeftLeg joint (or lower left leg joint you may have) & paint the vertices above, and back of, the lowerleg.


If you did it correctly then there'll be a big improvement when you're done:

smoothedoutqm2.jpg


When you're done refining your rig, select the origin bone in the Outliner, go to the menu and click - Skin > Go to Bind Pose & your original pose will spring back to where it was. It's a good idea to go to bind pose when ever you rotate joint & edit your weights.


What? I left out the Add function of the weight painter? For those stubborn rigging problems that smoothing won't work with, you use Add in small increments

addfunctionth6.jpg

I normally use weight values of 0.1000 when I'm adding weights so I don't overdo it the first time.

Other tips

  • When working with leg meshes, I flood them with the "Hips" with a weight value of one
  • When I'm working on a torso, I flood them with the "Spine"
  • You don't have to edit the md5mesh to assign shaders if your character's material names match the directory structure & texture names. For example the mercenary elite's material:

Maya's material is pointed to:

C:\Doom3\darkmod\models\md5\chars\guards\merc_elite\merc_elite_armor.tga

Thus the shader in the md5mesh is automatically pointed to the material name:

shader "models/md5/chars/guards/merc_elite/merc_elite_armor"

which is:

models/md5/chars/guards/merc_elite/merc_elite_armor
{
	surftype15
	description "armor_plate"
	noselfshadow
       noShadows
	bumpmap addnormals(models/md5/chars/guards/merc_elite/merc_elite_local, heightmap( models/md5/chars/guards/merc_elite/merc_elite_armor_h, 3 ) )
	diffusemap     models/md5/chars/guards/merc_elite/merc_elite_armor
	specularmap    models/md5/chars/guards/merc_elite/merc_elite_armor_s
    {
        if ( parm11 > 0 )
        blend       gl_dst_color, gl_one
        map         _white
        rgb         0.40 * parm11
    }
    {
        if ( parm11 > 0 )
        blend       add
        map         models/md5/chars/guards/merc_elite/merc_elite_armor
        rgb         0.15 * parm11
    }
}


  • When using exportmodels in Doom3Ed, The Dark Mod is using the same animations as another character. So the rigging varies between AI & that causes a lot of problem at runtime. The export decl in the def file needs extra options:


export merc_elite {

options -scale .94
mesh merc_elitemesh.mb -dest tdm_ai_merc_elite

This tells the maya export plugin to scale the rigs a specified amount. This is really handy for different sized AI.

   addoptions -keep Hips LeftHips_Dummy blah blah2 blah3 -scale .94
   addoptions -sourcedir models/model_src/citywatch_mb -destdir models/md5/chars/guards/merc_elite

The mercenary elite uses the citywatch's animations but the rigging between the two do not match. The -keep joint option is used for these occasions. Open the md5mesh with a text editor & the af_pose.md5anim (or whichever animation you choose), exportmodels command in D3Ed, & add/subtract any joint in the def file to match joint numbers and names.

Related Articles


Back to Advanced character rigging Introduction Back to Advanced Character Rigging - Part Two