Bookshelf Contents Previous Next Glossary Index Search

Fog

Atmospheric effects like fog describe what happens to a ray when it travels between surfaces. In a perfect vacuum, a ray travels without being reduced, and no light is scattered along the path of the ray from the light sources. This is typically the case in most computer graphics images. A clear, hard-edged look results. However, in real life, dust or smoke particles float in the air; they obscure distant objects and scatter light to produce a mist color.

The appearance of the atmospheric effects depends on several factors.

One factor is the distribution of particles in the atmosphere. A column of smoke has an evident concentration of particles in particular locations. Distinct puffs are visible. This type of atmospheric effect can be emulated by using the sCloud procedural texture. See the section on sCloud in this chapter for further information on using this procedure.

Alias has three different types of fog:

Constant density fog equal densities of particles at all locations: distant objects fade equally in all directions. View in any direction blends to a constant color if there are no obstructing surfaces.

Max/Min fog This is the same as Constant density fog except that the max and min distances are used to `clip' the fog. That is, the fog particles only exist between the max and min distances from the camera.

Layered fog fog density varies with altitude.

In the fog procedure, the color for infinite distances is defined by selecting a Fog color. The relative scattering of light is controlled using the Fog Depth slider. Optical depth, roughly speaking, is the distance away that a surface must before it has half its light is scattered by the intervening air. For an outdoor scene during the day, the fog color should be white. For smog, try using a high layered fog and a brownish color.

To create a scene with the impression of great distances, give distant objects a blue tint by using a light fog colored blue.

Layered Fog

In a mountain scene viewed from above, the valleys may be filled with fog while the peaks are crystal clear. In fact, there may be several layers of fog with clear air between them (see the following illustration).

The ALIAS system lets you create a one-dimensional table of values to use for layered fog by using a column of data from a pix or mask file.

If you don't specify a file, a smooth ramp is used to create the fog. If you specify a file, you may also specify a column, which indicates the horizontal position for the column. By animating the column position between 0 and 1 (the left and right sides of the texture file), you can vary the layers of fog over the duration of a scene. Use a file or ramp that has some variation across the file. By taking advantage of the variations, fog layers can appear to move or be made to appear and disappear. The height of the column corresponds to values between AltitudeMin and AltitudeMax, the lower and upper boundaries of the fog. Outside of this range, fog is assumed to be absent.

Argument Name Absolute Range Useful Range Default Description
amult -infinity, infinity -1, 1 1 Scaling factor for layered fog density
aoffset -infinity, infinity -1, 1 0 Offset factor for layered fog density
depth (triple) 0, infinity 0, 100 10, 10, 10 Decay constants for the air
fog_color (triple) 0, infinity 0, 255 255, 255,255 Colour constants for the air
min_altitude -infinity, infinity -10, 10 0 Bottom of the fog layer
max_altitude -infinity, · -10, 10 1 Top of the fog layer
column 0, 1.0 0, 1 0.5 Animation key to fog data
density_file no default Mask file name for 8-bit density image
fogtype = 0 1 2 other no fog constant fog layered fog no fog

Bulge

The Bulge texture procedure was inspired by looking at windows on a skyscraper. If a building was pumped full of air, the glass would bulge outwards in the center while the edges would be constrained by the frame. The frame of the window is exactly the same as a grid that is apparent when using the bulge texture.

The Bulge texture procedure is most commonly applied as a bump map to create a bulge effect on a surface. However, it can also be applied to a transparency map to simulate windows that are dirty or opaque around the edges but transparent in the middle area. When applied to a color map, there is no apparent bulge, but this application can be used to simulate tile effects, for example.

Argument Name Absolute Range Useful Range Default Description
uwidth 0.0, 1.0 0, 1 0.1 Width in u dir. of constant stripe
vwidth 0.0, 1.0 0, 1 0.1 Width in v dir. of constant stripe
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u dir. within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v dir. within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Bulge" is a parametric texture.

Checker

The Checker texture procedure applies a colored checkerboard pattern to the shader.

Argument Name Absolute Range Useful Range Default Description
contrast -1.0, 1.0 -1.0, 1.0 1.0 Contrast for the checker pattern
color1 (triple) 0, infinity 0.0, 255.0 0,0,0 Color of one set of checker squares.
color2 (triple) 0, infinity 0.0, 255.0 0.0 Color of other set of checker squares.
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Checker" is a parametric texture.

Cloth

The Cloth texture procedure is ideal for creating fabric-like textures and a variety of other woven effects. In addition to being used as a simple two-dimensional texture, the Cloth procedure is also effective with bump mapping.

For very fine weaves, aliasing may be a problem, particularly when the cloth is viewed from a distance. In this case, the cloth can be turned into a pix file image by using the cloth texture as a Background Environment rather than applying it to a shader. Once the background has been rendered, the resulting pix file can then be applied to the shader as a file texture.

When applied to a bump map, the cloth texture generally produces better effects when both thread colors are white and the gap color is black. The Color Balance options are replaced by the Intensity options, Amult and Aoffset. These options enable you to control the degree of the bump effect. Decreasing the Blurmult value provides greater definition in the bump effect. Generally, both the Amult and Blurmult values should be quite low, that is less than 0.1.

Argument Name Absolute Range Useful Range Default Description
u_thread_color -infinity, infinity 0, 255 255.0, 255.0, 255.0 RGB value assigned to warp of fabric
v_thread_color -infinity, infinity 0, 255 255.0, 0.0, 0.0 RGB value assigned to weft of fabric
gap_color -infinity, infinity 0, 255 0.0, 0.0, 0.0 RGB value assigned to area between threads
u_thread_width 0, 1 0, 1 0.75 Width of warp threads
v_thread_width 0, 1 0, 1 0.75 Width of weft threads
u_wave -infinity, infinity -0.5, 0.5 0.0 Wave pattern of warp
v_wave -infinity, infinity -0.5, 0.5 0.0 Wave pattern of weft
randomness 0, infinity 0, 1 0.0 Smears texture in u,v.
width_spread 0, 1 0, 1 0.0 Subtracts a random amount off the width of individual threads
brightness_spread 0, 1 0, 1 0.0 Subtracts a random amount off the brightness level of the threads.
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

File

The File texture procedure lets you use a pix file as a parametric texture on a shader. Pix files are typically files created in ALIAS paint or some other compatible paint package, scanned images or previously rendered images.

The main new feature in v7 is the concept of a "super-texture". This allows a single File Texture to refer to a number of image files and the objects that use those files. This is ideal for convert-solid-to-texture, where instead of creating many shaders and textures, only one is created, but the texture points back to the many different pix images. The parameters relevant to "super-texture" are "object" and "object_image".

The other important new feature is the "filter" option. This allows you many ways to deal with the filtering/anti-aliasing of textures. A setting of 0 means no filtering at all - this allows for exactly pixel-to-pixel match, less memory used, faster rendering, but also may fall into danger of aliasing artifacts. A setting of 1 results in exactlythe same rendering as in version 6. For better quality renderings, set the value to be > 1. As the value increases, the more complicated the filter shape and thus the more expensive the rendering. The optimal quality and speed combination would be to choose the quadratic filter (3).

Argument Name Absolute Range Useful Range Default Description
filter 0-5 1 0 indicates no filtering; 1 indicates blend-filter (only choice in v6); 2 indicates box-filter; 3 indicates quadratic filter; 4 indicates quartic filter; 5 indicates guassian filter.
filter_width 0.707 Filter width that applies only when "filter" > 1. The larger the filter width, the more expensive the rendering.
image string Name of pix or mask file to be used for parametric texturing.
object string Name of object that the super-texture applies to.
object_image string Name of pix image that the object`s super-texture applies to.
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

