Oberflächen

Nachdem ein Objekt in seinen Dimensionen definiert wurde muß noch die Oberfläche definiert werden. Ist das nicht geschehen, so ist das Objekt unsichtbar. Die drei wichtigsten Schlüsselwörter sind:

"pigment"
"normal"
"finish"

Na klar, es gibt da noch mehr! Der POV RAY Freak wird hier und im Laufe dieser Seite einiges vermissen! Jedoch soll diese Seite für den Einsteiger geeignet sein und für User die nur mal eben ein Logo oder ein Schalter für eine Website entwerfen wollen. Daher verweise ich hier auf die aktuelle POV Ray Dokumentation. Im Abschnitt 7.6 wird dort so ziemlich alles was möglich ist beschrieben.

Hier also nur das Wesentliche für den "täglichen Gebrauch".
Im Abschnitt "pigment" wird die Farbe bzw. werden die Farben des Objektes definiert. Eine einfache einfarbige Oberfläche kann auf drei Arten erzeugt werden:

1. als rgb Wert: color rgb <1,0,0>
2. als rgb Wert: color red 1.0 green 0 blue 0
3. als vordefinierter Name (#include "colors.inc" ist notwendig): color Red

Werden mehrfarbige Oberflächen gewünscht, so gibt es mehrere Möglichkeiten, diese Farben anzuordnen:

Mit "pigment { brick Red, Blue }" würden die Farben Rot und Blau so angeordnet, das eine Struktur aus Blauen Steinen mit Roten Mörtel entsteht.

Wird "pigment { checker Red, Blue }" verwendet, so gibt es ein Kachelmuster.

Bei "pigment { hexagon Red, Blue, Yellow }" wird ein Kachelmuster aus sechseckigen Kacheln erzeugt.

Mit dem Wort "color_map" läßt sich ein Farbverlauf realisieren. So würde z.B.
"pigment { gradient z color_map { [0 Red] [.5 Yellow] [1 Blue] } }"
einen Farbverlauf in Z-Richtung ergeben. Schöne Effekte lassen sich erzielen, wenn diese "color_map" nun noch mit einem MODIFIER versehen werden. Am folgenden Beispiel kann man sehen, was passiert, wenn eine starke "turbulence" hinzugefügt wird:

sphere { <0,0,0>,3
pigment { gradient z
color_map { [0 Red] [.5 Yellow] [1 Blue] }
turbulence 1 }
finish { ambient .3 } }




Wem das alles noch zu wenig ist, der kann nun ein Bild als Oberfläche verwenden. Mit dem Wort "image_map" kann jedes Bild, daß in den Formaten gif, tga, iff, ppm, pgm, png oder bmp (bei Windows) vorliegt als Oberfläche verwendet werden. Der Syntax hierzu ist, z.B. bei einem gif File: (Der Modifier "scale" ist bei Bildern in der Regel unerläßlich.)
pigment { image_map { gif "NAME.gif" } scale <3,3,0>}


Im Teil "normal" wird definiert wie sich die auftreffenden Lichtstrahlen verhalten sollen. Mathematisch ist es sehr schwierig z.B. Oberflächen zu erzeugen, die wie Wellen gekräuselt sind oder lauter kleine Beulen haben. Daher wird mit "normal" eine nicht vorhandene Struktur simuliert. An jedem Punkt der Oberfläche wird eine Normale definiert, die das Licht ablenkt, als wenn eine verformte Oberfläche vorliege. Zu Beginn ein kleines Beispiel:

sphere { <0,0,0>,3
pigment { color Red }
normal { bumps 1 }
finish { ambient .4 } no_shadow }

Die rote Kugel sieht ziemlich verbeult aus. Ist sie aber nicht! an der Außenfläche kann man erkennen, daß die Kugel absolut rund ist! Lediglich die Oberfläche ist als verbeult simuliert. Die Option "no_shadow" muß hier verwendet werden, da sonst anhand des kreisrunden Schattenringes auf der Kugel der Bluff auffällt.

Selbstverständlich kann man auch mehrere Normale überlagern. Dazu einfach noch ein Teil mit "normal { ... }" angefügt. Jedoch wird das Ergebnis nur schwer zu beeinflussen sein. daher gibt es die Möglichkeit eine "normal_map" zu verwenden. Dabei sprengt dies aber hier den Rahmen so enorm, das ich hier wieder auf die POV Ray Doku verweisen muß.

Zu guter letzt sollte eine Oberfläche noch etwas mehr natürliches Aussehen erhalten. Dieses wird mit dem Teil "finish" ermöglicht.

Im Teil "finish" können folgende Schlüsselwörter Gebrauch finden:

ambient
diffuse
reflection
refraction
ior
specular
roughness
phong
phong_size

Mit "ambient" wird die Stärke des Umgebungslichtes definiert. Ist ambient 0.0 so erscheinen Schatten als vollkommen schwarze Bereiche. Ambient muß für jedes Objekt extra angegeben werden. Außerdem muß mit "global_settings { ambient_light color FARBE }" die Farbe des Umgebungslichtes definiert sein.

Durch "diffuse" wird definiert, wieviel Licht einer Lichtquelle, vom Objekt zurückgeworfen wird. Wenn "diffuse" 0.0 ist, und kein "ambient" definiert ist, so ist das Objekt schwarz!

Der Wert von "reflection" gibt an wie verspiegelt die Oberfläche ist. Ein Wert von 1 stellt einen Perfekten Spiegel dar.

Möchte man einen ganz oder teilweise durchsichtigen Körper haben, so kann mit "refraction on" eine Lichtbrechung aktiviert werden. hierzu gehört selbstverständlich immer ein Brechungsindex "ior".

Die meisten Objekte zeigen bei Beleuchtung einen Lichtpunkt auf ihrer Oberfläche. Eine solcher Lichtreflex kann auf zweierlei weise realisiert werden. Die einfachere ist der "phong" alleine oder in Verbindung mit "phong_size". Eine etwas realistischere Darstellung wird aber mit einer geschickten Kompination aus "specular" und "roughnes" erreicht.
Welche Werte für Ihr Objekt ideal ist, muß man mit versuchen herausfinden. Gute Startwerte sind: phong 0.9 phong_size 60 bzw. specular 0.9 roughness 0.05


Zum Abschluß noch ein Beispiel:

Wasserball plane { <0,1,0>,-1.5 pigment {color SeaGreen } normal { bumps 1 } }

sphere { <0,0,0>,2
pigment { radial
color_map{[0.5 color Red filter .1][0.5 color White filter .7]}
frequency 10 }
finish { specular 0.9 roughness 0.05 ambient .4}
rotate <60,40,0> no_shadow }