I'm trying to figure out how to put a constraint on the shoulder bone as shown in the images below. What I'm looking for is a realistic motion where the shoulder moves upward ONLY when the arm bone reaches a high enough angle. The image with the green circle is the position where I want the upward movement of the shoulder to start. I've tried tinkering with the rotational bone constraints but I ran into a couple of problems. The first problem is that I could never get the bone to rotate in the upward direction. The second problem is trying to find the axis behavior that causes the rotation resulting in upward motion. Moving the shoulder bone itself only rotates it in one direction and moving it indirectly with an IK through chain length doesn't change the coordinates of the bone itself.
-
$\begingroup$ could you upload the blend file to make us help you? $\endgroup$– TakCommented Dec 25, 2016 at 11:52
-
1$\begingroup$ the file is above $\endgroup$– xxhoisinxxCommented Dec 25, 2016 at 12:32
-
$\begingroup$ I've provided an answer for your question and included an updated file :) $\endgroup$– TakCommented Dec 25, 2016 at 12:48
2 Answers
Try using a Transformation constraint, this allows you to convert a location change into a rotation change.
In the following example I take the Z location of the arm bone with values between -0.3 and 0.3 and convert that to an rotation of the X axis of the shoulder bone from -5 to 5 degrees. Notice in the middle the Z source maps to the X destination.
For more control than that you can create a driver. You can define your own python functions to use in drivers to get as much control as you want.
Looking at your file, I've adjusted couple of things to make its looks good and realistic.
First the IK bone constraint of the ForeArm.L bone, setting the chain length to 3 makes the shoulder bone included in the chain and this is not correct and makes bad deformation as shown below:
change the chain length to only 2 as you don't want the shoulder to be affected and will give a realistic deformation as shown below:
Also once you do that then there will be no need to set an IK constraint for the UpperArm.L bone so you can disable it as shown below:
Below is the updated file where the contraints where updated and the constraint of the UpperArm.L bone was disabled.
-
$\begingroup$ Thanks for the reply. This is not quite what I'm looking for. The following GIF is what I'm trying to achieve: IMAGE @Tak . I should have established this on the first post. I'm tinkering with chain length 3 instead of 2 for that reason. $\endgroup$ Commented Dec 25, 2016 at 19:38
-
$\begingroup$ @xxhoisinxx well, according to the gif you sent, this is not related to IK, this is normal rotation using custom shapes as shown here blender.stackexchange.com/a/43054/2517 $\endgroup$– TakCommented Dec 25, 2016 at 23:09