One minute
3 ways of rigging a reverse leg
I was looking at some earlier projects that I did and I noticed that over the years I’ve actually rigged a dog leg in quite a few different ways. So I decided to make a quick video demonstrating how you use 3 different methods to set a up a reverse leg.
Of the three, number 3 is by far my favorite because I think it gives you the most flexibility as an animator. And as a rigger, it’s pretty straight forward to set up.
Apologies if the audio quality isn’t the best, I recorded this early in the morning :)
Here’s the little script I used to create a locator and set it at the correct position in world space for the pole vector:
import pymel.core as pm
def get_pole_vector_position(joint_1, joint_2, joint_3, multiplier=1.0):
# http://lesterbanks.com/2013/05/calculating-the-position-of-a-pole-vector-in-maya-using-python/
a = joint_1.getTranslation(space="world")
b = joint_2.getTranslation(space="world")
c = joint_3.getTranslation(space="world")
start_to_end = c - a
start_to_mid = b - a
dot = start_to_mid * start_to_end
projection = float(dot) / float(start_to_end.length())
start_to_end_normalized = start_to_end.normal()
projection_vector = start_to_end_normalized * projection
arrow_vector = start_to_mid - projection_vector
arrow_vector *= multiplier
pole_vector_position = arrow_vector + b
return pole_vector_position
joint_1, joint_2, joint_3 = pm.selected()
locator = pm.spaceLocator()
locator.setTranslation(get_pole_vector_position(joint_1, joint_2, joint_3), space="world")
Read other posts