PDA

View Full Version : Stretchy Joints


MicH
02-27-2006, 11:54 AM
Hi girls & guys !

I have created a rig which mostly been inspired by parts from CG toolkits book the art of rigging vol.1.
Thou Im stuck on one part; My character needs to have a stretch on its arms, It can't be done with stretchy joints a la incredibles which only stretches when it's draged beyond it's scale 1 length. I want to keep the bend of the arm in some poses and scale only forearm, upperarm or both.

I've come up with a temporary solution by scaling some of the joints in translate X, which works a bit smooth (well hey it isn't perfect) The tricky part is that my contol object which is parented to a joint keeps the original pivot point of the parented joint when I stretch the joint chain. This is a real hazzle to deal with.. any idea how to solve this ?

some visuals:
[img=http://img140.imageshack.us/img140/9606/extended6bn.th.jpg] (http://img140.imageshack.us/my.php?image=extended6bn.jpg)
1) Contol object is parented to joint
2) Contol objeck has a attribute which contols the strechiness (Scale X of some joints, setup by set drriven keys)

thx in advance

best regards
/ Micha Boström

Buexe
02-28-2006, 09:31 PM
rigging rule number 1:

Don`t scale joints! It stinks! It gives you bad Mojo! Never do it! Even if your Boss asks you!

No seriously, try creating the stretchiness by translating your joints.
Ideally you have set oriented your joints nicely so that only y or x point to the child
joint. If so, you can put a driven key on that transform attribute and everything is fine.
If you scale a joint, you "deform" the space of all descending nodes in that hierarchy,
especially rotations will be awkward.
cheers
j

zhenyang
02-28-2006, 10:51 PM
Something I read from Creature TD, a reply from Erick Miller:
... In my experience, scaling joints is far superior to translating them for making a stretchy spine - be it cartoony or realistic. The only reason that *certain* folks may not scale would be mostly due to specific animation file format data transfer issues - but, I have rigged cartoony characters using both translate to do the stretching and scale (for the cartoony stuff, I was lead rigger on the 50th anniversary Disney commercials w/ Mickey Mouse, Goofy, etc) and by far scale works way better - even for realistic spines. The reason for this is that the scale pivot and the rotation axis line up in such a way that cause the scale to occur from the pivot of the joint and be evenly applied across the length of the bone, where-as excessive translate causes ripping in the deformations that scaling does not.
http://www.creaturetd.com/forums/viewtopic.php?p=3255#3255

Morganism
03-01-2006, 01:59 AM
I'm going to say that how you do your stretch often depends on your skinning.
If you have a lot of twist joints to even out weighting, go with translates. If not, scales. But it will affect the way you weight, also.

As for your question, it'll be tough giving advice not really knowing how the rig is put together. The way I do it is to have whatever is controlling your stretch run through some other node (added or multiplied...) that is connected to an attribute so that it can be individually offset or scaled.

That sounded more complicated than it actually is....

Buexe
03-01-2006, 07:07 AM
Erick Miller off course knows his stuff, and his opinion is perfect the way it is. I on the other hand don`t have a problem with "ripping in the deformations" when translating the joints so this method works fine for me. I also don`t have issues with animation data transfers. I just warn using scale especially non-uniform scaling. There were already a whole bunch of animation scenes animators showed to me and said "oh look somethings broken" look at that strange finger rotation. And in many cases it was because of using scale to stretch something. Anyway, just wanted to let you know that there is reason to be catious, but if you know what you are doing, especially if your name is Miller ; ):

Do watcha like!

:thumbsup:

Robken
03-01-2006, 07:45 AM
why not just use an FK solution for your arm? have a control at every joint, and instead of directly connecting the scaleX of the control to the scaleX of your arm, have an extra attribute on your control connected to the scaleX of the joint it's controlling..that way each control will stay at it's respective joint...as long as you point constrain the controls to their joint that is.

I do it like that all the time, or maybe i'm missing your point...

NolanSW
03-02-2006, 05:28 AM
I've never been a big fan of using scale to to stretch joints only because it can cause some wacky results at the end of IK. I noticed that the IK end effector will not update as nice as using translation for stretch. Now you could create a slaving system that drives the scale of a bone chain with the translation of another with a multipy/divide node. So setup your stretching that will solve correctly with ik using translation and then drive the translate of those joints into the scale of another duplicated joint chain. Now take note, the one that uses translation WILL have different pivots than the one that is connect with scale. I posted a quick example of what I mean. This is an FK setup but you should see what I mean about the pivots. Now stretching in spine using scale may work very nice if setup and weighted correctly but using RP or SC Iksolvers using scale your asking for headaches.

Each contol has a stretch attribute.
scaleTest.ma (http://snolan.net/uploads/scaleTest.ma)

Sean

antweiler
03-02-2006, 02:52 PM
Don`t scale joints! It stinks! It gives you bad Mojo! Never do it! Even if your Boss asks you!
j

hey buexe, if you would know... ;)

sorry for ot, couldnt resist..

yenvalmar
03-11-2006, 12:35 AM
yet another heretofore unknown schism in cg discipline, its not quite up there with nurbs vs. polys...

i have definitely observed spooky weird screwy unknown bugs with scaling joints as well, one of those things its hard to point to a specific situation but "it just causes stuff to screw up". maybe 'll give it a shot again next time i rig a spine. i usually use set driven keys myself, i've also seen people use expressions to control translations, linked to the control position. same concept..

i have definitely noticed tearing issues with very extreme moves on translating stretchy spine rigs, but even for fairly cartoony characters if your mesh is properly constructed and weighted, your skeleton is designed with joints corresponding with where the verts are and so on, they are pretty minimized. but its often an annoying process to iron them out, so if scaling works nowadays and doesnt tear, i'm all for it.

if your arm is extremely cartoony you may want to try a wire deformer, i've done some pretty cool very bendy rigs without any bones, just using wire deformers and control heirarchies which influence eachother via SDKs and constraints, for example the dragons in this render can bend into knots and stretch or compress infinitely just about, although the texture warps if you stretch it too far of course.. just using a wire deformer and a bunch of controlls that points on the wire deformer are constrained to via clusters.

http://www.yenvalmar.com/nonprofit/theory/karma/images/integrate_v2.JPG

CGTalk Moderation
03-11-2006, 12:35 AM
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.