Grid

GridRGB generates a color grid pattern based on the surface u, v parameters. The default case is white lines on a black background (filler). The "contrast" variable controls the relative contrast of the line color to the filler color. A "contrast" of 0.0 will set the color to the average of the line color and the filler color. A "contrast" of -1.0 will swap the line color and the filler color.

Argument Name Absolute Range Useful Range Default Description
contrast -1.0, 1.0 -1, 1 1.0 Relative contrast of the colors
uwidth 0, 0.5 0, 0.5 0.1 Width of lines in the u direction
vwidth 0, 0.5 0, 0.5 0.1 Width of lines in the v direction
line_color (triple) 0, infinity 0, 255 255.0 Line color
filler_color (triple) 0, infinity 0, 255 0.0 Area between lines color
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Grid" is a parametric texture.

Fractal

The Fractal texture is a surface texture based on U, V parameter values and is a random function that has a particular frequency distribution.

Fractals can be used for many different effects. A patch that is displacement mapped with a fractal will resemble a piece of rock or a mountain. A surface transparency mapped with a fractal will look like a piece of cloud or flame. Fractals are often used as part of more complex textures to create special effects such as marble and wood.

Argument Name Absolute Range Useful Range Default Description
animated TRUE FALSE FALSE Flag to use 3D texture with u, v, time rather than 2D texture with just u, v
level_min 0, infinity 0, 20 0.0 Minimum level of iteration
level_max 0, infinity 0, 20 9.0 Maximum level of iteration allowed
*time 0, infinity 0, 1 0.0 Time dimension for animated texture, wraps for range 0, 1
ratio 0, 1.0 0, 1 0.707 Fractal ratio
amplitude 0, infinity 0, 1 1.0 Amplitude of fractal
threshold 0, 1 0, 1 0.0 Threshold for fractal
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

*The fractal will cycle as a function of time with period 1.

Note: For textures that use Fractal, sFractal, sCloud, sMarble and sFile - if both the min and max iteration values are very high (greater than 100), a render can take a very long time. You cannot enter values over 100. Generally, if a finer grained texture is desired, you may prefer to lower the blur, rather than increasing the iteration count.

"Fractal" is a parametric texture.

Mountain

The Mountain texture procedure is used for rendering terrain. The Mountain texture should first be applied to the shader as a Color Map, and then applied again as a Displacement Map. The Color options have no effect on the displacement map and relate only to the color map portion of the procedure. All non-color related options are ignored for the color mapping when the displacement map is applied. The color mapping automatically matches the displacement mapping. The basis of the terrain model is a two-dimensional fractal.

Argument Name Absolute Range Useful Range Default Description
amplitude 0, infinity 0, 1 1.0 Amplitude of fractal
rock_roughness 0, 1 0, 1 0.707 Fractal ratio for the rock
level_max 0, infinity 0, 40 20.0 Maximum allowed interation level
snow_altitude -infinity, infinity -1, 1 0.5 Altitude for snow
snow_dropoff 0, infinity 0, 10 2.0 Rate of dropoff of snow with altitude
snow_max_slope 0, infinity 0, 3 0.8 Slope above which snow does not stick
snow_roughness 0, 1 0, 1 0.4 Roughness of snow
boundary_roughness 0, 1 0, 1 0.6 Raggedness of edge of rock/snow border
snow_color (triple) 0, infinity 0, 255 255,255,255 Color of snow
rock_color (triple) 0, infinity 0, 255 90, 110, 120 Color of rock
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Mountain" is a parametric texture.

Noise

Argument Name Absolute Range Useful Range Default Description
animated TRUE FALSE FALSE Flag to use 3D texture with u, v, time rather than 2D texture with just u, v
*time -infinity, infinity 0, 1 0.0 Third dimension for animated texture, wraps for range 0, 1
amplitude -infinity, infinity 0, 1 1.0 Amplitude of noise
threshold 0, infinity 0, 1 0.0 Additive value, clips to 1.0
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

*The noise function repeats cyclically as a function of time with period 1.0."Noise" is a parametric texture.

Ramp

The Ramp texture procedure is used to create a texture map that graduates from one color to another or through a series of colors. Effects ranging from simple stripes to geometric patterns and mottled surfaces are easily created by the choice of Ramp and Interpolation types. By default, the Ramp texture graduates from black to red to blue in a linear, horizontal (V ramp) fashion. When applied to a Bump map however, the colors in the ramp are represented as a gray scale.

The Ramp texture is commonly used as a two-dimensional Environment background, but can also be used with other map types such as the transparency map for special effects. When used as the source file for an Environmental Sphere texture, you can create very natural-looking sky and horizon effects. When used as the source file for a sFile texture, you can create very natural woodgrain, marble and rock effects.

