01.01.2015 Views

Motion Graphs for Character Animation

Motion Graphs for Character Animation

Motion Graphs for Character Animation

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong><br />

Parag Chaudhuri<br />

Indian Institute of Technology Bombay<br />

Research Promotion Workshop on<br />

Introduction to Graph and Geometric Algorithms<br />

Thapar University<br />

Patiala<br />

October 30, 2010<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Outline<br />

Introduction<br />

The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Using <strong>Motion</strong> Data<br />

<strong>Character</strong> and <strong>Motion</strong> Data<br />

<strong>Character</strong> Representation<br />

<strong>Motion</strong> Representation<br />

<strong>Motion</strong> <strong>Graphs</strong><br />

Idea<br />

Construction<br />

Generating <strong>Motion</strong><br />

More <strong>Motion</strong> <strong>Graphs</strong><br />

Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


The Need <strong>for</strong> <strong>Motion</strong> Data<br />

<strong>Character</strong> animation is about movement.<br />

c○ Aardman <strong>Animation</strong>s, Nintendo Co., Ltd.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Creating plausible movement requires a lot of skill and time.<br />

Source: Sintel, The Durian Open Movie Project<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


The Need <strong>for</strong> <strong>Motion</strong> Data<br />

How difficult can it be - it is only one character...<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


The Need <strong>for</strong> <strong>Motion</strong> Data<br />

...then imagine a thousand or a million!<br />

c○ Walden Media, Rhythm and Hues Studios, Massive Software<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Capture movement of per<strong>for</strong>mers and use it in animation.<br />

c○ James Cameron, 20th Century Fox, Vicon, Ubisoft<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Using <strong>Motion</strong> Data<br />

Problems<br />

◮ Captured data can be voluminous.<br />

◮ Processing data motion data is intensive.<br />

◮ Capturing all possible motion is impossible.<br />

◮ <strong>Motion</strong> Capture is expensive and cumbersome.<br />

Solutions<br />

◮ Organize and represent data.<br />

◮ Combine data intelligently to synthesize new motion.<br />

◮ Simulate physics to dynamically generate new motion.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Using <strong>Motion</strong> Data<br />

Problems<br />

◮ Captured data can be voluminous.<br />

◮ Processing data motion data is intensive.<br />

◮ Capturing all possible motion is impossible.<br />

◮ <strong>Motion</strong> Capture is expensive and cumbersome.<br />

Solutions<br />

◮ Organize and represent data.<br />

◮ Combine data intelligently to synthesize new motion.<br />

◮ Simulate physics to dynamically generate new motion.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Outline<br />

Introduction<br />

The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Using <strong>Motion</strong> Data<br />

<strong>Character</strong> and <strong>Motion</strong> Data<br />

<strong>Character</strong> Representation<br />

<strong>Motion</strong> Representation<br />

<strong>Motion</strong> <strong>Graphs</strong><br />

Idea<br />

Construction<br />

Generating <strong>Motion</strong><br />

More <strong>Motion</strong> <strong>Graphs</strong><br />

Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

A layered representation <strong>for</strong> the character<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

A set of joints with fixed degrees of freedom...<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

...joined with rigid links or bones <strong>for</strong>m the skeleton of the character.<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

This <strong>for</strong>ms a rooted tree of rigid trans<strong>for</strong>mations.<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

Layered on top of this is a triangle mesh of the character’s skin.<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Character</strong> Representation<br />

When the skeleton moves, the skin moves along.<br />

Source: Model courtesy MIRALab<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Motion</strong> Representation<br />

<strong>Motion</strong> data is typically captured in the <strong>for</strong>m of joint trajectories<br />

Source: Vicon IQ<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Motion</strong> Representation<br />

<strong>Motion</strong> data is typically captured in the <strong>for</strong>m of joint trajectories<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Motion</strong> Representation<br />

It is stored in one of many standard <strong>for</strong>mats<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Outline<br />

Introduction<br />

The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Using <strong>Motion</strong> Data<br />

<strong>Character</strong> and <strong>Motion</strong> Data<br />

<strong>Character</strong> Representation<br />

<strong>Motion</strong> Representation<br />

<strong>Motion</strong> <strong>Graphs</strong><br />

Idea<br />

Construction<br />

Generating <strong>Motion</strong><br />

More <strong>Motion</strong> <strong>Graphs</strong><br />

Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

Every motion clip is a graph. Vertex ∼ pose, Edge ∼ transition frames.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

There are many such clips in a motion database.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

Find similar poses between clips. Add transitions between them.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

Find similar poses between clips. Add transitions between them.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

Now any walk on this graph...<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Idea<br />

...generates a new, smooth motion.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Construction<br />

Similarity between poses across clips<br />

A simple distance measure between joints is a bad idea as some<br />

joints have more influence on the pose and they may also be<br />

subject to constraints.<br />

A pose is defined only up to a rigid coordinate trans<strong>for</strong>mation.<br />

Hence comparing two pose requires identifying compatible<br />

coordinate systems.<br />

A seamless transition must account not only <strong>for</strong> differences in body<br />

posture, but also in joint velocities, accelerations, and possibly<br />

higher-order derivatives.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Construction<br />

Similarity between poses across clips<br />

A simple distance measure between joints is a bad idea as some<br />

joints have more influence on the pose and they may also be<br />

subject to constraints.<br />

A pose is defined only up to a rigid coordinate trans<strong>for</strong>mation.<br />

Hence comparing two pose requires identifying compatible<br />

coordinate systems.<br />

A seamless transition must account not only <strong>for</strong> differences in body<br />

posture, but also in joint velocities, accelerations, and possibly<br />

