POVRAY nimmt im Standardfall glatte Oberflächen an. Das bedeutet zum Beispiel,
daß die Flächennormale (der Vektor, der senkrecht auf der Fläche steht)
beim plane an jedem Punkt identisch ist. Bei der Kugel wird
beispielsweise angenommen, daß die Flächennormale der Vektor ist, der vom Kugelmittelpunkt
zum betrachteten Punkt zeigt. Sollen diese Standardannahmen geändert werden, so
bietet POVRAY durch die normal - Klausel viele Möglichkeiten
an, die Flächennormale zu beeinflussen.
Durch bumps wird zur Flächennormale ein Vektor addiert, der
sich über die Fläche verteilt stufenweise ändert. Dadurch entsteht der
Eindruck einer zerbeulten Oberfläche. Man beachte aber, daß die Flächennormale
nur die Reaktion der Oberfläche auf das einfallende Licht beeinflußt. Der
Körper selbst bleibt unberührt. Betrachtet man im nachfolgenden Bild den
Rand der Kugel, so wird man einen exakten (und keinen zerbeulten) Kreis
erkennen:
/* ............ */
plane {<0, 1, 0>, -1.2
texture {
pigment {
checker color rgb <0, 0, 1>
color rgb <0.6, 0.6, 0.6>
}
scale 0.6
}
}
sphere {<0, 0, 0>, 1
texture {
pigment {
color rgb <1, 0, 0>
}
normal {
bumps 0.7
scale 0.1
}
finish {
phong 0.9
}
}
}
| ![]() |
Durch die filter - Klausel kann ein Körper mehr oder minder
durchsichtig gemacht werden. Alternativ kann die Farbangabe statt durch rgb auch
durch rgbf gegeben werden. Diese hat 4 Parameter, wobei der vierte
den Filterwert angibt. Je größer dieser ist, umso durchsichtiger ist der
Körper:
/* ............. */
plane {<0, 1, 0>, -1.2
texture {
pigment {
checker color rgb <0, 0, 1>
color rgb <0.6, 0.6, 0.6>
}
scale 0.6
}
}
sphere {<0, 0, 0>, 1
texture {
pigment {
color rgbf <1, 1, 1, 1>
}
normal {
bumps 0.7
scale 0.1
}
finish {
phong 0.9
}
}
}
| ![]() |
Das sieht deshalb nicht wie eine Glaskugel aus, weil diese das Licht nicht
so unberührt durch sich hindurch lassen, sondern brechen würde.
Die Lichtbrechung wird durch die refraction - Klausel
eingeschaltet. Die ior - Klausel (Index Of Refraction) gibt
den Brechungsindex an. Dieser bestimmt, um wieviel langsamer sich das Licht
im Körper bewegen soll:
/* ............ */
plane {<0, 1, 0>, -1.2
texture {
pigment {
checker color rgb <0, 0, 1>
color rgb <0.6, 0.6, 0.6>
}
scale 0.6
}
}
sphere {<0, 0, 0>, 1
texture {
pigment {
color rgbf <1, 1, 1, 1>
}
normal {
bumps 0.7
scale 0.1
}
finish {
phong 0.9
refraction 1
ior 1.05
}
}
}
| ![]() |
Eine interessante Modifikation der Flächenormalen produziert die wave -
Klausel. Sie verändert die Flächenormale so, daß sie für Punkte gleichen Abstands
von der Y-Achse stets den gleichen Wert hat. Dadurch entsteht der Eindruck von
Wellen, deren Frequenz (und Phase) konfigurierbar sind:
/* ............ */
plane {<0, 1, 0>, -1.2
texture {
pigment {
color rgb <0, 0, 1>
}
normal {
waves 0.8
frequency 3
}
}
}
sphere {<0, -1, 0>, 1
texture {
pigment {
color rgb <1, 0, 0>
}
finish {
phong 0.9
}
}
}
| ![]() |