Titelbild

Hauptseite | Amiga Bedroom Programmer | Nächste Seite

Raytracing mit Kray

Raytracing ist ein Verfahren zum Erstellen von räumlich wirkenden Bildern. Dazu werden in einem 3-dimensionalen Koordinatensystem Objekte, Lichtquellen und eine Kamera platziert. Die Objekte lassen sich dabei mit Eigenschaften wie Transparenz, Spiegelung, Farbe u. s. w. belegen. Kray von Grzegorz Tanski ist eines der Programme zum Erstellen solcher Bilder. Du kannst es dir von http://www.kray.prv.pl/ herunter laden. Da die Bedienungsanleitung etwas dünn ist, möchte ich mit diesem Workshop helfen, die ersten Hürden zu überwinden.

Voraussetzungen

Ich setze voraus, dass der Umgang mit der Shell und die Bedienung eines Texteditors bekannt ist. Außerdem gehe ich davon aus, dass du weißt, was ein Vektor und ein Koordinatensystem ist. Für den Rechner gilt: je schneller und je mehr RAM, desto besser. Zum Anzeigen der Ergebnisse solltest du dir einen BMP-Datatype installieren. Zum Erstellen eigener Texturen ist außerdem ein Malprogramm, das BMP-Dateien speichern kann, sinnvoll.

Installation

Nach dem Entpacken des Archivs kopierst du Kray am Besten in ein Verzeichnis, das im Suchpfad enthalten ist.

Bedienung

Kray benötigt eine Szenebeschreibung in Form einer Textdatei. Du startest die Berechnung durch Eingabe von kray szenedatei. Alternativ kannst du noch den Namen der Ausgabedatei angeben.

Für die Eingabedatei ist Groß-/Kleinschreibung wichtig. Kommandos müssen mit einem Semikolon abgeschlossen werden. Kommentarzeilen kannst Du mit "'", "%", "rem" oder "//" einleiten.

Datentypen

Folgende Datentypen werden für die einzelnen Kommandos verwendet:

Typ Beschreibung Beispiele Vordefinition
NAME Alphanumerische Zeichenfolge Wand
AUSDRUCK mathematischer Ausdruck 5; 7.2; 8+2 variable NAME, AUSDRUCK
VEKTOR x-, y-, z-Komponente (3, 5.2, 7.1) vector NAME,x,y,z
ACHSEN Heading, Pitching, Banking-Winkel <10, 25, -3> hpbaxes NAME,h,p,b
FARBE Rot-, grün- und blauanteil. Werte liegen normalerweise zwischen 0 und 1. (0.5, 0.7, 0.3) color NAME,r,g,b

Kray verwendet ein rechtshändiges Koordinatensystem, d. h. x, y und z-Achse sind wie Daumen, Zeige- und Mittelfinger der rechten Hand angeordnet.

Die Winkel "Heading", "Pitching" und "Banking" lassen sich an Hand eines Flugzeuges beschreiben. Die Angabe <0,0,0> bedeutet, das Flugzeug fliegt parallel zur z-Achse, die positive x-Achse zeigt nach rechts, die positive y-Achse nach unten. Eine Änderung des "Heading" bewirkt eine Drehung nach rechts oder links. Durch "Pitching" hebt und senkt sich die Nase. Eine Drehung um die Längsachse wird durch "Banking" erzeugt.

Objekt

Zum Erstellen neuer Objekte dient das Kommando object SHAPE, SURFACE, BLEND. Shape, Surface und Blend musst du durch entsprechende Kommando definieren.

Form (shape)

Mit shape NAME, parameter erstellst Du Körper und Flächen wie Kugeln, Quader, Zylinder, Kegel u. s. w. Ich möchte auf die einzelnen Formen nicht weiter eingehen, da sie recht anschaulich auf der Kray-Homepage unter "Lessons" dargestellt werden. Zu den Flächenformen "wall", "triangle", "circle" und "square" gibt es noch einen erwähnenswerten Punkt: sie sind zweiseitig und nur eine Seite reflektiert Licht. Bei "wall" und "circle" ist es die Pfeilseite des Richtungsvektors. Bei "square" und "triangle" nehmen wir die rechte Hand. Wenn der Daumen in Richtung des zweiten Vektors und der Zeigefinger in Richtung des 3. Vektors zeigt, dann ist der Handrücken die aktive Seite.

Oberfläche (surface)

Das surface-Kommando bietet eine Fülle von Optionen. Für unser erstes Beispiel begnügen wir uns damit, dem Objekt eine Farbe zuzuweisen. Dazu sind zwei Schritte nötig:

texture TEXTURENAME, color, (rot, grün, blau);
surface NAME, shaded, TEXTURENAME;

Blend

Mit blend können wir einstellen, ob unser Objekt Schatten wirft.

Kamera

Mit camera legen wir die Auflösung unseres Bildes sowie Lage und Blickrichtung der virtuellen Kamera fest. Wenn in der Szenendatei keine Kamera angegeben ist, verwendet Kray folgende Parameter: camera PICTURE, 320, 200, 200, (0,0,0), <0,0,0>. D. h sie sitzt am Ursprung und blickt in Richtung positive z-Achse.

Licht

Damit wir etwas zu sehen bekommen, brauchen wir noch eine oder mehrere Lichtquellen. Sonnenlicht kannst du mit light parallel, VEKTOR, COLOR einstellen. Achtung: der Vektor ist nicht die Position der Lichtquelle, sonder die Richtung, in die die Lichtquelle strahlt. Eine halbwegs realistische Simulation einer Glühbirne kannst Du mit light point, VECTOR, COLOR erreichen.

Projekt: Koordinatensystem

Damit haben wir nun endlich alles beisammen, was wir für unser erstes Projekt benötigen. Wir erstellen 3 Zylinder, die wie die x-, y- und z-Achse des Weltkoordinatensystems orientiert sind.

// KRAY-File: ksys.txt

// durchmesser der Zylinder
variable csys_dia, 10;

// Länge der Zylinder
variable csys_len, 200;

blend csys_blend, total;

// x-Achse
texture red_tex, color,(1,0,0);
surface red_surf, shaded, red_tex;
shape x_axis, tube, (0,0,0), <90,0,0>, csys_dia, csys_len;
object x_axis, red_surf, csys_blend;

// y-Achse
texture green_tex, color,(0,1,0);
surface green_surf, shaded, green_tex;
shape y_axis, tube, (0,0,0), <0,-90,0>, csys_dia, csys_len;
object y_axis, green_surf, csys_blend;

// z-Achse
texture blue_tex, color,(0,0,1);
surface blue_surf, shaded, blue_tex;
shape z_axis, tube, (0,0,0), <0,0,0>, csys_dia, csys_len;
object z_axis, blue_surf, csys_blend;

// Licht
light parallel, (-100, 300, 400), (1, 1, 1);

// Kamera
camera picture, 400, 300, 300, (100,-200,-400), <-10,-20,0>;

Starte nun Kray. Wenn alles geklappt hat, dann hat Kray folgendes Bild in der Datei rend.bmp angelegt:

Koordinatensystem


Das Koordinatensystem können wir in zukünftigen Szenen immer wieder verwenden, um uns im 3-dimensionalen Raum zu orientieren und Größenverhältnisse besser abschätzen zu können

Zum nächsten Teil

Nach oben