Argument Name Absolute Range Useful Range Default Description
ramp_type not applicable. V_RAMP U_RAMP DIAGONAL RADIAL CIRCULAR BOX UV_RAMP TARTAN FOUR CORNER V_RAMP There are nine different ramp types to choose from.
interpolation not applicable NONE LINEAR_RAMP RAMP_UP RAMP_DOWN SMOOTH BUMP_OUT BUMP_IN LINEAR_RAMP Affects the way colors in the ramp are interpolated. There are seven interpolation types to choose from, including a selection for no interpolation, which causes each color to be displayed as a solid band.
ramp_color -infinity, infinity 0, 256 0.0, 0.0, 0.0 Determines the RGB value of the ramp at its given position
position 0, 1 0, 1 0.0 Gives the placement of a given ramp color.
u_wave -infinity, infinity -0.5, 0.5 0.0 Controls the amplitude of a sine wave offset of the texture in the U direction.
v_wave -infinity, infinity -0.5, 0.5 0.0 Controls the amplitude of a sine wave offset of the texture in the V direction.
noise -infinity, infinity 0, 1 0.0 Affects the amount that the texture is offset in the U and V direction by two-dimensional noise.
noise_frequency -infinity, infinity 0, 1 0.5 Controls how fine-grained the noise is. However, if the U and V repeat values of the texture area are greater than 1, then noise does not cause a repeat of the pattern.
hue_noise -infinity, infinity 0, 1 0.0 Offsets the hue value (mottles the color).
sat_noise -infinity, infinity 0, 1 0.0 Offsets the "whiteness" (creates a weathered look).
val_noise -infinity, infinity 0, 1 0.0 Offsets the "blackness."
hue_noise_frequency -infinity, infinity 0, 1 0.5 Controls how fine-grained the hue noise will be.
sat_noise_frequency -infinity, infinity 0, 1 0.5 Controls how fine-grained the saturation noise will be.
val_noise_frequency -infinity, infinity 0, 1 0.5 Controls how fine-grained the value noise will be.
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Ramp" is a parametric texture.

Stencil

The Stencil texture procedure is used mainly for label mapping purposes. Label mapping is a two-dimensional texture that is usually applied as a Color map onto a surface and often includes a transparency component to mask certain parts of the two-dimensional texture. An example of label mapping is consumer packaging items such as a shampoo bottle with a label. The labels often hold opaque colors combined with transparent areas. The Stencil texture procedure enables you to easily place the two-dimensional label map and create the necessary transparency mask.

Argument Name Absolute Range Useful Range Default Description
image_file (string) name of the pix file to be used as a label map
edge_blend 0, infinity 0, 1 0.0 Softens the edges of the texture coverage area. This is useful for hiding the texture boundary when the mask is not perfect.
mask_file (string) name of the mask file to be used as a label map
mask_level -infinity, infinity -1, 1 1.0 Varies the degree of transparency of the color areas. At a value of 1 (the default), all white areas of the mask are totally transparent and all black areas are totally opaque. As you decrease the value towards 0.00, the black areas become more transparent. By the time you reach 0.00, no image transparency masking occurs. If you decrease the mask_level to -1.00, the mask is inverted, where the black areas become transparent and the white areas are opaque.
mask_blur 0, infinity 0, 0.25 0.0 Affects the edges of the mask. At a value of 0.00, there is no mask blurring. As you increase the blur value, the edges of the mask are blurred to produce soft edge transparency effects.
key_masking ON, OFF OFF Toggle of color key masking (mask derived from a color). Key masking can be used in combination with a mask file.
positive_key ON, OFF OFF When ON, color determines the visible portion of the texture. When OFF, determines the hidden portions.
color_key -infinity, infinity 0, 255 0.0, 0.0, 0.0 Color center to key to.
hue_range 0, infinity 0, 1 0.5 Spread of hue value from central color key.
sat_range 0, infinity 0, 1 0.5 Spread of saturation value from central color key.
val_range 0, infinity 0, 1 0.5 Spread of brightness value from central color key.
threshold 0, infinity 0, 1 0.5 Determines sharpness of mask boundary. At 0.0, all values within the HSV spread ranges from the color key are fully masked. At 1, the level of the mask falls only at the color key, and drops off to zero at the HSV spread limits.
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Stencil" is a parametric texture.

Water

The Water texture procedure is a parametric texture used to produce water effects. If used as a Bump or Displacement map, the result resembles water waves or ripples. Water waves consist of linear sine waves, whereas water ripples correspond to concentric rings originating from a drop.

Argument Name Absolute Range Useful Range Default Description
reflection_boundary TRUE FALSE FALSE Flag to reflect ripples at reflection boundary
umin -infinity, infinity -5, 5 0.0 Extent of reflection boundary
umax -infinity, infinity -5, 5 1.0 " " "
vmin -infinity, infinity -5, 5 0.0 " " "
vmax -infinity, infinity -5, 5 1.0 " " "
ripple_drop_size 0, infinity 0, 1 0.3 Width before drop off of envelope amplitude
ripple_frequency 0, infinity 0, 50 25.0 Number of wavelengths of modulated sinewave per unit length
ripple_phase_velocity 0, infinity 0, 10 2.5 Velocity of modulated sinewave
ripple_group_velocity 0, infinity 0, 10 1.0 Envelope velocity
ripple_spread_start 0, infinity 0, 1 0.005 Spread of envelope at ripple_time zero
ripple_spread_rate 0, infinity 0, 1 0.3 Rate of spread increase with time
ripple_amplitude -infinity, infinity -1, 1 0.05 Amplitude scaling factor of ripple
ripple_u_origin -infinity, infinity 0, 1 0.5 Start point position
ripple_v_origin -infinity, infinity 0, 1 0.5 " " "
ripple_time -infinity, infinity 0, 100 0.0 Time variable for concentric waves
numwaves 0, infinity 0, 64 8 Number of linear waves
sub_frequency 0, infinity 0, 1 0.125 Frequency increment for successive waves
wind_u -infinity, infinity -5, 5 1.0 Wind direction vector
wind_v -infinity, infinity -5, 5 0.0 " " "
frequency 0, infinity 0, 20 4.0 Wavenumber of fundamental frequency
wave_velocity 0, infinity 0, 5 1.0 Velocity of fundamental frequency
wave_amplitude -infinity, infinity 0, 1 0.05 Scaling factor for wave amplitudes
smoothness ;0, infinity 0, 5 2.0 Rate of dropoff of amplitude with frequency
wave_time -infinity, infinity 0, 10 0.0 Time variable for linear waves
urepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in u direction within coverage area.
vrepeat -infinity, infinity -10.0, 10.0 1.0 # of copies in v direction within coverage area.
uoffset -infinity, infinity -1.0, 1.0 0.0 U offset repeat withincoverage area
voffset -infinity, infinity -1.0, 1.0 0.0 V offset repeat withincoverage area
ucoverage -infinity, infinity 0.0, 1.0 1.0 amount of U surface to be textured
vcoverage -infinity, infinity 0.0, 1.0 1.0 amount of V surface to be textured
utranslate -infinity, infinity -1.0, 1.0 0.0 amount of U coverage area to be moved.
vtranslate -infinity, infinity -1.0, 1.0 0.0 amount of V coverage area to be moved.
uwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
vwrap TRUE FALSE TRUE flag to wrap texture around U boundaries of coverage area.
worldspace TRUE FALSE FALSE flag to use world space texture mapping
rotate -infinity, infinity -360.0, 360.0 0.0 angle coverage area to be rotated
mirror TRUE FALSE FALSE flag to match edges of texture

