240 likes | 327 Views
Real-Time Pencil Rendering. Marc Treib. Contents. Introduction: Pencil Drawing Challenges Contours Interior Shading: Hatching Object vs. Screen Space Implementation in Object Space Implementation in Screen Space Results Summary. 1 Introduction: Pencil Drawing.
E N D
Real-Time Pencil Rendering Marc Treib
Contents • Introduction: Pencil Drawing • Challenges • Contours • Interior Shading: Hatching • Object vs. Screen Space • Implementation in Object Space • Implementation in Screen Space • Results • Summary
2 Challenges • Contours: • Errors in contours • Multiple „trial-and-error“ lines • Hatching: • Maintain constant stroke size • Continuously adjust stroke density • Align stroke direction with shape (curvature)
3.1 Contour Detection • Object Space Approach: • But how to implement this?
3.1 Contour Detection • Screen Space Approach: • Render depth and normals to textures • Apply edge detection algorithm (in a pixel shader) • Optionally: Object IDs (colors)
3.2 Contour Shaking • Divide screen into regularly sized rectangles • Perturb texture coordinates • E.g. with sine function + random offset • Map contour image onto this distorted plane • Repeat for multiple lines
4.1 Hatching: Object vs. Screen Space • Object space approach: Map textures containing pencil strokes onto objects, like conventional texture mapping • Strokes stick to objects • Need to adapt stroke widths and densities with distance • Need continuous global parameterization
4.1 Hatching: Object vs. Screen Space • Screen space approach: Map stroke textures onto objects in screen space • Easier control of stroke widths and densities • No object space continuity • „Shower-door-effect“
4.2 Implementation in Object Space • Tonal Art Maps: • Strokes in one image appear in all images to the right and down from it • Store in 3d texture
4.2 Implementation in Object Space • Rendering: 6-way blending
4.2 Implementation in Object Space • To circumvent the need for a continuous global parameterization: Use Lapped Textures
4.3 Implementation in Screen Space • Stroke textures: • Similar to object space approach, but don‘t need to bother with mipmaps
4.3 Implementation in Screen Space • In the vertex shader: • Project 3d curvature direction onto screen space • Compute brightness • In the pixel shader: • For each vertex, rotate texture coordinates to projected curvature direction • Blend 3 stroke textures (one per vertex)
5 Results Demo!
6 Summary • Contours: • Edge detection using 2d image processing algorithm • Errors in contours by projecting onto distorted plane • Interiors: • In object space: • Tonal Art Maps, 6-way blending, Lapped Textures • In screen space: • Rotate and map textures in screen space, 3-way blending
Thanks for listening! Questions?
Bibliography • Emil Praun, Adam Finkelstein and Hugues Hoppe. Lapped textures. In SIGGRAPH '00: Proceedings of the 27th annual conference on Computer graphics and interactive techniques, 2000. • Emil Praun, Hugues Hoppe, Matthew Webb and Adam Finkelstein. Real-time hatching. In SIGGRAPH '01: Proceedings of the 28th annual conference on Computer graphics and interactive techniques, 2001. • Matthew Webb, Emil Praun, Adam Finkelstein and Hugues Hoppe. Fine tone control in hardware hatching. In NPAR '02: Proceedings of the 2nd international symposium on Non-photorealistic animation and rendering, 2002. • Hyunjun Lee, Sungtae Kwon and Seungyong Lee. Real-time pencil rendering. In NPAR '06: Proceedings of the 4th international symposium on Non-photorealistic animation and rendering, 2006.