Create Presentation
Download Presentation

Download Presentation
## Texture Synthesis on Surfaces

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**Texture Synthesis on Surfaces**Paper by Greg Turk Presentation by Jon Super**Goals of texture placement**Take a 2D texture and wrap it onto a surface • Avoid noticeable seams between patches • Minimize stretching and distortion • Produce a natural-looking result**The next best thing**Lapped Textures – Praun et al. – SIGGRAPH00 • Uses many overlapped texture patches • Aligns patches with underlying vector field • Generally minimizes distortion**The next best thing**Lapped texture’s shortcomings • Low-frequency components • Boundary mismatch • Direction field singularities**Process**• Create a mesh hierarchy over the model • Set up a vector field over the mesh • Calculate sweep distance for each vertex • Assign colors based on neighbors**Process**• Create a mesh hierarchy over the model • Set up a vector field over the mesh • Calculate sweep distance for each vertex • Assign colors based on neighbors**Mesh Hierarchy**Equivalent of a Gaussian pyramid to a surface • Multiple layers of different resolutions • Each layer has 4 times the number of vertices of the layer above it • Each layer contains every vertex of the layer above it**Point placement**• n points randomly placed on the surface • Repulsion between the points spaces them evenly • These points are now fixed in place, representing level m of an m-level mesh • Repeated for each layer, adding 3 times more points each time (3n, 12n, etc)**Connectivity**• Connectivity between vertices of each layer • Delaunay triangulation applied • Mesh is connected in a web of triangles**Mesh hierarchy operations**• Interpolation • Low-pass filtering • Downsampling • Upsampling**Process**• Create a mesh hierarchy over the model • Set up a vector field over the mesh • Calculate sweep distance for each vertex • Assign colors based on neighbors**Vector field**• Provides order to the placement of the texture on the model • Each mesh vertex is given a vector • User initiates the process by defining a few key vectors (~12)**Vector field creation**• All vertices not user-defined set to 0 • User-defined vectors are downsampled to the coarsest mesh • Low-pass filtering to fill out top mesh • Upsample for each layer to fill to bottom**Process**• Create a mesh hierarchy over the model • Set up a vector field over the mesh • Calculate sweep distance for each vertex • Assign colors based on neighbors**Surface sweeping**• Uses the directional flow of the vector field to assign ordering to the vertices • Ordering will allow a sort of raster scan over the 3D model • The color in the image cycles as the sweep distance increases**Sweep distance calculation**• Select an anchor point to base the distance • Each vertex takes the value that is the weighted sum of what its neighbors think • Distance along the flow direction added to the neighbor’s sweep distance • Sweep distances will propagate out from the anchor until every vertex has one**Process**• Create a mesh hierarchy over the model • Set up a vector field over the mesh • Calculate sweep distance for each vertex • Assign colors based on neighbors**Pixel Neighborhoods**• Similar technique to 2D texture synthesis • Examine nearby colors and look for a similar pattern in the texture image • Different kinds of pixel neighborhoods**Mesh coordinate space**• Pixel neighborhoods don’t translate directly to the unorganized vertices in a mesh • Vertex vector is down • Rotate 90 degrees CCW for right**Multi-level synthesis**• Start at top, work down • Initialize the vertices of mesh layer k with color values from Gaussian pyramid layer k • Make a pass with the half square • Top layer should have a crude representation of the texture**Multi-level synthesis**• Extrapolate and refine each lower level • Extrapolate initializes the colors using a large full square neighborhood of the level above • Refine improves on that by combining a large full square on the current level with a small full square on the level above