Section 7.6.7.13
Mandel

The mandel pattern computes the standard Mandelbrot fractal pattern and projects it onto the x-y-plane. It uses the x and y coordinates to compute the Mandelbrot set. The pattern is specified with the keyword mandel followed by an integer number. This number is the maximum number of iterations to be used to compute the set. Typical values range from 10 up to 256 but any positive integer may be used. For example:

pigment { mandel 25 color_map { [0.0 color Cyan] [0.3 color Yellow] [0.6 color Magenta] [1.0 color Cyan] } scale .5 }

The value passed to the color map is computed by the formula:

value = number_of_iterations / max_iterations

When used as a normal pattern, the syntax is...

normal { mandel ITER, BUMP_AMOUNT }

where the required integer ITER value is optionally followed by a float bump size.

The pattern extends infinitely in the z-direction similar to a planar image map. The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.14
Marble

The marble pattern is very similar to the gradient x pattern. The gradient pattern uses a default ramp_wave wave type which means it uses colors from the color map from 0.0 up to 1.0 at location x=1 but then jumps back to the first color for x > 1 and repeats the pattern again and again. However the marble pattern uses the triangle_wave wave type in which it uses the color map from 0 to 1 but then it reverses the map and blends from 1 back to zero. For example:

pigment { gradient x color_map { [0.0 color Yellow] [1.0 color Cyan] } }

This blends from yellow to cyan and then it abruptly changes back to yellow and repeats. However replacing gradient x with marble smoothly blends from yellow to cyan as the x coordinate goes from 0.0 to 0.5 and then smoothly blends back from cyan to yellow by x=1.0.

Earlier versions of POV-Ray did not allow you to change wave types. Now that wave types can be changed for most any pattern, the distinction between marble and gradient x is only a matter of default wave types.

When used with turbulence and an appropriate color map, this pattern looks like veins of color of real marble, jade or other types of stone. By default, marble has no turbulence.

The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.15
Onion

Onion is a pattern of concentric spheres like the layers of an onion. Each layer is one unit thick.

The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.16
Quilted

The quilted pattern was originally designed only to be used as a normal pattern. The quilted pattern is so named because it can create a pattern somewhat like a quilt or a tiled surface. The squares are actually 3-D cubes that are 1 unit in size.

When used as a normal pattern it uses a specialized normal perturbation function. This means that the quilted pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.

When used as a pigment pattern or texture pattern, the quilted pattern is similar to normal quilted but is not identical as are most normals when compared to pigments. When used in pigment or texture statements the quilted pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map and texture_map .

The two parameters control0 and control1 are used to adjust the curvature of the seam or gouge area between the quilts . The syntax is:

normal { quilted AMOUNT control0 C0 control1 C1 }

The values should generally be kept to around the 0.0 to 1.0 range. The default value is 1.0 if none is specified. Think of this gouge between the tiles in cross-section as a sloped line.


Quilted pattern with c0=0 and different values for c1.


Quilted pattern with c0=0.33 and different values for c1.


Quilted pattern with c0=0.67 and different values for c1.


Quilted pattern with c0=1 and different values for c1.

This straight slope can be made to curve by adjusting the two control values. The control values adjust the slope at the top and bottom of the curve. A control values of 0 at both ends will give a linear slope, as shown above, yielding a hard edge. A control value of 1 at both ends will give an "s" shaped curve, resulting in a softer, more rounded edge.


Section 7.6.7.17
Radial

The radial pattern is a radial blend that wraps around the +y-axis. The color for value 0.0 starts at the +x-direction and wraps the color map around from east to west with 0.25 in the -z-direction, 0.5 in -x, 0.75 at +z and back to 1.0 at +x. Typically the pattern is used with a frequency modifier to create multiple bands that radiate from the y-axis.

The pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.18
Ripples

The ripples pattern was originally designed only to be used as a normal pattern. It makes the surface look like ripples of water. The ripples radiate from 10 random locations inside the unit cube area <0,0,0> to <1,1,1>. Scale the pattern to make the centers closer or farther apart.

Usually the ripples from any given center are about 1 unit apart. The frequency keyword changes the spacing between ripples. The phase keyword can be used to move the ripples outwards for realistic animation.

