Art Directing Visual Complexity through Smart Textures
Authors:   , Lapinski Nathaniel Kirschner , Fernsler Jeremy , Wagner Michael G. , Breen David E. 
Published: July 2021

Conventional 3D paint systems utilize destructive pixel-based painting. Raster-based textures can suffer from blurring at high magnification and often have prohibitively high computational costs to manipulate in realtime. Complex texture generation tasks such as animating 2D textures of 3D objects or creating sufficient level of detail on large objects can be prohibitive with raster methods. Level of detail and SVG paint systems offer some solutions to these issues. However, current workflows offered in 3D paint do not support these techniques. Solutions to these technical hurdles are often part of a multi-step optimization process to provide realtime performance. This degrades the artists ability to receive realtime iterative feedback. A SVG type approach may be taken with the use of signed distance functions at render time. Many of these techniques do require pre-processing raster graphics. Direct authoring of textures in a procedural format allows for interactive manipulation. I am proposing a novel paint stroke parametrization workflow that allows manipulation of paint strokes after creation for the purposes of generating animated textures, while improving artistic texture iteration time on complex objects. This project presents methods and workflows for dealing with complex multi-layered texturing of 3D surfaces by adopting a procedural approach to painting. Multi-layered brush strokes are comprised of linearly interpolated point data stored on the GPU as a single pixel texture. Working with paint data as a series of points rather than pixels allows the paint data to be rendered with a wide variety of animation effects such as scattering, scaling, and affine transformation on the surface. Iteration time is also improved with this workflow, as the same parameters are available to define the final look of a texture. Issues that can arise from UV discontinuities have been addressed by utilizing a spherical projection to generate a seamless coordinate system. This method has the added benefit of being rendered at arbitrary resolutions. Additional optimizations can be gained from structuring point data in a tree structure to prevent linear look up of points to be rendered. A combination of procedural paint strokes with various pattern generation and tiled textures allows for more complexity to be imbued in the final texture. The procedural paint data in this method primarily functions as a masking tool for compositing of additional procedural or tiled patterns. Proposed techniques are adapted to two test cases to evaluate viability of this system in terms of performance and artistic flexibility. One scene exemplifies the use of proposed methods for animated texture creation, the other evaluates usefulness of resolution scaling on large objects to preserve fine detail. Results from each of these cases proved some viability in a procedural paint method. Extensive parametrization of paint data dramatically increases flexibility and iteration time of texture creation. Unexpectedly, frame rate comparison to raster paint methods dropped significantly. This is primarily due to the type of processing and rendering to which GPUs are suited.