Hi
I'm trying to add pole vector to an IK arm setup
and the joint chain seem to flip eveytime I try to
pole vector constreint it to a locator or curve.
I've freeze transformations on the locator,but still it happned.
How can I pole vector constreint and keep the chain as it is?
thanx
Hi
Well, that is kind of tricky since the pole vector constraint defines the plane the ikSolver will try to put the joints in (check the documentation for this, there are infinite amount of positions which the solver can position the joints at in order to match the target as long as the target is within the joint chain reach).
So unless you position your pole vector target really carefully before you constrain it, you will get some amount of flipping.
But the basic question is; why do you want this? Set the joint chains perferred angles before you start to constrain it and you can always reach the initial position by turning off constraints & IK solvers in the master enable and then give the assume preffered angles command.
This way you can skin & whatever you do the character with the skeleton in its initial pose and then as you turn on IK & constraints, you can start to pose it.
Best regards
/ Daniel
QUOTE(jdj @ 08/31/05, 07:16 AM)
Hi
Well, that is kind of tricky since the pole vector constraint defines the plane the ikSolver will try to put the joints in (check the documentation for this, there are infinite amount of positions which the solver can position the joints at in order to match the target as long as the target is within the joint chain reach).
So unless you position your pole vector target really carefully before you constrain it, you will get some amount of flipping.
But the basic question is; why do you want this? Set the joint chains perferred angles before you start to constrain it and you can always reach the initial position by turning off constraints & IK solvers in the master enable and then give the assume preffered angles command.
This way you can skin & whatever you do the character with the skeleton in its initial pose and then as you turn on IK & constraints, you can start to pose it.
Best regards
/ Daniel
[snapback]213778[/snapback]
I am trying to use pole vector as elbow control
I thoght I could position the locator whereever(behind the elbow),
freeze trans. and then pole constreint the IK handle without any transformation
offset,am I missing something?
Freezing has nothing to do with this. pole vector will always aim directly at the constrain target. It's not a big deal to adjust it manualy afterwards.
But if you insist; Snap move the locator to the ik chain's root joint, keep it selected and execute:
CODE
float $pv[] = getAttr ikHandle1.poleVector;
move -r $pv[0] $pv[1] $pv[2]
This will place the locator exactly at the tip of the pole vector. Now you can apply constrainment
Of course replace' ikHandle1' with the name of your actual ik handle
QUOTE(MJblack @ 09/01/05, 02:53 PM)
I am trying to use pole vector as elbow control
I thoght I could position the locator whereever(behind the elbow),
freeze trans. and then pole constreint the IK handle without any transformation
offset,am I missing something?
[snapback]213900[/snapback]
...if you use a "simple" 3-joint (shoulder, elbow, hand, 90 degree angle at the elbow) chain and ensure that they are all planar (all have for instance world space x = 0) and place a locator behind the elbow in the same plane (i.e. with world space x = 0), then you should not get flipping.
Best regards
/ Daniel
Why not start over with new joints and make the RP IK with the Pole Vector constraint the right way? If you're worried about losing bind data, you can always export and import the skin weights. Good luck.
Max
Another way to place the pole vector with out changing any joint's orientation is by calculating the angle bisector between the joints then placing a transform at some distance along that bisector vector.
So if you have a three bone chain (any overall orientation - does not have to be planar) do the following:
Calculate normalized vectors between each joint
Add the normalized vectors together and normalize that vector (the bisector vector)
Create a locator to be used as the pole vector constraint
Move that locator to the world space position of the middle joint
Move that locator relative in object space along the bisector vector
This way no matter what the overall orientation of your joint chain the resulting placement of the transform for the pole vector constraint will be correct.
Tim N.