[Sidefx-houdini-list] Forward Kinematics in Houdini

Edward Lam edward at sidefx.com
Fri Apr 30 09:18:56 EDT 2010

Pablo Giménez wrote:
> What is the reason because FK is implemented as individuals IK per bone????
> No kinematics in Houdini is like FK in Maya, why this different
> implementation, pros and cons???
> The only reason I can think about is to enable to animate FK using
> translations of effectors or goal nulls rather than directly rotate the bone
> itself. What are the benefits of this point?

I think it's mainly just a terminology difference due to historical 
reasons. I'm up for better terminology suggestions. :) In robotics, 
"Forward Kinematics" (FK) is the calculation of the chain goal position 
given the joint rotation angles. And "Inverse Kinematics" (IK), is the 
calculation of the joint angles given the chain goal position.

"Houdini FK" on the other hand is the calculation of the bone angles 
given the joint positions. From this sense, it's sort of a simpler form 
of IK. On the other hand, there is no real calculation of the goal 
position and so it's more like FK. Maybe it should be called "Per Bone IK".

As for pros, I think that "Houdini FK" is more suited to trying to fit 
bone animation to joint animation (eg. given from mocap system). For 
traditional animation rigging, I don't see strong use for it.

 From an keyframe animation viewpoint, one usually wants to set keys in 
FK so that natural arc motion can be achieved with minimal effort. 
However, if the bone chain needs to be animated with the goal position 
constrained to something (eg. feet/ground contacts, hands opening 
doors), then IK becomes much easier to use. So in practice what often 
happens is that legs are IK and everything else is FK. Then when it 
becomes more convenient to use the other kinematics type, one 
transitions over. Since the InverseKin CHOP naturally supports both 
types with blending between them, if you ever think you need to switch, 
then it is better to create it as an IK chain initially and change the 
Blend parameter to 0 by default and remember to expose this parameter to 
the animated in the HDA. :)


More information about the Sidefx-houdini-list mailing list