Real-Time Non-Photorealistic Rendering


These are a few screen shots from a real-time projective texture renderer, using pencil sketch textures, custom textures, and adding colour to textures. The models were exported from 3DSMAX as an ASE file format, and read in by the program. Each model shown in the screenshots below comprises between 8,000 and 100,000 polygons, and is rendered at interactive rates even for relatively low-spec machines (e.g. 300Mhz) with a 3D graphics card. 

Here are some animations - click on one of the images above and watch the ball go! (All videos about 3MB in Intel Indeo format.)

Pencil Sketch Textures

Here I show some of the effects that can be achieved with a set of pencil stroke textures.  The program allows you to scale and orient the strokes to user preferences, and to move lighting and the camera around.

The model of the boxer comprises ~30,000 polygons.  It is rendered here on a K6-300Mhz with nVidia GeForce graphics card at frame rates up to 30fps.

Stone Henge: uses moody lighting

Architectural rendering using
finer pencil strokes

Custom Textures

We are not limited to just pencil sketches though - by defining and painting your own textures you can create a variety of styles to achieve a pleasing visual effect.

Here I have used a combination of blending and a soft texture to create the moon image on the right

Adding Colour

Now we can add colour to the textures, creating somewhat more vibrant scenes.

Times shown are for a 300Mhz K6-2 processor.  An AMD-800Mhz runs at over 50fps for this scene.

I'll be experimenting with other textures soon...

Related Shading Styles

The effects produced by the following paper are very similar to the ones here, except that for the sketching techniques Lake et. al use a set of 4 textures and subdivide the faces instead of using blending.  The following paper also describes additional techniques such as hardware-based cartoon rendering and multiresolution models:

Adam Lake, Carl Marshall, Mark Harris and Marc Blackstein. "Stylized Rendering Techniques for Scalable Real-Time 3D Animation",
       Non-Photorealistic Animation and Rendering 2000 (NPAR '00), Annecy, France, June 5-7, 2000.

Silhouette Styles and Detection Algorithms

The detection algorithms I use are essentially brute-force - I test all the edges sharing visible and non-visible faces.  And why don't I use a more sophisticated technique?  Because the bottom-line is this brute-force edge detection works, and the costs associated with silhouette detection are much less than the costs involved in software shading computations (plus, you can directly route the face-culling tests required for software shading computations to the silhouette detection algorithms, such that silhouette computation reduces to an O(E) set of boolean tests, where E is the number of edges).  When I use Raskars algorithm (citated below) that performs using hardware, the additional cost on rendering a sketch-scene with silhouettes is negligable (about 1% for the boxer model), but note that this allows little flexibility in the style of silhouettes.

Here are a few references to the types of silhouette style and detection algorithms:

Adam Finkelstein, David H. Salesin. "Multiresolution Curves", SIGGRAPH '94

J.D. Northrup and Lee Markosian."Artistic Silhouettes: A Hybrid Approach", Non-Photorealistic Animation and Rendering 2000

John W. Buchanan and Mario C. Sousa. "The edge buffer: A data structure for easy silhouette rendering", Non-Photorealistic Animation and Rendering 2000 (NPAR '00)

Markosian, Lee; Kowalski, Michael A.; Trychin, Samuel J.; Bourdev, Lubomir D.; Goldstein, Daniel; Hughes, John F. "Real-Time Nonphotorealistic Rendering." SIGGRAPH 97.

Raskar, Ranesh and Michael Cohen. "Image Precision Silhouette Edges", Symposium on Interactive 3D Graphics (I3DG) 1999.

A More Complete Set of Links to NPR Material

NPR is growing.  Too fast for me to constantly update these links - but fortunately there are others who share the interest and maintain wonderful web pages on the topic.  As a quick jumper to a whole host of links, I would recommend Craig Reynolds page for NPR.  From there you can go almost anywhere in the world of NPR (and other topics).  For a more complete list of NPR publications, try the BibTex Archive at the University of Utah.

© 2000-2001 Nick Halper  [ ]