"Water" is a parametric texture.

Solid Textures and Transformations

Solid textures use the surface (x, y, z) point to reference into a three dimensional space of texture values. However, the (x, y, z) point is not passed directly to the table. It is first multiplied by a texture transformation matrix. The default case is no specified texture transformation. In that case, the world space surface point is used directly. If an object moves in world space it will move through its solid texture. A wooden object would move through the wood grain. While this may be desirable in certain animations, it is better to have control over solid texture transformations.

If a transformation is to be used, it must be specified using the following syntax.

In the DEFINITION section, the transformation must be declared using

	transformation example;

Similarly, the transformation name must be included in the DEFINITION of the texture being used. For example,

	color=texture (procedure=Smarble,
	transformation_name=example);

In the MODEL section, use

	example = current_transformation( );

The assignment statement actually saves the current transformation in the hierarchy. This means that if it is placed immediately before the piece of geometry to be textured, the texture will stick to the geometry independent of the transformation applied to the geometry. It is possible to transform the texture in an arbitrary way by bracketing the assignment statement with its own transformations, e.g.:

	{
		rotate (xaxis,25);
		translate (10,5,2);
		example = current_transformation ( );
	}

NOTE:

1) The definition of the transformation must be BEFORE the definition of the texture.

2) The assignment can be anywhere in the model section, either before or after the patch.

Also note that there is a similar function, current_position, which returns a "triple" - very handy for fancy camera/spotlight motions.

sFile

The sFile procedure can be thought of as the solid equivalent of a two-dimensional texture.

A solid file texture can be extremely beneficial as it is not affected by the parameterization of a surface. Therefore, a solid file texture is not prone to the same distortion that can occur when mapping a surface texture to a surface with uneven parameterization.

The sFile procedure requires the input of a source texture (see How to Use). Environment textures are not recommended as source textures for the sFile procedure. Although the system will allow you to use Environment textures, the results are likely to be unpredictable.

If the input source texture is a file, it can be projected in six different ways, through the use of the Projection argument.

When the noise amplitude is set to 0, the image file specified is simply projected through space. When the noise amplitude is not equal to 0, the projection is perturbed with fractal noise (this takes much more time to render). The sFile texture works in a similar fashion to sMarble and sWood: it moves an image through space, creating a solid block with the image on it. Therefore, if you want to create solid marble ;and solid wood textures from scanned-in images or painted pix files, you can create them using sFile.

Argument Name Absolute Range Useful Range Default Description
xmult -infinity, infinity -10, 10 1.0 Scaling factors for extent of pix file
ymult -infinity, infinity -10, 10 1.0 " " "
xoffset -infinity, infinity -10, 10 0.0 Offsets for position of pix file
yoffset -infinity, infinity -10, 10 0.0 " " " "
xamplitude -infinity, infinity 0, 10 1.5 Amplitude of noise function for x direction
yamplitude -infinity, infinity 0, 10 1.5 Amplitude of noise function for y direction
sfile_type triplanar cubic ball cylindrical spherical planar Projection type used for mapping the solid texture
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

Please note that X,Y, and Z refer to the height, width, and depth respectively of the scene as it would appear in the FRONT window, regardless of coordinate system.

"sFile" is a solid texture.

Granite

The Granite solid texture is essentially the same as the Leather texture, with the additional feature that three cell colors can be specified as opposed to only one cell color in a Leather texture. The Granite texture is a simulation of three different substances suspended in a medium.

Argument Name Absolute Range Useful Range Default Description
color1 -infinity, infinity 0 to 255 0.0, 0.0, 0.0 RGB value for first granite component.
color2 -infinity, infinity 0 to 255 140.0, 200.0, 100.0 RGB value for second granite component.
color3 -infinity, infinity 0 to 255 160.0, 210.0, 210.0 RGB value for third granite component.
filler_color -infinity, infinity 0 to 255 150.0, 75.0, 50.0 Determines the color of the medium in which the spheres are suspended.
cell_size 0, infinity 0 to 1 0.15 Determines the general size of the texture and is equivalent to scaling the texture DAG node.
density 0, infinity 0 to 1 1.0 Determines the average number of spheres per node of the 3D lattice used in the procedure. The spheres are fully packed at a density value of 1.0.
mix_ratio 0, infinity 0 to 1 0.5 allows for the three different substances to be mixed in different proportions. At a value of 0.0, Color1 is the highest in terms of proportion to the other two colors. At a value of 0.5, Color2 is the highest and at a value of 1.0, Color3 is the highest.
spottyness 0, infinity 0 to 1 0.3 Determines the randomization of the general intensity of the Cell_color. At a value of 1.0, the intensity is fully random (if the threshold parameter is set to 0.00).
randomness 0, infinity 0 to 1 1.0 The spheres or cells are oriented in a regular 3D lattice by default. The position of the spheres is perturbed by the Randomness value. At a value of 1.0, the sphere location is totally random and at a value of 0.00, the location of the spheres is totally regular.
threshold 0, infinity 0 to 1 0.5 Determines the amount that the three colors used in the procedure mix into each other. At a threshold of 1.0, no mixing occurs and the spheres appear as solid color dots.
creases 0, 1 (OFF, ON) OFF, ON ON Is actually an option that can be toggled ON or OFF. If Creases is set to ON, the spheres don't mix with each other. This creates boundaries like those found in a collection of living cells. The resulting texture has edges that resemble creases in leather. If creases is set to OFF, the spheres diffuse uniformly into each other and no straight line segments appear on the resulting texture.
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

Leather

The Leather solid texture is ideal for creating a range of effects such as concrete, Styrofoam and alligator skin, as well as leather. For many applications, a simple pix file of leather will suffice for a good leather simulation. However, it is sometimes nearly impossible to map a file texture to a surface without distortions and discontinuities (mapping a simple two-dimensional file texture to an automotive dashboard, for example). Worldspace texture mapping is one solution to this problem, but it requires more effort and does not work for all possible topologies. The procedural Leather texture overcomes these problems by using a 3D noise of spheres to simulate a leather surface. This texture is unlike leather in that real leather is a surface, and not a substance. However, this texture can nicely simulate many types of animal skin, particularly when used as a bump map.

If the surface is deformed during an animation (morphing), then the effect will not be natural, as the surface will move through the solid texture.

