630 likes | 748 Views
Non-Photorealistic Rendering FORMS. Threshold dependent. Model dependent. View dependent. Silhouette. Boundary. Outline form of the object. X. Crease (+ other discontinuities). Crease (+ other discontinuities). Interior form of the object. X. Silhouette Algorithms.
E N D
Threshold dependent Model dependent View dependent Silhouette Boundary Outline form of the object X Crease (+ other discontinuities) Crease (+ other discontinuities) Interior form of the object X
Silhouette Algorithms • Object Space • Involve computations in 3D and produce a list of silhouette edges or curves for a given viewpoint • Brute Force • Edge Buffer • Probabilistic • Gauss Map Arc Hierarchy • Normal Cone Hierarchy • Implicit Surfaces • NURBS Surfaces • Image Space • involve image processing techniques • Two Pass Methods • Environment Map • One Pass Method • Model Augmentation • Depth Discontinuity Methods
Object Space 2. Edge Buffer Using the “Edge Buffer” data structure of Buchanan and Sousa to iterate over facets instead of edges. Buchanan, J. W. and Sousa, M. C.The edge buffer: A data structure for easy silhouette renderingProc. of NPAR '00
Pre-Processing Construct the Edge-Buffer V = vertex id F = front face ? B = back face ?
Pre-Processing Construct the Edge-Buffer V = vertex id F = front face ? B = back face ?
T (2, 3, 1) Sort Indices… (1, 2, 3)
InsertEdge (1, 2) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) InsertEdge (1, 3) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) InsertEdge (1, 3) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) InsertEdge (1, 3) T (2, 3, 1) (1, 2, 3)
InsertEdge (1, 2) InsertEdge (1, 3) InsertEdge (2, 3) T (2, 3, 1) (1, 2, 3)
T (4, 1, 3) Sort Indices… (1, 3, 4)
InsertEdge (1, 3) InsertEdge (3, 4) InsertEdge (1, 4) T (4, 1, 3) (1, 3, 4)
InsertEdge (1, 3) already in InsertEdge (3, 4) InsertEdge (1, 4) T (4, 1, 3) (1, 3, 4)
InsertEdge (1, 3) InsertEdge (3, 4) InsertEdge (1, 4) T (4, 1, 3) (1, 3, 4)
InsertEdge (1, 3) InsertEdge (3, 4) InsertEdge (1, 4) T (4, 1, 3) (1, 3, 4)
T (5, 3, 2) T (5, 4, 3) T (1, 4, 5)
UpdateEB (1, 2, front) UpdateEB (2, 3, front) UpdateEB (1, 3, front) T (2, 3, 1) Sort Indices… (1, 2, 3)
F bit XOR 1 UpdateEB (1, 2, front) UpdateEB (2, 3, front) UpdateEB (1, 3, front) T (2, 3, 1) Sort Indices… (1, 2, 3)
F bit XOR 1 UpdateEB (1, 3, front) UpdateEB (3, 4, front) UpdateEB (1, 4, front) T (4, 1, 3) Sort Indices… (1, 3, 4)
F bit XOR 1 UpdateEB (1, 3, front) T (4, 1, 3) Sort Indices… (1, 3, 4)
F bit XOR 1 UpdateEB (1, 3, front) T (4, 1, 3) Sort Indices… (1, 3, 4)
F bit XOR 1 UpdateEB (1, 3, front) UpdateEB (3, 4, front) UpdateEB (1, 4, front) T (4, 1, 3) Sort Indices… (1, 3, 4)
B bit XOR 1 UpdateEB (1, 2, back) UpdateEB (2, 5, back) UpdateEB (1, 5, back) T (1, 2, 5)
B bit XOR 1 UpdateEB (1, 2, back) UpdateEB (2, 5, back) UpdateEB (1, 5, back) T (1, 2, 5)
T (5, 3, 2) T (5, 4, 3) T (1, 4, 5)
How to Interpret the Bit Fields? FB = 11 Silhouette Edges FB = 00 Interior Edges
Boundaries FB = 01 FB = 10 Artist designates which interior edges are always drawn
Artist Edges Artist designates which interior edges are always drawn AFBFaBa Artist Edge? Absolute Front? Absolute Back? 10001 When a front facing edge is being updated we simply OR the current value of Fa with 1, similarly for Ba 10010