Texture Synthesis on Surfaces

advertisement
Texture Synthesis on
[Arbitrary Manifold] Surfaces
Presented by:
Sam Z. Glassenberg*
Topics Investigated Thus Far
• 2D Texture Mapping (CS318)
• 3D Textures (Hypertexture)
• 2D Texture Synthesis
Today’s Goal
Synthesize a texture on a surface by coloring mesh vertices
+
Input Texture
Input Mesh
Result
Vertex Painting
• Advantages
– Speed
• No additional
transformation
required
– Simplicity
– Uniformly distributed
across geometry
• Disadvantages
– Texture resolution
dependent on mesh
complexity
2 SIGGRAPH Papers:
1. Texture Synthesis on Surfaces, by
Greg Turk
2. Texture Synthesis over Arbitrary
Manifold Surfaces, by Li-Yi Wei and
Marc Levoy
Desirable Properties
• Share advantages of 2D algorithm
– Quality
– Efficient
– General
– Easy to use
• Minimum distortion
• Minimum discontinuity
Differences between
Images and Meshes
image
Pixels/Vertices
Local Orientation
(Vector field)
Synthesis Order
Neighborhood
mesh
grid
?
normal
v
u
scanline
?
tangent
?
bitangent
?
Wei/Levoy Solution
image
Pixels/Vertices
Local Orientation
(Vector field)
Synthesis Order
Neighborhood
Wei and Levoy
mesh
grid
?
normal
v
u
scanline
?
?
tangent
mesh re-tiling
[Turk’92]
user-specified
relaxation
random
bitangent
?
random
flattening/resampling
Turk Solution
image
Pixels/Vertices
Local Orientation
(Vector field)
Synthesis Order
Neighborhood
Turk
mesh
grid
repulsion
?
normal
v
u
scanline
?
[Turk’91]
User specified/
interpolated
?
tangent
bitangent
?
sweeping
Surface marching
Both Papers Extend
Fast Texture Synthesis using
Tree-structured Vector
Quantization
Specifically by generalizing their definition
of “search neighborhoods” to apply to
meshes
Texture Synthesis by
Neighborhood Search
Copy
noise
Search
noise
Input pyramid
Output pyramid
Surface Texture Synthesis by
Neighborhood Search (Wei/Levoy)
Search
Input pyramid
Output pyramid
Process
1. Build image/mesh
pyramids
2. Assign texture
orientation/Computation
order
3. Generate texture
What aspects of image pyramids
must we maintain in mesh
pyramids?
• Uniform density
• Power-of-two complexity differences
between levels
Image & Mesh Pyramids
Mesh Retiling [Turk’92]
2 Turk-ish Methods for Mesh Retiling
• Turk ’92, used by
Wei/Levoy
– Uniformly distributes
mesh vertices
– Requires “shooting
normals” to move
between levels
• Turk ’91, used by
Turk
– Uniformly distributes
mesh vertices
– Maintains
parent/child
relationship between
levels
Retiling Density
24576 vertices
73728 vertices
Turk ‘91
• Create a mesh hierarchy in which mesh Mk =
(Vk, Tk) is defined by its Vertices and Triangles
– For the lowest mesh in the hierarchy, place n points
on the surface
– Use repulsion to distribute points easily
– Add 3n points to make the next level
– Repeat
• Connect points by projecting nearby points
onto a tangent plane
• Perform Delaunay triangulation to reduce
triangles
Now, we need to determine
orientation…
In Turk’s method, we use this orientation to
determine the computation order (Surface
Sweeping)
In Wei/Levoy’s method, orientation is needed to
“flatten” the neighborhoods.
Texture Orientation
• Generate a coordinate frame
• Three orthogonal axes
– s (texture right)
– t (texture up)
– n (surface normal)
Texture Orientation
• Methods for orienting textures
– user-specified (Turk)
– random (Wei/Levoy)
– smooth or symmetric (Wei/Levoy)
Texture Orientation (User-specified)
Texture Orientation
(Symmetry)
4-way symmetric texture
4-way symmetric vector field
Texture Orientation
random
2-way symmetry 4-way symmetry
Texture Orientation
(Relaxation)
• Minimize an error function
Results (Wei/Levoy):
Random Orientation
Results (Wei/Levoy):
Other Orientations
Random
User-specified
Relaxation
2-way symmetry
4-way symmetry
Texture Synthesis on Surfaces:
Wei/Levoy Style
Synthesis
Synthesis : 2 Lowest Levels
Synthesis : Lowest Level
Random copy
Synthesis Pass1 :
Extrapolation
Copy
Shooting normal
Search
Mesh Neighborhood
Resampled Grid
Compare
3D Patch
Resample
Flatten (Maillot’93)
2D Patch
Neighborhood Flattening
• Project the triangles adjacent to p onto p’s local
texture coordinate system
• Add triangles one-at-a-time until neighborhood
template is covered
Neighborhood Comparison
compare ?
Synthesis Pass 2 :
Full Neighborhood
Copy
Search
Multiresolution Synthesis
Texture Synthesis on Surfaces:
According to Turk
Turk’s Surface Sweeping
• Select an anchor vertex A
• Assign s(v) = sweep distance to vertex v along
the vector field from A (for all v)
• Consensus orientation b/w 2 vertices v and w: Ovw
= (O(v) + O(w))/2
• Calculate a new s(v) as a weighted average that
its neighboring values dictate it should have.
• Visit vertices in order by sweep distance
Turk’s Texture Synthesis
(Pseudocode)
I = Input texture
N(v) = Neighborhood around v
M(a,b) = Neighborhood around (a,b)
D(M,N) = Match Value (sum of squared differences)
Turk’s Mesh Neighborhoods
•
•
•
•
r = average distance between mesh vertices
O(v) = Surface tangent vector
P(v) = O(v) rotated 90o about surface normal
Together, O and P make a coordinate frame !
normal
v
u
P
O
• Now, we can traverse the surface by point
repelling
Point Repelling
• Use color interpolation to determine
color at current surface point
• Move r in the direction of O or P
• When an edge is reached, fold the path
over the next polygon
Results
smooth
4-way symmetry
random
Results
Surface
displacement
smooth
2-way symmetry
2-way symmetry
Results
Summary of Differences
Turk’s approach
Our approach
Vector field
smooth
random, symmetric
Traversal order
sweeping
random
Neighborhood
surface marching
flattening/resampling
Mesh hierarchy
explicit parent/child
shooting normal
Download