Florian Linner solves this IK Setup 3 Issues, with which animators are confronted again, if they animate IK.
- The leg is fully extended and the foot lifts off the ground (auto stretch)
- IK-popping when you stretch the leg (damping)
- You can not fix the elbow, if the character eg. bears on the elbow einemTisch (free/fix elbow)
We begin with a scene, of only one joint-chain 3 Roach is, which A,B and C are called and an associated simple ikHandle with ikRPSolver, And by a locator, called the pole is, is poleVectorConstraint.
First, we add auto-added stretch. We do this in the example above translate, But if you are of the opinion, that stretching works better than scaling, You can also do it quietly so.
If the arm (or whatever) So now is, We want to start stretching to, before the joints are to retain their original length. We accomplish, by multiplying the original values of the joints tx B un C with a factor, greater than 1 is, when the arm is straight and 1, when the arm is bent.
To this end, we combine added multiplyDivide-nodes with the x-values of the joints and put input2X to their original values. Wir nennen sie md1 und md2
Then we measure the distance between the start- und end-Handle (not between the joints,otherwise we get a cycle) by using a distance-between-use node and if its distance is greater than the total length of the joints Originally (AB BC), we begin to Stretch.
For this we add a node multiplyDivide, to get the percentage of the distance toward the total length and call it AC_percentage. Combines the distance of distanceBetween nodes with input1X of AC_percentage. Set input2X on the total length of AB BC (also B.tx C.tx). Set operational Divide.
Now we have the condition setuppen (or upsetter?:)), defined, when we begin to Stretch. We could do with a condition-node, But we prefer to use a driven-key-curve, as such, we also later for the effect of damp-need.
Die Kurve bekommt also ihren input von der distance von AC_percentage und ihr output geht in input1X von md1 (and md2).
Since we want, that nothing happens, has reached the distance to the total length (AC_percentage = 1.0) setzen wir den erstenKey dort (1.0/1.0).
From there, we want a linear stretching. So we add a key for example,. (1.1/1.1) und setzen die post infinity auf linear.
Renames the curve in order stretch_percentage_nodamp.
Now it works even auto_stretch. Now we have only one attribute on the link to end_handler, so that we can turn it off and then we did it. So we add an attribute, We call the auto_stretch, to add end_handler, which of 0 until 1 go. Dann erstellen wir zwei blendTwoAttributes-Nodes und nennen sie stretch_dial1 und stretch_dial2. Set input[0] von stretch_dial1 auf den ursprünglichen tx-Wert von B und input[0] von strech_dial2 auf den ursprünglichen tx-Wert von C.
These are the values, Joints are to get the, if auto_stretch off.
Now we have this brilliant switching nodes between the mds and the x-values of the Joints. Verbindet die outputs von md1/md2 mit dem input[1] der stretch_dials.
Connects the output of the force-glare, anti-nodes with the x values of B / C. Connects the attribute with the attribute auto_stretch Blender.

























































