Art-of-Illusion modelling tutorial
Das Stundenglas


Version 1.1
For Art of Illusion version 0.9
Copyright 2001, Rick van der Meiden
German Translation Copyright 2002, Kerim Mansour

Einleitung

In diesem Tutorial wollen wir Dir an hand des Stundenglases oben zeigen, wie man ein einfaches Objekt mit Art-of-Illusion (AoI) modellieren kann. Es werden hier nicht alle Features und Möglichkeiten von AOI erklärt -dazu sind es einfach zu viele- aber genug um einen Einstieg zu finden. Du wirst die anderen Features bestimmt durch Ausprobieren und Experimentieren erlernen.

Solltest Du Dich schon mit 3D-Modellierung auskennen, wirst Sie diesem Tutorial wahrscheinlich nicht Punkt für Punkt folgen müssen. Du kannst auch einfach den Text überfliegen um einen Eindruck von den Möglichkeiten zu bekommen. Probier es einfach aus. Für Anfänger: Ich werde Euch zeigen wie man in ein paar Minuten eigene 3D Grafiken erstellen kann.

Aus Gründen der Vollständigkeit wird eine AOI Szenen Datei mit dem Namen "hourglass.aoi" mit diesem Tutorial mitgeliefert, welches einfach geöffnet werden kann. Es wird jedoch empfohlen die Szene selbst nachzustellen bzw. zu erzeugen.

Die Anwendung

Wir nehmen jetzt einmal an, Du hast AOI heruntergeladen, das korrekte JDK installiert, die Readme Dateien gelesen und AOI gestartet. Sollte das nicht der Fall sein schaue bitte auf der Homepage von Art-of-Illusion nach. Bei Starten von AOI zeigt sich das Hauptfenster. Oben befindet sich das Hauptmenu; schau Dich einfach mal um, sieh Dir die Pull-down Menues an. Falls da viel ist, was Du noch nicht verstehst, keine Sorge, das ändert sich bald.

Auf der linken Seite sind einige Icons. Das Klicken darauf selektiert ein Tool und es wird eine einzeilige Hilfe unten am Fenster angezeigt. Die Icons sind:

move object(bewege Objekt) rotate object (rotiere Objekt)
resize object (ändere die Größe) generiere Box (create box)
create sphere(generiere Kugel) create cylinder (generiere Zylinder)
create spline mesh (generiere Spline-Netz) create polygon (generiere Polygon)
create camera (generiere Kamera) create lightsource (generiere Lichtquelle)
create interpolated curve (generiere interpolierte Kurve) create approximated curve (generiere angenäherte Kurve)
move view (bewege Ansicht) rotate view (rotiere Ansicht)

Der Hauptteil des Schirms zeigt 4 Ansichten auf das 3D Model: Vorne, Links, Oben und Kamera1. Für jede Ansicht kann der Bentutzer eine Kamera, einen Standard-Blickwinkel (vorne, links, oben, etc.),eine perspektivische oder paralele Ansicht und einen Vergrößerungsfaktor (Standard ist 100) einstellen. Diese Blickwinkel können über die entsprechenden Tools für Bewegung und Rotation geändert werden. Du wirst den Maßstab und die Blickwinkel oft verändern aber nicht die Ansichten. Die Standardansichten sind für die meisten Arbeiten ausreichend. Nur die Ansicht unten Rechts, Kamera1 wird in der Regel oft verändert, weil sie sehr nützlich ist um das Model von allen Seiten zu betrachten und zu überprüfen.

Auf der rechten Seite ist (momentan leerer) Raum zur Anzeige der Objekte (shapes) in Deinem Model. Von der Liste kannst Du Objekte selektieren bzw. deselektieren indem Du auf den Eintrag klickst. Ein Doppelklick wird den "edit-object" (Objekt bearbeiten)-Dialog öffnen.

Bevor wir jetzt anfangen muß noch der Begriff der Koordinaten erläutert werden. Die Position und Dimensionen von Ojekten werden durch ein Koordinatensystem mit 3 Dimensionen (X,Y,Z) festgelegt. Die X-Achse zeigt nach rechts, d.h. also je größer der Wert, desto weiter rechts ist er. Die Y-Achse zeigt nach oben, die Z-Achse zeigt aus dem Monitor heraus in Deine Richtung. Wir sprechen hier von einem rechtshändigem Koordinatensystem.

