Transcript PowerPoint
Motion Graphs
By Lucas Kovar, Michael Gleicher,
and Frederic Pighin
Class Schedule
No Class on Thursday
Class on Tuesday will be taught by Erik
Elvgren (who brings you Cavman!)
IK for Cavman
Demos
Videos
For next Thursday
Path finding papers on web page
Next assignment
Find frame to frame transitions between
video clips
Use interpolation to accomplish
transitions
Due in two weeks
Motion Graphs
Introduction to the paper by Kovar,
Gleicher, and Pighin
Motion can be “sampled” just as video
clips were in
Video
Textures
Sampling mocap
Transitioning
from frame i to
frame j
White are good
transitions
Green are
local min
One change vis. Video
Textures
Multiple timesteps are grouped into a
clip
The clips are connected to one another
in a graph
Transitioning from one clip to another is
not as easy as cross-fade or morph
from image domain
General outline
Build motion graph
Remove dead ends (find strongly
connected components)
Search for paths that produce desired
motion (branch and bound search)
Blend clips to form a smooth motion
What are motion graphs?
Directed graph representing a roadmap
of motion data for a character
Edges are clips of motion
some
from the original motion capture
some generated as transitions
A vertex defines 2 sets of motion clips
where motions from one set can flow
seamlessly into motions from the other
A simple motion graph
Jog
Walk2
Run2/Jog
Run2
Run2/Run2
Walk2/Walk1
Run1
Walk1/Walk1
Walk1
Jog/Walk1
Original motion data
Walk1
Walk2
Jog
Run1
Run2
Why do we want them?
To better utilize motion capture data
because it’s:
Difficult to modify
Time consuming and expensive
Hard to use in animations without having
captured the exact motion desired
Building motion graphs
Identify transition candidates
Select transition points
Eliminate problematic edges
Identify transition candidates
For each frame A, calculate its distance to
each other frame B by basically measuring
volume displacement
Use a weighted point cloud formed over a
window of k frames ahead of A and behind B,
ideally from the character mesh
Calculate the minimal weighted sum of
squared distances between corresponding
points, given that a rigid 2D transformation
may be applied to the second point cloud
Identify transition candidates
Select transition points
The previous step gave us all the local
minima of the distance function for each
pair of points
Now we simply define a threshold and
cut transition candidates with errors
above it
May be done with or without intervention
Threshold level depends on type of
motion – eg. walking vs. ballet
Create transitions
For each pair of frames Ai and Bj which fell
under the distance error threshold, blend Ai
through Ai+k-1 with Bj through Bj-k+1
Align frames with appropriate rigid 2D
transformation
Use linear interpolation to blend root positions
Use spherical linear interpolation (SLERP) to blend
joint rotations
Treat constraints as binary flags – frames in first
half of transition use A’s constraints, second half
use B’s
Transition tagged with union of A and B’s labels
Create transitions
Blend weight function
Root position interpolation
Joint rotation interpolation
Eliminate problematic edges
We want to get rid of:
Dead ends – not part of a cycle
Sinks – part of one or more cycles but only able to
reach a small fraction of the nodes
Logical discontinuities – eg. boxing motion forced to
transition into ballet motion
Goal is to be able to generate arbitrarily long
streams of motion of the same type
Eliminate problematic edges
Each frame is associated with a set of 0 or more labels
For each unique set of labels, form a subgraph of edges
whose frames have exactly this set
Find the strongly connected components (SCCs) –
maximal set of nodes where there is a connecting graph
walk between each ordered pair
Discard all edges that aren’t in the largest SCC
Give warning if:
A set of labels has below a certain threshold of frames
For any ordered pair of SCCs there is no way to get from
the first to the second
Using motion graphs
We have a database of motion segments and
mappings between them, now we want to find
motion streams that conform to user
specifications
This is approached as a search problem, where
the user specifies
An error function g(w,e) which is the cost of adding e
to path w
A halting condition
Total error of a path w defined as:
Searching
Goal is to find a complete graph walk that
minimizes f(w)
Use branch and bound – keep track of the best
complete graph walk wopt and cut current branch
when the error exceeds f(wopt)
Works best when a tight lower bound is found
early
Use a greedy ordering heuristic – for a set of
unexplored child nodes, select the one that
minimizes g(w,c)
Defining optimization criteria
So how do you define g(w,e) to find your desired
motion??
First, two guidelines:
g should give some sort of guidance throughout the
motion, not just evaluate the end result
g should be no more restrictive than necessary –
balance guiding search to a particular result with
allowing it to consider many options
Path synthesis
The example application they present is to make
a character travel along a specified path on the
ground
Basic strategy for g is to measure difference
between actual path traveled and desired path
P(s) is the point on P whose arc-length distance
from the start is s
s(ei) is the arc-length from frame 0 to frame i in
edge e
Path synthesis
Potential problem if character stands still with no incentive
to move, thereby accruing zero error
Fix this by replacing s(ei) with t(ei), which forces a small
amount of progress with each frame
If we wish to require different types of motion, break the
path into segments by type of motion desired during each
part
If character is within threshold distance from end of current
path, allow search to consider motion edges of both types,
otherwise just the type of the current path
Allow only one type switch per path
Path synthesis applications
Interactive control
User controls a character, motion clips are selected
in real time
High-level keyframing
Animator decides what the character should do and
where, rather than tedious keyframing
Motion dumping
Same as the first, but with AI characters
Crowds
Paths are generated for multiple characters to
avoid collisions
Video