Silhouette Clipping Pedro V Sander Xianfeng Gu Steven

  • Slides: 69
Download presentation
Silhouette Clipping Pedro V. Sander Xianfeng Gu Steven J. Gortler Hugues H. Hoppe John

Silhouette Clipping Pedro V. Sander Xianfeng Gu Steven J. Gortler Hugues H. Hoppe John M. Snyder Harvard University Microsoft Research

Mesh simplification poor silhouette original mesh coarse mesh + texture/bump map

Mesh simplification poor silhouette original mesh coarse mesh + texture/bump map

Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped

Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped

Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped

Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped

Silhouette clipping demo

Silhouette clipping demo

Overview coarse mesh rendered original mesh normal map [Soucy et al 96] [Cignoni et

Overview coarse mesh rendered original mesh normal map [Soucy et al 96] [Cignoni et al 98] [Cohen et al 98]

Overview coarse hull rendered original mesh normal map stencil mask 2 D silhouette edge

Overview coarse hull rendered original mesh normal map stencil mask 2 D silhouette edge hierarchy Preprocess Runtime

Overview coarse hull rendered original mesh silhouette clipped normal map 2 D silhouette edge

Overview coarse hull rendered original mesh silhouette clipped normal map 2 D silhouette edge hierarchy Preprocess Runtime

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Major contributions l l Progressive hull Texture creation Silhouette extraction Stencil setting

Coarse hull Original mesh Coarse hull Given mesh, create coarse mesh that encloses it.

Coarse hull Original mesh Coarse hull Given mesh, create coarse mesh that encloses it.

Progressive hull l l Progressive mesh sequence Every mesh encloses all finer meshes.

Progressive hull l l Progressive mesh sequence Every mesh encloses all finer meshes.

Edge collapse Mi l l M i-1 Perform greedy sequence of collapses. Ensure new

Edge collapse Mi l l M i-1 Perform greedy sequence of collapses. Ensure new mesh encloses old mesh: Linear programming problem

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D)

Linear programming (2 D) new vertex position

Linear programming (2 D) new vertex position

Progressive hull demo

Progressive hull demo

