Skip to content

Latest commit

 

History

History
353 lines (290 loc) · 16.6 KB

File metadata and controls

353 lines (290 loc) · 16.6 KB

Themes

Set your presentation theme:
Black (default) - White - League - Sky - Beige - Simple
Serif - Blood - Night - Moon - Solarized

H:

Kinematics on nub

Sebastian Chaparro

H:

Index

  1. Introduction
  2. Forward Kinematics
  3. Inverse Kinematics
  4. IK Heuristic Methods
  5. Using constraints
  6. Demos

H:

Introduction

  • How to bring to life animated objects?

  • One approach is skeletal animation where the object to animate is represented by a skeleton and a skin.

V:

Skeleton

V:

V:

Skin

  • Once motion is set, it is required to bind the skeleton with a surface (2D or 3D mesh).
  • Skeleton motion must deform the mesh smoothly (e.g when we bend the elbow, the skin around the bones stretches and shrinks).
  • To do so, given a mesh vertex it is defined an influence weight per skeleton joint. The vertex is deformed according to joint transformations.
  • Check this short example video.

V:

Skinning

<iframe width="100%" height="500px" data-src="videos/Skinning.webm"></iframe>

H:

Forward Kinematics (FK)



  • Given the joint configurations $ \mathbf{ \theta }$ find the End effector Position $ \mathbf{s} = f(\mathbf{ \theta })$

  • Direct joint manipulation

  • Exhaustive

  • Not Redundant



<iframe class="fragment" data-fragment-index="5" width="100%" height="500px" data-src="videos/FK.webm"></iframe>

H:

Inverse Kinematics (IK)

  • Given the state of the Final effector $ \mathbf{s} $ find joint configurations: $\mathbf{ \theta } = f^{-1}( \mathbf{ s}) $

  • Indirect joint manipulation based on Goal Reaching

  • Root joint is Fixed

  • Not Exhaustive

  • Redundant


<iframe class="fragment" data-fragment-index="6" width="100%" height="500px" data-src="videos/IK.webm"></iframe>

V:

Requirements

IK on interactive applications must be:

  • R1 Efficient: Take as little time as possible.
  • R2 Accurate: Reach the goal position / orientation.
  • R3 Scalable: Work with Big amounts of DOF.
  • R4 Robust: Reach the goal when managing constraints.
  • R5 Able to Generate natural poses.
  • R6 Generic: Deal with arbitrary Figures.

V:

IK Methods

Kind R1 R2 R3 R4 R5 R6
Analitycal X X - X X -
Numerical - X X X - X
** Numerical Heuristic (FABRIK) ** X X X - X X

H:

IK Heuristic Methods

V:

Cyclic Coordinate Descent (CCD)

Proposed by Wang and Chen on 1991


  • Works only on Kinematic chains.
  • Let $ \mathbf{v\_{ie}} $ the vector formed by the $ith$ joint and the end effector position (Yellow one).
  • Let $ \mathbf{v\_{it}} $ the vector formed by the $ith$ joint and the target position (Green one).
  • Modify each Joint configuration per iteration to reduce the error:
$$ cos(\theta \_{i}) = \frac{ \mathbf{v\_{ it }} } { \left| \mathbf{v \_{ it }} \right| } \frac{ \mathbf{v \_{ie}} }{ \left| \mathbf{v\_ {ie}} \right| } , \mathbf{r} = \mathbf{v\_{ it }} \times \mathbf{v\_{ ie }}$$

V:

Cyclic Coordinate Descent (CCD)

<iframe width="100%" height="500px" data-src="videos/CCD_Solver_1.webm"></iframe>

V:

Forward and Backward Reaching Inverse Kinematics (FABRIK)

Proposed by Andreas Aristidou on 2009

  • "Minimize error by adjusting each joint angle one at a time".
  • Let $ \mathbf{p}\_i$ the position of the $ ith $ joint in a chain, with $ i \in \\{ 1,2,...,n \\}$, $\mathbf{p}\_1$ the root of the chain, $\mathbf{p}\_n$ the end effector and $\mathbf{t}$ the target position.
  • Move the structure while keeping distances $ d\_i = \left| \mathbf{p}\_i - \mathbf{p}\_{i+1} \right| $ between Joints (bones are rigid) via finding a point on a line.
  • A full iteration is composed of two stages:
    • Foward stage: Assume that the target $\mathbf{t}$ is reached by end effector $\mathbf{p}\_n$ and adjust the distances of the remaining Joints.
    • On Backward stage: move the root $\mathbf{p}\_1$ to its initial position and adjust the distances of the remaining Joints.

V:

FABRIK

<iframe width="100%" height="500px" data-src="videos/FABRIK_Solver_1.webm"></iframe>

H:

Using constraints


  • When end effectors are manipulated we expect to obtain intuitive poses.

  • There could exist many solutions (i.e many different poses) that satisfy the IK problem.

  • Limiting the movement of the skeleton could enhance IK performance.

<iframe class="fragment" data-fragment-index="4" width="100%" height="500px" data-src="videos/multiple_solutions.webm"></iframe>

V:

Using constraints

Limiting the joint movement locally by enclosing its related segment on a volume.

Using physical attributes.

Locking a joint position or orientation.

V:

Using local constraints - Example


  • Assume that Node 0 rotate only around a fixed axis (1 DOF).

  • Assume that Node 0 rotation is enclosed by a minimum and a maximum angle.

  • With local constraints there's a unique solution when target is reachable.

<iframe class="fragment" data-fragment-index="5" width="100%" height="500px" data-src="videos/constraint_1.webm"></iframe>

V:

Hinge constraint

1-DOF rotational constraint. i.e the node will rotate only around a single direction. Furthermore, the rotation made by the constrained node is enclosed on a minimum and maximum angle.

<iframe width="100%" height="400px" data-src="videos/hinge_interactive.webm"></iframe>

V:

Ball and socket constraint

3-DOF rotational constraint (the node could rotate around any direction) that decomposes a rotation into two components called Swing (2-DOF) and Twist (1-DOF) rotations and limits each of them (see FABRIK paper).

<iframe width="100%" height="400px" data-src="videos/BallAndSocket.webm"></iframe>

H:

DEMOS

V:

Getting skeleton from Data

There are different kind of files as Collada or BVH to "transport 3D assets between applications". Here we are interested on skeletal structure.

BVH Demo <iframe width="100%" height="400px" data-src="videos/bvh_example.webm"></iframe>
Collada Demo <iframe width="100%" height="400px" data-src="videos/dae_example.webm"></iframe>

V:

Building & Interacting

Allow the user to define and interact with the skeletal structure easyly.

Saying HI! <iframe width="100%" height="500px" data-src="videos/demo_2.webm"></iframe>
Multiple end Effectors <iframe width="100%" height="500px" data-src="videos/demo_skeleton.webm"></iframe>

V:

Skinning

Allow the user to define a skeleton and bind it to a mesh.

<iframe width="100%" height="500px" data-src="videos/builder_demo_high_speed.webm"></iframe>

V:

Procedural Animation

Fish Demo <iframe width="100%" height="500px" data-src="videos/fish_demo.webm"></iframe>
Flock Demo <iframe width="100%" height="500px" data-src="videos/flock_demo.webm"></iframe>

V:

Procedural Animation

Eagle Demo

<iframe width="100%" height="500px" data-src="videos/eagle_demo.webm"></iframe>

V:

Procedural Animation

Multilegged gait simulation

<iframe width="100%" height="500px" data-src="videos/procedural_demo.webm"></iframe>

H:

References