The finish properties of a surface can greatly affect its appearance. How does light reflect? What happens in
shadows? What kind of highlights are visible. To answer these questions you need a finish .
The syntax for finish is as follows:
FINISH:
finish { [FINISH_IDENTIFIER] [FINISH_ITEMS...] }
FINISH_ITEMS:
ambient COLOR | diffuse Amount | brilliance Amount |
phong Amount | phong_size Amount | specular Amount |
roughness Amount | metallic [Amount] | reflection COLOR |
crand Amount | conserve_energy BOOL_ON_OF |
reflection { Color_Reflecting_Min [REFLECTION_ITEMS...] }|
irid { Irid_Amount [IRID_ITEMS...] }
REFLECTION_ITEMS:
COLOR_REFLECTION_MAX | fresnel BOOL_ON_OFF |
falloff FLOAT_FALLOFF | exponent FLOAT_EXPONENT |
metallic FLOAT_METALLIC
IRID_ITEMS:
thickness Amount | turbulence Amount
The FINISH_IDENTIFIER is optional but should proceed all other items. Any items after the FINISH_IDENTIFIER
modify or override settings given in the FINISH_IDENTIFIER. If no identifier is specified then the items
modify the finish values in the current default texture.
Note: transformations are not allowed inside a finish because finish items cover the
entire surface uniformly. Each of the FINISH_ITEMS listed above is described in sub-sections below.
In earlier versions of POV-Ray, the refraction , ior , and caustics keywords
were part of the finish statement but they are now part of the interior statement. They are
still supported under finish for backward compatibility but the results may not be 100% identical to
previous versions. See "Why are Interior and Media Necessary?"
for details.
A finish statement is part of a texture specification. However it can be tedious to use a texture
statement just to add a highlights or other lighting properties to an object. Therefore you may attach a finish
directly to an object without explicitly specifying that it as part of a texture. For example instead of this:
object { My_Object texture { finish { phong 0.5 } } }
you may shorten it to:
object { My_Object finish { phong 0.5 } }
Doing so creates an entire texture structure with default pigment and normal
statements just as if you had explicitly typed the full texture {...} around it.
Finish 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.
FINISH_DECLARATION:
#declare IDENTIFIER = FINISH |
#local IDENTIFIER = FINISH
Where IDENTIFIER is the name of the identifier up to 40 characters long and FINISH is any valid finish
statement. See "#declare vs. #local" for information on
identifier scope.
|