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
 For next Thursday
Path finding papers on web page
Next assignment
 Find frame to frame transitions between
video clips
 Use interpolation to accomplish
 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
Sampling mocap
 Transitioning
from frame i to
frame j
 White are good
 Green are
local min
One change vis. Video
 Multiple timesteps are grouped into a
 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
Original motion data
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
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
 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:
 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
 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
 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
 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
 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