Erste Schritte

Normalerweise beginnt man das Modellieren indem man einen kleinen Entwurf auf kariertem Papier malt um einen ersten Eindruck von Form und Größe zu bekommen. Wenn Du das nicht tun willst, dann las uns wenigstens ein Gitternetz im Modeller generieren: Dies erlaubt uns einfach Objekte mit einer exakten Position und Größe zu zeichnen und diese orthogonal auszurichten. Du kannst die Parameter des Gitternetzes jederzeit ändern um feinere oder gröbere Netze zu erhalten. Jetzt fangen wir an zu zeichnen. Zuerst zeichne eine Box für den Boden bzw. Deckel des Stundenglases: Beachte, daß Du jedes Objekt in jeder Ansicht zeichnen kannst. Da Du nur in zwei Dimensionen gleichzeitig zeichnen kannst, muß die dritte Dimension später modifiziert werden. Die Größe und Position der Box kannst Du über die entsprechenden Tools ändern, aber um eine klare Vorstellung der Dimensionen zu bekommen ist der "Object Layout" Dialog sehr viel schneller.

Die erste Box stellt den Boden des Modells dar. Da der Deckel genauso aussieht generieren wir Ihn duch Kopieren der ersten Box.

Jetzt haben wir 2 Boxen, symmetrisch zum Ursprung. Beachte, daß beide Boxen den Namen Cube1 tragen. Du kannst die Objektnamen ändern indem Du die Object->Rename Object-Option aus dem Menu wählst. Geeignete Namen wären hier "Oben" und "Unten" um sie einfacher unterscheiden zu können auf der Liste.

Die oben beschriebenen Techniken sind auch geeignet um das Gestänge (4 Stangen) zwischen dem oberen und dem unteren Brett zu generieren. Benutze das 'Generiere Zylinder' (create cylinder) Tool um einen Zylinder der folgenden Ausmaße zu generieren: Erzeuge 3 weiter Zylinder in den anderen Ecken des Gerüsts für das Stundenglas.
Hinweise:

Jetzt haven wir das Grundgerüst für das Stundenglas. Benutze nun das 'Verschiebe Blickwinkel' (move viewpoint) Tool und das 'rotiere Gesichtspunkt' (rotate viewpoint) Tool um die Kamera1-Ansicht (Ansicht rechts unten) zu ändern. Jetzt kannst Du das Model aus jedem Winkel betrachten. Das Resultat sollte etwa so aussehen:

Ein komplexes Objekt

Das komplizierteste Objekt in dieser Szene wird der Glaskörper sein. Wir generienen ihn mit Hilfe des Rotations (Lathe)Tools. Ein Lathe ist ein Objekt welches durch eine umlaufende Spline Kurve erzeugt wird. Die Kurve bestimmt dabei die Kontur des Objekts um eine Achse. Um solch eine Kontur-Kurve zu erzeugen verwenden wir das create approximated curve Tool. Um uns die schwere Arbeit mit einer präzisen Mausführung zu ersparen generieren wir zuerst ein feiners Gitternetz: Abstand 0.2 mit 2 Unterteilungen. Dann wähle Scene->One View aus dem Menu. Du kannst den Vergrößerungsfaktor der Ansicht auf 200 Prozent setzen. Jetzt erzeuge die Spline Kurve indem Du die Punkte 1 bis 9 (siehe Bild unten) verbindest(in dieser Reihenfolge). Doppelklicke auf Punkt 9 um die Spline Kurve dort enden zu lassen. Achte darauf, daß der erste und der letzte Punkt auf der Y-Achse liegen und tangent zu dem oberen und unteren Brett sind die wir vorhin gemacht haben.

Die Angenäherte Kurve ist nicht sehr intuitiv, erlaubt Dir aber die Richtung der Kurve besser zu bestimmen als die interpolierte Kurve. Die Richtung der Kurve am Anfang und am Ende wird nur duch den nächsten Punkt bestimmt. In Punkt 5 ist die Kurve vertikal weil Punkte 4 und 6 beide vertikal von Punkt 5 sind. Im allgemeinen wird die Kurve an jedem Punkt durch den direkt vorhergehenden und die zwei nächsten Punkte bestimmt (bei der Kurve handelt es sich um eine quadratische Spline Kurve bzw. Kurve dritten Grades).