The texture is made up of a collection of spheres suspended in a medium.

Argument Name Absolute Range Useful Range Default Description
cell_color -infinity, infinity 0 to 255 95.0, 40.0, 15.0 Determines the color of the spheres used in the procedure.
crease_color -infinity, infinity 0 to 255 60.0, 30.0, 0.0 Determines the color of the medium in which the spheres are suspended.
cell_size 0, infinity 0 to 1 0.5 Determines the general size of the texture and is equivalent to scaling the texture DAG node.
density 0, infinity 0 to 1 1.0 Determines the average number of spheres per node of the 3D lattice used in the procedure. The spheres are fully packed at a density value of 1.0.
spottyness 0, infinity 0 to 1 0.1 Determines the randomization of the general intensity of the Cell_color. At a value of 1.0, the intensity is fully random (if the threshold parameter is set to 0.00).
randomness 0, infinity 0 to 1 0.5 The spheres or cells are oriented in a regular 3D lattice by default. The position of the spheres is perturbed by the Randomness value. At a value of 1.0, the sphere location is totally random and at a value of 0.00, the location of the spheres is totally regular.
threshold 0, infinity 0 to 1 0.83 Determines the amount that the two colors used in the procedure mix into each other. At a threshold of 1.0, no mixing occurs and the spheres appear as solid color dots.
creases 0, 1 (OFF, ON) OFF, ON ON If Creases is set to ON, the spheres don't mix with each other. This creates boundaries like those found in a collection of living cells. The resulting texture has edges that resemble creases in leather. If Creases is set to OFF, the spheres diffuse uniformly into each other and no straight line segments appear on the resulting texture.
transformation_name no default.

sCloud

The sCloud procedure is commonly used to create effects such as smoke and steam in addition to clouds. The transparency level of the cloud area itself can be interactively adjusted. The area surrounding the cloud is always transparent, regardless of the type of mapping used.

sCloud requires that the geometry being textured is a sphere. The spheres can be transformed in any way (for example, non-proportionally scaled), but the actual base component must be a sphere. Any other geometry will give unreliable and/or unpredictable results, although you are not prevented from doing so.

When using sCloud for non-color mapping, it becomes a solid fractal texture that has an added threshold depending on surface orientation.

As a surface curves into outline, the threshold is increased and added to the fractal, the result is clipped to 1.0. If this technique is used to transparency map ellipsoids (non-proportionally-scaled spherical patches), the results look like puffs or clouds. If the texture is applied to non-ellipsoidal shapes, the results will be of unreliable quality.

A series of nested ellipsoids ;can be used to simulate fiery smoke. Each ellipsoid is given a transparency map defined by sCloud. This procedure creates a fractal with a slope-dependent offset added to it. This leads to an opaque center and a ragged transparent edge. Each ellipsoid looks like a puff of smoke. The fire effect is achieved by making the ellipsoids have different optical properties. The outer ellipsoid is made gray and dim. The inner ellipsoids are made successively brighter and more orange.

Argument Name Absolute Range Useful Range Default Description
contrast -1, 1 -1, 1 1.0 Relative contrast for color1 and color2
colour1 (triple) 0, infinity 0, 255 60, 0, 0 First color
colour2 (triple) 0, infinity 0, 255 255,255,255 Second color
transparency_range 0, infinity 0, 1 0.5 Transition range for texture value
center_threshold -infinity, infinity -1, 0 0.0 Threshold value for face on surfaces.
edge_threshold -infinity, infinity 1.0, 2.0 1.0 Threshold value for outlines
soft_edges TRUE FALSE FALSE Makes the texture color blend to black as surface tilts away from eye. Good for flame effect when used with incandescence mapping on ellipsoids. The alpha channel always does this blending, regardless of this flag.
amplitude 0, infinity 0-100 1.0 Noise amplitude
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

"sCloud" is a solid texture.

Note: sCloud requires that the geometry being textured is a sphere. The sphere(s) may be transformed in any way, but the actual component(s) must be a sphere. Any other geometry will give unreliable and unpredictable results.

sFractal

sFractal is a solid fractal texture that returns a scalar value.

Argument Name Absolute Range Useful Range Default Description
threshold 0, 1 0, 1 0.0 Additive threshold
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " " " "
zripples 0, infinity 0, 100 1.0 " " " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
amplitude -infinity, infinity 0, 1 1.0 Scaling factor for noise before clipping
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

"sFractal" is a solid texture.

sRock

sRock is a simulation of particles suspended in a medium. "grain_size" represents the particle size. "diffusion" controls the amount of mixing between the particles and the medium. A diffusion of 0 will result in a sharp boundary between the particles and the medium. A diffusion of 1.0 will result in a complete blending. The variable "mix_ratio" controls the proportion of particles to medium. If it is 1.0, the color is entirely color1; if it is 0, the color is entirely color2. If sRock is applied as a bump map, then "mix_ratio" of 0.5 will result in even pits and bumps. If it is greater than 0.5, the surface will have discrete bumps. If it is less than 0.5, the surface will have discrete pits (depending on the parameterization of the surface).

If the surface is far enough from the eye that the grains become smaller than pixel resolution, the blur effect will cause the texture to become a single color. This is fine for color mapping, and helps to avoid aliasing problems. However, if sRock is applied as a bump map, the surface will appear to become smooth at large distances. A possible solution is to use an eccentric Blinn shader, which mimics the microfacets of the bump map. If you want a video snow effect, set the blur to 0.001 and the grain_size to 0.0001.

"sRock" is a solid texture.

Argument Name Absolute Range Useful Range Default Description
colour1 (triple) 0, infinity 0, 255 255,255,255 First color
colour2 (triple) 0, infinity 0, 255 60,0,0 Second color
contrast 0-1 0-1 1.0 Controls contrast between two colors
grain_size 0, infinity 0-0.1 0.01 Particle size
diffusion 0, infinity 0-1 1.0 Controls amount of mixing between particles and the medium
mix_ratio 0-1 0-1 1.0 Controls the proportion of particles to medium
transformation_name no default.

sMarble

Argument Name Absolute Range Useful Range Default Description
amplitude -infinity, infinity 0, 10 1.5 Amplitude of noise function
contrast -1, 1 -1, 1 0.5 Contrast at boundary between vein and filler
diffusion 0, infinity 0, 10 0.5 Degree of vein diffusion into filler material
vein_width 0, 1 0, 1 0.1 Thickness of vein material
filler_color (triple) 0, infinity 0, 255 255,255,255 Color of filler material
vein_color (triple) 0, infinity 0, 255 76, 0, 0 Color of filler material
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

