The "star" in the center is a pole vector to the IK arm. As you can see, the elbow refuses to point at the pole vector accurately. Instead, it beginds rotating and twisting the mesh in an odd fashion
Any idea why?
Solved! Go to Solution.
Solved by dinofiguera. Go to Solution.
If the star control of the pole vector is located at the elbow position, this is the mistake.
Imagine the pole vector control as a point your elbow is pointing at. The more far away is the point from your elbow, the more the elbow will be stable. So if you want the elbow to point towards the back of the character, you have to offset the pole vector position more to the back.
It looks as though the local rotation axis or the preferred angle has not been set correctly,
Show the joints local rotation axis using Display --> Transform --> local rotation axis
one of the axis, usually X , should point down the joint chain, If that is not that case, the orientation of the joint has gotten off. You'll want to delete the ikhandle, and orient the joint.. display of local rotation axis
if the joint's orientation is correct, it could be that the preferred angle has been set incorrectly.
The preferred angle determines the direction the joint will bend when being affected by the IKHandle. It should only be in 1 axis. To check the value, delete or turn off the ikHandle's influence. select the joint, set it to 0 0 0 rotations, and then using the skeleton menu, choose "assume preferred angle" if the resulting rotation gives values in more than one axis, this will lead to poor results. Zero out the joint again, and then rotate the joint in 1 axis in the desired bend direction. Amount of rotation doesn't matter, just if it's positive or negative.. Then set the preferred angle using Skeleton --> Set Preferred Angle.
Now remake the ikhandle, and just by moving it you should see the correct motion of the joint chain. Pressing "t" will allow you to also affect and move the poleVector . Note that the poleVector X Y & Z channels are in parent space to the root of the affected joint chain.
NOTE the white triangle that shows the direction of the poleVector as determined by the preferred angle.
poleVector placement using "t"
A third posibility is that there are non zero values in the twist. as this will twist the bend away from the poleVector
hth
-=s
Thanks for the tips! I tried all of them but still couldn't make it work.
I've provided the elbow in case someone wants to take a look.
Edit: forum doesn't allow the 77 kb .ma file, so here:
https://drive.google.com/open?id=1e4eTCdO9O2BJYqQQWfTmpkClvZXeS76Z
Also, I've noticed that the elbow acts in the same manner even without the pole vector connected.
I know that I could make it work instantly if I aligned all the joints on two axises, but I placed the joints to fit the mesh (the arm was kind of skewed). So I think I'll redo joint positions in a safe way along one axis, then group joints and pole vector and rotate as a whole to ensure it's an exact match.
In your scene, the pole vector was completely misaligned with the rotating plane of the elbow.
Before to create the pole vector constraint you have to be sure what is the axes you want the elbow to rotate around.
If you choose (like in your case) the Z axes,
the pole vector controller needs to be perfectly aligned with an imaginary triangle that has the elbow, the shoulder and the pole vector controller as vertices.
This triangle is the rotating plane of your elbow. (The plane in which the elbow moves while rotating the arm.)
Animating the pole vector controller means rotating that plane around, and therefore rotating the arm.
Check my scene, I created a transparent rotate plane, to help you figure it out.
Cheers,
D
Can't find what you're looking for? Ask the community or share your knowledge.