I am creating my first character animation and I have a problem with the rigging’s process. I have completed the entire skeleton and now I have created CV Curves that have the same pivot that the joint which corresponding to them (see the first part of he image). Now I have to apply a contraint -> parent between each curve and the correspont joint. The problem is the same that appears in the second part of the image. The wrist change its rotation when I apply the constraint and I don’t know why.
I have spent a lot of time surfing on Internet and I can’t find a solution. The “maintain offset” is always enabled. I think that the problem is that the NURBS and the joint have different axis orientation but I can’t found a way to put then in a correct form. I found this command: makeIdentity -apply true -jointOrient j_wrist_left; but when I use it I have the next error: // Error: line 1: Freeze Transform was not applied because j_finger1_p1_left.rotateY has incoming connection.
Do someone know what the problem is and how to solve?
The problem seems to be the local rotation axis of the curves not lining up with the local rotation axis of the joints. Try this -
Before you do the parent constraint, center the pivot of the curve-object, then point and orient constrain it to the wrist (make the wrist the constraining object - this is the opposite of what you ultimately want to end up with, but it will make sure that the axes are lined up correctly). Your curves-object may have twisted into an undesirable position, but you can deal with that later.
Next, select the curve object and click on “Edit->Delete by Type->Constraints”. This breaks the connections between the wrist and the curves, but leaves them lined up.
Finally, go to component mode and select the vertices of the curve-object, and rotate them into the position that you like.
the axes of the object itself will remain lined up with the wrist, but the position of your controller object can be adjusted how you like.
Thanks for your answer. I have followed your tutorial and the box change as you say. However when I apply the constraint -> parent, I obtain the same result of the image in the first message. I have spent a lot of time changing the orientation axis between the curve and the wrist’s joint and I have detected that the axis of both elements are differents. It’s impossible to change both axis to align each other. Changing the rotation of both axis, I obtain differences but I never get que correct position of the wrist when I apply the contraint->parent.
Have you tried using a different kind of constraint? Whenever I set something like that up I’ll parent the box to the next-highest joint in the hierarchy (in your case probably the forearm joint) and then do an orient-constraint of the wrist to the box.
In any case, if you’d like to send me the file or post it up here I’ll take a look at it. This really ought to work, so perhaps there’s a missing element that we’re not aware of.
I’m not sure about you said in the last answer. The bones are organized in a hierarchy (for example, the elbow is the parent of the wrist). The file that I am using is this: http://dl.dropbox.com/u/22593504/Player4.mb
You have a couple of issues here - I’ve uploaded a video to youTube to walk you through them.
The main issue is that you’ve parented all the control curves to each other, into one big hierarchy. This makes them nearly impossible to move or rotate or otherwise manipulate them individually.
The second issue is the parent constraint. I can’t explain why it’s giving you problems, as I almost invariably will use an orient constraint, as I’ve done in the video.
I’ve also demonstrated what I meant by parenting the control curve to the next-highest joint in the hierarchy; I hope it’s clear.
Good luck - let me know if you have any other problems with this.
I have a new problem. The model that I have created is used in a game. When I try to import the model into the game I have the next error: “Error 3 Vertex is bound to bone j_wrist_left, but this bone is not present in the skeleton”.
I have been surfing on Internet and I have found that the problem is that in the skeleton the “j_elbow_left” joint haven’t “j_wrist_left” as a child. It has “group2” as a child, so the model importer in the game can’t find the next joint in the hierarchy.
When I try to remove “group2”, it is created a transform ("transform1") that contains “j_wrist_left”, so the problem isn’t solved (appears the same error message). If I try to remove this new transform, a new transform is again created ("transform2"). And this always happens ("transform3", “transform4”...).
Again I have been surfing on Internet and I think that I need to freeze all transformation. The problem is that when I try it, I have the next error message in maya: “Freeze Transform was not applied because j_wrist_left.rotateX has incoming connection”. I has spend a lot hours trying to solve this problem but I can’t.
You should re-post this as a new question ... with 6 or 7 responses to the original post, I bet a lot of people will skip over this question.
Anyway - I think the problem is the result of your experimentation with parent constraints and some of the trial-and-error you went through when trying to get that to work. It’s a little tough to see exactly what’s going on in depth without really picking this model apart - which I will leave to you.
Anyway - ordinarily you should be able to unparent the wrist joint, delete the “group1” or the “transform” node, then re-parent it, but I think you’re being prevented from doing this because of all the connections, controls, clusters, and dependencies you added AFTER that node was created.
You may be able to re-assign the clusters to the joint node, but my initial attempts to do this did not work; if this were my piece I’d cut my losses and find a point to start over. That point is probably in disabling all controllers, un-binding your mesh, then fixing and re-binding from there. You may have to back up several steps in order to accomplish this.
Once you’ve un-bound the mesh, if you’re still having difficulties with that one joint, you can always delete the skeleton from the elbow, then mirror the other side over and re-parent it from there - then go through your binding process again.
I’m not really a rigger, I know how to do it and I know how to solve many issues, but this is one I’ve not encountered before; that’s why I suggest you post it as a new thread.