"Endlich", werden viele von Ihnen sagen! Ab sofort veröffentlichen wir regelmäßig unseren Kurs zum POV-Raytracer. Als Beispiel wurde das Komplettpaket des FALKE- Verlages gewählt, doch der Kurs läßt sich grundsätzlich auch für alle anderen POV- Pakete verwenden.
"Wie wurde das bloß erstellt?" haben sich sicherlich schon einige gefragt, als sie ihr erstes Raytracing Bild sahen, fasziniert von den geometrisch genauen Figuren, den realistischen Lichtverhältnissen, Farben und Spiegelungen. möchte man es selbst einmal versuchen, kommt man mit "normalen" zweidimensionalen Zeichenprogrammen wohl kaum an die Qualität eines Raytracing-Bildes heran. Dass man aber trotzdem keine sündhaft teure Software benötigt, um fotorealistische künstliche Welten auf dem Bildschirm zu erschaffen, zeigt der POV Raytracer auf eindrucksvolle Weise. Im Verlauf diese Kurses sollen auch Sie mit der Bedienung des Raytracers und mit dem Erstellen kompletter Szenen vertraut werden.
In der realen Welt werden Lichtstrahlen von einer Lichtquelle ausgesandt, die dann von Gegenständen unterschiedlich reflektiert werden. Ein Teil davon gelangt in unser Auge und wir können das Objekt sehen. Das Prinzip verläuft hier von der Lichtquelle über das Objekt zum Auge. Ein Raytracer arbeitet dieses Prinzip andersherum ab, da viele ausgesendete Lichtstrahlen Überhaupt nicht das Objekt und das Auge des Betrachters erreichen, und die Berechnung eines einzelnen Strahls sehr rechenaufwendig ist. Der Raytracer verfolgt die Strahlen vom Betrachter aus über die Objekte zur Lichtquelle. Dies ist erheblich schneller möglich, da jetzt nur noch der Bereich berechnet wird, der auch tatsächlich auf dem Bildschirm zu sehen ist.
Viele Raytracer bestehen aus einem Objekteditor, mit dem man die gesamte Szene mit der Maus entwerfen kann. Dabei werden Größe, Form und Lage der Objekte sowie die Positionen der Kamera und Lichtquellen in einem Drahtmodell am Bildschirm festgelegt. Der POVRaytracer hingegen arbeitet mit einer Scriptsprache. Das bedeutet, dass alle Angaben über das erwünschte Bild anhand eines Textes eingegeben wird, ähnlich wie bei einer Programmiersprache. Bevor die ersten jetzt abgeschreckt werden, muss nochmal deutlich die einfache Erlernbarkeit der POV-Scriptsprache erwähnt werden. Es werden keine Programmierkenntnisse vorausgesetzt, und bereits mit wenigen Befehlen lassen sich eindrucksvolle Bilder kreieren. Außerdem gibt es auch noch Zusatzprogramme, mit denen aus per Maus eingegebenen Objekten, der nötige Textcode für den POV automatisch erstellt wird.
Im Prinzip gilt das Motto, nur die Phantasie setzt Grenzen. Doch so ganz stimmt das nicht. Aus technischen Gründen müssen wir beim Arbeiten mit dem Raytracer einige mehr oder weniger starke Einschränkungen in Kauf nehmen. So werden sehr kleine Objekte besonders bei niedrigen Auflösungen Oberhaupt nicht oder nur schwer erkennbar dargestellt. Aus diesem Grunde sind zum Beispiel weit entfernte Sterne oder Regentropfen im Prinzip nicht zu realisieren, doch hier gibt es Tricks, dieses Manko zu umgehen, die im Laufe dieses Kurses noch erläutert werden. Weiterhin gelten die physikalischen Gesetze der Lichtausbreitung in der realen Weit nicht genauso beim Raytracing. Angeleuchtete Objekte erscheinen zwar hell, können aber kein Licht auf andere Objekte reflektieren. So kann man zum Beispiel auch mit Spiegeln keine "dunklen" Ecken indirekt erleuchten, sondern muss eine zusätzliche Lichtquelle setzen. Aber auch hier hat der POV-Raytracer Möglichkeiten, diesen Nachteil zu umgehen, doch dazu später mehr.
Verwenden Sie das Programmpaket der Atari Inside, ist die Installation sehr einfach. Legen Sie sich einen Ordner (z.B. POV-2_2) auf Ihrer Festplatte an, die mindestens 4 MB Speicher frei haben sollte. Anschließend müssen alle Dateien der sieben Disketten in diesen Ordner kopiert werden.
Jetzt kommt der Moment, wo Sie sich für eine Shell entscheiden müssen. Die Shell ist sozusagen der Vermittler zwischen dem Raytracer, dem Texteditor und dem Grafikprogramm. Die Shell ruft diese Programme auf und übergibt ihnen die korrekten Parameter.
Dazu müssen Sie eine Shell starten (z.B. POVSHELL oder PRIMA, die dem Paket beiliegend und diese anschließend konfigurieren. Benutzen Sie das Programm POVSHELL, müssen zuerst im Menu Options -> Set Paths die verschiedenen Pfade eingestellt werden. Wählen Sie für den POV 2.0 Raytracer "POV22_TT.GTP" (beim TT, Falcon oder - ST/STE mit FPU) bzw. "POV22_ST.GTP" (Beim ST/STE, Falcon ohne FPU). Als Pfad für die Include Files gehen Sie mit der Fileselectorbox einfach in den Ordner "INCLUDE" und klicken OK. Jetzt müssen Sie der Shell noch mitteilen, welchen Texteditor Sie benutzen wollen.
Dieser Texteditor sollte die Kornmandozeile auswerten können, um ihren Text automatisch beim Starten zu laden. Vergessen Sie nicht, mit Save Environement Ihre Einstellungen zu speichern. Bei anderen Shells für den POV-Raytracer funktioniert die Konfigurierung ähnlich, und sollte keine großen Schwierigkeiten bereiten. Um fortzufahren, klicken Sie im Fenster bei Scene File, und geben den Namen "HELLO.POV" ein. Anschließend müssen Sie den Texteditor über File -> Texteditor starten.
//POV-Ray "Hello World"
//Eine grüne Kugel!
//für den Atari Inside POV-Kurs
//von Olaf Güthe
// #include "colors.Inc" //vordefinierte Farben dazuladen
//erstmal die Kugel:
sphere { //Befehl für das Objekt Kugel
<0, 1, 0>, 1 //Raumkoordinaten in eckigen Klammer
//und Radius der Kugel
pigment {color Green} //bestimmt die Oberflächenfarbe,
//Green ist in "colors.Inc" vordefiniert
}
camera {
location <0, 1, -3> //Postion der Kamera
look_at <0, 1, 0> //angepeilter Punkt
light-source {<l, 1, -2> color White} //Weiße Lichtquelle setzen
Lernt man eine neue Programmiersprache, ist es traditionell die erste Aufgabe, ein "Hello World" auf den Bildschirm zu zaubern. Da Schrift aber als erstes Beispiel etwas kompliziert ist, wird beim Raytracer als Ersatz für das "Hello World" eine Kugel dargestellt. geben Sie folgendes kleines Programm in Ihren Texteditor und speichern es als HELLO.POV in ihrem Szenenpfad ab
Starten Sie nun Ihre Shell, wählen Sie HELLO.POV und lassen Sie das Bild berechnen. Als Ergebnis müßte eine grüne Kugel zu sehen sein.
a) Schreibweisen
Alle Objektbefehle, müssen unbedingt klein geschrieben werden. So würde zum Beispiel "light-Source" statt "light - source" zu einer Fehlermeldung führen. Wollen Sie hingegen vordefinierte Farben verwenden, müssen diese mit dem ersten Buchstaben groß geschrieben werden. POV-Ray nimmt die Groß- und Kleinschreibung sehr genau, aber daran kann man sich schnell gewöhnen. Taucht im Laufe Ihrer Arbeit mit diesem Raytracer mal die Fehlermeldung "undefiniertes Wort" auf, kann es möglicherweise daran liegen. Parameter, also Koordinaten, Oberflächen, u.a., werden in geschweiften Klammern einem Objekt zugeordnet. C-Programmierern wird diese Besonderheit des POV bekannt vorkommen.
b) Koordinaten
Jede Raumposition muss als Vektor von einem X-,Y- und Z-Wert in spitzen Klammern angegeben werden, z.B. <0, 1, -3> Der POV arbeitet mit einem Koordinatensystem in alle Richtungen, d.h. der Ursprung liegt in der Mitte und auf allen Achsen sind sowohl positive als auch negative Koordinatenangaben erlaubt.
c) Die Kamera
Mit dem Befehl camera kann eine Kamera, sowie deren Blickrichtung und Blickfeld definiert werden. Die Anweisung location und ein Koordiantenvektor innerhalb des Kamerabefehls plazieren die Kamera. Mit look-at wird der Punkt angegeben, auf dem die Kamera "schaut". Alles, was die Kamera in ihrem Blickfeld hat, wird wie bei einer Fotokamera auch nachher auf ihrem Bild zu sehen sein. Im Beispiel HELLO.POV ist die Kamera direkt auf die Kugel gerichtet. Versuchen Sie mal den Vektor <l, 1, 0> bei look-at und rechnen das Bild erneut aus. Jetzt ist die Kamera auf den Rand der Kugel gerichtet.
d) Lichtquellen
Die einfachste Form einer Lichtquelle ist die Punktlichtquelle. Sie ist ein winziger unsichtbarer Punkt in der Szene, die in alle Richtungen Licht ausstrahlt. Der erste Vektor hinter der light - source Anweisung gibt die Position an, der zweite Parameter die Farbe des Lichts, das die Quelle ausstrahlt.
e) Kommentare
Man kann in jeder Zeile einen Kommentar schreiben. Ein Kommentar wird mit // eingeleitet. Der Rest der Zeile hinter diesen Zeichen wird dann vom Raytracer ignoriert. Längere Kommentare werden mit /* eingeleitet und enden mit */. So kann man längere Texte als Kommentare vereinbaren.
f) vordefinierte Objekte
Mit relativ wenig Aufwand lassen sich mit dem POV einfache geometrische Objekte, wie zum Beispiel Kugeln, Zylinder und Quader erzeugen. Im Grunde benutzt man einfach den Befehl dafür, in den geschweiften Klammern eingeschlossen folgen meistens ein oder zwei Koordinatenangaben bzw. die Größe und das Aussehen und die Eigenschaften der Oberfläche. In unserem Beispiel haben wir eine Kugel verwendet, die durch den Befehl sphere vordefiniert ist. Als Parameter haben wir lediglich die Raumkoordinaten, den Radius und die Farbe festgelegt. Die Farbe der Oberfläche wird in geschweiften Klammern hinter dem pigment Befehl angegeben.
Der POV kann natürlich einiges mehr, als eine einfarbige Kugel darzustellen. Haben Sie bis jetzt alles verstanden, starten Sie bitte nochmal Ihren Texteditor mit der Szene HELLO.POV. Die Kamera muss nun wieder auf den Punkt <0, 1, 0> schauen. Wir wollen der Kugel nun ein glänzendes Aussehen geben. Um das Verhalten der Lichtstrahlen auf der Oberfläche zu beeinflussen, gibt es die finish Funktion. Sie wird innerhalb der Befehlsklammern wie ein weiterer Befehl angewendet. Geben Sie an letzter Stelle, also vor der Zeile mit der schließenden geschweiften Klammer des sphere Befehls, folgende Zeilen ein: finish { phong 1 }//Oberfläche glänzend erscheinen lassen Der phong Befehl (auch hier unbedingt auf Kleinschreibung achten!) gibt die Glanzstärke eines Objekts an. Als Parameter sind Werte zwischen 0 und 1 möglich. Der Wert null bedeutet kein Glanz, 1 ist voller Glanz. Auch Zwischenwerte wie zum Beispiel 0.75 sind möglich, was in diesem Fall 3/4 Glanzstärke bewirken würde. Der Glanz wird dadurch erzeugt, dass an der Stelle des Glanzpunkts die Farbe der Lichtquelle erscheint, unabhängig vom Objekt. In unserem Beispiel erscheint der Glanzpunkt deshalb weiß.
Statt Green können Sie auch jede andere Farbe in dem Pigment Befehl einsetzen. Vordefiniert sind z.b. Blue, Red, Yellow, Brown, Cyan, Grey, usw. Wollen Sie selbst eine Farbe erstellen, können Sie statt dem Farbnamen auch rgb<l, 1, l> schreiben. Die Zahlen sind hier keine Koordinaten, sondern die RotGrün- und Blauanteile der Farbe zwischen null und eins.
So, das war der erste Teil des POVKurses. Bis wir in der nächsten Ausgabe mit neuen Oberflächeneigenschaften, Texturen und weiteren Grundformen anfangen, bleibt Ihnen jetzt noch ein wenig Zeit, mit dem vorhanden Wissen zu experimentieren. Probieren Sie ruhig mal, die Kamera oder Kugelpositionen zu ändern. Auch der Radius läßt sich natürlich verändern. Oder wie wäre es mit mehreren Kugel hintereinander, nebeneinander, übereinander? Dafür müssen Sie ede Kugel als geschlossene Einheit mit geschweiften Klammern definieren:
sphere { ...Parameter 1... } //Kugel 1
sphere { ...Parameter 2... } //Kugel 1
usw.
Mit den ersten Grundlagen können Sie jetzt schon viel machen, setzen Sie ruhig Ihre Phantasie ein.