The number of ripple centers can be changed with the global parameter global_settings {number_of_waves FLOAT } somewhere in the scene. This affects the entire scene. You cannot change the number of wave centers on individual patterns. See "Number_Of_Waves" for details.

When used as a normal pattern, ripples uses a specialized normal perturbation function. This means that the ripples pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.

When used in pigment or texture statements the ripples pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map and texture_map .


Section 7.6.7.19
Spiral1

The spiral1 pattern creates a spiral that winds around the y-axis similar to a screw. Its syntax is:

pigment { spiral1 NUMBER_OF_ARMS }

The NUMBER_OF_ARMS value determins how may arms are winding around the y-axis.

The pattern uses the triangle_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.20
Spiral2

The spiral2 pattern is a modification of the spiral1 pattern with an extraordinary look.

The pattern uses the triangle_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.21
Spotted

The spotted pattern is identical to the bozo pattern. Early versions of POV-Ray did not allow turbulence to be used with spotted. Now that any pattern can use turbulence there is no difference between bozo and spotted. See "Bozo" for details.

Section 7.6.7.22
Waves

The waves pattern was originally designed only to be used as a normal pattern. The waves pattern looks similar to the ripples pattern except the features are rounder and broader. The effect is to make waves that look more like deep ocean waves. The waves radiate from ten random locations inside the unit cube area <0,0,0> to <1,1,1>. Scale the pattern to make the centers closer or farther apart.

Usually the waves from any given center are about 1 unit apart. The frequency keyword changes the spacing between waves. The phase keyword can be used to move the waves outwards for realistic animation.

The number of ripple centers can be changed with the global parameter global_settings {number_of_waves FLOAT } somewhere in the scene. This affects the entire scene. You cannot change the number of wave centers on individual patterns. See "Number_Of_Waves" for details.

When used as a normal pattern, waves uses a specialized normal perturbation function. This means that the waves pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.

When used in pigment or texture statements the waves pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map and texture_map .


Section 7.6.7.23
Wood

The wood pattern consists of concentric cylinders centered on the z-axis. When appropriately colored, the bands look like the growth rings and veins in real wood. Small amounts of turbulence should be added to make it look more realistic. By default, wood has no turbulence.

Unlike most patterns, the wood pattern uses the triangle_wave wave type by default. This means that like marble, wood uses color map values 0.0 to 1.0 then repeats the colors in reverse order from 1.0 to 0.0. However you may use any wave type. The pattern may be used with color_map , pigment_map , normal_map , slope_map and texture_map .


Section 7.6.7.24
Wrinkles

The wrinkles pattern was originally designed only to be used as a normal pattern. It uses a 1/f noise pattern similar to granite but the features in wrinkles are sharper. The pattern can be used to simulate wrinkled cellophane or foil. It also makes an excellent stucco texture.

When used as a normal pattern it uses a specialized normal perturbation function. This means that the wrinkles pattern cannot be used with normal map, slope map or wave type modifiers in a normal statement.

When used as a pigment pattern or texture pattern, the wrinkles pattern is similar to normal wrinkles but is not identical as are most normals when compared to pigments. When used in pigment or texture statements the wrinkles pattern uses the ramp_wave wave type by default but may use any wave type. The pattern may be used with color_map , pigment_map and texture_map .


Section 7.6.8
Pattern Modifiers

Pattern modifiers are statements or parameters which modify how a pattern is evaluated or tells what to do with the pattern. The modifiers color_map and pigment_map apply only to pigments. See section "Pigment" . The modifiers bump_size , slope_map and normal_map apply only to normals. See section "Normal" . The texture_map modifier can only be used with textures. See section "Texture Maps" .

The pattern modifiers in the following section can be used with pigment, normal or texture patterns.


Section 7.6.8.1
Transforming Patterns

The most common pattern modifiers are the transformation modifiers translate , rotate , scale and matrix . For details on these commands see "Transformations" .

These modifiers may be placed inside pigment, normal and texture statements to change the position, size and orientation of the patterns.

