Advertisement

One of their most recent publications is **3 - Practical Methods for Texture Design**. Which was published in journal **. **

More information about ** Steven Worley** research including statistics on their citations can be found on their Copernicus Academic profile page.

Publisher SummaryThis chapter discusses the practical methods for texture design. Many new textures are just variants of each other—new ways to organize a set of stock routines together. Building blocks such as fractal noise functions, color mapping methods, and bump mapping definitions occur in nearly every texture. The chapter discusses these common elements as their ubiquitous use immediately makes them important. Fractal noise is the most important element used in procedural texturing. The biggest problem with the “plain” fractal noise algorithm is artifacts. The basic routine interpolates over a cubic lattice, and one will be able to see that lattice on one's surface especially if one is using a small number of summed scales. Purists will also note that the basic Perlin noise is not very isotropic as diagonal directions have a longer distance gap between sample points than the points along the coordinate directions. A good way to hide this artifacting is to rotate each summed scale to a random orientation.

Publisher SummaryThis chapter focuses on cellular texturing, which is related to randomly distributed discrete features spread through space. Cellular textures often split space into small, randomly tiled regions called cells. Even though these regions are discrete, the cellular basis function itself is continuous and can be evaluated anywhere in space. The behaviors of noise and cellular texturing complement each other. The chapter also discusses the implementation of the basis function. The cellular texturing basis functions are based on the fundamental idea of randomly scattering “feature points” throughout 3D space and building a scalar function based on the distribution of the points near the sample location. A variety of small speedups can be made to the basic cellular basis algorithm and implementation, including using fixed-point computation, using parallel vector CPU instructions such as MMX and SSE, and changing the boundary cube segmentation to use hexagonal packing.

Publisher SummaryThis chapter focuses on antialiasing. Index antialiasing is just one step of full texture antialiasing, but it is an extremely useful one. It is much more effective than blind supersampling, since (especially for low numbers of samples) at least a reasonable model of the variation of the texture is used to estimate the variation the color map undergoes. Implementation of index antialiasing is very easy, although it does assume a lookup table for the color map. The chapter reviews the example of index aliasing in generating planetary rings. Supersampling is a last resort to reduce aliasing artifacts. It always works. One can benefit from having the texture perform its own antialiasing (even by supersampling) instead of the renderer. A short header at the beginning of the texture does its own supersampling of the surface area and returns the mean result. This is useful for several reasons. First, this means that all the textures are treated the same by the renderer. Second, since the evaluation loop for the samples is within the texture, not the renderer, overhead (in particular, function calls) are reduced.

Publisher SummaryThis chapter discusses several aspects of texturing from a practical point of view, especially in dealing with the texture controls (parameters) that users manipulate. Building blocks such as fractal noise functions, color mapping methods, and bump-mapping related to nearly every texture are reviewed. Fractal noise is the most important element used in procedural texturing. The chapter discusses some enhancements and modifications to the basic noise algorithm, mostly to produce high-quality and easy-to-use noise. Most textures use a paradigm that computes a value such as fractal noise and then uses this value to decide what color to apply to one's object. In simpler textures this added color is always of a single shade, and the noise value is used to determine some “strength” from 0 to 1, which is used to determine how much to cross-fade the original surface color with the applied texture color. This mapping allows the user quite a bit of control over the applied color, and its simplicity makes it both easy to implement and easy for the user to control even with raw numeric values as inputs.

Advertisement