Als zentrale Achse des Glaskörpers werden wir die Linie nehmen die durch den Anfangs- und Endpunkt geht. In unserer Zeichnug ist dies die Y-Achse. Um das "Lathe" zu generieren selektiere zuerst die Kurve und wähle dann Tool->Lathe aus dem Menu. Im Lathe Dialog wähle Line though endpoints als die Lathe Achse. (Siehe Bild unten).

Die Form wir automatisch bei 0,0,0 zentriert. Das ist exakt der Platz, an dem wir es haben wollen, also laß es da. (Natürlich ist dies kein Zufall, ich hab das so geplant!). Die Spline Kurve, die wir generiert haben ist nun überflüssig geworden. Du kannst die löschen, es ist jedoch eigentlich nicht nötig, da sie eh nicht auf dem gerenderten Bild erscheinen wird. Um ein Objekt zu löschen, selektiere es (in der Ansicht oder aus der Liste der Objekte) und drücke Entf auf der Tastatur. Alternativ kannst Du auch die Menuoption Edit->Clear verwenden.

Szenen Layout

Wir haben jetzt alle Formen modelliert. Als nächstes sollten wir versuchen die Szene mit genauen Formen und Beleuchtung zu rendern. Vor dem Rendern sollten wir allerdings erst die Eigenschaften der Schlüsselelemente in der Szene bestimmen; Kamera und Licht.

Zuerst bestimme die Position und Orientierung der Kamera. Das kann man einfach über die Kamera-Vorschau in der unteren rechten Ecke tun. Verschiebe oder rotiere die Ansicht über das Move view Tool und das Rotate view Tool. Halte die Strg-Taste gedrückt wärend des Verschiebens der Ansicht um hinein bzw. herauszuzoomen. Das Drücken der Strg-Taste bei gleichzeitigem Benutzen des rotate View Tools erlaubt ein Überschlagen der Ansicht. Du kannst die Kamera auch positionieren indem Du das move object Tool und das rotate object Tool benutzt oder mit der Layout object Menuoption. Die Kamera ist ein Objekt wie jedes andere. Eine gute Position könnte ein Ort sein von dem man die obere und zwei weitere Seiten des Objektes sehen kann.

Als nächstes sollten wir die Szene beleuchten. Wie man sehen kann existiert schon eine Lichtquelle in der Szene, Light 1. Die Lichtquelle sollte so positioniert werden, daß die Seite des Objekts welches wir ansehen beleuchtet wird. Light 1 ist vielleicht nicht richtig positiniert, je nachdem wo die Kamera sich befindet. Da die Lichtquelle außerdem noch weit entfernt ist, löschen wir sie und generieren eine neue. AoI unterstützt drei Arten von Lichtquellen: punktuelles Licht, gerichtetes Licht und Spotlights. Wir benutzen die einfachste Form: punktuelles Licht. Führe folgende Schritte aus um die Szene korrekt zu beleuchten: Jetzt lass uns rendern. Selektiere Scene->Render Sceneaus dem Menu. Kümmer Dich momentan nicht um die Einstellungen; einfach nur in der Dialogbox OK drücken. Das Resultat sollte etwa so aussehen:

Ziemlich langweilig nicht wahr ? Alles ist in ödem Weiß. Wir wollen aber Holz und Glas, also sollten wir noch Texturen hinzufügen.

Texturen und Materialien

Holz

Lass uns zuerst eine Textur kreieren die wie Holz aussieht. Selektiere Scene->Textures aus dem Menu und klicke New im Texturdialog. Im nächsten Dialogfenster gibst Du der Textur den Namen Wood und selektierst den procedural 3D Typ (siehe Bild unten).

Prozedurale 3D Texturen definieren Farbe, Reflektion, Grobheit und andere Oberflächeneigenschaften als eine Funktion von 3D Koordinaten. Für jede Position im Raum definiert die Textur wie die Oberfläche des Objekts aussieht, als ob wir die Form aus einem Block dieses "Materials" herausgeschnitten hätten. Für Objekte deren Inneres wir sehen können (transparente Objekte) sollten wir lieber ein Material benutzen um das Innere zu definieren. Texturen definieren nur wie die Oberfläche eines Objektes aussieht.

