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.)
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
Architectural rendering using
Here I have used a combination of blending and a soft texture to create the moon image on the right
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.