I think it would be nice to make anthropomorphic transitions between a few basis motions. So here is the paper I am referring:

Efficient Generation of Motion Transitions using Spacetime Constraints
Charles Rose, Brian Guenter, Bobby Bodenheimer, Michael F. Cohen

Note: every symbol presented in this post can be found in the original paper.

The meat of the idea is described in section 3.1 and 3.2. As what I understood, the joint angles during the transition of support limbs are controlled with inverse kinematics constraints, and other limbs are with spacetime constraints. Here I list the steps to compute the joint angles during the transitions of unsupport limbs.

Basic definitions

Objective function to be minimized:

objectivefunction

Gradient of the objective function:

gradient-objectivefunction-2

Pseudo-Hessian Matrix, H, is updated with the gradient g.

New step direction:

newdir

Algorithm

For each iteration:

Check whether the iteration converges with the sum of the magnitude of the joint torques.

If the objective function converges: exit the iteration.

Else update the joint angles for all the joints.

For each frame t:

Compute velocities, accelerations, net torques, and forces at each joint starting from the root node and working out to the tips of all the chains in the tree. (Appendix A.2)

Compute the joint torques starting from the tips of the chains back to the root node. (Appendix A.3)

Compute gradient. (Appendix A.4)

Update pseudo-Hessian. (TBD)

Update new step direction.

Update the joint angles in current frame with the new step direction.

Sum up the magnitude of the joint torques.

End

Sum up the magnitude of the joint torques.

End

Advertisements