Ready to watch this entire course?
Become a member and get unlimited access to the entire skills library of over 4,987 courses, including more 3D + Animation and personalized recommendations.Start Your Free Trial Now
- View Offline
In the previous movie we looked at IK, Inverse Kinematics, in terms of a very simple example where we parented mechanical arm parts to a chain. In this movie we're going to take a look at a more human form example where we have to actually bind the joints to the mesh. So this is an arm mesh, and if I click on that and go into Polygon mode you can see that it's made up of points and polygons, and it's a pretty nice looking arm, I wish my arms looked like that. What we want to do is create a Joint Chain with Inverse Kinematics and then bind that joint chain to the arm so that it will move.
When you have a non-segmented character like this, meaning a continuous mesh, you have to use something called Binding in order to get the mesh to move with the joints. So let's get out of Polygon mode and back to Model mode. And let's switch over to the right-hand view. Now we'll create a joint chain. Let's go to the Character menu and go to Joint tool. And you have to hold down the Control key, and let's click to create some joints. We're going to click up here in the ball of the shoulder, and then right about here near the elbow, and then right about here in the wrist. We're going to ignore the hand for now. We're not going to create fingers and everything.
This is going to be just a simple example. Now you can see that our joint chain got created as a child of the arm. That's because I had the arms selected when I Ctrl+clicked on the screen. So let's unparent that right now and drag that out of the hierarchy. So now the root is above the arm object. Now we're ready to create our IK Chain, so click on the top most joint, and then in the Character menu go to Commands > Create IK Chain. And there's our Joint.3.Goal. Let's hit E on the keyboard to get the Move tool, and then we can now move that IK Chain. But you can see that the arm does not go with it.
Now for testing purpose,s let's add some Key Frames to the position of the Joint.3.Goal. I'm going to make sure my Time Setter is at time 0, and then on Joint.3.Goal, let's make a Position Key Frame. The rotation doesn't matter anymore because we're using Inverse Kinematics. Only the position of this Joint.3.Goal matters. So let's Control+click on the Ps to make a Position Key Frame. Now let's go forward in time, say, 30 Frames, and let's move the joint goal up and then hold on the Control key and set another Key Frame. So now, from Frame 0 to Frame 30 you can see that our move goes up.
And this is a great way to test your bind to see if it's working by setting some simple Key Frames. Let's rewind back to zero now, and now we're ready to bind our arm to the Joint Chain. The way this process works is that you have to select the arm mesh, and then you have to select all the joints that you want to bind to it. So let's hold down the Shift key and click up on the top one. And you can see that it selected the arm and everything in between that and the joint. Now I can go to Character, and go to Commands, and tell it to bind, and when I do that I'm going to get two things: a Skin Object, that's a child of the arm, and this Weight Expression Tag.
Both of these objects are absolutely necessary to make the binding happen. Let's see what actually did happen. Let's scrub forward in time, you can see that our arm moves now, and it moves really well. If we switch out to the Perspective View, you can see that our arm is looking really cool, it moves up from that hanging position. Let's deselect that and take a look at that animation one more time. There is some issues right here with folding in the crease of his elbow, but other than that the bind looks pretty good. Binding is a term that describes something called a Weight Map and how it's applied to the points in your object.
If I double-click on this Weight Expression Tag, that takes me into something called the Weight tool, and I can now start painting my weights. My arm turned black, that's because it's waiting for me to select a joint to review the weighting of. So if I click on the first joint in the chain down here in the window, I can now see the weighting. This red weighting indicates the weight of this joint that's being applied to the skeleton. You can see it fades off as it hits the forearm. When I look at the joint.2 that is colored green, you can see the color here corresponds to the color that you see in the View Port.
joint.3, the tip, has nothing on it, and that's normal for an IK Chain. The first two joints get all of the weighting and the last joint is ignored. It's really there to hold the chain together. Now let's take a look at what happens when we modify the weights. We got a pretty good weight map before, but we're getting a little bit of folding. So let's navigate forward to where we're getting that folding and we can see it really well. And if we go into Joint.2, let's zoom in on that area. Let's rewind back to zero and take a look at the polygons that are being deformed there. I think what I want to do is to add in these guys right here, and so what I'll do is click on Paint on my arm object, and so let's move down here a little bit so we can see better.
As I paint through there you can see that, as I move over a point, the mesh gets a little bit more green. And that's because I'm weighting this joint for that area. And now when I move forward in time to see if that's working a little bit better, you can see that's cleaned up the mesh. We're getting a little bit of folding but it's not nearly as bad as it was before. Now if I select both joints together, you can see that there's a blending area, a place where it blends from red to green, and this is the normalized area. In my opinion, by far the hardest part of the character rigging process is the binding process.
It is really where the black art comes in. It is a magical process that requires one part artist and one part scientist to get it going correctly. What you have to do is to look at the blending between the joints and then figure out how you can balance the difference between those two joints to smooth things out. So when I click on both joints and paint, you're going to see that's it's going to start to smooth and blend them out. As I move up and highlight the mesh up here, it starts to normalize out and blend those joints together a little bit more.
As I move around the back side here I'll do the same thing and just create a smoother transition between those. Now let's go down a bit on here, we're creating more of a blend in that area. There we go. Now let's move forward in time and see what that does. You can see that I've actually made things worse, and that is part of the issue with binding. It is a magical process, and when I thought I was doing it right, it turns out when I test it, I didn't do such a good job at all. So if we go back and Undo, let's move back to time zero and Undo, Cmd+Z or Ctrl+Z, until we see our joints go in again.
Now I've deselected them, that's how I know I'm back to where my Joint Chain was and I can move forward again. And you can see that I've got that crease there. This is a case where we probably need to look at our object in terms of its smoothness. And if we go to the arm object and take a look at the geometry, now let's get out of the Weight tool by clicking on the Move tool, and we can see that if we go into Polygon mode that our polygons are fairly large, there's not a lot of resolution in this model. Let's add a HyperNURBS object to the scene, and bring it down in the hierarchy and make the arm a child of the HyperNURBS.
That's gong to give me a much smoother arm if I select that mesh. And let's change the Display mode, let's go out of Polygon mode to Model mode, and change the Display from Gouraud to Gouraud with lines. You see now I have a much higher density mesh. If I click on the arm you can see that the HyperNURB mesh is translating down to this geometry. So now let's scrub forward in time and take a look and see what that does. You can see that that smoothes it out quite a bit. So this should give you a really good overview of the process for binding a Joint Chain to a mesh. Just keep in mind that you're going to have to do a lot of testing and a lot of modification over this process.
But with a little patience, you can get a great result.
- Linking objects to points in Xpresso
- Creating a data slider to control a spline wrap
- Controlling multiple objects with a single slider
- Understanding the traditional character animation workflow
- Using the Character object for building and applying rigs