Docstoc

CS Advanced Computer Graphics

Document Sample
CS Advanced Computer Graphics Powered By Docstoc
					       CS 551/651
Advanced Computer Graphics
     Warping and Morphing
         Spring 2002
        Deforming Objects
• Changing an object’s shape
  – Usually refers to non-simulated algorithms
  – Usually relies on user guidance


• Easiest when shape number of faces
  and vertices is preserved
  – Define the movements of vertices
          Moving Vertices
• Time consuming to define the trajectory
  through space of all vertices




• Instead, control a few seed vertices
  which in turn affect nearby vertices
   Defining Vertex Functions
• If vertex i is displaced by (x, y, z) units
  – Displace each neighbor, j, of i by
     • (x, y, z) * f (i, j)


• f (i,j) is typically a function of distance
  – Euclidean distance
  – Number of edges from i to j
  – Distance along surface
Vertex Displacement Function
                                  k 1
                             i 
             f (i )  1.0        ;k  0
                             n 1
                                         k 1
                             i 
             f (i )  1.0  
                                  
                                                ;k  0
                             n 1

• i is the (shortest) number of edges between i
  and j
• n is the max number of edges affected
• (k=0) = linear; (k<0) = rigid; (k>0) = elastic
• Figure 3.55
      2-D Grid Deformation
• 1974 film “Hunger”
• Draw object on grid
• Deform grid points
• Use bilinear interpolation to recompute
  vertex positions on deformed grid
• Draw example on board
• Figure 3.57
       Polyline Deformation
• Draw a piecewise linear line (polyline) through
  the geometry




• For each vertex compute
  – Closest polyline segment
  – Distance to segment
  – Relative distance along this segment
• Deform polyline and recompute vertex positions
       Global Deformations
• Alan Barr, SIGGRAPH ’84
• A 3x3 transformation matrix affects all
  vertices
  – P’=M(P) .dot. P
• M(P) can taper, twist, bend…
• Figure 3.65 3.66
Free-Form Deformation (FFD)
• Sederberg, SIGGRAPH ’86
• Position geometric object in local
  coordinate space
• Build local
  coordinate
  representation
• Deform local coordinate space and thus
  deform geometry
                 FFD
• Similar to 2-D grid deformation
• Define 3-D lattice surrounding geometry
• Move grid points of lattice and deform
  geometry accordingly
• Local coordinate system is initially
  defined by three (perhaps non
  orthogonal) vectors
           Trilinear Interpolation
• Let S, T, and U (with origin P0) define
  local coord axes of bounding box that
  encloses geometry
• A vertex, P’s, coordinates are:
                   P  P0
 s  (T  U ) 
                 (T  U )  S
                   P  P0
 t  (U  S ) 
                (U  S )  T
                   P  P0
 u  (S  T ) 
                ( S  T ) U
     Volumetric Control Points
• Each of S, T, and U axes are
  subdivided by control points
• A lattice of control points is
  constructed
• Bezier interpolation of move control points
  define new vertex positions
  P  P0  s  S  t  T  u U
             i     j     k
  Pijk  P0   S   T  U
             l     m     n
                l
                       l            m  m             n  n           
  P( s, t , u )    (1  s) s    (1  t ) t     (1  u ) u Pijk  
                        
                              l i i             m j j            nk k

                  i 0  i 
                                      j 0  j 
                                             
                                                          k              
                                                         k 0           
Examples
     Using FFDs to Animate
• Build control point lattice that is smaller
  than geometry
• Move lattice through geometry so it
  affects different regions in sequence
• Animate mouse under the rug, or
  subdermals (alien under your skin), etc.
• Figure 3.74
     Using FFDs to Animate
• Build FFD lattice that is larger than
  geometry
• Translate geometry within lattice so new
  deformations affect it with each move
• Change shape of object to move along
  a path
• Figure 3.75
        Animating the FFD
• Create interface for efficient
  manipulation of lattice control points
  over time
  – Connect lattices to rigid limbs of human
    skeleton
  – Figure 3.77
  – Physically simulate control points
              Morphing
• 2D image metamorphosis

  – Coordinate Grid Approach


  – Feature-Based Approach
             Coordinate Grid
• Source and destination images
  – Overlay upon both a 2-D lattice of points
    •   Points along edges must remain on edges
    •   Internal points can be in different positions
    •   Same number of points in both
    •   Points define movement of pixels
      Two-pass Rendering
           Overview
• Figure 3.79
        Morphing Images to
           Intermediate
• First stretch in x direction and then in y
  direction
  – Auxiliary lattice has x
    coordinates from
    source and y
    coordinates from
    intermediate lattice
Morphing Images
to Intermediate
 – Use scanline
   method to compute
   what pixels from
   source image map
   to a particular pixel
   of intermediate
   image
   Feature-Based Morphing
• Simplest case: user
  draws one ray on
  source and
  destination images to
  define morph
   Local Coordinate Systems
• Let the root of the ray in source image
  be the coordinate system origin
• Let the ray in source image correspond
  to the v axis (unit length)
• Construct perpendicular to this ray for u
  axis
• Every pixel (x, y) of image now mapped
  to (u, v) using projection to u/v axes
Local Coordinate Systems
  Local Coordinate Systems
• Perform similar local coordinate system
  computation for destination image
  – Build s/t axes
      Mapping Destination to
            Source
• (x, y)dest --- (s, t)
• (s, t) --- (u, v)
• (u, v) --- (x, y)source

• Color (x, y)dest with (x, y)source
        Necessary Details
• More than one line
  – Perform mapping for all line segments
  – Weight each line segment’s contribution to
    averaged color value
                                                           b
    • Q2 – Q1 = distance of line       Q2  Q1    p
                                                       
      segment                       w                
                                       a  dist       
    • dist is distance from pixel                     
      to line
    • a and b are user specified
         Necessary Details
• Mapping from destination to pixel to
  source pixel will not land on pixel
  centers
  – Aliasing results…
  – Use quadrilateral centered at source (u, v)
    location to sample multiple pixels and
    average
             Assignment 2
• Due 2 weeks from today
• Implement Beier-Neely morphing using
  fltk and OpenGL
   – http://www.hammerhead.com/thad/morph.html


• Details online tonight

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:20
posted:3/26/2011
language:English
pages:36