Eine Funktion die 3D Koordinaten den Werten einer Textur zuordnet wir grafisch erzeugt indem funktionale Komponenten verbunden werden. Es gibt 6 Kategorien von Komponenten:

Wenn Du eine neue Textur erzeugt hast erscheint ein Dialog indem Du sie genauer spezifizieren kannst. Es gibt eine große, leere, weiße Stelle in der wir funktionelle Komponenten hinzufügen können. Und auf der rechten Seite sind Blöcle mit Namen wie diffuse, specular, tansparent, etz. Dies sind Eigenschaften einer Textur, die mit den Komponenten die addiert wurde werbunden werden.

Die folgenden Komponenten müssen hinzugefügt werden um eine Holztextur zu erstellen: Die Vorschau sollte in etwa so aussehen:

Die Textur sieht nicht wirklich realistisch aus aber für den Moment ist es ausreichend. Um komplexere Texturen zu erzeugen solltest Du das Kapitel über Texturen im the Art-of-Illusion manual lesen.

Diese Textur wird dem oberen und unteren Brett sowie den Stäben zugewiesen die wir vorhin erzeugt haben. Selektiere alle Formen die die Holztextur zugewiesen bekommen sollen. Dann selektiere Object->Set Texture aus dem Menu. Jetzt wähle die Holztextur und klicke auf OK

Wähle nun nur die Top und Bottom Objekte. Rufe nochmals den "set texture" Dialog auf. Klicke auf den Button mit dem Namen Edit Mapping (editiere Zuordnung). In diesem Dialog kannst Du die Textur rotieren, in der Größe verändern und drehen um besser zum Objekt zu passen. Wir rotieren nur um folgendes Resultat zu bekommen:

Jetzt zu den Stäben. Selektiere sie alle und editiere die Zuordnung nochmal. Erzeuge ein Mapping wie dieses:

Schauen wir uns das Resultat mal an. Das gerenderte Bild sollte etwa so aussehen:

Glas

Der Glaskörper sollte natürlich die Materialeigenschaften von Glas haben. Das heißt er sollte transparent sein für Licht und es auch auf der Oberfläche reflektieren. Licht das durch ein Glasobjekt hindurchgeht ändert Farbe, Richtung und Intensität (es wird gebrochen). Reflektion und Transparenz sind Textureigenschaften. Brechung und Dämpfung sind Eigenschaften des Materials an sich. Materialien können nur soliden Objekten zugeordnet werden. Das ist sinnvoll, den Dämpfung und der Lichtwinkel nach der Brechnung hängen davon ab wo ein Strahl in ein Objekt eindringt bzw. herauskommt. Glücklicherweise ist unser Glaskörper ein solides Objekt. Alle Lathes (Rotationskörper) mit einer Rotationsachse durch Anfangs- und Endpunkt der Profilkurve sind solide.

Zuerst erzeugen wir die Glastextur, dann das Material.

Im Texturdialog erzeuge zuerst eine neue uniform texture (gleichmäßige Textur) mit Namen Glass. Diese Textur mach die Oberfläche transparent sodaß das Innere sichtbar wird, und sie bestimmt die Höhe der gespiegelten Reflektion. Das Bild unten zeigt welche Einstellung für die neue Textur zu verwenden sind. Transparenz wird sowohl über die Werte von Transparent Color und Transparency definiert. Die Anteile für rot, grün und blau geben an wieviel der jeweiligen Farbe übrigbleibt wenn das Licht duch die Oberfläche fährt. Es ist ein Filter. Weiß - der Standard - bedeutet das Licht jeder Farbe ungehindert hindurchfahren kann. Schwarz bedeutet, daß kein Licht hindurch kann. Der Wert für die Transparenz gibt an welcher Prozentsatz an Licht insgesammt durchkommt. Ein Wert von 0.7 bedeutet, daß 70 Prozent des Lichts durch die Oberfläche hindurchtreten. Das bedeutet auch das die Transparenzkomponente die Farbe der Oberfläche zu 70 % bestimmt. Die restlichen 30% der Farbe werden komplett über die Reflektion bestimmt, also wird der Wert für die Spiegeleung (Specular) auf 1.0 gesetzt. Die Diffuse-komponente hat somit keinen Einfluß auf die Farbe. Wir werden die Materialeigenschaften benutzen um dem Glas eine Farbe zu geben.

