Stretchy Joint chain using contraints????
create joint chain
Go to create/measuring tools/distane
then (holding v key) select the "arm" joint and "wrist" joint
parent locator to "wrist" joint
select ik handle and move until joint chain is completely
write down distance given
then go to window/animation editors/expression editor
name your expression (Example Stretchy joint chain)
enter expression: (**This expression was provided from the book
"The Art of rigging"** which is an amazing book that is
uber helpful!! Numbers given are for example purposes)
if (distanceDimensionShape1.distance >= 12.9 )
arm.scaleX = (distanceDimensionShape1.distance / 12.9) ;
elbow.scaleX = (distanceDimensionShape1.distance / 12.9) ;
//Do not Stretch
arm.scaleX = 1 ;
elbow.scaleX = 1 ;
**to add other joints you would just add, underneath elbow.scalex
ex// forearm.scalex = (distanceDimensionShape1.distance / 12.9);
If there are no errors then move joint chain and joints should stretch
the wrist won't stretch unless you specify otherwise.
reason why the scale is set to X is because that is the axis that
,by default, follows the joint chain.
I realized theres no real way to turn the stretch on and off
without knowing some kind of expression or something so i
figured constraints could work. This is what I came up with
bring ik handle to original location
create a control curve/object, give it a name ex//Ik Wrist cntrl
In the channel box, add a float attribute named ex//IK Stretch
minimum 0 max 1 default 0
and point constrain the distance end locator to the curve/object.
create another locator and v snap it to the distance start
locator, give it a name ex// distance helper
Point constrain the "distance helper" to the " IK Wrist cntrl"
in outliner or hypergraph, select the distance end's point
constraint. This should have two values just below the offset.
Distance Helper1W0 = 1
Wrist CNTRL1W1 = 1
go to window/animation editors/set driven key/set
select the "wrist cntrl" as the driver and the point constraint
as the driven. change the value of the "wrist cntrl" ikstretch
select the point constraint then theand the distance helper to 0 leaving the wrist cntrls value
select the point constraint then the Distance Helper1W0 = 1
Wrist CNTRL1W1 = 1
change the distance helper to weight to 0 leave the wrist cntrl's
weight at 1
in the driver window select the controller, then the attribute
in the driven window select the point constraint and the values
press key, select the controller in the
driver window, change the attribute to 1
select the point constraint in the driven window and change the
Distance Helper1W0 =1 Wrist CNTRL1W1 = 0 and then press key.
this should have created the setup for an on and off switch for
the stretching of the joint chain.
like i said, i figured this out through trying to think of the
best way to do this kind of a setup through simple weighting of
constraints. Kind of like how you would do a ik/fk setup using
3 joint chains. I just wanted to make sure that this process would
be ok if i were to add this to a rig and then animate with said rig
any criticism or additional input is greatly appreciated.