higher-order derivatives.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Construction<br />

Similarity between poses across clips<br />

A simple distance measure between joints is a bad idea as some<br />

joints have more influence on the pose and they may also be<br />

subject to constraints.<br />

A pose is defined only up to a rigid coordinate trans<strong>for</strong>mation.<br />

Hence comparing two pose requires identifying compatible<br />

coordinate systems.<br />

A seamless transition must account not only <strong>for</strong> differences in body<br />

posture, but also in joint velocities, accelerations, and possibly<br />

higher-order derivatives.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Construction<br />

D(P i , P j ) = min<br />

θ,x o,z o<br />

n∑<br />

ω k ‖pi k − T θ,xo,zo pj k ‖ 2<br />

k=1<br />

Compute the distance<br />

metric over a window of<br />

2L + 1 frames centered<br />

at P i and P j .<br />

Constructing Good Quality <strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> Realistic Human <strong>Animation</strong>, Limin Zhaog, PhD Thesis, University of<br />

Pennsylvania, 2009.<br />

<strong>Motion</strong> <strong>Graphs</strong>, Lucas Kovar, Michael Gleicher and Frédéric Pighin, SIGGRAPH 2002<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Construction<br />

Create transitions<br />

between frames <strong>for</strong><br />

which similarity satisfies<br />

a threshold.<br />

Linear interpolations of<br />

translations, Spherical<br />

linear interpolations <strong>for</strong><br />

rotations.<br />

Prune the graph <strong>for</strong><br />

dead ends. Retain only<br />

the largest strongly<br />

connected component.<br />

<strong>Motion</strong> <strong>Graphs</strong>, Lucas Kovar, Michael Gleicher and Frédéric Pighin, SIGGRAPH 2002<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Generating <strong>Motion</strong><br />

Random walks on the motion graph are not interesting<br />

So we search <strong>for</strong> motion that satisfies some objective<br />

Minimize a function f (w) such that<br />

n∑<br />

f (w) = f ([e 1 , · · · e n ]) = g([e 1 , · · · e i−1 ] , e i )<br />

- where f (w) gives the total path error <strong>for</strong> a path w = [e 1 , · · · e n ] on<br />

the graph<br />

i=1<br />

- g(w, e) is a scalar function that gives the additional error when the<br />

edge e is added to an existing path w.<br />

- In addition to this we also have a halting criteria.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Generating <strong>Motion</strong><br />

Path Synthesis - making the character move on a path given by the user<br />

g(w, e) =<br />

n∑<br />

‖Q ′ (s(w, e i ) − Q(s(w, e i )‖ 2<br />

i=1<br />

<strong>Motion</strong> <strong>Graphs</strong>, Lucas Kovar, Michael Gleicher and Frédéric Pighin, SIGGRAPH 2002<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Generating <strong>Motion</strong><br />

<strong>Motion</strong> Styles<br />

<strong>Motion</strong> <strong>Graphs</strong>, Lucas Kovar, Michael Gleicher and Frédéric Pighin, SIGGRAPH 2002<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Outline<br />

Introduction<br />

The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Using <strong>Motion</strong> Data<br />

<strong>Character</strong> and <strong>Motion</strong> Data<br />

<strong>Character</strong> Representation<br />

<strong>Motion</strong> Representation<br />

<strong>Motion</strong> <strong>Graphs</strong><br />

Idea<br />

Construction<br />

Generating <strong>Motion</strong><br />

More <strong>Motion</strong> <strong>Graphs</strong><br />

Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Motion</strong> from Annotations<br />

Annotate the motions, paint a time line, search<br />

<strong>Motion</strong> Synthesis from Annotations, Okan Arikan, David Forsyth, James O’Brien, SIGGRAPH 2003<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


<strong>Motion</strong> Patches<br />

<strong>Motion</strong> capture motion in patches, graph between patches<br />

<strong>Motion</strong> Patches: Building Blocks <strong>for</strong> Virtual Environments Annotated with <strong>Motion</strong> Data, Kang Hoon Lee, Myung Geol Choi<br />

and Jehee Lee, SIGGRAPH 2006<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Dynamic Response<br />

<strong>Motion</strong> capture motion in patches, graph between patches<br />

Dynamic Response <strong>for</strong> <strong>Motion</strong> Capture <strong>Animation</strong>, Victor Zordan, Anna Majkowska, Bill Chiu and Matthew Fast,<br />

SIGGRAPH 2005<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Self Adaptive <strong>Animation</strong><br />

Transitions driven by camera position<br />

Self Adaptive <strong>Animation</strong> based on User Perspective, Parag Chaudhuri, George Papagiannakis, Nadia Magnenat-Thalmann,<br />

CGI 2008<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Outline<br />

Introduction<br />

The Need <strong>for</strong> <strong>Motion</strong> Data<br />

Using <strong>Motion</strong> Data<br />

<strong>Character</strong> and <strong>Motion</strong> Data<br />

<strong>Character</strong> Representation<br />

<strong>Motion</strong> Representation<br />

<strong>Motion</strong> <strong>Graphs</strong><br />

Idea<br />

Construction<br />

Generating <strong>Motion</strong><br />

More <strong>Motion</strong> <strong>Graphs</strong><br />

Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Conclusions<br />

<strong>Motion</strong> <strong>Graphs</strong> are very useful in character animation.<br />

Extensively used <strong>for</strong> real-time animation synthesis.<br />

Cutting edge research area in Computer Graphics.<br />

Future going toward a combination of physics simulation and<br />

motion capture.<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>


Thank You<br />

<strong>Motion</strong> <strong>Graphs</strong> <strong>for</strong> <strong>Character</strong> <strong>Animation</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!