220 likes | 301 Views
Suggestive Contours with Geometry Shader. Based on Suggestive Contours for Conveying Shape SIGGRAPH 2003. Sungbae Kim Master Student College of Computing Georgia Tech. Conveying shape with lines. Contours and Suggesstive Contours [DeCarlo et al. 2003]. Related work. Contour
E N D
Suggestive Contours withGeometry Shader Based on Suggestive Contours for Conveying ShapeSIGGRAPH 2003 Sungbae Kim Master Student College of Computing Georgia Tech
Conveying shape with lines Contours and Suggesstive Contours [DeCarlo et al. 2003]
Related work Contour (also called silhouette) Crease Ridges and valleys (also called crest) Rusinkiewicz, SIGGRAPH 2005 Course note
Suggestive Contours • Contours have shape cue • Contours in nearby viewpoints also have shape cue Suggestive Contours • Contours + Suggestive Contours q : contour p : suggestive contour Should appear suddenly [DeCarlo et al. 2003]
How to find contours • Draw lines where N(P)∙V(P) = 0
How to find SC • Contours in nearby viewpoints local minima n∙v Kr = 0 && DwKr > 0 [DeCarlo et al. 2003]
How to find contours in mesh • Compute Per vertex • Draw zero crossing Rusinkiewicz, SIGGRAPH 2005 Course note
Primary direction 1 Primary direction 2 w How to compute Kr=0 in mesh • K1, K2 can be pre-computed per vertex • Compute Per vertex • Draw zero crossing Kr > 0 Kr < 0 Kr < 0
How to compute DwKr > 0 in mesh Rusinkiewicz, SIGGRAPH 2005 Course note • P, Q, S, T can be pre-computed per vertex • Compute Per vertex • Interpolation Primary direction 1 : e1 Kr > 0 v DwKr > 0 u Kr=0 w Primary direction 2 : e2 Kr < 0 Kr < 0
Implementation CPU - Intel Core2 Duo 2.0GHz, RAM - 2GB, VIDEO Card – NVIDIA Quadro FX 570M
Implementation Challenges • Calculation values from mesh • Primary directions • Primary curvatures • Derivatives of curvatures (P, Q, R, S) Use TriMesh library • Cg is very easy • Geometry shader
Geometry Shader • Operation Per Primitives (line, triangle, line with adjacency, triangle with adjacency, etc.) • Generating new primitives such as line, triangle • Few references • Several examples from NVIDIA triangle with adjacency Draw edges between front and back face My motivation Example from NVIDIA OpenGL SDK 10
Using GPU • Pre-compute curvatures, dcurvatures in CPU when loading mesh • View-dependent calculation and line generation in Vertex & Geometry shader • Use texture coordinates as input arguments • Too many vertices, normals, faces, texture coordinates • Use buffer object
Remove hidden lines • Using z-buf • 2-pass rendering • 1st pass : Setting depth values by Rendering mesh • 2nd pass : line drawing
Results vertices : 48484 triangles : 96964 51 fps Horse
Results vertices : 72027 triangles : 144046 34 fps Bunny
Results vertices : 262909 triangles : 525814 10 fps Lucy
Results vertices : 237018 triangles : 474048 3.5 fps Angel
Results vertices : 437645 triangles : 871414 6 fps Dragon
Results vertices : 543652 triangles : 1087116 4 fps Happy Buddha