Title: Silhouette Clipping
1Silhouette Clipping
- Pedro V. Sander
- Xianfeng Gu
- Steven J. Gortler
- Harvard University
Hugues H. Hoppe John M. Snyder Microsoft
Research
2Mesh simplification
original mesh
coarse mesh
3Silhouette clipping
original mesh
coarse mesh
texture/bump map
silhouette clipped
4Silhouette clipping
original mesh
coarse mesh
texture/bump map
silhouette clipped
5Silhouette clipping demo
6Overview
coarse mesh
rendered
original mesh
normal map
Soucy et al 96 Cignoni et al 98 Cohen et al
98
Runtime
Preprocess
7Overview
coarse hull
rendered
original mesh
normal map
stencil mask
2D silhouette
edge hierarchy
Runtime
Preprocess
8Overview
coarse hull
rendered
silhouetteclipped
original mesh
normal map
2D silhouette
edge hierarchy
Runtime
Preprocess
9Major contributions
- Progressive hull
- Texture creation
- Silhouette extraction
- Stencil setting
10Major contributions
- Progressive hull
- Texture creation
- Silhouette extraction
- Stencil setting
11Major contributions
- Progressive hull
- Texture creation
- Silhouette extraction
- Stencil setting
12Major contributions
- Progressive hull
- Texture creation
- Silhouette extraction
- Stencil setting
13Major contributions
- Progressive hull
- Texture creation
- Silhouette extraction
- Stencil setting
14Coarse hull
Original mesh
Coarse hull
Given mesh, create coarse mesh that encloses it.
15Progressive hull
- Progressive mesh sequence
- Every mesh encloses all finer meshes.
16Edge collapse
M i
M i-1
- Perform greedy sequence of collapses.
- Ensure new mesh encloses old mesh Linear
programming problem
17Linear programming (2D)
18Linear programming (2D)
19Linear programming (2D)
20Linear programming (2D)
21Linear programming (2D)
22Linear programming (2D)
23Linear programming (2D)
new vertexposition
24Linear programming (2D)
25Progressive hull demo
26Texture creation
coarse hull
rendered
Cignoni et al 98 Soucy et al 96
original mesh
normal map
27Texture creation
vertex normals
coarse
original
closest-point Cignoni et al 98
normal-shooting Ours
28Silhouette extraction
Given mesh and viewpoint, return edges on
silhouette.
29What is a silhouette edge?
- Edge is on silhouette iff one adjacent triangle
faces towards viewpoint
not silhouette
silhouette
30Related schemes
- Markosian et al 97 probabilistic
- Gooch et al 99 assumes orthographic view
- Barequet et al 99 Hertzmann Zorin 00
dual-space formulation - Kumar et al 96 Johannsen Carter 98
backface culling - Ours optimized hierarchy of anchored cones
extracts 3,500 sil edges of 100,000 edges at 250
fps
31Hierarchical culling
- Each node contains
- cluster of mesh edges
- spatial culling primitive
32Hierarchical culling
- Each node contains
- cluster of mesh edges
- spatial culling primitive
33Spatial culling primitive
- Given cluster of edges,check if there are no
silhouette edges. - True if adjacent triangles are all front-facing
or all back-facing.
2D cross-section
34Spatial culling primitive
- Given cluster of edges,check if there are no
silhouette edges. - True if adjacent triangles are all front-facing
or all back-facing.
2D cross-section
35Spatial culling primitive
- Given cluster of edges,check if there are no
silhouette edges. - True if adjacent triangles are all front-facing
or all back-facing.
36Spatial culling primitive
- Given cluster of edges,check if there are no
silhouette edges. - True if adjacent triangles are all front-facing
or all back-facing.
37Spatial culling primitive
- Given cluster of edges,check if there are no
silhouette edges. - True if adjacent triangles are all front-facing
or all back-facing.
38Anchored cone primitive
front-facing cone
back-facing cone
39Anchored cone primitive
- Calculate central axisGilberts algorithm
- Calculate cone angle
- Calculate anchor positionsLinear programming
40Anchored cone primitive
- Calculate central axisGilberts algorithm
- Calculate cone angle
- Calculate anchor positionsLinear programming
41Anchored cone primitive
- Calculate central axisGilberts algorithm
- Calculate cone angle
- Calculate anchor positionsLinear programming
42Hierarchy construction
two clusters
merge
adopt
parent
43Hierarchy construction
- Each root has probability of culling.
- We compute an expected extraction cost for each
root, and the forest. - Choose next join operation to maximally decrease
expected extraction cost.
44Silhouette extraction video
45Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
46Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
47Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
48Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
49Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
50Performance
Model Dragon Bunny Parasaur Knot Holes3
Total edges 600,000 104,511 65,799 278,784 282,624
Sil edges 23,493 3,461 3,227 3,291 1,737
Tested edges 67,934 10,256 10,938 13,134 5,976
Tested cones 26,291 4,282 3,538 7,926 4,594
Time (ms) 28.2 4.1 4.3 7.9 3.3
51Stencil setting
52Stencil setting algorithm
- Algorithm inspired by concave polygon-filling
algorithm. - Order silhouette edges into loops.
- Each loop drawn as fan of triangles
- Triangle front-facing ? stencil 1
- Triangle back-facing ? stencil 1
53Stencil setting algorithm
54Stencil setting algorithm
55Stencil setting algorithm
56Stencil setting algorithm
57Stencil setting algorithm
58Stencil setting algorithm
59Stencil setting algorithm
60Stencil setting algorithm
61Stencil setting algorithm
62Stencil setting algorithm
63Stencil setting algorithm
64Stencil setting algorithm
65Stencil setting video
66Silhouette antialiasing
- Transfer stencil to alpha buffer stencil 0
? alpha 0.0 stencil 1 ? alpha 1.0 - Render silhouette edges in alpha buffer as
antialiased line segments. - Render coarse hull subject to alpha buffer.
67Silhouette antialiasing video
68Silhouette clipping demos
Parasaur 3x speedup
Knot 8x speedup
69Timing analysis
Model Bunny Dragon Parasaur Knot Holes3
Faces (original) 69,674 400,000 43,866 185,856 188,416
Rendering time 34.7 204.7 20.6 81.1 90.3
Faces (coarse) 500 4,000 1,020 928 500
Rendering time 4.8 5.2 4.9 4.9 4.4
SC Rendering time 7.8 50.3 6.9 10.3 5.5
Speedup factor 4.4 4.1 3.0 7.9 16.4
All times in milliseconds
70Timing analysis
Model Bunny Dragon Parasaur Knot Holes3
Faces (original) 69,674 400,000 43,866 185,856 188,416
Rendering time 34.7 204.7 20.6 81.1 90.3
Faces (coarse) 500 4,000 1,020 928 500
Rendering time 4.8 5.2 4.9 4.9 4.4
SC Rendering time 7.8 50.3 6.9 10.3 5.5
Speedup factor 4.4 4.1 3.0 7.9 16.4
All times in milliseconds
71Timing analysis
Model Bunny Dragon Parasaur Knot Holes3
Faces (original) 69,674 400,000 43,866 185,856 188,416
Rendering time 34.7 204.7 20.6 81.1 90.3
Faces (coarse) 500 4,000 1,020 928 500
Rendering time 4.8 5.2 4.9 4.9 4.4
SC Rendering time 7.8 50.3 6.9 10.3 5.5
Speedup factor 4.4 4.1 3.0 7.9 16.4
All times in milliseconds
72Timing analysis
Model Bunny Dragon Parasaur Knot Holes3
Faces (original) 69,674 400,000 43,866 185,856 188,416
Rendering time 34.7 204.7 20.6 81.1 90.3
Faces (coarse) 500 4,000 1,020 928 500
Rendering time 4.8 5.2 4.9 4.9 4.4
SC Rendering time 7.8 50.3 6.9 10.3 5.5
Speedup factor 4.4 4.1 3.0 7.9 16.4
All times in milliseconds
73Summary
- Silhouette clipping antialiasing
- Progressive hull
- Normal-shooting parametrization
- Fast silhouette extraction
74Future work
- Handle internal silhouettes
- Silhouette level-of-detail
- Visual hull simplification