In general the order of transformations relative to other pattern modifiers such as turbulence , color_map and other maps is not important. For example scaling before or after turbulence makes no difference. The turbulence is done first, then the scaling regardless of which is specified first. However the order in which transformations are performed relative to warp statements is important. See "Warps" for details.


Section 7.6.8.2
Frequency and Phase

The frequency and phase modifiers act as a type of scale and translate modifiers for color_map , pigment_map , normal_map , slope_map and texture_map . This discussion uses a color map as an example but the same principles apply to pigment maps, normal maps, slope maps and texture maps.

The frequency keyword adjusts the number of times that a color map repeats over one cycle of a pattern. For example gradient covers color map values 0 to 1 over the range from x=0 to x=1. By adding frequency 2.0 the color map repeats twice over that same range. The same effect can be achieved using scale 0.5*x so the frequency keyword isn't that useful for patterns like gradient.

However the radial pattern wraps the color map around the +y-axis once. If you wanted two copies of the map (or 3 or 10 or 100) you'd have to build a bigger map. Adding frequency 2.0 causes the color map to be used twice per revolution. Try this:

pigment { radial color_map{[0.5 color Red][0.5 color White]} frequency 6 }

The result is six sets of red and white radial stripes evenly spaced around the object.

The float after frequency can be any value. Values greater than 1.0 causes more than one copy of the map to be used. Values from 0.0 to 1.0 cause a fraction of the map to be used. Negative values reverses the map.

The phase value causes the map entries to be shifted so that the map starts and ends at a different place. In the example above if you render successive frames at phase 0 then phase 0.1, phase 0.2 etc you could create an animation that rotates the stripes. The same effect can be easily achieved by rotating the radial pigment using rotate y*Angle but there are other uses where phase can be handy.

Sometimes you create a great looking gradient or wood color map but you want the grain slightly adjusted in or out. You could re-order the color map entries but that's a pain. A phase adjustment will shift everything but keep the same scale. Try animating a mandel pigment for a color palette rotation effect.

Frequency and phase have no effect on block patterns checker, brick and hexagon nor do they effect image maps, bump maps or material maps. They also have no effect in normal statements when used with bumps, dents, quilted or wrinkles because these normal patterns cannot use normal_map or slope_map .

They can be used with normal patterns ripples and waves even though these two patterns cannot use normal_map or slope_map either. When used with ripples or waves, frequency adjusts the space between features and phase can be adjusted from 0.0 to 1.0 to cause the ripple or waves to move relative to their center for animating the features.

These values work by applying the following formula

NEW_VALUE = fmod ( OLD_VALUE * FREQUENCY + PHASE, 1.0 ).

Section 7.6.8.3
Waveform

Most patterns that take color_map , pigment_map , slope_map , normal_map or texture_map use the entries in the map in order from 0.0 to 1.0. The wood and marble patterns use the map from 0.0 to 1.0 and then reverses it and runs it from 1.0 to 0.0. The difference can easily be seen when these patterns are used as normal patterns with no maps.

Patterns such as gradient or onion generate a grove or slot that looks like a ramp that drops off sharply. This is called a ramp_wave wave type. However wood and marble slope upwards to a peak, then slope down again in a triangle_wave . In previous versions of POV-Ray there was no way to change the wave types. You could simulate a triangle wave on a ramp wave pattern by duplicating the map entries in reverse, however there was no way to use a ramp wave on wood or marble.

Now any pattern that takes a map can have the default wave type overridden. For example:

pigment { wood color_map { MyMap } ramp_wave }

Also available are sine_wave and scallop_wave types. These types are of most use in normal patterns as a type of built-in slope map. The sine_wave takes the zig-zag of a ramp wave and turns it into a gentle rolling wave with smooth transitions. The scallop_wave uses the absolute value of the sine wave which looks like corduroy when scaled small or like a stack of cylinders when scaled larger.

Although any of these wave types can be used for pigments, normals or textures, the sine_wave and scallop_wave types are not as noticeable on pigments or textures as they are for normals.

Wave types have no effect on block patterns checker, brick and hexagon nor do they effect image maps, bump maps or material maps. They also have no effect in normal statements when used with bumps, dents, quilted or wrinkles because these normal patterns cannot use normal_map or slope_map .


Next Section
Table Of Contents