Download presentation source

Download Report

Transcript Download presentation source

Image Precision Silhouette Edges
Ramesh Raskar
Michael Cohen
University of North Carolina
Microsoft Research
at Chapel Hill
Silhouette Edges
• Highlight detail
• Technical Illustrations
Silhouette Edges
• Highlight detail
• Technical Illustrations
Silhouette Edges
• Information with few strokes
• Non-photorealistic rendering
Definitions
• Scene : Collection of oriented polygons
• Silhouette edge : Boundary between adjacent front
facing and back facing polygon
Rendering Silhouette Edges
• Find all silhouette edges
• Solve the partial visibility problem to render only
non-occluded parts of silhouette edges
Previous Work
• Hidden line removal
• Markosian et. al. Siggraph 1997
– Trace out silhouette curves
– Visibility using sweep method in image space
• Rossignac et. al. Eurographics Hardware 1992
– Polygons and wireframe
• Gooch I3DG 1999
Previous Methods
• Object Precision
• Pre-processing or Batch oriented
• Need connectivity information
• For static scenes
• Two primitives, polygons + edges
Goal
• Real-time performance using graphics hardware
• No pre-processing (Dynamic scenes)
• No adjacency information (Changing topology)
• Single primitive (Polygons)
• Image precision
Video
Basic Approach
First (Visible) Polygon Layer
Basic Approach
First (Visible) Polygon Layer
Second Polygon Layer
Basic Approach
Intersection = Silhouettes
First (Visible) Polygon Layer
Second Polygon Layer
Basic Approach :
Polygonal Surfaces
• Compute the two nearest layers from camera
– First layer : subset of front facing polygons
– Second layer : subset of back facing polygons
• Compute intersection in image space
Basic Algorithm
• Draw white background
• Set depth function to ‘Less Than’
• Render front facing polygons in white
• Set depth function ‘Equal To’
• Draw back-facing polygons in black
• Repeat for a new viewpoint
Basic Algorithm
• Draw white background
• Set depth function to ‘Less Than’
• Render front facing polygons in white
• Set depth function ‘Equal To’
• Draw back-facing polygons in black
• Repeat for a new viewpoint
!
Limited depth buffer precision, single pixel width
Image Precision Techniques
1.
Back facing polygons as wireframes
2.
Z-scaled translation
3.
Fattened back facing polygons
Wireframe Rendering
• Front facing polygons in white
• Back facing polygons in wireframe in black
Front
Faces
Back
Faces
Wireframe Rendering
 Change wireframe thickness or color
 Uniform silhouette line width
! Gaps at neighboring polygons
! Two different primitives : line and polygon
Z-scaled Translation
Camera
Front-facing
Polygon
Back-facing
Polygon
Z-scaled Translation
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Projection width of visible part of back-face depends on translation
Z-scaled Translation
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Projection width of visible part of back-face depends on translation
Z-scaled Translation
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Projection width of visible part of back-face depends on translation
Z-scaled Translation
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Projection width of visible part of back-face depends on translation
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation using
Scaling
Part of back-face visible and
seen as silhouette edge
Camera
Front-facing
Back-facing
Z-scaled Translation
Part of back-face visible
Camera
F
F
!
B
Translation
Projection width of visible part depends on
dihedral angle
Fattened Backfacing Polygons
Camera
Front-facing
Polygon
Back-facing
Polygon
Fattened Backfacing Polygons
Part of fattened backface visible
Camera
Front-facing
Polygon
Back-facing
Polygon
Fattened Backfacing Polygons
Part of fattened backface visible
Camera
Front-facing
Polygon
Back-facing
Polygon
Fattened Backfacing Polygons
Part of fattened backface visible
Camera
Front-facing
Polygon
Back-facing
Polygon
Fattened Backfacing Polygons
Part of fattened backface visible
Camera
F
B
F and B at different
orientations
 Fattening is dependent only on the orientation
of back facing polygon
Fattening Process
Identify back facing polygon
Fattening Process
Identify back facing polygon
Fattening Process
Fatten by pushing the edges outwards
Fattening Process
Fatten by pushing the edges outwards
Fattening Process
Fatten by pushing the edges outwards
Fattening Process
Fatten by pushing the edges outwards
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattened part appears as
silhouette
.
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattened part appears as
silhouette
.
Fattening Process
Fatten by pushing the edges outwards
Create a triangle fan
Fattened part appears as
silhouette
.
Fattened Backfacing Polygons
 Uniform width silhouette edges
• Fattening dependent on
– Orientation of the polygon wrt camera
– Orientation of the edge
– Distance of the edge from camera
!
!
Polygon vertices move as camera moves
Creates more triangles
Charcoal Style Rendering
• Fatten frontfacing polygons seen almost edge-on
• Fattened part appears in front of original polygons
• Simple lighting model for fattened polygons
Demonstration
Advantages
• No pre-processing
• No adjacency information
• Robust and general purpose
• Easy to implement using traditional hardware
• Dynamic scenes, changing topology, LOD
• Interesting effects
• Models in other representations
Modifications
• Different objects with colored silhouettes
• Texture mapped silhouettes
• Distance from viewer, light effects
• Shaded or Texture mapped front polygons
• Intersecting polygons
Issues
• Complete scene traversal necessary
• Density of silhouette edges for distant objects
• Inconsistent face normals
Performance
• Rendering cost increased by a factor of two
• Fattening method, six triangles for each backfacing
triangle
• OpenGL with SGI Indigo2 MaxImpact timings:
– Venus model, ~6K triangles, 66fps
– Wireframe: 40 fps
– Z-scaled translation: 50 fps
– Fattened backfaces: 11.5 fps
Acknowledgements
• NSF STC
• Microsoft Research Graphics group
Rick Szeliski, John Snyder
• Link Fellowship
• Geometric Models :
Electric Boat
Stanford University
• Video
Matt Cutts, Todd Gaul
Summary
• Real-time silhouette rendering
– Update depth buffer
– translate or fatten backfacing polygons
• Applicable to dynamic scenes, changing topology
• Traditional graphics pipeline
http://www.cs.unc.edu/~raskar/Sil/