740 likes | 971 Views
Silhouette Clipping. Pedro V. Sander Xianfeng Gu Steven J. Gortler Harvard University. Hugues H. Hoppe John M. Snyder Microsoft Research. poor silhouette. + texture/bump map. Mesh simplification. original mesh. coarse mesh. Silhouette clipping. original mesh. coarse mesh.
E N D
Silhouette Clipping Pedro V. Sander Xianfeng Gu Steven J. Gortler Harvard University Hugues H. Hoppe John M. Snyder Microsoft Research
poorsilhouette + texture/bump map Mesh simplification original mesh coarse mesh
Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped
Silhouette clipping original mesh coarse mesh + texture/bump map silhouette clipped
Overview coarse mesh rendered original mesh normal map [Soucy et al 96] [Cignoni et al 98] [Cohen et al 98] Preprocess Runtime
Overview coarse hull rendered original mesh normal map stencil mask 2D silhouette edge hierarchy Preprocess Runtime
Overview coarse hull rendered silhouetteclipped original mesh normal map 2D silhouette edge hierarchy Preprocess Runtime
Major contributions • Progressive hull • Texture creation • Silhouette extraction • Stencil setting
Major contributions • Progressive hull • Texture creation • Silhouette extraction • Stencil setting
Major contributions • Progressive hull • Texture creation • Silhouette extraction • Stencil setting
Major contributions • Progressive hull • Texture creation • Silhouette extraction • Stencil setting
Major contributions • Progressive hull • Texture creation • Silhouette extraction • Stencil setting
Coarse hull Original mesh Coarse hull Given mesh, create coarse mesh that encloses it.
Progressive hull • Progressive mesh sequence • Every mesh encloses all finer meshes.
Edge collapse • Perform greedy sequence of collapses. • Ensure new mesh encloses old mesh: Linear programming problem Mi Mi-1
Linear programming (2D) new vertexposition
Texture creation coarse hull rendered [Cignoni et al 98] [Soucy et al 96] original mesh normal map
Texture creation vertex normals coarse original closest-point [Cignoni et al 98] normal-shooting Ours
Silhouette extraction Given mesh and viewpoint, return edges on silhouette.
What is a silhouette edge? • Edge is on silhouette iff one adjacent triangle faces towards viewpoint: not silhouette silhouette
Related 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 conesextracts 3,500 sil edges of 100,000 edges at 250 fps
Hierarchical culling • Each node contains: • cluster of mesh edges • spatial culling primitive
Hierarchical culling • Each node contains: • cluster of mesh edges • spatial culling primitive
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. 2D cross-section
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. 2D cross-section
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. 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. True if adjacent triangles are all front-facing or all back-facing.
Anchored cone primitive front-facing cone back-facing cone
Anchored cone primitive • Calculate central axisGilbert’s algorithm • Calculate cone angle • Calculate anchor positionsLinear programming
Anchored cone primitive • Calculate central axisGilbert’s algorithm • Calculate cone angle • Calculate anchor positionsLinear programming
Anchored cone primitive • Calculate central axisGilbert’s algorithm • Calculate cone angle • Calculate anchor positionsLinear programming
Hierarchy construction • Bottom-up greedy joining two clusters parent merge adopt
Hierarchy 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.