"sMarble" is a solid texture.

Snow

The "Snow" texture varies the surface color based on the orientation of the surface. With the default settings, the snow color will appear on the top of the object and the surface color will appear on the bottom. The rate at which the snow color blends into the surface color is determined by the "depth_decay" parameter. The threshold determines the maximum slope that will hold snow. (Thicker snow is more opaque). The direction of the snow (determined by wind in the real world) may be set by rotating the texture placement icon, or in sdl by setting the "vector" parameter.

Fractal bump maps are useful in combination with snow because the snow follows the bumping. This creates realistic snow effects by simulating the clumping of snowflakes. Generally, the alpha mult and blur mult for the fractal bump map should be low for best results.

It is useful also to make snow a transparency map on a white shader that is then layered on other shaders in a scene. In this manner the snow can be applied to all the objects in a scene. This also allows the snow to have its own unique shading attributes. Note that the alpha mult should be -1.0 and the alpha offset should be 1.0 for the snow transparency map.

Argument Name Absolute Range Useful Range Default Description
snow_color 0, infinity 0,255 255,255,255 Color of snow
surface_color; 0, infinity 0,255 128, 0, 0 Color of surface
contrast 0, 1 0, 1 1.0 Contrast between surface and snow color
threshold 0, 1 0, 1 0.5 Max slope for snow
depth_decay 0, infinity 0, 10 5.0 Rate of transition between snow and surface color
thickness 0, 1 0, 1 1.0 This determines the opacity of the snow
vector_x -infinity, infinity -1, 1 0.0 up vector for snow
vector_y -infinity, infinity -1, 1 1.0
vector_z -infinity, infinity -1, 1 0.0
transformation_name no default.

sWood

Argument Name Absolute Range Useful Range Default Description
xmult -infinity, infinity -10, 10 1.0 Scaling factors for extent of pix file
ymult -infinity, infinity -10, 10 1.0 " " " "
xoffset -infinity, infinity -10, 10 0.0 Offsets for position of pix file
yoffset -infinity, infinity -10, 10 0.0 " " "
xamplitude -infinity, infinity 0, 10 0.1 Amplitude of noise function for x direction
yamplitude -infinity, infinity 0, 10 0.1 Amplitude of noise function for y direction
center_u -3,3 -3,3 0.5 Origin for growth of ring layers
center_v -3, 3 -3, 3 0.5 " " "
grain_contrast 0, 1 0, 1 1.0 Contrast between vein and wood color
grain_spacing 0, 1 0, 1 0.01 Spacing of grain dots
grain_color (triple) 0, infinity 0, 255 30, 10, 0 Color of the grain
filler_color (triple) 0, infinity 0, 255 210,160,120 Color of the filler part between rings
vein_color (triple) 0, infinity 0, 255 40, 20, 10 Color of the vein part of rings
vein_spread 0, infinity 0, 3 0.25 Diffusion of vein color into the rings
layer_size 0, infinity 0, 0.5 0.02 Mean spacing between rings
randomness 0, 1 0, 1 0.5 Degree of randomization of layers
age 0, infinity 0, 100 20.0 Time in years for ring layer thickness to reach maximum
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

"sWood" is a solid texture.

Volume

The Volume procedure allows the system to interpret multiple pix files in a sequence as a volume of pixels. When an object is assigned a shader with its color set to a volumetric texture, and "mapping" is set to "volumetric," the object will appear to cut through a cube formed by stacking the pix files up. X, Y, and Z on the surface are mapped to U,V, and pixfile number. The size of the cube is defined by the texture transform.

When used as a subtexture of the "Ball" texture, "mapping" should be set to "directional." In this case, the pix file sequence should be set to a sequence of ball images photographed from equal angles around the ball. The volume then maps U,V, View_Direction to U,V, Pixfile number.

Argument Name Absolute Range Useful Range Default Description
from 1-1024 1-1024 1 The extension number of the first pix file in the sequence of pix files that makes up the pixel volume
to 1-1024 1-1024 1 The extension number of the last pix file in the sequence of pix files that makes up the pixel volume.
pix_sequence --- --- --- The name of the first pix file of the sequence of pix files that make up the pixel volume.
mapping directional, volumetric directional, volumetric The method by which UV or XYZ parameters are mapped onto pixel values for the pixel volume.
xripples 0, infinity 0, 100 1.0 Fundamental frequencies for noise function
yripples 0, infinity 0, 100 1.0 " "
zripples 0, infinity 0, 100 1.0 " "
level_min 0, infinity 0, 50 0.0 Minimum allowed level of iteration
level_max 0, infinity 0, 50 20.0 Maximum allowed level of iteration
ratio 0, 1 0, 1 0.707 Ratio for fractal noise
transformation_name no default.

Environment maps

An environment map is a model of the world as seen from a particular point of view over a viewing angle of 360º. In the Alias System environment maps may be used for two things. For reflection mapping, the environment map is used to store a model of the world around a particular point inside or near a surface. This map is then used to compute the color of a ray reflected by that surface. In this way, convincing reflection effects may be produced.

The syntax for using an environment map to do reflections is as follows. In the DEFINITION section use the following statement as part of a texture on a shader:

	reflection = texture (procedure = name,
			arg 1 = value 1,
			arg 2 = value 2,
			etc. ...);

The second application of environment maps is to create backgrounds. Since an environment map stores a complete view of the world in all directions, any particular view may be computed efficiently. This will only be accurate if the environment map was created around the current eye point. There are several reasons to do this.

First, the environment may be procedural in nature and this is the only way to see it. The "sky" procedure is a good example of this case. Secondly, a scene may be largely static but also very expensive to render. In that case a fast method for animating the camera direction without re-rendering the scene for every frame would be desirable. Moving objects could then be rendered over the top. The "Cube" procedure would be ideal for this approach. The syntax for creating a background from an environment map is as follows. In the ENVIRONMENT section use:

	background = texture (procedure = name,
			arg 1 = value 1,
			arg 2 = value 2,
			etc. ...);

Environment Maps and Transformations

An environment map exists in an environment space coordinate system. The default for all environments in the Alias System is to have the environment space aligned with world space. Certain applications require the ability to rotate the environment map relative to world space. In particular, an object, lights and camera may be fixed relative to each other and the environment map tumbled. The syntax for this is identical to the coordinate transformations used with solid textures.

For example, consider a surface that is a ball being rendered with reflection mapping. It needs to have a transformation associated with it.

In the DEFINITION section the transformation must first be declared.

	transformation ball;

