20
$\begingroup$

How to calculate the exact pole angle so when I add Pole bone the IK chain does not move?

enter image description here

$\endgroup$

1 Answer 1

27
$\begingroup$

This is what the pole angle is:

enter image description here

Its a signed angle between the Base_Bone's X axis and the projected Pole_axis onto Base_Bone's XZ plane. The direction of projection is IK_axis.

Fill in the bone names, it will print the appropriate pole angle into System console. Then you can set the IK constraint with that Pole bone and angle and the IK chain won't move:

import bpy
from mathutils import *

def signed_angle(vector_u, vector_v, normal):
    # Normal specifies orientation
    angle = vector_u.angle(vector_v)
    if vector_u.cross(vector_v).angle(normal) < 1:
        angle = -angle
    return angle

def get_pole_angle(base_bone, ik_bone, pole_location):
    pole_normal = (ik_bone.tail - base_bone.head).cross(pole_location - base_bone.head)
    projected_pole_axis = pole_normal.cross(base_bone.tail - base_bone.head)
    return signed_angle(base_bone.x_axis, projected_pole_axis, base_bone.tail - base_bone.head)

base_bone = bpy.context.active_object.pose.bones["BASE_BONE_NAME"]
ik_bone = bpy.context.active_object.pose.bones["IK_BONE_NAME"]
pole_bone = bpy.context.active_object.pose.bones["POLE_BONE_NAME"]

pole_angle_in_radians = get_pole_angle(base_bone,
                                       ik_bone,
                                       pole_bone.matrix.translation)
pole_angle_in_deg = round(180*pole_angle_in_radians/3.141592, 3)
print(pole_angle_in_deg)
$\endgroup$
5
  • $\begingroup$ I have new respect for Maya. Its pole vector is flawless. I haven't given up in Blender though. I'll see if I can find a workaround $\endgroup$
    – allen
    Commented Jul 29, 2015 at 17:25
  • $\begingroup$ @allen I agree, Maya's rigging is much much superior than this. Except for advanced IK and some bone dependency cycles all can be replicated in blender though. But it's not that easy. $\endgroup$ Commented Jul 30, 2015 at 6:08
  • $\begingroup$ Its extremely frustrating. I've spent a lot of time making quality rigs for Maya and I love fancy rigs. I was able to find enough great tutorials to create "Driven Keys" in Blender, foot roll and banking, ect. I wasn't far off from duplicating a production quality Maya rig in Blender. But the accuracy with respect to the bind pose is terrible! It's a shame since I love to rig. $\endgroup$
    – allen
    Commented Jul 30, 2015 at 20:29
  • $\begingroup$ Very useful information, no matter how old the post. Just bookmarked the page. Thank you. $\endgroup$ Commented Jan 28, 2019 at 10:16
  • $\begingroup$ for some reason the angle generated by this script didn't work for me, but it was still useful, I adjusted the pole angle manually and used the script to calculate how far it currently is from the perfect angle :) $\endgroup$
    – Ahmed Ali
    Commented Feb 14, 2019 at 8:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .