View Full Version : Best way to rig a realistic arm?
Stahlberg 09-11-2002, 07:31 AM I prefer to put a joint beneath the shoulder joint, in the middle of the upper arm, to handle the rotation around the bone's own axis (in my case x), then to lock the x-rot on the higher joint (shoulder). In fact on the arm I even do that with the forearm (x-rot joint in the middle of the forearm, yz-rots on the wrist). I also do something similar to the leg.
This does wonders for realistic deformations, but doesn't work very well at all with IK handles. Particularly the arms are a problem. If you place an IK handle from the shoulder to the wrist (or the joint above the wrist which may be better), Maya wants the shoulder to have no locked rotations otherwise the IK handle doesn't work. Having no locked rotations there gives unpredictable rotations, which kind of ruins the whole idea of an extra separate joint just for the x-rot.
Is there a solution?
|
|
maybe u can use the 3 arm setup concept to solve this problem. 1 ik arm, 2 fk arm.
1st set of fk arm (A) which is for binding. then each 1 set of ik (B)and fk (C) arm for posing or animation control. then we contrain orient of B and C on A. make a controller to switch between IK (B) or FK (B).
then with combination of empty group node. attach it to each joint (with constrain trans + Oreint to get the same trans and oreint as the joint). you can easily create additional attribute to each joints. for instance, we can have fingers setup which has FK and IK happens together.
in the situation which u've mentioned here, i believe u can use the combination of both constain oreint and empty group node to solve ur problem. since it doesn't allow locked rotations in an ik handle setup. u might can try with 2 empty group node on top. 1st one is for ur ikhandle and the 2nd one is for ur locked rotations. (note, in this case. ur joint will be rotated or translated by ur both empty group node)
well, i guess this sounds like a very long and tedious way of making things happen here. but if there's any kinda hearted person who would write a script on this. life of using maya can be much easier.
I hope this can help you. stahlberg. I'm ur big fan~!
Jhonus
09-11-2002, 09:07 AM
Maybe thistutorial from gnomon (http://www.thegnomonworkshop.com/tutorials/arm_ik_fk/arm_ik_fk.html) might help?
It doesnt entirely cover your problem, but it might give you some pointers in the right direction.
Stahlberg
09-11-2002, 10:50 AM
Excellent, thanks. The Gnomon tutorial, some cool bits which I'll try. And that 3 arm approach too, sounds promising.
Jhonus
09-11-2002, 02:07 PM
Hey, just a question, how do you handle the deformations around the forearm joint?
I find that my deformations are lame, the diameter of the forearm contracts as I rotate, to counter this i use a fudge system of a setdriven influence object which scales up as the forearm rotates.
Not very satisfactory. i guess the issues could stem from bad topology?
Any advice/pointers appreciated.
:beer:
Stahlberg
09-12-2002, 01:53 AM
I have the same problem, and I counteract it in a similar manner, by 'blowing up' the diameter of the forearm (I use Blendshapes). I think the problems we have are due not to us doing it wrong, but to the basic mechanics of the forearm and the inability of software (so far) to mimic it.
Any real tube you twist will diminish in diameter. But the forearm of course isn't a simple twisting tube, but an extremely complex setup - 2 slightly elastic rods twisting around each other, held apart a certain distance by other non-flexible elements, and with bags of fluid hanging around and inbetween them. Makes me dizzy just thinking about trying to simulate all that... :)
Chris
09-12-2002, 02:17 AM
"held apart a certain distance by other non-flexible elements, and with bags of fluid hanging around and inbetween them"
Makes you dizzy - makes me feel kinda sick... eeuuuw, bags of fluid? Yuk :eek: :D
Back on topic, in Max (please be gentle with me Maya people) I tend to do a 2 bone setup for the arm, then set up the IK. Then for forearm twist I create another bone, linked at the wrist & going back up the forearm, that handles the forearm's lower vertices & gives forearm twist, but isnt part of the IK chain at all & just inherits the wrist motion & rotation...
Stahlberg
09-12-2002, 10:28 AM
Yes, that should help a lot. Sadly I don't think I can do that in Maya.
edit: or maybe I can... hm... something to try.
(Something I forgot to mention in the other post, if you have too few vertices in the middle of the forearm it will have an even worse thinning effect when twisted, so make sure you put enough of them in there.)
MDuffy
09-12-2002, 08:41 PM
Yeah, ideally you want a muscle and cloth-like skin simulation on top of that. There aren't any commercial options for that yet (even MAX's ACT plugin doesn't look to do this at first glance of their demo animations).
Anyways, for the upper arm you may want to just have a separate "deform" skeleton from your animation control skeleton. You would IK your standard Shoulder->Elbow->Wrist setup, making sure the rotation order on the shoulder and wrist was xyz so the x axis (twisting arm along its axis) would solve last. Then you could have your deform skeleton consisting of UpperArmTop and UpperArmBottom bones for the upper arm. The UpperArmBottom would be a child of UpperArmTop. UpperArmTop would be point constrained to the IKShoulder, and orient constrained to it as well. But you would break the connection from the orientConstraint that goes to the rotate X; this way only the RY and RZ would be passed to UpperArmTop. Then you could orient constrain UpperArmBottom to the IKShoulder, and it SHOULD only adjust the X axis to achieve the rotation. Then you can skin your UpperArmTop and UpperArmBottom bones. You could do something similar for the lower arm I'm sure, though you'd have to work in reverse since the wrist is what is doing the rotating. I'm just thinking out loud here... I haven't tried to set this up yet.
And yes, you do need to make sure you have enough cross-sections on your arm to pull off a good twist. Each cross-section should retain its volume, but the areas in between will collapse. They collapse more the greater the rotation difference between it and the cross section across from it. So the trick is to keep these rotation differences small, and you do that by breaking the entire limb twist up across multiple cross-sections, so they each get a small part of the overall twist.
Ok... back to rigging....
Michael Duffy
mduffy@ionet.net
Jhonus
09-12-2002, 09:59 PM
Out of interest, do the two bones in the lower leg work in a similar way to the forearm?
rimasson2
09-13-2002, 12:15 PM
To control the forearm twist, I use a lattice (2 2 5) without local influence, and a cluster to scale the middle lattice points when the forearm twist.
You can also both rigid and smooth skin on the same model...
olivier georges
09-13-2002, 05:16 PM
hi,
i think to rig a realistic arm, the best way is to mimic the reality, that is to say have joints for the radius, for the ulna in order to have a realistic twisting in the forearm, and add other joints or influence objects for keeping the volume of the arm at the elbow and at the shoulder joint ( really a nightmare to setup this area ) and have a scapula ( joints or influence objects ) which move with the clavicle and which slide on the rib cage. I work on a setup with all these things, it`s hard, but i think it will be ok in few days... i have already the clavicle moving when my elbow move, and an automatic scapula movment ( geometry constraint with few expressions and a point constraint at the humerus/clavicle jonction)
hope it can help ( i can`t join an avi, du to the limited size for the attach file)
Olivier.
MDuffy
09-13-2002, 05:21 PM
The problem with using two bones for the radius and ulna is that they rotate under the skin. If you just try to weight your forearm vertices to this twisting bone setup, then you start getting other strange vertex collapsing and deformation. To pull off the dual bone setup you'd also need to simulate muscle mass and skin somehow (which would indeed give you the most realistic deformation.
Later,
Michael Duffy
mduffy@ionet.net
bigfatMELon
09-14-2002, 08:55 AM
Also of note that this extra bone method should not be limited to the forearm alone. Even thought the upper arm doesn't work the same way as the forearm, there is great benefit to being able to control the amount of twist that shows up at the shoulder joint. Generally, there is very little twist in this area. The same split bone method can be applied here in the form of a bicep joint.
I generally go for the 3+ arm rig since I'm going to be setting up a blended fk/ik switch anyway. Something to be mindful of in this situation is that when you break up the rotation of a single "joint" into many, you are explicitly defining the rotation order for the new "multi-joint." It's important to match these orders in the joints of the control arms to avoid euler flipping (a euphamism for craziness and mahem).
Someone also asked if this applies to the shin. Not really since there is twisting between the knee and the ankle (except maybe when trying to make Johny the Crack Head pay back that money he barrowed at the dog track). However, I have seen the thigh being split in order to prevent excessive buttock-twist. A truly worth while effort for female characters in, IMO.
-jl
Stahlberg
09-14-2002, 09:37 AM
Mduffy, well put about the forearm.
About the shin, I can rotate mine a little, say about 10 degrees, it's tricky - sort of like trying to wiggle your ears or nostrils, but it can be done. (Bend your knee 90 degrees, turn your foot as far as it goes in both directions, the shin should be following automatically, put your hands on it just below the knee to see if it does.)
I think it's useful to enable a character to do it, especially female characters. I fancy it might help in certain extreme poses. So I include an extra joint just below the knee.
kamsvag
09-17-2002, 11:39 PM
I have a solution to Stevens original question.
Create a extra arm, linked to the same shoulder-joint, consisting of the bicep, forarm and a hand joint. Lock the forarm, only alowing it to rotate on z and x in my case (a normal bend and twist to the forarm.
In the original joints, the ones you have your weightes assigned to, bicep you should lock the x-rotations, in the x-tra bone on the bicep you should only have x-rotation unlocked. If you now, set drivenkeys or use expresion to force the original bicep to follow the new biceps y & z rotations and the x-tra bicep bones x-rotation to follow your new bicep bones x-rotation, you could setup a ik-handle on this new chain of joints and the one you've weighted should follow.
This way you can have your x-rotations happening on the second joint and the y- & z-rotations on the first joint. It makes it easier to get nice deformations in the shoulder area while you have lots of freedom to move your arm around.
:D
olivier georges
09-18-2002, 06:18 AM
hi steven,
perhaps you can go here and test this setup ?
http://www.geocities.com/smannimation/tutorials/animation/ikFkArm.html
Hope it will help...
+GavieZ+
ok, for a newbie to rigging like me :-) :
did i understand that correctly? you guys are using THREE skeletons for a rig? for what? excuse me, but as is said, i'm completely new to rigging...
MJ
olivier georges
09-19-2002, 02:11 PM
hi M-J,
it is always cool to have a skeleton for binding and skeletons for rigging, so you can delete, add, freeze etc joints on your rig skeletons without be worried about your skinning ( especialy when you spend hours or days of tweaking weights....)
Then, some animators like to animate with ik and some animators like to animate with fk, so building and arm with ik and fk is a good solution, moreover, it is easiest to do some movment with fk ( like the movment of the arms during a walk cycle where you need follow-through and overlapping action ) but it's easiest to animate with ik when the character need to push or pull something... so in your rig you need the possibility to blend the fk arm with the ik arm... there is few solutions for that, look at the link above, you'll learn interesting thing about that...
Olivier Georges
DimitrisLiatsos
09-20-2002, 12:30 PM
Man when i hear discuss like this forearm rigging i feel a little ..ignorant!:buttrock:
i know what you mean :shrug:
ZeroNeuro
09-21-2002, 07:32 AM
What I would like to figure out, is a way to use musculature UNDER the skin so that the skin can slide over it. It's a severe pain. Once someone figure out all the darned settings and got it into a plugin.. heheh I bet that would be worth a lot of money. Dreamworks apparently uses this method for Shrek. I just can't figure out what to use as a skin. Haha, oh well I think that is a few years away for me. :D
CGTalk Moderation
01-13-2006, 03:00 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.