PDA

View Full Version : Stretchy IK Leg Prob


azureFantist
05-05-2012, 12:21 PM
Hi all, recently I am tweaking my Character and I notice this problem that I have when I implemented the 'Stretchy' onto the legs.

By the way, I am using Autodesk Maya 2011 and the Stretchy method I have used are the nodes - namely DistanceBetwee, Condition and MultiplyDivide.
Additionally, I have made the inputs to be in the Y.

I have attached a picture of my problem in the thread.

Basically, the problem I have is whenever I have stretch the legs to a limit distance, the thigh joint/skinning will gets distorts in all direction.
I have sort of find a solution but it is not practical, being I have to move my poleVector to the opposite direction so that the distortion will ceased and revert to normal.

Personally I do not find this to be an ideal solution as I find that if say an animator is going to use my rig, this is a big hassle to 'play around' so as to get it normal.

As such, can anyone tells me how to settle this issue?

Image: http://i378.photobucket.com/albums/oo226/melvados/Stretchy.jpg



Greatly appreciate for any advices.

ayub
05-06-2012, 11:00 AM
i decided problem with simple script

http://imagepost.ru/images/s/tr/stretch_1.jpg


$dists = L_arm_distShape.distance;
$values = 7.70453;
if (L_IK_hand_CTRL.stretchy == 1)

{
if ($dists >= (Char_CTRL.scale_char * $values))
{
L_Shoulder_Skin.scaleX=$dists/($values*Char_CTRL.scale_char);
L_Shoulder_FK.scaleX=$dists/($values*Char_CTRL.scale_char);
L_Elbow_Skin.scaleX=$dists/($values*Char_CTRL.scale_char);
L_Elbow_FK.scaleX=$dists/($values*Char_CTRL.scale_char);
L_Shoulder_IK.scaleX=$dists/($values*Char_CTRL.scale_char);
L_Elbow_IK.scaleX=$dists/($values*Char_CTRL.scale_char);

L_Shoulder_Skin.scaleY=1/($dists/($values*Char_CTRL.scale_char));
L_Shoulder_FK.scaleY=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_Skin.scaleY=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_FK.scaleY=1/($dists/($values*Char_CTRL.scale_char));
L_Shoulder_IK.scaleY=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_IK.scaleY=1/($dists/($values*Char_CTRL.scale_char));

L_Shoulder_Skin.scaleZ=1/($dists/($values*Char_CTRL.scale_char));
L_Shoulder_FK.scaleZ=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_Skin.scaleZ=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_FK.scaleZ=1/($dists/($values*Char_CTRL.scale_char));
L_Shoulder_IK.scaleZ=1/($dists/($values*Char_CTRL.scale_char));
L_Elbow_IK.scaleZ=1/($dists/($values*Char_CTRL.scale_char));

}
else
{
L_Shoulder_IK.scaleX=1;
L_Elbow_IK.scaleX=1;
L_Shoulder_Skin.scaleX=1;
L_Shoulder_FK.scaleX=1;
L_Elbow_Skin.scaleX=1;
L_Elbow_FK.scaleX=1;


L_Shoulder_IK.scaleY=1;
L_Elbow_IK.scaleY=1;
L_Shoulder_Skin.scaleY=1;
L_Shoulder_FK.scaleY=1;
L_Elbow_Skin.scaleY=1;
L_Elbow_FK.scaleY=1;

L_Shoulder_IK.scaleZ=1;
L_Elbow_IK.scaleZ=1;
L_Shoulder_Skin.scaleZ=1;
L_Shoulder_FK.scaleZ=1;
L_Elbow_Skin.scaleZ=1;
L_Elbow_FK.scaleZ=1;


}
}

azureFantist
05-07-2012, 03:05 AM
Hi ayub, thank you for getting back to me.

Could I ask you about the script?

First, is this the expression way of doing the skinning? As I have read something similar online that you can do the skinning via Expression, I would like to confirm if that is the method?

Secondly, judging from my scenario, any ideas as to what the problem is?
I would like to tweak it rather than redoing it as a learning experience so that I can tackle it if I were to encounter it again.

Thanks again!

giordi
05-07-2012, 05:53 PM
well why dont you give us the bone vaules before and after the stretch? what did you do with the Y axis that you mentioned in the first post?

azureFantist
05-08-2012, 06:11 AM
Hi, perhaps you can view/download my File (http://www.mediafire.com/download.php?qpf0pkj07kn6kka)

giordi
05-08-2012, 09:27 AM
well first of all i believe you have placed your leg bones in the wrong place . but the problem might vome from the fact that your bones are aligned with the world and not with the regular primary axis aiming at the next joint. Also i would suggest you make the stretch based on translate

azureFantist
05-08-2012, 11:06 AM
well first of all i believe you have placed your leg bones in the wrong place . but the problem might vome from the fact that your bones are aligned with the world and not with the regular primary axis aiming at the next joint. Also i would suggest you make the stretch based on translate

Hi Giordi, thank you for your reply. I got a couple of questions.

Could you possibly explain to me in detailed to the part where you have mentioned that my bones is placed wrongly? As well as the fact that it is not aiming for the next joint?

Cause for my whole skeleton, I done it using the same method and the hands are working alright. I have also cross reference my skeletons with my friends as well as asking them to help me check but yet we are unable to solve the problem especially when the thigh joints rotates when it has been stretched over an amount of distance.

Based on your last question, I presume you are referring to the output to the joints in the Condition node right? Earlier I have just tried your method - translation, sadly it screws up my skeleton rendering the solution not viable.

giordi
05-08-2012, 11:15 AM
buildinga stretch leg based on traslation is different then doing it with scale.
The position of the bones is not good and will give you nightmers getting the skinning right.
Regarding orientation just find a tutorial i bet there are free ones about joint orientations and you will see .

azureFantist
05-08-2012, 11:22 AM
Ok... And so, what about the part that the bones is placed wrongly? As well as the fact that it is not aiming for the next joint?

I don't really get this part at all

giordi
05-08-2012, 11:32 AM
well just get an anatomy books and compare the human bones and your bone you will see they are in different place.
Also usually riggers tryies to keep the bones in the middle of the volume due to better deformations . you didnt do that at all , you wanted to keep your leg bones perfectly streight and you ended up with that bad placement

Ok... And so, what about the part that the bones is placed wrongly? As well as the fact that it is not aiming for the next joint?

I don't really get this part at all

azureFantist
05-08-2012, 03:06 PM
well just get an anatomy books and compare the human bones and your bone you will see they are in different place.
Also usually riggers tryies to keep the bones in the middle of the volume due to better deformations . you didnt do that at all , you wanted to keep your leg bones perfectly streight and you ended up with that bad placement

Okay, then can I say will it be a good idea for me to move the joints by using the 'Move Skinned Joint Tools'?

ayub
05-08-2012, 03:10 PM
hey man , you must reorient joint , X axis must be orient along joint

http://s019.radikal.ru/i627/1205/bd/6c57387105b2.jpg

azureFantist
05-09-2012, 07:38 AM
hey man , you must reorient joint , X axis must be orient along joint

http://s019.radikal.ru/i627/1205/bd/6c57387105b2.jpg

Hi ayub, could I kindly ask why must the X axis be oriented along the joint?

ayub
05-09-2012, 05:54 PM
X need orient, that would rightly rotate around axis of joint.

write me to skype if you want get answer faster : character.animation

CGTalk Moderation
05-09-2012, 05:54 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.