Deformation techniques CSE 3541 Matt Boggus
Interpolation based animation Keyframes and inbetweening Modifying geometry Morphing between two objects
Keyframes and inbetweening Intermediate three positions are “inbetweens” or “tweens” Given two mesh objects with the same number of vertices, interpolate the vertex positions to get an “in-between” mesh
Correspondence and types Data/Geometry must “match” to interpolate between Previously seen how to interpolate between points Now consider interpolating between Curves Polyhedron Images (and polygons) Image from http://cg.cs.uni-bonn.de/en/publications/paper-details/cg-2005-2/
Interpolating between two curves Conditions: P(0) maps to Q(0) P(1) maps to Q(1) All of P maps to all of Q One to one – no two P(u) map to same Q(v) Onto – every Q(v) has a P-1(u) value
Interpolating between two curves Solutions: If P and Q use the same curve formation and # control points, then generate intermediate curves by interpolating the control points Supersample: Generate same number of points on P and Q, then interpolate between matching points
Object (Unity Mesh) Modification Vertex warping Modify the vertices directly 2D grid-based deforming Modify the space the vertices lie in Free Form Deformations Skeletal bending Global transforms
Warping Vertices closer to seed are displaced more
For attenuating warping Power functions For attenuating warping k determines how quickly increase in distance decreases the magnitude of warping
2D grid-based deforming Assumption: easier to deform grid points than object vertices A (global coordinates): (25.6,14.7) A (local coordinates): (5.6, 2.7) A’s Grid cell (5, 2) A’s position in cell (0.6, 0.7)
2D grid-based deforming Inverse bilinear mapping P values at corners known from grid deformation u and v are known from point’s position in original grid cell
2D grid-based deforming
2D skeleton-based bending
2D skeleton-based bending For each vertex, determine which line segment (or bone) it is closest to: L2 distance to it: d relative position on the line segment: r = d2/d1
2D skeleton-based bending For new vertex position on repositioned (and possibly rescaled) line segment, Interpolate r along line segment Place d units away from the line segment
Examples of artist driven deformation Point based, skeleton based, cage based Bounded Biharmonic Weights for Real-Time Deformation by Alec Jacobson, Ilya Baran, Jovan Popovic and Olga Sorkine, appearing at SIGGRAPH 2011 http://www.youtube.com/watch?v=P9fqm8vgdB8&feature=related
3D Free-Form Deformations (FFDs) 2D grid-based deforming FFDs 2D grid 3D grid bi-linear interpolation tri-cubic interpolation
FFDs Animate by passing object through FFD
Interpolate between 2 polyhedron Correspondence problem: what part of one object to maps into what part of the other object
Interpolate between 2 polyhedron – difficulties How to handle objects of different genus? (roughly speaking: number of holes in the model) map to
Morphing Image blending Move pixels to corresponding pixels Example from http://www.mukimuki.fr/flashblog/2009/05/10/morphing/
Morphing
Morphing
Morphing Using feature lines instead of grid points
Additional Slides
Other possible topics of interest Case studies / implementation of features in: Adobe After Effects Snapchat filters Unity Image Effects