2.5 Textures
The texture statement is an object modifier which describes what the surface of an object looks like,
i.e. its material. Textures are combinations of pigments, normals, and finishes. Pigment is the color or pattern of
colors inherent in the material. Normal is a method of simulating various patterns of bumps, dents, ripples or waves
by modifying the surface normal vector. Finish describes the reflective properties of a material.
Note: that in previous versions of POV-Ray, the texture also contained information
about the interior of an object. This information has been moved to a separate object modifier called interior .
See "Interior" for details.
There are three basic kinds of textures: plain, patterned, and layered. A plain texture consists of a
single pigment, an optional normal, and a single finish. A patterned texture combines two or more textures
using a block pattern or blending function pattern. Patterned textures may be made quite complex by nesting patterns
within patterns. At the innermost levels however, they are made up from plain textures. A layered texture
consists of two or more semi-transparent textures layered on top of one another.
Note: although we call a plain texture plain it may be a very complex
texture with patterned pigments and normals. The term plain only means that it has a single pigment, normal,
and finish.
The syntax for texture is as follows:
TEXTURE:
PLAIN_TEXTURE | PATTERNED_TEXTURE | LAYERED_TEXTURE
PLAIN_TEXTURE:
texture
{
[TEXTURE_IDENTIFIER]
[PNF_IDENTIFIER...]
[PNF_ITEMS...]
}
PNF_IDENTIFIER:
PIGMENT_IDENTIFIER | NORMAL_IDENTIFIER | FINISH_IDENTIFIER
PNF_ITEMS:
PIGMENT | NORMAL | FINISH | TRANSFORMATION
LAYERED_TEXTURE:
NON_PATTERNED_TEXTURE...
PATTERNED_TEXTURE:
texture
{
[PATTERNED_TEXTURE_ID]
[TRANSFORMATIONS...]
} |
texture
{
PATTERN_TYPE
[TEXTURE_PATTERN_MODIFIERS...]
} |
texture
{
tiles TEXTURE tile2 TEXTURE
[TRANSFORMATIONS...]
} |
texture
{
material_map
{
BITMAP_TYPE "bitmap.ext"
[MATERIAL_MODS...] TEXTURE... [TRANSFORMATIONS...]
}
}
TEXTURE_PATTERN_MODIFIER:
PATTERN_MODIFIER | TEXTURE_LIST |
texture_map { TEXTURE_MAP_BODY }
In the PLAIN_TEXTURE, each of the items are optional but if they are present the TEXTURE_IDENTIFIER
must be first. If no texture identifier is given, then POV-Ray creates a copy of the default texture. See "The
#default Directive" for details.
Next are optional pigment, normal, and/or finish identifiers which fully override any pigment, normal and finish
already specified in the previous texture identifier or default texture. Typically this is used for backward
compatibility to allow things like: texture { MyPigment } where MyPigment is a pigment
identifier.
Finally we have optional pigment , normal or finish statements which modify
any pigment, normal and finish already specified in the identifier. If no texture identifier is specified the
pigment , normal and finish statements modify the current default values. This is the
typical plain texture:
texture {
pigment { MyPigment }
normal { MyNormal }
finish { MyFinish }
scale SoBig
rotate SoMuch
translate SoFar
}
The TRANSFORMATIONS may be interspersed between the pigment, normal and finish statements but are
generally specified last. If they are interspersed, then they modify only those parts of the texture already
specified. For example:
texture {
pigment { MyPigment }
scale SoBig //affects pigment only
normal { MyNormal }
rotate SoMuch //affects pigment and normal
finish { MyFinish }
translate SoFar //finish is never transformable no matter what.
//Therefore affects pigment and normal only
}
Texture identifiers may be declared to make scene files more readable and to parameterize scenes so that changing a
single declaration changes many values. An identifier is declared as follows.
TEXTURE_DECLARATION:
#declare IDENTIFIER = TEXTURE |
#local IDENTIFIER = TEXTURE
Where IDENTIFIER is the name of the identifier up to 40 characters long and TEXTURE is any valid texture
statement. See "#declare vs. #local" for information on
identifier scope.
The sections below describe all of the options available in "Pigment", "Normal", and
"Finish" which are the main part of plain textures.. There are also separate sections for "Patterned
Textures" and "Layered Textures" which are made up of
plain textures.
Note: the tiles and material_map
versions of patterned textures are obsolete and are only supported for backwards compatibility. Section
Contents
More about "Interior"
|