- 182 Views
- Uploaded on
- Presentation posted in: General

Suggestive Contours with Geometry Shader

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Suggestive Contours withGeometry Shader

Based on Suggestive Contours for Conveying ShapeSIGGRAPH 2003

Sungbae Kim

Master Student

College of Computing

Georgia Tech

Contours and Suggesstive Contours

[DeCarlo et al. 2003]

Contour

(also called silhouette)

Crease

Ridges and valleys

(also called crest)

Rusinkiewicz, SIGGRAPH 2005 Course note

- 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]

- Draw lines where N(P)∙V(P) = 0

- Contours in nearby viewpoints
local minima n∙v

Kr = 0 && DwKr > 0

[DeCarlo et al. 2003]

- Compute Per vertex
- Draw zero crossing

Rusinkiewicz, SIGGRAPH 2005 Course note

Primary direction 1

Primary direction 2

w

- K1, K2 can be pre-computed per vertex
- Compute Per vertex
- Draw zero crossing

Kr > 0

Kr < 0

Kr < 0

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

- Calculation values from mesh
- Primary directions
- Primary curvatures
- Derivatives of curvatures (P, Q, R, S)
Use TriMesh library

- Cg is very easy
- 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

- 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

- Using z-buf
- 2-pass rendering
- 1st pass : Setting depth values by Rendering mesh
- 2nd pass : line drawing

vertices : 48484

triangles : 96964

51 fps

Horse

vertices : 72027

triangles : 144046

34 fps

Bunny

vertices : 262909

triangles : 525814

10 fps

Lucy

vertices : 237018

triangles : 474048

3.5 fps

Angel

vertices : 437645

triangles : 871414

6 fps

Dragon

vertices : 543652

triangles : 1087116

4 fps

Happy Buddha