Archive for April, 2008

Joints parent space matter when constraining…

So, how to put this:

When orient constraining I often make sure that all targets and the constrained object have the same local space. This could mean, making duplicates of the node that is to be constrained, making these duplicates the children of the target nodes and using the now parented duplicates as constraint targets.
I allways thought that the .jointOrient attribute of the joint, acted as a “valid parent space”, meaning that I could duplicate and parent joints to whatever and assume that would be good enough for constraining. However after running into some strange flipping I have found that joints (like groups) need the same “true” parent space, for constraining to work predictabily. This should probably also be a space that is alligned with the space of the nodes you want to constrain together.

Ok, this might be second nature to most, but it was news to me.. God, think of how many setups that may have been defect due to this :-)

Tuesday, April 29th, 2008 Main 3 Comments

Global inverse scale connection sanity check

Hi,

A small tool that is nice to have if you do not have it somewhere else in you chain of odds and ends. You can place a call to this proc at start of all your auto rig scripts – Like this:

// Check that all joint inverse scales are connected
slkConnectInverseScale ();

Here is the realy simple piece of code:

global proc slkConnectInverseScale() {

// List all the joint the scene
string $joints[] = `ls -type joint`;

// Loop through them and check if they have joint parents
for ($j in $joints)
{
string $parent[] = `listRelatives -p -type joint $j`;
if ($parent[0] != “”)
// If they have – check that inverse scale is connected
if (!`isConnected -ignoreUnitConversion ($parent[0]+”.scale”) ($j+”.inverseScale”)`)
connectAttr -f ($parent[0]+”.scale”) ($j+”.inverseScale”);
}
}

Wednesday, April 23rd, 2008 Main 1 Comment