HOW CAN I STRAIGHTEN MY ROTATIONS ON MY ADVANCED SKELETON RIG

HOW CAN I STRAIGHTEN MY ROTATIONS ON MY ADVANCED SKELETON RIG

kinglaw
Advocate Advocate
8,746 Views
22 Replies
Message 1 of 23

HOW CAN I STRAIGHTEN MY ROTATIONS ON MY ADVANCED SKELETON RIG

kinglaw
Advocate
Advocate

Im new to advanced skeleton and I have managed to build the rig with controllers, the only problem now is that, whenever I select a controller on my rig the Y axis on rotation is not facing straight up.How can I fix this without starting allover placing joints?. I have attached a screen capture of my project to this message to support my question

 

Thanks 

0 Likes
Accepted solutions (1)
8,747 Views
22 Replies
Replies (22)
Message 2 of 23

mcw0
Advisor
Advisor

In Adv. Skel, there are a few extra nodes above your controller that you can use to adjust the rotation axis to your needs.  Select your controller and in the Outliner, hit your "f" key to find your controller.  Notice the extra nodes above your controller.  Find an appropriate node and rotate it until your controller is the way you want.  You might notice your rig moving as you adjust one of these nodes.  You may need to delete some joint constraints and recreate them once your controller is adjusted.

0 Likes
Message 3 of 23

kinglaw
Advocate
Advocate

Thank you for your response,  I followed your instructions and found the extra nodes in the outliner and I was able to adjust the rotations without moving the actual joints but now the problem is that in the channel box the values are changing,I would like to have everything at zero after fixing the controllers rotation.How can I do that?

0 Likes
Message 4 of 23

mcw0
Advisor
Advisor

If you are using the extra nodes to adjust the controller's rotation axis, then the controller rotation values should be 0,0,0.  The adjustment is carried in the extra node.

0 Likes
Message 5 of 23

kinglaw
Advocate
Advocate

I maybe doing this the wrong way, could you please show me a screen capture of the outliner showing the extra nodes you are talking about please?

0 Likes
Message 6 of 23

mcw0
Advisor
Advisor

You can select a control curve and then click on your up arrow.

0 Likes
Message 7 of 23

kinglaw
Advocate
Advocate

Thanks I found the Extra node using your instructions but when I rotate the shoulder controller all the joints in the arm are rotating with it and the values in the channel box are changing they are not staying at zero 😞

what am I doing wrong? Check the attached screen capture 

0 Likes
Message 8 of 23

Baboonian
Advocate
Advocate

you may try the "Preserve Children" checkbox in the tool settings

0 Likes
Message 9 of 23

kinglaw
Advocate
Advocate

So I tried clicking on preserve children as you suggested, now the rest of the joints arent moving as intended but the values in the channel box for rotation are still changing whenever I rotate the controller 😞

Check out the attached screen capture

0 Likes
Message 10 of 23

mcw0
Advisor
Advisor

If you look in the outliner, a control has an "Extra" parent.  And a joint child.  I believe the joint is what is constraining your deformation joints.  So if you want to adjust your control's rotation axis, I suggest constraining the child joint with a locator while you are adjusting your control via the 'Extra" parent.  Once you are done adjusting, delete the constraint.  And then delete the locator.

Message 11 of 23

Baboonian
Advocate
Advocate

There are a few steps to take here. Watch the video.

First, rotate FKExtraShoulder_R by 15 degrees, then rotate FKXShoulder_R to minus 15.

0 Likes
Message 12 of 23

mcw0
Advisor
Advisor

I just tested my suggestion and it worked perfectly.

0 Likes
Message 13 of 23

kinglaw
Advocate
Advocate

I still havent  been able to fix the problem, can you show me some screen capture images that I can follow please, sorry Im failing to understand the process 😞

Message 14 of 23

mcw0
Advisor
Advisor

//  select the control you want to adjust

 

string $sel[] = `ls -sl`;

string $extra[] = `listRelatives -parent -pa $sel[0]`;  //  get Extra node

string $childJt[] = `listRelatives -type "joint" $sel[0]`;  //  get child joint

string $loc[] = `spaceLocator`;  //  create locator to hold child joint

delete `parentConstraint -w 1 $childJt[0] $loc[0]`;  //  snap locator to child joint

refresh;  //  without refreshing, the values don't update

string $parcon[] = `parentConstraint -w 1 $loc[0] $childJt[0]`;  //  hold child joint

select -r $extra[0];

 

/*

now adjust away

when done, run the following

*/

 

delete $parcon $loc;

 

Message 15 of 23

kinglaw
Advocate
Advocate

I understand you are trying to help me but Im kinda confused with your response, I dont fully understand. Give me a step by step to go about it if possible please!, and thank you for responding.

0 Likes
Message 16 of 23

mcw0
Advisor
Advisor
Accepted solution

Copy and paste this onto your shelf

 

string $sel[] = `ls -sl`;

string $extra[] = `listRelatives -parent -pa $sel[0]`;  //  get Extra node

string $childJt[] = `listRelatives -type "joint" $sel[0]`;  //  get child joint

string $loc[] = `spaceLocator`;  //  create locator to hold child joint

delete `parentConstraint -w 1 $childJt[0] $loc[0]`;  //  snap locator to child joint

refresh;  //  without refreshing, the values don't update

string $parcon[] = `parentConstraint -w 1 $loc[0] $childJt[0]`;  //  hold child joint

select -r $extra[0];

 

Copy and paste this onto your shelf.

 

delete $parcon $loc;

 

Select a control that you want to adjust the rotation axis for.  Then click on the first new shelf button that you just made.  This will do all the behind the scenes work and select the "Extra" node that you will use to adjust the rotation axis.  When you are finished adjusting the rotation axis, click on the second shelf button you made to do clean up.  Now select your control and see that the rotation axis is how you've adjusted it.  And no joints should have moved in the process.

 

FYI...after the "//" is notation describing what the code is doing.

Message 17 of 23

kinglaw
Advocate
Advocate

aaah!!!!! 🙂 I understand now, I will try this and will be back with the results thanks you so much!

0 Likes
Message 18 of 23

kinglaw
Advocate
Advocate

So I tried your method and I managed to adjust the rotations without moving any joints as intended ,using the code you gave me, the only problem is that the values in the channel box changes whenever I adjust a selected controller, I would like it for every value to remain at zero if possible. Let me know how I can achieve this please, and thank you for your help

0 Likes
Message 19 of 23

mcw0
Advisor
Advisor

When you say  "values in the channelbox change", are you referring to the "extra" node, or the control?  Values should change on the "extra" node.  That's the node that carries the offset values.  The control rotation values should be zeroes.

0 Likes
Message 20 of 23

Baboonian
Advocate
Advocate

In the mGear setup, the constraint trick works as expected. Thanks, mcw0. I just need to add two groups near the control. But the rig performance doesn't change.