Computer Animation Algorithms and Techniques Kinematic Linkages
Hierarchical Modeling Define motion of one object relative to another Constrained motion - reduce dimensionality, simplify specification Linked appendages with joints Solar system Motion on a surface Local coordinate frames for simpler motion specification Data structure to facilitate keeping relative transformations
Solar system http://www.earth-live.net/tag/sun-earth-moon-system/
Linked appendages Joint Link End Effector
Forward & Inverse Kinematics images courtesy of Domin Lee
Revolute & Prismatic Joints
Complex Joints
Hierarchical structure
Tree structure
Tree structure
Tree structure Static
Relative movement
Tree structure Changable
Bifurcation in Model
Bifurcating tree
Traverse Tree Top to bottom traversal Accumulate transformations during traversal Transformation at node only for data Save transformation before following link Restore when traversing sibling link
traverse(arcPtr,matrix) { ; get transformations of arc and concatenate to current matrix matrix = matrix*arcPtr->Lmatrix ; concatenate location matrix = matrix*arcPtr->Amatrix ; concatenate articulation ; process data at node nodePtr = arcPtr->nodePtr ; get the node of the arc push(matrix) ; save the matrix matrix = matrix * nodePtr->matrix ; ready for articulation articulatedData = transformData(matrix,dataPtr) ; articulate the data draw(articulatedData); ; and draw it matrix = pop() ; restore matrix for node’s children ; process children of node if (nodePtr->arcPtr!= NULL) { ; if not a terminal node nextArcPtr = nodePtr->arcPtr ; get first arc emanating from node while (nextArcPtr != NULL) { ; while there’s an arc to process push(matrix) ; save matrix at node traverse(nextArcPtr,matrix) ; traverse arc matrix = pop() ; restore matrix at node nextArcPtr = nextArcPtr->arcPtr ; set next child of node }
Inverse kinematics Position and orient end effect Automatically calculate interior joint angles Only simple configurations can be solved analytically Often, solution must be iterative
Inverse kinematics Analytic method Iterative: Jacobian Iterative solutions Pseudo-inverse adding more control alternative Jacobian using the transpose cyclic coordinate descent
Inverse Kinematics
Inverse Kinematics - Analytic
Inverse Kinematics - Analytic
Inverse Kinematics - Numeric Determine affect of joint i on end effector
Inverse Kinematics - Numeric desired direction of end effector to goal
Inverse Kinematics - Numeric joint-effect vectors: gi
Singularities
IK - Jacobain
IK - goal out of reach Solutions with and without damping
IK - with control term all joints biased to 0 top: joint 2 has higher gain bottom: joint 3 has higher gain
IK - Pull goal to end effector
IK - transpose of the Jacobian
IK - Cyclic Coordinate Descent