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.
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.
Nach dem Entpacken des Archivs kopierst du Kray am Besten in ein Verzeichnis, das im Suchpfad enthalten ist.
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.
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.
Zum Erstellen neuer Objekte dient das Kommando object SHAPE, SURFACE, BLEND. Shape, Surface und Blend musst du durch entsprechende Kommando definieren.
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.
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;
Mit blend können wir einstellen, ob unser Objekt
Schatten wirft.
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.
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.
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:

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
Nach oben