| 37 |
|
current color and current material. Initially, these contexts are |
| 38 |
|
unnamed, and have specific default values. The unnamed vertex is the |
| 39 |
|
origin. The unnamed color is neutral gray. The unnamed material is a |
| 40 |
< |
perfect absorber. The unnamed contexts may be modified, but those |
| 41 |
< |
modifications will not be saved. Thus, reestablishing an unnamed |
| 42 |
< |
context always gets its initial default value. To save a new context |
| 43 |
< |
or modify an old one, it must first be named. Entities associated with |
| 44 |
< |
named contexts (i.e. "v", "c" and "m") may be followed by an identifier |
| 45 |
< |
and an equals sign ('='), indicating a new context. If there is no |
| 46 |
< |
equals, then the context must already be defined, and the appearance of |
| 47 |
< |
the entity merely reestablishes this context. If the context id is |
| 48 |
< |
followed by an equals, then a new context is defined, destroying any |
| 49 |
< |
previous instance of that context name. Redefining or changing values |
| 50 |
< |
of a context does not affect earlier uses of the same name, however. |
| 51 |
< |
Contexts are always associated with a name id, which is any non-blank |
| 52 |
< |
sequence of printing ASCII characters. An optional template may be |
| 53 |
< |
given following the equals, which is a previously defined context to |
| 54 |
< |
use as a source of default values for this definition. If no template |
| 55 |
< |
is given, then the unnamed context of that type is used to set initial |
| 56 |
< |
values. Named contexts continue until the next context definition of |
| 57 |
< |
the same type. |
| 40 |
> |
perfect (two-sided) absorber. The unnamed contexts may be modified, |
| 41 |
> |
but those modifications will not be saved. Thus, reestablishing an |
| 42 |
> |
unnamed context always gets its initial default value. To save a new |
| 43 |
> |
context or modify an old one, it must first be named. Entities |
| 44 |
> |
associated with named contexts (i.e. "v", "c" and "m") may be followed |
| 45 |
> |
by an identifier and an equals sign ('='), indicating a new context. |
| 46 |
> |
If there is no equals, then the context must already be defined, and |
| 47 |
> |
the appearance of the entity merely reestablishes this context. If the |
| 48 |
> |
context id is followed by an equals, then a new context is defined, |
| 49 |
> |
destroying any previous instance of that context name. Redefining or |
| 50 |
> |
changing values of a context does not affect earlier uses of the same |
| 51 |
> |
name, however. Contexts are always associated with a name id, which is |
| 52 |
> |
any non-blank sequence of printing ASCII characters. An optional |
| 53 |
> |
template may be given following the equals, which is a previously |
| 54 |
> |
defined context to use as a source of default values for this |
| 55 |
> |
definition. If no template is given, then the unnamed context of that |
| 56 |
> |
type is used to set initial values. Named contexts continue until the |
| 57 |
> |
next context definition of the same type. |
| 58 |
|
|
| 59 |
|
Hierarchical Contexts |
| 60 |
|
===================== |
| 85 |
|
cspec l_min l_max v1 v2 .. set relative spectrum for current color |
| 86 |
|
cmix w1 c1 w2 c2 .. mix named colors to make current color |
| 87 |
|
m [id [= [template]]] get/set material context |
| 88 |
+ |
sides {1|2} set number of sides for current material |
| 89 |
|
rd rho_d set diffuse reflectance for current material |
| 90 |
|
td tau_d set diffuse transmittance for current material |
| 91 |
|
ed epsilon_d set diffuse emittance for current material |
| 107 |
|
-------- -------- |
| 108 |
|
p, n vertex |
| 109 |
|
cxy, cspec, cmix color |
| 110 |
+ |
sides material |
| 111 |
|
rd, td, ed, rs, ts color, material |
| 112 |
|
f, sph, cyl, cone, ring, torus, prism material, object, transformation |
| 113 |
|
|
| 144 |
|
That is, with the thumb of the right hand pointing in the direction |
| 145 |
|
of the axis, rotation follows the curl of the fingers. |
| 146 |
|
|
| 147 |
< |
The transform command itself is also cumulative, and a transform |
| 148 |
< |
command with no arguments is used to return to the previous |
| 149 |
< |
condition. It is best if transforms and their end statements |
| 150 |
< |
("xf" by itself) are balanced in a file, so that later or enclosing |
| 151 |
< |
files are not affected. |
| 147 |
> |
The transform command itself is also cumulative, but in the reverse |
| 148 |
> |
order. That is, later transformations (i.e. enclosed transformations) |
| 149 |
> |
are prepended to existing (i.e. enclosing) ones. A transform command |
| 150 |
> |
with no arguments is used to return to the previous condition. It is |
| 151 |
> |
necessary that transforms and their end statements ("xf" by itself) be |
| 152 |
> |
balanced in a file, so that later or enclosing files are not affected. |
| 153 |
|
|
| 154 |
|
Transformations apply only to geometric types, e.g. polygons, spheres, etc. |
| 155 |
|
Vertices and the components that go into geometry are not directly affected. |
| 160 |
|
====== |
| 161 |
|
The -a N transform specification causes the following transform |
| 162 |
|
arguments to be repeated along with the contents of the included |
| 163 |
< |
file N times. (Note that this option is supported only for included |
| 164 |
< |
files.) The first instance of the geometry will be in its initial |
| 165 |
< |
location; the second instance will be repositioned according to the |
| 163 |
< |
named transformation; the third instance will be repositioned by |
| 163 |
> |
objects N times. The first instance of the geometry will be in its |
| 164 |
> |
initial location; the second instance will be repositioned according |
| 165 |
> |
to the named transformation; the third instance will be repositioned by |
| 166 |
|
applying this transformation twice, and so on up to N-1 applications. |
| 167 |
|
|
| 168 |
|
Multi-dimensional arrays may be specified with a single include |
| 239 |
|
to group the following surfaces up until an empty object statement |
| 240 |
|
under a descriptive name for improved file readability. |
| 241 |
|
|
| 242 |
< |
Surfaces are one-sided, and appear invisible when viewed from the |
| 243 |
< |
back side. This means that a transmitting object will affect the |
| 244 |
< |
light coming in through the front surface and ignore the characteristics |
| 245 |
< |
of the back surface. As long as the characteristics are the same, |
| 246 |
< |
the results should be correct. If the rendering technique does not |
| 247 |
< |
allow for one-sided surfaces, an approximately correct result can |
| 248 |
< |
be obtained for transmitting surfaces by using the square root of |
| 249 |
< |
the given tau_s and half the given alpha_t. |
| 242 |
> |
Surfaces are two-sided unless the "sides" entity is used to set the |
| 243 |
> |
number of sides for a material to one. If a surfaces is one-sided, |
| 244 |
> |
then it appears invisible when viewed from the back side. This means |
| 245 |
> |
that a transmitting object will affect the light coming in through the |
| 246 |
> |
front surface and ignore the characteristics of the back surface. As |
| 247 |
> |
long as the characteristics are the same, the results should be |
| 248 |
> |
correct. If the rendering technique does not allow for one-sided |
| 249 |
> |
surfaces, an approximately correct result can be obtained for one-sided |
| 250 |
> |
transmitting surfaces by using the square root of the given tau_s and |
| 251 |
> |
half the given alpha_t. If a rendering technique does not permit |
| 252 |
> |
two-sided surfaces, then each surface must be made into two for |
| 253 |
> |
full compliance if "sides" is set to 2 (the default). |
| 254 |
|
|
| 255 |
|
The surface normal of a face is oriented by the right-hand rule. |
| 256 |
|
Specifically, the surface normal faces towards the viewer when the |