Character Rigging | Yori | Part I
Updated: May 21
I'd like to thank my friend and Character Artist, Miki Bishop, for letting me use this character for this series.
In the next couple of weeks I'll be sharing a character rigging project from start to finish.
Each blog post will have a companion video on my youtube channel. The posts will have the most important notes and act as a "cheat-sheet" for rigging concepts presented in the video.
We start by checking our geometry for potential transforms and unnecessary grouping that can make our rig laggy and slow. Check for n-gons, non-manifold geometry, holes, random vertex sticking out. Check the inside of the mesh as well with X-ray mode.
I combined some geometry to optimize skinning work later. How you want to combine objects is mostly up to your preference as a rigger.
I like to keep things organized from the start, so I create a top group called "yori_rig", and a child group called "geo_grp" where the geometry will live. I modify all of the geometry names to have a "geo" suffix. Later on I also create a "skeleton_grp" that holds the joints.
Keep in touch with your character artist to clarify any doubts you might have about the character, or bring up any issues you come across.
Next we have to make some decisions about what we want from this rig. Usually in a studio scenario we'd work with our animators and art lead to understand the rig requirements and/or limitations. Since this is a personal project that probably won't be exported to a game engine, we have some degree of freedom to choose.
For this character:
⦁ IK/FK Arms + Twist Setup
⦁ IK/FK Legs + Twist Setup
⦁ Feet Rotation Setup
⦁ FK/Ribbon Spine
⦁ Hands and Fingers Controls
⦁ Mechanical Arm Rig
⦁ Extras: Backpack, Jiggly Bits Controls
⦁ Face Rigging
Making the Skeleton
When it comes to arms and legs and joint chains in general, only one translate should have value. Otherwise the IK handles will get calculated incorrectly.
That's why in the video you'll see me duplicating the joints, translating them out in the X-axis, and placing them via rotation instead of general translation. When we're done, we freeze transforms on the rotation (which adds the rotation to the joint orientation in the Attribute Editor); that way our joint orientation will also get setup in the process.
Joint orientation is very important. It is also a frequent issue in amateur rigs.
Joint orientation is a concept unique to Maya; it is a local axis system inside the joints that dictates where the joint is aiming at in relationship to the it's parent object. When you export your animation to a game engine, the joint orientation gets added to the rotation and that final rotation value is what the engine understands. If your joint orientation is not clean, it can cause many issues later on, like bugs in the rig, discrepancies in animation and data export etc.
Usually if the joint orientation is between the numbers -180 and 180, it's probably ok. Otherwise, if it's a weird value like -357 or 1000, there's probably something wrong that needs to be addressed.
When making a skeleton, I usually create the spine first, then the left clavicle, left arm/fingers, and left leg/foot. I then mirror the left limbs to the right side using the Mirror Joint Tool (Behaviour = On). Next I'll make the neck and head, and any extra bits the rig might have.
- Usually I'd create a top hierarchy joint called "root_jnt" but I forgot lol, I'll be making it in later videos.
- I also forgot to parent the neck hierarchy to the last spine joint, that was my bad. I fixed it while I was skinning it.
- This is not the only way to make a skeleton. :) There are many approaches, this is just the most recent one I've been using. I might make changes to the skeleton later on if I need to. In a collaborative environment you need to be comfortable with the idea of throwing away previous work and re-doing things as necessary. Don't become too attached to things you make.
I'll be releasing the skinning video this Thursday (09/08/2020). It has some skinning tips and tricks and just the overall process.