620 likes | 647 Views
Lapped Textures. Princeton University Princeton University Microsoft Research. Emil Praun Adam Finkelstein Hugues Hoppe. Goal. mesh geometry. ?. textured surface. “ example ” image. Goal. Little user effort No apparent seams No obvious periodicity Low distortion
E N D
Lapped Textures Princeton University Princeton University Microsoft Research Emil Praun Adam Finkelstein Hugues Hoppe
Goal mesh geometry ? textured surface “example” image
Goal • Little user effort • No apparent seams • No obvious periodicity • Low distortion • Local texture control • Anisotropy
Previous 2D Texture Synthesis Histogram equalization [Heeger ’96] Laplacian block shuffling [de Bonet ’97] Pixel template matching [Efros ’99] [Wei ’00]
Previous 2D Texture Synthesis Histogram equalization [Heeger ’96] Laplacian block shuffling [de Bonet ’97] Pixel template matching [Efros ’99] [Wei ’00] Random pasting of image blocks [Xu ’00]
Previous 3D Texturing • Volumetric textures: • Noise functions [Perlin ’85, Worley ’96] • Solid textures by example [Ghazanfarpour ’96] • Synthesizing texture on a surface: • Reaction-diffusion [Turk ’91, Witkin ’91] • Cellular textures [Fleischer ’95] • Covering surface with triangular tiles [Neyret ’99]
Approach texture patch surface
Key Idea: Patch Pasting texture patch “lapped textures” surface
Algorithm • Cut texture patches from input texture • [Specify texture direction & scale on mesh] • REPEAT • Pick texture patch T, mesh point P • Grow surface patch S around P to size(T) • Flatten S over T; paste T on mesh • Update mesh coverage info • UNTIL mesh is covered
Algorithm texture patch surface
Algorithm texture patch surface
Algorithm texture patch surface
Algorithm texture patch surface
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Direction Field: User-specified • Angle - Only for anisotropic patches. • Can be set for only small number of faces – Gaussian radial basis function is used for interpolation. • Since the normal lies within the plane of the face we get an orthogonal basis : • S = T x N. (N – normal to the plane).
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Patch Growth • 1. Choose a random point on a non fully covered triangle. • 2. Add triangles in a BFS order to cover the texture patch. • 3. Stop when the patch is fully coverd. • Condintions: • The surface patch homeomorphic to a disk. • The distortion should not exceed a given limit. • We add edge only if it is within the texture patch.
Polygonal Hulls • Start w/ boundary pixels, edges between neighbors • Conservatively simplify polygons
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Align Patch to Direction Field texture patch surface
Optimizing the Parametrization Least squares best match to unit axes Sparse linear system. No explicit fairness functional
^ (T) t ^ s (S) Optimizing the Parametrization (A) A (B) T S B C (C) face in 3D 2D texture space
Optimizing the Parametrization • For each mesh face f ={A,B,C} the vector T lies within the face plain. • Barycentric coordinates: • T = A + B + C and + + = 0.
^ (T) t ^ s (S) Optimizing the Parametrization (A) A (B) T S B C (C) face in 3D 2D texture space ^ dT = (A) + (B) + (C) - t We wish to minimize :
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Coverage estimation Render patch triangles Flag covered triangles Remember 1 pixel per uncovered triangle • off-screen buffer
Coverage estimation Render patch triangles Flag covered triangles Remember 1 pixel per uncovered triangle • off-screen buffer
Coverage estimation Render patch triangles Flag covered triangles Remember 1 pixel per uncovered triangle • off-screen buffer
Issues • Texture patch creation • Specifying direction field • Surface patch growth • Patch parametrization • Face coverage estimation • Texture storage and rendering
Texture Storage and Rendering • Method 1: Texture Atlas • Pre-composite into a global texture map. • -- OR -- • Method 2: Runtime pasting • Composite at run-time using hardware
Texture Atlas • Texture Atlas is a set of charts {1,…, k}. • Each chart j is a mapping from a subset U j of the mesh to the Euclidean plane (the texture plane). • {U1,…, Uk} is a cover of the surface. • If i j then j and i don’t overlap except on the edges.
Texture Atlas • Patches of triangles with similar normals • 2D packing problem for arbitrary polygons