This was the week which gave me a sense of satisfaction that whatever I am doing can be replicated on other biped character rigging, at least by me. I documented my process which can be read in the below document. This document is not complete and it serves me to create a better documentation to share it with my friends in need of it and for easy setup. I later on modified my code and stored the code in a central location so that I can use the same code to procedurally rig as many biped characters as I want by simply changing the location of the Maya project and the name of that character. For example, I execute the below code in Maya's script editor after importing my library + maya.cmds and it procedurally rigs Kyle-
import maya.cmds as mc #I think I can remove it though, it is for testing purpose only
import characterRig
import rigLib
characterName = 'Kyle'
mainProjectPath = 'C:/Users/username/Documents/maya/projects/Procedural_Kyle'
characterRig.character_setup.build( characterName, mainProjectPath )
My current documentation can be read here:
The above documentation contains my step-by-step process for procedurally rigging a new character "Kyle", model by Makar Malicki. Goodbye Frank! I created a base rig for Kyle as discussed in my previous post. Changed some code to make it generic for a biped character, and proceeded with the neck rigging. Also, I realized that the IK Spline handle's advanced twist functionality is breaking the rig so I removed a few lines of code so that it uses simple twist functionality, which works just fine for a simple biped rigging.
Removed code below-
# setup IK twist
"""
mc.setAttr( spineIK + '.dTwistControlEnable', 1 ) #dtce = dTwistControlEnable, 1= true
mc.setAttr( spineIK + '.dWorldUpType', 4 ) #4=object rotation up(start/end)
mc.connectAttr( chestCtrl.ctrlObject + '.worldMatrix[0]', spineIK + '.dWorldUpMatrixEnd' )
mc.connectAttr( pelvisCtrl.ctrlObject + '.worldMatrix[0]', spineIK + '.dWorldUpMatrix' )
"""
Another discovery I had this week, which was pretty amazing, was I read Maya documentation. I felt like this is "THE BEST RESOURCE" to understand how Maya works and that's what I needed. If I want to create an autorig, I need to understand how Maya works, just as the way I had to understand how a game engine works to create a game in Unreal engine/Unity. Also, I found that Maya documentation is further categorized into NODES and MAYA COMMANDS for python. In these links, if you search for "ikhandle", you can read the details and I needed both the information to understand the line of code I removed, as shown above. LOL.
My progress below:
Pardon the skinning, this is the automatic skinning by Maya, but I saved it using bSkinSaver so that when the mesh and rig is imported, it will be skinned too. Currently, spine and neck IK handle is working, but there are some issues with the neck which I will fix this week. Once the leg IK will be added, the body control and the pelvis control's functionality will be more clear since the leg is not implanted on the floor now. I need to find a good place for the locators to organize properly. So far, I am happy with the direction I am going and I wish I could spend more time reading the Maya documentation (I can't stress enough!).
Note: Kyle has 5 joints for spine and neck for the IK Spline. It won't work perfectly if there is less or more joints. I may come back to it in future to make it generic.
Peace!
Comments