A subsequent shader will include a textured parameter with "transformation_name"

	reflection = texture (procedure = Chrome,
	transformation_name= ball),

In the MODEL section the statement

	ball = current_transformation ( );

will appear.

If it is located at the base of the hierarchy then the reflection map will be unaffected since the default is for the environment map to be aligned with world space anyway. However, if the assignment of the "current_transformation" to "ball" appears within a hierarchy, the environment map will rotate with the hierarchy. So, if the assignment occurs just before a patch statement the environment map will rotate with the patch. If a non-proportional scale is applied, the environment map will be stretched and distorted.

Note: It is important to note that Ball, Chrome, Cube, Sphere and Sky should not be used for bump or displacement mapping. The basic nature of environment mapping precludes accurate calculations. Although the system will allow it, you will be warned that the results will be unreliable and unpredictable.

Ball

The Ball procedure maps photographs of reflective balls into 3D environments.

This texture is designed primarily to accompany a pix file background. If you take a photograph at a desired location and camera view for a scene, a reflective sphere is then placed in the scene at the location where you wish to view your model. The photo of the ball is essentially a sample of the total environment. It contains a full 360 degree field of view, minus the portion directly behind the ball. The highest resolution is in the direction of the camera, therefore providing the best compression of data for that point of view.

The Ball procedure has optional planes and a finite sphere to assist in modeling the geometry of the environment. An eyespace toggle is provided to simplify placement when a background pix file is used. In addition, a reflection toggle can be used to help in advanced modeling of background geometry.

Argument Name Absolute Range Useful Range Default Description
image no default Name of pix file for reflection maps
inclination; -infinity, infinity -180, 180 0 Angle of camera with walls
elevation -infinity, infinity -90, -90 0 Angle of Camera with floor
eyespace ON OFF OFF When ON, the reflections will match the background pix, regardless of the camera location.
sky_radius 0, infinity 0, 50 0 Radius of intersection sphere
top 0, infinity 0, 50 0 Distance of intersection planes from origin
bottom 0, infinity 0, 50 0 Distance of intersection planes from origin
left 0, infinity 0, 50 0 Distance of intersection planes from origin
right 0, infinity 0, 50 0 Distance of intersection planes from origin
front 0, infinity 0, 50 0 Distance of intersection planes from origin
back 0, infinity 0, 50 0 Distance of intersection planes from origin
reflect ON OFF ON If set to OFF, ball behaves like a solid texture

Chrome

The Chrome texture creates a simple but effective environment to emit convincing reflections. The basic environment map consists of a ground plane and a sky plane. To add visual complexity to the scene, a series of rectangular lights are included in the sky. These lights are for visual effect only and do not act as light sources.

There is no blurring capability for the Chrome procedure, so aliasing artifacts may appear on reflective surfaces. These may be greatly reduced by having an aalevel of 4 and an aathreshold of 0 when rendering. An alternative is to use Chrome to create the faces for the Cube procedure.

Argument Name Absolute Range Useful Range Default Description
floor_color (triple) 0, infinity 0, 255 150,150,200 Color straight down as seen from front window
horizon_color (triple) 0, infinity 0, 255 0, 0, 0 Color just below the horizon
sky_color (triple) 0, infinity 0, 255 200,200,250 Color just above horizon
zenith_color (triple) 0, infinity 0, 255 100,100,250 Color straight up along +y
light_color (triple) 0, infinity 0, 255 250, 250, 250 Color of lights in the sky
light_width 0, infinity 0, 10 1.0 Number of lights per unit length along width
light_width_mult 0, 1.0 0, 1.0 1.0 Multiplier for light width
light_width_offset 0, 1.0 0, 1.0 1.0 Offset for light width
light_depth 0, infinity 0, 1.0 1.0 Number of lights per unit length along z
light_depth_mult 0, 1.0 0, 1.0 1.0 Multiplier for light depth
light_depth_offset 0, 1.0 0, 1.0 0.0 Offset for light depth
grid_color (triple) 0, infinity 0, 255 0, 0, 0 Grid line color
grid_width 0, infinity 0, 10 1.0 Number of grid cells per unit length along x
grid_width_mult 0, 1.0 0, 1.0 1.0 Multiplier for grid width
grid_width_offset 0, 1.0 0, 1.0 0.0 Offset for grid width
grid_depth 0, infinity 0, 10 1.0 Number of grid cells per unit length along z
grid_depth_mult 0, 1.0 0, 1.0 1.0 Multiplier for grid depth
grid_depth_offset 0, 1.0 0, 1.0 0.0 Offset for grid depth
real_floor TRUE FALSE 0, 1 0 Flag for presence of real vs angular floor
floor_altitude -infinity, infinity -100, 100 -1.0 Elevation of floor along the y-axis

"Chrome" is an environment texture.

Sphere

A Sphere environment texture uses a single image to store the intensity information for all possible directions. However, in order to create the spherical map, the system actually uses a square texture map. If you consider wrapping a square texture map onto a sphere, you will see an immediate problem; you can't wrap a whole square onto a sphere and have the side edges match without either shrinking the square image vertically or having a lot of overlap at the poles. This is because the texture map goes 360º around the sphere at the sides, but vertically it only covers the sphere from pole to pole, which is 180º. To overcome this problem, the middle half of the square texture map is used and the information of the top and bottom 1/4 of the map is discarded, as shown in the following illustration.

The best way to create a spherical environment map is to generate a ramp image and then paint objects onto it that avoid the poles and the edges.

Consider the case of the default transformation and an eye point on the positive x-axis looking at the origin. If the spherical environment map is used directly as a background, the edge join will be visible. However, if a surface is viewed that has been reflection mapped, the join will be behind the surface and hardly visible.

Also consider the resolution of spherical reflection maps and how crisp they will appear. The horizontal resolution corresponds to 360º. A 5122 image will have one pixel every 1/2º. Flat surfaces that are reflection mapped will appear as blurred indistinct reflections. Higher resolution images may be used, but they are difficult to paint and use a lot of memory. It is better to use rounded geometry instead.

Argument Name Absolute Range Useful Range Default Description
image no default Name of pix file for reflection maps
flip 0, 1 0 Flag to indicate whether to swap u, v
shear_v -infinity, infinity -5, 5 0.0 Change of u for change in v
shear_u -infinity, infinity -5, 5 0.0 Change of v for change in u
source_texture no default Texture to be used as the image

"Sphere" is an environment texture.

Cube

