PDA

View Full Version : Good stable twist solution?


musi
01-23-2009, 01:49 PM
Hi,

Anybody has a good stable twist solution for radius-ulna twist and such?
Or can point in direction of one?

Thanks!

doffer
01-23-2009, 05:09 PM
I suppose you know the standart one, where you split the lowerarm into sections, and devide the rotation onto each of the sections, so that the one nearest the elbow has 0%, the next 25% the next 50, then 75 and then the wrist will have all 100%.
Of course the more you split it up, the smoother it'll be.

That's the only one I can think of.

musi
01-23-2009, 05:49 PM
Hi Christoffer,

Yep, it's the simplest one, but it has a very big problem: you joint's x rotations are not always correspond to the visual rotation of the joint in the viewport when gimble lock happens. Than your twist joints will flip.

The are 2 problems the good twist solution should address: first is flipping at wrist gimbles (how much you try to avoid them somehow animators manage to get themselves into the gimble again and again:)), and second is stability at extreme rotations of the wrist in any direction.
There are 2 features the good twist solution should posses: it should be an add-on to the bind rig, and be independent of the control rig.

Well, I am still searching :)
Thanks for suggestion, Christoffer!

tonytouch
01-23-2009, 08:23 PM
you should have a look at the 2nd tutorial here . it is a pretty easy way , to get stable results !

http://www.6ixsetstudios.com/tutorials/rigging/

musi
01-23-2009, 09:11 PM
Hi Simon :wavey:,

I remember you from the rigging course!
Thank you so much for the link, that solution feels pretty solid. I have nether thought to use aim constraints for the twist. I am most definitely going to try this one!

tonytouch
01-24-2009, 03:15 PM
hi sasha ,

really nice to hearing from you . i think this twist-method is simple and 100% stable for +-180 degree twists , and a "real forearm" usually twists about +-90 degree .


PS:
i send you PM ... :beer:

TechnicallyArtistic
01-27-2009, 04:28 AM
The simplest one I use is rather that making multiple joints down the arm is I duplicate the wrist joint. I rename the original wrist jonit to forearm. Then I make that duplicate joint a child of the forearm and name it wrist. Now when the arm twists only the forearm joint does that. So only it only hands the x rotation of the arm. The wrist joint then handles only the y and z rotations of the wrist.

You can do the multiple joint thing and set them to rotate less and less up the chain, but really skin weighting is going to do the same thing.

And as long as you orient your LRA's (local rotation axis) it should be no problem to duplicate joints in your chain and pull them out in a straight line.

Changing the rotation order of your joints can also help prevent gimbal lock from happening, especially since two joints are now solving the rotation.

musi
01-27-2009, 07:35 AM
Hi Sean,

It sounds as an interesting solution. How do you handle the wrist control? Is it a control object that just drives the forearm joint with it's x rotation and the wrist joint with y and z? Are you using constraints to drive the skin joints?

The only pit I can see is that it's an extra joint in the base hierarchy, and I would prefer to have the base hierarchy clean and have all extra deformation chains as add-on's.

Thank you very much, I will test this solution.

TechnicallyArtistic
01-27-2009, 09:11 AM
Yeah. Exactly. You can connect the control just about any way you want. Direct connection editor connection, expression, constraint, etc. Just connect x to the forearm, y and z to the wrist joint. Usually Orient the LRAs of the arm first so all the x axis are directed down the chain (you may want to add a temporary joint in front of the end of the wrist to give it something to aim towards when your orient your LRA and then delete it after it's oriented with your wrist.) Then I duplicate the wrist, parent it under the original. The child is the wristJoint now and the parent is now the forearmJoint. Then I group the wrist control I've created, point snap it to the wrist, orient constrain it to the wrist (Your control my go side ways alligned with your arm and you may need to roate it 90 degrees and freeze transforms on it again), delete the orient constaint, then point constraint the control group to the wrist, then orient constrain it to the elbow. The control follows along, and since it's oriented right along the LRA so you can just hook up the controls rotate X to the forearms, and the controls y and z to the wrist joints, and it should move the exact same way the control does.

I haven't seen a way to do this without more joints some where. But it's an alternative to adding a couple joints down the forearm. I used to do it that way and just realized it was sorta pointless. I could do all the twisting with one joint and just have the weighting fall off as it gets to the elbow and it does the same thing. Those extra joints you add in the forearm, you're still skin weighting those. Otherwise they don't actually do anything.


EDIT: Wasn't sure if you knew what LRAs were from glancing over the post. Just in case, here's a tutorial that explains them some.
http://www.3dtotal.com/team/Tutorials_2/Simple%20Game%20Rig/Simple_Game_Rigging_03.asp

EDIT:EDIT:
I just looked at this tutorial Ignore the part on page 5 where it reverse the direction of the LRAs on the mirrored joints. It flips the behavior, which you want to keep the same. That part is in there for scripts that automated mirroring rigged parts later, which you aren't doing.

musi
01-27-2009, 10:24 AM
Yep, I thought it was what you do (with the control) :)

Actually I know what LRA is, how important it is and how to deal with it :) I assumed that at the point one gets to do the twist the base joints of the skeleton are oriented and clean, placed properly and tested.

But thanks for the thought, it was very nice of you :)

I wouldn't agree with you about limiting the twist joints to one at the location of the wrist. Maya skin cluster has tendency to collapse, so the purpose of multiple twist joints is to minimize the loss of volume.
See on the image how much better the last cylinder looks. The top "wrist" level x rotation on all 3 of them is 100, but on last one it's distributed over 4 joints, in the second over 2 joints, and on the first one it's a single twist joint.

Thanks for shearing, Sean!

TechnicallyArtistic
01-27-2009, 10:42 PM
You know I think I actually knew that at one point, but forgot about it. I guess I've been doing to much low poly stuff lately. I guess that's why all my old rigs are like that, as well as high poly.

Thanks for the reminder.

Boucha
01-28-2009, 12:46 AM
You can also try out joint chains controlled by spline ik. You can then hook up the advance twist feature for proper twisting. Ribbon system can also be used to get that effect.

musi
02-02-2009, 03:16 PM
Sean,
Yes, ones experiences get really dependent from work being done - you do low poly stuff and there is usually no place for much :) Thanks for advice!

Suchan,
Spline ik system is a good idea! Though it's a bit more troublesome to hook up to the global scale of the character, it sounds clean and stable. And I have never thought of the ribbon system for these purposes! But why not! Thanks!

Thank you very much, guys, now I have a couple of very good ideas to try out.

vvkonline
02-02-2009, 04:09 PM
I's pretty easy to get the twist with split joints any way you set it up but what is still there is the controller that still handles all 3 axis and gets animators in to a gimble lock.

CGTalk Moderation
02-02-2009, 04:09 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.