Rosalee Wolfe
DePaul University
wolfe@cs.depaul.edu
| 37: In three-dimensional texture mapping, each point determines its color without the use of an intermediate map shape (Peachey, 1985; Perlin, 1985). We use the (x,y,z) coordinate to compute the color directly. Its equivalent to carving an object out of a solid substance. Most 3D texture functions do not explicitly store a value for each (x, y, z)-coordinate, but use a procedure to compute a value based on the coordinate and thus are called procedural textures. | ![]() |
| 38: To put stripes the left teapot, we find the integer part of the z-value of each point of the object. If resulting value is even, we choose red; otherwise we choose white. How were the stripes produced in the other two teapots? | ![]() |
| 39: To produce the rings in the upper left teapot, we use the x- and y-components to compute the distance of a point from the objects center, and truncate the result. If the resulting value is even, we choose red; otherwise we choose white. Which two components were used to produce the rings on the upper right teapot? | ![]() |
| 40: Here are textures created by ramp and sine functions. A nice ramp is created by the function mod(x,a)/a. This ramp function has a range of zero to one, as does (sin(x)+1)/2. In this picture, we assigned magenta to value of zero and yellow to the value one. Which of these teapot is using a sine function? How do you know? | ![]() |
| 41: We can use a point to compute an index into a color table. One way to do this is to keep the fractional part of the x-coordinate, which ranges between zero and one, and multiply it by the number of elements in the color table. | ![]() |
42: Regular patterns are not as interesting as patterns
with some randomness. For texture mapping the randomness is produced by a noise function.
Desirable properties for such a noise function are (Perlin, 1985):
|
![]() |
| 43: Lattice noise has these desirable properties. It stores a number from the random number generator at each integer lattice point in a 3D array. If a point from the object happens to have integer coordinates, a lattice noise function does a table lookup to find the value to return. If the objects point has non-integer values, the function uses trilinear interpolation to determine the returned value. | ![]() |
| 44: A second technique for producing "nice noise" is called gradient noise. Gradient noise generates random unit vectors for each integer lattice point, and uses interpolation to find values for non-integer coordinates. | ![]() |
Main Mapping Page
HyperGraph Home page.
Last changed May 30, 1999, G. Scott Owen, owen@siggraph.org