Set your presentation theme:
Black (default) -
White -
League -
Sky -
Beige -
Simple
Serif -
Blood -
Night -
Moon -
Solarized
H:
Sebastian Chaparro
H:
- Introduction
- Forward Kinematics
- Inverse Kinematics
- IK Heuristic Methods
- Using constraints
- Demos
H:
-
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:
-
Set of rigid multibody system called bones (or links) attached by joints. A skeleton usually is represented as a hierarchical structure.
-
Joints are parametrized by Degrees of Fredom (DOF).
-
An end effector
$\mathbf{s}$ is a point of interest that depends on joint configurations: $ \mathbf{s} = f(\mathbf{ \theta }) $ - Skeleton is used to define or modify movements (e.g. [Keyframe animation](https://www.utdallas.edu/atec/midori/Handouts/keyframing.htm), [Procedural animation](https://www.alanzucconi.com/2017/04/17/procedural-animations/), [MoCap data](https://en.wikipedia.org/wiki/Motion_capture)).
V:
V:
- 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:
<iframe width="100%" height="500px" data-src="videos/Skinning.webm"></iframe>H:
- 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:
- 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:
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:
| 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:
V:
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:
V:
<iframe width="100%" height="500px" data-src="videos/CCD_Solver_1.webm"></iframe>V:
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.
- Foward stage: Assume that the target
V:
<iframe width="100%" height="500px" data-src="videos/FABRIK_Solver_1.webm"></iframe>H:
- 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:
Limiting the joint movement locally by enclosing its related segment on a volume.
- [Fast and Easy Reach-Cone Joint Limits](https://pdfs.semanticscholar.org/d535/e562effd08694821ea6a8a5769fe10ffb5b6.pdf)
- [A joint-constraint model using signed distance fields](https://link.springer.com/article/10.1007/s11044-011-9296-1)
Using physical attributes.
- [An Efficient Energy Transfer Inverse Kinematics Solution](https://pdfs.semanticscholar.org/aac6/cbd168f0e01911edbe564f59d7c1a00b7535.pdf)
Locking a joint position or orientation.
- [Nailing and pinning: Adding constraints to inverse kinematics](https://otik.uk.zcu.cz/bitstream/11025/11239/1/Greeff.pdf)
V:
- 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:
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:
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:
V:
There are different kind of files as Collada or BVH to "transport 3D assets between applications". Here we are interested on skeletal structure.
V:
Allow the user to define and interact with the skeletal structure easyly.
V:
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:
V:
Eagle Demo
<iframe width="100%" height="500px" data-src="videos/eagle_demo.webm"></iframe>V:
Multilegged gait simulation
H: