Non-photorealistic Rendering Using Existing Tools (SIGGRAPH 2009)
Most non-photorealistic rendering solutions tend to involve brilliant but unwieldy new technologies, such as volume-based rendering engines1 or complex image analysis2. Even the best polygonal rendering engines3, which create “hand-crafted” abstraction using patterns, will only allow limited lighting and color control. Acceptable results can often be achieved using simpler methods and non-proprietary toolsets, even toolsets designed with other effects in mind. Our studio has been experimenting with ways to achieve a hand-painted look with basic tools that are common to most 3D applications.
Normal displacement, usually used to add detail to topology, can also be used to distort a surface without compromising the object volume. If this distortion is cycled once per frame and rendered with motion blur, the resulting effect simulates layered, transparent brush strokes . The strength of the displacement can be effected by vertex or image maps so areas of the model that permit low detail can have broad, loose brushstrokes, while areas that require higher detail are still clear. These overlapping “strokes” can be emphasized using various textures and shaders and lighting models, but effective results can be achieved even with basic adjustments to diffuse curves, edge lights, and colored shadows.
Hand-painted or procedural bump maps can amplify the brush strokes created by geometry, or run perpendicular to the mesh flow to blend between tonal regions and emulate crosshatching. Further control over the perceived brushstrokes is achieved by adjusting the number of antialiasing passes and subdivision level.
Because the brushstrokes exist in 3D space, and their direction and coverage is governed by the mesh itself, the final result renders very quickly and maintains temporal coherence even under complex deformation. The resulting render will benefit from multi-pass compositing and 2D processing, but image analysis to create strokes is not required.
Since this approach uses native polygonal rendering, it can be combined with all existing shaders and global illumination, is compatible with dynamics calculations, and easily integrates with existing workflows for rendered or real-time projects regardless of platform.
This technique permits a hand-painted look without specialized rendering engines, allowing studios to continue using the tools within their existing animation and modelling pipelines. By building a non-photorealistic rendering solution within a non-proprietary render engine, it will also be easier to integrate addition lighting technologies4, like light warping5, that will contribute to the effect.