Texture creation coarse hull rendered original mesh [Cignoni et al 98] [Soucy et al

Texture creation coarse hull rendered original mesh [Cignoni et al 98] [Soucy et al 96] normal map

Texture creation coarse vertex normals original closest-point [Cignoni et al 98] normal-shooting Ours

Texture creation coarse vertex normals original closest-point [Cignoni et al 98] normal-shooting Ours

Silhouette extraction Given mesh and viewpoint, return edges on silhouette.

Silhouette extraction Given mesh and viewpoint, return edges on silhouette.

What is a silhouette edge? l Edge is on silhouette iff one adjacent triangle

What is a silhouette edge? l Edge is on silhouette iff one adjacent triangle faces towards viewpoint: not silhouette

Related schemes l Brute force: O(edges) but O(edges on silhouette) O( edges) ! l

Related schemes l Brute force: O(edges) but O(edges on silhouette) O( edges) ! l [Markosian et al 97] probabilistic l [Gooch et al 99] assumes orthographic view l [Barequet et al 99] [Hertzmann & Zorin 00] dual-space formulation l [Kumar et al 96] [Johannsen & Carter 98] backface culling Ours: optimized hierarchy of anchored cones extracts 3, 500 sil edges of 10, 000 edges at 250 fps

Hierarchical culling l Each node contains: n n cluster of mesh edges spatial culling

Hierarchical culling l Each node contains: n n cluster of mesh edges spatial culling primitive

Hierarchical culling l Each node contains: n n cluster of mesh edges spatial culling

Hierarchical culling l Each node contains: n n cluster of mesh edges spatial culling primitive

Spatial culling primitive Given cluster of edges, check if there are no silhouette edges.

Spatial 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.

Spatial culling primitive Given cluster of edges, check if there are no silhouette edges.

Spatial 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.

Spatial culling primitive Given cluster of edges, check if there are no silhouette edges.

Spatial 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.

Anchored cone primitive front-facing cone back-facing cone

Anchored cone primitive front-facing cone back-facing cone

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l Calculate anchor positions Linear programming

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l Calculate anchor positions Linear programming

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l

Anchored cone primitive l Calculate central axis Gilbert’s algorithm l Calculate cone angle l Calculate anchor positions Linear programming

Hierarchy construction l Bottom-up greedy joining two clusters parent merge adopt

Hierarchy construction l Bottom-up greedy joining two clusters parent merge adopt

Hierarchy construction l l l Each root has probability of culling. We compute an

Hierarchy construction l l l 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.

Silhouette extraction video

Silhouette extraction video

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time (ms) Dragon Parasaur Knot Holes 3 65, 799 278, 784 282, 624 3, 461 23, 493 3, 227 3, 291 1, 737 10, 256 67, 934 10, 938 13, 134 5, 976 4. 1 28. 2 4. 3 7. 9 3. 3

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time (ms) Dragon Parasaur Knot Holes 3 65, 799 278, 784 282, 624 3, 461 23, 493 3, 227 3, 291 1, 737 10, 256 67, 934 10, 938 13, 134 5, 976 4. 1 28. 2 4. 3 7. 9 3. 3

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time (ms) Dragon Parasaur Knot Holes 3 65, 799 278, 784 282, 624 3, 461 23, 493 3, 227 3, 291 1, 737 10, 256 67, 934 10, 938 13, 134 5, 976 4. 1 28. 2 4. 3 7. 9 3. 3

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time (ms) Dragon Parasaur Knot Holes 3 65, 799 278, 784 282, 624 3, 461 23, 493 3, 227 3, 291 1, 737 10, 256 67, 934 10, 938 13, 134 5, 976 4. 1 28. 2 4. 3 7. 9 3. 3

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time

Performance Model Bunny Total edges 104, 511 600, 000 Sil edges Tested edges Time (ms) Dragon Parasaur Knot Holes 3 65, 799 278, 784 282, 624 3, 461 23, 493 3, 227 3, 291 1, 737 10, 256 67, 934 10, 938 13, 134 5, 976 4. 1 28. 2 4. 3 7. 9 3. 3

Stencil setting

Stencil setting

Stencil setting algorithm l Algorithm inspired by concave polygon-filling algorithm. l l Silhouette edges

Stencil setting algorithm l Algorithm inspired by concave polygon-filling algorithm. l l Silhouette edges organized in hash table. Each contour drawn as fan of triangles: n n Triangle front-facing stencil += 1 Triangle back-facing stencil –= 1

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting algorithm

Stencil setting video

Stencil setting video

Silhouette antialiasing l l l Transfer stencil to alpha buffer: stencil = 0 alpha

Silhouette antialiasing l l l 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.

Silhouette antialiasing video

Silhouette antialiasing video

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur Knot Holes 3 43, 866 185, 856 188, 416 34. 7 20. 6 81. 1 90. 3 500 4, 000 1, 020 928 500 Rendering time 4. 8 5. 2 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 Faces (coarse) All times in milliseconds

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur Knot Holes 3 43, 866 185, 856 188, 416 34. 7 20. 6 81. 1 90. 3 500 4, 000 1, 020 928 500 Rendering time 4. 8 5. 2 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 Faces (coarse) All times in milliseconds

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur Knot Holes 3 43, 866 185, 856 188, 416 34. 7 20. 6 81. 1 90. 3 500 4, 000 1, 020 928 500 Rendering time 4. 8 5. 2 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 Faces (coarse) All times in milliseconds

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur

Timing analysis Model Bunny Faces (original) 69, 674 400, 000 Rendering time Dragon Parasaur Knot Holes 3 43, 866 185, 856 188, 416 34. 7 20. 6 81. 1 90. 3 500 4, 000 1, 020 928 500 Rendering time 4. 8 5. 2 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 Faces (coarse) All times in milliseconds

Summary l l Silhouette clipping & antialiasing Fast silhouette extraction Progressive hull Normal-shooting parametrization

Summary l l Silhouette clipping & antialiasing Fast silhouette extraction Progressive hull Normal-shooting parametrization

Future work l l l Handle internal silhouettes Visual hull simplification Silhouette level-of-detail

Future work l l l Handle internal silhouettes Visual hull simplification Silhouette level-of-detail