The procedure "Cube" is an environment map defined by six faces of a cube. These faces are just square texture images in the form of pix files. Each file corresponds to a perspective view with a field of view of 90º, with a view direction along the positive and negative x, y, z axes. These images can be painted or digitized. However, the real application of cubic reflection maps is using rendered images. It is possible to construct an environment map about a particular point in a scene merely by using a few lines of SDL.

For the origin point 0.0 0.0 0.0 use the following statements:

In the DEFINITION section:

	startframe = 1;
	endframe = 6;
	
	triple camera_view(0.0, 0.0, 0.0);

In the MODEL section use:

if (	frame == 1.0 ) camera_view = (1.0, 0.0, 0.0);
else if	(frame == 2.0 ) camera_view = (-1.0, 0.0, 0.0);
else if	(frame == 3.0 ) camera_view = (0.0, 1.0, 0.0);
else if	(frame == 4.0 ) camera_view = (0.0, -1.0, 0.0);
else if	(frame == 5.0 ) camera_view = (0.0, 0.0, -1.0);
else if	(frame == 6.0 ) camera_view = (0.0, 0.0, -1.0);
camera (eye = (0,0,0), view = camera_view, fov = 90,
	viewport = (0.0, 255.0, 0.0, 255.0),
	aspect = (1.0)
);

For further information on creating cubic environment maps, please refer to the Cubic Environment Tutorial.

"Cube" is an environment texture.

Cubic environment maps are very fast to reference so they are the preferred method for animation sequences. The same scene may render 3 or 4 times faster using a cubic reflection map in place of the Sky procedure. It is possible to use other environment maps to create cubic environment maps merely by rendering them as backgrounds. It is, of course, not worth doing if the environment such as Sky varies every frame. However, if the environment is static for many frames, the speed savings will be considerable.

Cubic environment maps have the advantage that they may be blurred by an arbitrarily large amount without any additional cost. When generating a background from an environment map the amount of blurring required to prevent aliasing increases with the field of view. In practice, with 5122 texture images and a field of view less than 90º this will result in very little required blurring. For reflection mapped surfaces, however, the amount of blurring will depend upon the surface curvature and the distance from the eye point. Currently, this is not computed automatically. However, the variable "bluroffset" will allow the user to defocus the reflections by a desired amount. In fact, soft focus reflections can be used to simulate less than perfectly polished surfaces.

Argument Name Absolute Range Useful Range Default Description
top no default Pix file name for top image
bottom no default Pix file name for bottom image
right no default Pix file name for right image
left no default Pix file name for left image
front no default Pix file name for front image
back no default Pix file name for back image

In y-up systems, these are relative to the view down the z-axis; in z-up systems, they are relative to the view down the y-axis.

Sky

The Sky procedure is an environment map that generates images of a planetary atmosphere as seen from the surface of the planet. Parameter sets enable you to control the composition of the atmosphere and the cloud layer. If no floor is specified, the environment below the horizon is a vertical mirror reflection of the environment above the horizon. If a floor is specified, it must be given an altitude and other variables to control the positioning of a color pix file texture map on the surface.

Argument Name Absolute Range Useful Range Default Description
floor_texture no default pix file name for floor texture 24 bits
cloud_texture no default Mask file name for cloud texture 8 bits
cloud_altitude 0, 1 0, 0.5 y coordinate of cloud layer as a fraction of sky_thickness (if Y-up)
space_samples 0, infinity 1, 10 5.0 # of samples above clouds
floor_samples 0, infinity 0, 3 1.0 # of samples in front of floor
cloud_samples 0, infinity 0, 3 5.0 #. of samples below clouds
air_density 0, infinity 0, 10 1.0 Density of air molecules
dust_density 0, infinity 0, 3 0.0 Density of dust particles
sun_azimuth -infinity, infinity 0, 360 145.0 Rotation of sun vector about vertical vector
sun_elevation -infinity, infinity -10, 90.0 45.0 Angle of elevation of sun vector relative to floor
sun_size 0, infinity 0, 30 0.531 Radius of sun's disc in degrees
sun_blur 0, infinity 0, 50 1.0 Radius of halo around sun in degrees
sun_halo_brightness (triple) 0, infinity 0, 1 0.2,0.3,0.2 Multiplicative color for halo around the sun
sky_brightness (triple) 0, infinity 0, 10 1.0, 1.0, 1.0 Multiplicative color for the sky
sun_brightness (triple) 0, infinity 0, 10 1.0, 1.0, 1.0 Multiplicative color for the sun
floor_altitude -infinity, infinity -100, 100 -1.0 y coordinate of the floor (if y-up)
cloud_density 0, infinity 0, 5 1.0 Density of the sky
cloud_radius 0, infinity 0, 50 20.0 Radius of halo around sun
cloud_width_mult -infinity, infinity -0.2, 0.2 0.1 Scaling factors for cloud map position on floor
cloud_depth_mult -infinity, infinity -0.2, 0.2 0.1 " " "
cloud_blurmult 0, infinity 0, 10 1.0 Scaling factor for cloud blur size
cloud_bluroffset 0, infinity 0, 1 0.0 Offset for cloud blur size
cloud_threshold 0, infinity 0, 1 0.5 Threshold for presence of clouds
cloud_brightness 0, infinity 0, 10 1.0, 1.0, 1.0 Multiplicative color for ambient cloud illumination
cloud_sunset_brightness 0, infinity 0, 500 300, 300, 300 Multiplicative color for front lighting
cloud_power 0, 1 0, 1 1.0 Exponent for cloud density falloff
floor_width_mult -infinity, infinity 0, 10 1.0 Scaling factors for color map position on floor
floor_depth_mult -infinity, infinity 0, 10 1.0 " " " "
floor_width_offset -infinity, infinity 0, 1 0.0 Offsets for color map position on floor
floor_depth_offset -infinity, infinity 0, 1 0.0 " " " "
floor_blurmult 0, infinity 0, 10 1.0 Scaling factor for floor blur size
floor_bluroffset 0, infinity 0, 1 0.0 Offset for floor blur size
floor_color (triple) 0, infinity 0, 255 255, 255, 255 Color of floor
sky_radius 0.01, infinity 0.01, 300 50.0 Radius of planet as a multiple of sky_thickness
sky_thickness 1, infinity 100, 10000 1000 Thickness of atmosphere
total_brightness 0, infinity 0, 10 1.0 Scales the overall brightness of environment
has_floor TRUE FALSE TRUE Flag setting whether or not a floor is used.

"Sky" is an environment texture.



Bookshelf Contents Previous Next Glossary Index Search

[email protected]
Copyright © 1998, Alias|Wavefront, a division of Silicon Graphics Limited. All rights reserved.