Um ein neues Material zu generieren wähle Scene->Materials und klicke auf den New Button. Wir können das neue Material auch Glass nennen. Es sollte eine einheitliches Material (uniform material) sein. Du kannst die Parametereinstellungen in dem Bild unten sehen. Die Farbe des Materials wird durch zwei Parameter beeinflußt: Material Farbe (Material color) und Transparente Farbe (Transparent Color). Beide Parameter mildern die Farbe des Lichts beim Durchtritt des Materials. Die Materialfarbe hat nur Einfluß auf den Teil des Lichts der die Kamera direkt erreicht, es ist die Farbe die das Objekt zu haben scheint. Die Transparenzfarbe beeinflußt jegliches Licht das durch den Körper tritt nud auch die Schatten die der Körper wirft. Der erste Parameter ist einfacher zu verwenden weil er spezifiziert wie das Objekt aussehen wird. Die Transparenzfarbe jedoch spezifiziert den Anteil an rot, grün und blau der durchkommt. Der Rest des Lichts wird reflektiert und bestimmt die Farbe des Objekts. Wie stark das Licht abgemildert wird stellt man über den Intensitätswert (Desnity) ein. Ein Wert von 0 bedeutet keine Abmildering. Für das Material hierspezifizieren wir eine einfache, grüne Farbe.

Das engültige Rendering

Das von uns erzeugte Glas kann nicht mit dem normalen Rasterrenderer gerendert werden, den wir bis jetzt verwendet haben. Öffne den Renderdialog (Scene->Render Scene) und wähle den Raytracer Renderer. Der Raytracer wirft Lichtstrahlen von der Kamera zurück zu den Stellen wo sie auf Objekte treffen. An diesen Punkten werden Lichtstrahlen zu der Lichtquelle geworfen um Licht und Schatten zu berechnen. Ausgehend von Objekten mit Reflektionskomponenten oder Transparenz werden weitere Strahlen geworfen um weitere Objekte zu finden die gesehen werden (via Reflektion oder durch transparentes Material).

Der schwarze Hintergrund lässt das Glas merkwürdig aussehen. Um das zu Verbessern setzen wir einen hellen Hintergrund. Aufgrund eines Bugs in Version0.8 müssen wir eine Textur als Hintergrund verwenden (solide Objekte als Hintergrund resultieren in einem falschen Rendering). Wähle Scene->Environment aus dem Menu. In diesem Dialog, selektiere texture-diffuse als Hintergrund. Du kannst auch eine neue Textur mit verschiedenen Farben erzeugen, vielleicht prozedurale Bilder (Wolken sind eine schöne Übung) aber ich verwende hier eine einfache Textur für den Moment.

Schlußendlich zum Verbessern der Qualitat wähle die antialiasing Option im Renderdialog. Und wenn Dein (nichtgerichtetes) Licht nahe des Objektes ist wähle soft shadows um realistischere Bilder zu erhalten. Beide Optionen sorgen dafür, daß der Raytracer pro Pixel mehrere Strahlen losschickt. Die Resultate werden gemittelt um ein weicheres Bild zu erhalten. Eine Änderung der minimalen und maximalen Anzahl an Strahlen pro Pixel (rays per pixel) hin zu höheren Werten wird zu besserer Qualität des Bildes und langsameren Rendern führen. Um nur einen kurzen Eindruck zu gewinnen, sollten die Optionen nicht benutzt werden. Eine gute Qualität kann man durch Setzen der Werte auf 4 und 16 Strahlen erhalten. Mehr Strahlen kann man bei großflächigen weichen Schatten benötigen.

Die Settings und das Resultat kann man unten sehen:

Zusammenfassung

Hier endet das Tutorial aber Art of Illusion kann sehr viel mehr als hier gezeigt wurde. Mehr darüber kannst Du aus den anderen Tutorials und Anleitungen erfahren. Die meisten der coolen Features sind intuitiv genug um sie einfach mal auszuprobieren und die Resultate zu sehen.

Mit den Grundlagen dieses Tutorials kannst Du jetzt damit anfangen die Welten Deiner Vorstellung zu realisieren. Mit der Zeit und dem Erlernen aller Features des Programms wirst Du besser und besser werden .... und süchtiger.

Viel Glück.