TG2 für Einsteiger
Einleitung
Hallo erstmal!
1. Überblick schaffen
2. Terrain
3. Preview und Kamera
Die Live-Preview
Steuerung von Vorschau und Kamera
4. Rendern
Allgemeine Einstellungen
Der Renderprozess
Weitere Einstellungen des Renderers
Quality
Crop Region
Effects
Renderzeiten
5. Surface
Planung für die Surface
Surface Layer
Sand
Color
Luminosity
Smoothing
Gras
Slope constraints
Displacement
Child Layer
Coverage and breakup
Altitude constraints
Tweaks
6. Atmosphere
7. Lighting
Schluss
Seit über einem halben Jahr ist TG 1.8, besser bekannt als TG2 Tech Preview, schon draußen. Vergessen sind die Jahre des Wartens, endlich darf man mit TG2 das machen, was bisher nur auf Screenshots zu sehen war!
Doch so einfach ist es leider nicht. Wie man es sich bei einer Preview (dt. Vorschau) eigentlich denken kann, wird an allen Ecken und Enden noch programmiert und so finden sich auch überall noch Fehler, verhalten sich neue Features einfach seltsam. Deswegen suchen viele Anfänger nach Tutorials, die den Einstieg erleichtern.
Das hier soll nun so ein Tutorial sein. Ich habe nicht versucht, es so zu schreiben, dass möglichst alles erklärt wird, sondern das, was ich erkläre, umfassend zu erklären.
Nebenbei soll auch noch ein schönes Bild entstehen - kein außergewöhnliches Meisterwerk, aber mehr als ein hilflos zusammengeklickter Versuch eines Bildes. ;)
Um das Tutorial nacharbeiten zu können, wird natürlich TG2 benötigt. Die kostenlose Version, mit der man Bilder bis zu einer Größe von 800*600 rendern kann, wird bei den Machern von Terragen 2 auf planetside.co.uk zum Download angeboten.
Da TG2 bis jetzt nur eine Tech Preview ist, gibt es immer noch eine Reihe von Bugs und andere unlogische Dinge. Diese und andere Fallstricke habe ich mit meinen kleinen Icons hervorgehoben.
Das sind allgemeine Tipps, unabhängig vom Tutorial. Anders das folgende Kästchen:
Außerdem haben manche Bilder eine Lupe drauf. Die soll bedeuten, dass man das Bild anklicken kann, um eine größere Version davon zu sehen. (Die Vergrößerung öffnet sich stets im selben Fenster/Tab.)
Viel Spaß!
1. Überblick schaffen
Nach dem ersten Start ist man erst einmal überwältigt und muss sich neu orientieren. Ja, und damit fangen wir auch an. Das TG2-Fenster ist in 6 Bereiche eingeteilt:
Ganz oben, im gelben Bereich befinden sich die Windows-üblichen Leisten. (Oder eben die OS*-üblichen, wenn man die Mac-Version benutzt. Dieses Tutorial ist mit der und für die Windows-Version geschrieben worden.)
Darunter ist, hier türkis markiert, eine Werkzeugleiste. Die wichtigsten Buttons dort sind Objects, Shaders, ..., Node Network. Das sind Tabs, ein beliebtes und praktisches Feature in vielen Programmen. Mit den genannten Buttons wählt man den gewünschten Tab aus. In TG2 bedeutet das, man bekommt links diverse Einstellungen zum Thema zu sehen. Klickt man also auf den Button Objects, sieht man den Objects-Tab. Dazu später mehr.
Der blaue Bereich ist der Bereich, in dem sich spezielle Menüs öffnen, ich nenne ihn "links" ;).
Der rote Bereich stellt das Node Network dar. Das kann man sich als einen Schaltplan vorstellen - die Rechtecke werden Nodes genannt. Daten, zum Beispiel ein Terrain, fließen durch die Verbindungen und jeder Node macht etwas mit diesen Daten. Als Anfänger kann man diesen Teil TG2s auch getrost erst einmal ignorieren. Man sollte allerdings wissen, dass jede Änderung an der geöffneten Welt Auswirkungen im Node-Netzwerk hat und umgekehrt. Die normalen Menüs und das Node-Netzwerk sind zwei verschiedene Sichten auf die selbe Welt/Datei.
Am unteren Rand des Fensters - hier in lila - befindet sich die Animations-Leiste. Als Anfänger kann man auch die einfach ignorieren, besonders wenn man ohnehin keine Animations-Version von TG2 besitzt.
Im grünen Bereich befindet sich die Live-Preview (dt. Vorschau) mitsamt einiger Buttons. Ändert man etwas in irgendeinem Menü, wird hier sofort das Resultat sichtbar. Die Preview ist unabhängig von der Kamera (oder den Kameras) und berechnet eine Vorschau des Bildes. Damit werden wir uns zuerst beschäftigen, gleich nach dem
2. Terrain
Nach dem Start befindet man sich automatisch im Terrain-Tab, das heißt in der Leiste oben ist der Button Terrain angeklickt, links befindet sich ein Menü um diverse Dinge am Terrain zu ändern. Im Moment gibt es dort noch nicht so viele Optionen, lediglich eine Liste mit einem einzelnen Eintrag und darüber ein Button Add Terrain werden angezeigt. Der Eintrag ist ein so genannter Shader.
Was machen Shader? Shader beeinflussen den Render, das heißt das zu berechnende Bild, unmittelbar - im Falle des Heightfield shaders, indem im Bild ein Terrain erzeugt wird. Der Heightfield shader bindet das Terrain allerdings lediglich in das Bild ein. Erzeugt wird das Terrain durch einen anderen Shader: Heightfield generate. Nach einem Klick auf das + links neben "Heightfield shader 01" sehen wir, dass diesem schon ein "Heightfield generate 01" zugeordnet ist.
Wir wählen nun in der Liste Heightfield generate aus. Das Menü unterhalb der Liste ändert sich, die Einstellungen für Heightfield generate werden angezeigt. Hier können nun diverse Dinge festgelegt werden.
Da ist zunächst einmal die Größe. In den oberen beiden Feldern wird die Auflösung eingegeben. Gibt man also in beide 513 ein, hat man ein altbekanntes quadratisches Heightfield. In TG2 neu: Man kann sich Heightfields in beliebiger Auflösung erzeugen lassen, auch nicht-quadratische sind kein Problem.
In der Zeile darunter kann man, unabhängig von der Auflösung, die Ausdehnung des Terrains festlegen, also ob das Terrain zum Beispiel 100x100km oder 10x100km groß sein soll.
Praktisch allem in TG2 kann man Namen geben oder diese(n) ändern. Das geht ganz einfach, indem man die gewünschte Bezeichnung in das Feld neben "Name" einträgt. Doch Vorsicht! Das Programm prüft nicht, ob der Name Probleme verursachen könnte. Benutzt man Sonderzeichen, kann TG2 entweder sofort abstürzen, oder die Datei lässt sich nicht mehr laden. Stattdessen kommt eine Fehlermeldung, die etwa so aussieht: "Parse Error at line 223 not well-formed (invalid token)". Wenn das passiert, kann man die Datei aber reparieren. Mehr Informationen dazu gibt es hier: TGD-Dateien retten.
Am besten umgeht man das Problem, indem man nur Buchstaben des englischen Alphabets benutzt. Vermeiden sollte man daher auch Umlaute (z.B.: äüö), Zeichen mit Akzenten (z.B.: áî) und Ligaturen (z.B.: ß&). Einige Sonderzeichen wie -,*,+ sind in Ordnung.
Wer auf Nummer sicher gehen möchte, sollte sich auf ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 beschränken.
Heightfields: Heightfields sind eine Art Bilder - ein Rechteck aus Pixeln. Von normalen Bildern unterscheiden sich Heightfields darin, dass die Pixel keine Farbe darstellen, sondern eine Höhe.
In TG0.9 ist es egal ob man vom "Heightfield" oder vom "Terrain" spricht. Deswegen wird zwischen diesen Begriffen oft nicht unterschieden, obwohl das bei TG2 sinnvoll ist. In diesem Tutorial versuche ich, genau dann und nur dann "Heightfield" zu schreiben, wenn ich auch wirklich ein Heightfield meine. (Bsp.: Prozedurale Terrains sind keine Heightfields.)
Wir haben bisher noch nichts gemacht, ein Heightfield ist offensichtlich bereits vorhanden, aber in der Preview sieht man nichts.
Das Heightfield muss erst noch erzeugt werden. Das geschieht mit einem Klick auf "Generate Now" unter den Einstellungen. Ein kleines Fenster erscheint, während das Heightfield generiert wird.
Ist das Heightfield vollständig berechnet, verschwindet das Fenster und die Preview beginnt zu arbeiten. Zunächst sieht man nur einige grobe Dreiecke, dann wird die Darstellung nach und nach verfeinert und man kann das Terrain erkennen. Außerdem wird zwischen Liste und Preview eine kleine Draufsicht angezeigt, die allerdings noch recht unzuverlässig ist.
Zu den Einstellungen von Heightfield generate:
Feature scale gibt an, wie groß die Elemente, sprich Berge, Täler, usw. sein sollen. Halbiert man den Wert, so werden die Berge kleiner und zahlreicher.
Feature steepness gibt an, wie steil, und somit wie hoch die Berge sind.
Roughness gibt an, wie rau und wie stark zerklüftet das Heightfield ist.
Seed (dt. Saat) ist eine Zahl, die ein bestimmtes Terrain repräsentiert. Ändert man diese Zahl, bekommt man ein völlig anderes Terrain, ändert man die Zahl dann wieder in den ursprünglichen Wert, bekommt man auch das ursprüngliche Terrain zurück.
Wie jede Einstellung, so wird auch Seed beim Speichern mit in die Datei geschrieben. Das bedeutet: Ein Heightfield muss im Gegensatz zu TG0.9 nicht mehr separat abgespeichert werden! Beim nächsten Start muss lediglich noch einmal "Generate Now" gedrückt werden - schon ist das Terrain wieder da.
Wenn man will, kann man die Terrains trotzdem abspeichern. Dazu klickt man im Node Network links auf den grünen "Terrain"-Button, daraufhin wird der Terrain-Bereich des Netzwerks eingeblendet. Hier sehen wir die beiden Shader aus der Liste wieder. Dann klickt man mit der rechten Maustaste auf den grünen "Heightfield generate"-Node, wählt "Save file as..." und speichert das Terrain wie gewohnt ab.
Alternative 1: Ein vorhandenes Terrain (.ter) laden
Man kann auch, wie in TG0.9 ein Terrain laden. Und hier muss man endlich auch mal was tun. Klick auf Add Terrain, klick auf Heightfield (load file). Nun wird man aufgefordert, das gewünschte Terrain rauszusuchen. Fertig. In der Liste stehen nun zwei Heightfield Shader. Terragen benennt die Shader automatisch. Der neu dazugekommene heißt Heightfield shader 02.
Der alte Heightfield shader 01 kann nun entweder beibehalten, gelöscht, oder deaktiviert werden.
Beibehalten:
Es schadet unter Umständen nicht, den Eintrag einfach stehen zu lassen. Der Grund dafür befindet sich in den Einstellungen des Heightfield shader 02. Im Tab Displacement (Verschiebung - ein Terrain verschiebt quasi Erdmassen nach oben, um Berge zu erzeugen) ist standardmäßig "Flatten surface first" aktiviert. Wie der Name schon sagt, wird also der Boden erstmal platt gemacht, bevor das neue Heightfield aufgesetzt wird. Entfernt man dort den Haken, kann man in der Preview sehen, dass sich beide Heightfields nun addieren.
Löschen:
Klicke auf den Shader, drücke [Entf].
Deaktivieren:
Klicke auf den Shader, unter der Liste erscheinen die Einstellungen für den Shader. Unter dem Feld für den Namen des Shaders befindet sich eine Checkbox (ein kleines Kästchen mit Haken drin) mit der Beschriftung "Enable" daneben. "Enable" bedeutet "Einschalten". Durch einen Klick in die Checkbox wird der Haken entfernt und somit der gesamte Shader ausgeschalten.
Praktisch jeder Shader lässt sich auf diese Art und Weise per Enable ein- und ausschalten. Das ist zum Beispiel praktisch, wenn man für Proberender das Wasser ausschalten möchte oder wissen will, wie die Surface mit und ohne einen bestimmten Layer aussieht.
Alternative Nummer 2: Ein vorhandenes Terrain (.ter) laden, aber diesmal etwas anders
Wir benutzen nicht Add Terrain, sondern modifizieren den schon existierenden Heightfield shader 01.
Zuerst löschen wir Heightfield generate (anklicken, [Entf] drücken). Nun klickt man den Heightfield Shader an und drückt den Button "Add Operator". In der Liste, die sich öffnet, wählt man nun Heightfield load. Da man nicht gefragt wird, welches Terrain man denn nun laden will, muss man das Terrain irgendwo selbst eintragen. Dazu klappt man die Liste durch Klick auf + wieder auf und wählt den grade angelegten Eintrag (also Heightfield load) aus. Wie üblich erscheinen unter der Liste die Einstellungen von Heightfield load.
Viele Optionen gibt es nicht - interessant ist der mittlere Abschnitt. "Read from file" (dt. "Lies aus Datei") ist bereits aktiviert. Die Zeile daneben ist jedoch leer. Dort kann man nun den Pfad zur Datei eintragen oder aber auf das kleine Ordnersymbol klicken, von wo aus man die Datei bequem raussuchen kann, wie man es von Windows oder OSX gewohnt ist.
Das soll es, fürs Erste, gewesen sein zum Thema Terrain. Der nächste Abschnitt behandelt das vielleicht wichtigste Werkzeug in TG2 - die Preview.
Spätestens jetzt sollte man mal speichern! TG2 ist, wie gesagt, noch recht unstabil und kann jederzeit ohne Vorwarnung abstürzen. Manch einer arbeitet stundenlang ohne irgendwelche Probleme. Andere wiederum öffnen TG2 mehrmals stündlich neu, weil es abgestürzt ist. Das Speichern geht wie gewohnt über File -> Save oder über einen Klick auf das kleine braune Disketten-Symbol in der Werkzeugleiste. Da man recht oft speichern sollte, ist es durchaus praktisch, die entsprechende Tastenkombination zu kennen: Strg+S. Die Endung der Datei ist ".tgd". Sie wird von TG2 automatisch angefügt.
Will man sein Projekt beispielsweise "See" nennen, ist es empfehlenswert, das Projekt als "see01" zu speichern. Bevor und nachdem man wichtige Veränderungen vornimmt, sollte man die Datei dann via "Save as..." unter dem neuen Namen "see02" sichern. Die nächsten Versionen nennt man dann "see03", "see04" und so weiter. So hat man jederzeit auch ältere Versionen des Projektes parat und kann diese laden, wenn einem die aktuelle Version doch nicht gefällt.
3. Preview und Kamera
Die Live-Preview
Die Preview, oder auf deutsch: Vorschau, in TG2 ist ein Thema für sich. In der Vorschau wird nach jeder Änderung am Projekt, auch nach dem Einstellen eines einzigen Parameters, die Vorschau von Grund auf neu erstellt. Die Berechnung erfolgt schrittweise: Am Anfang ist das Bild ein Haufen von Dreiecken, dann werden diese Dreiecke immer zahlreicher und kleiner, die Vorschau dadurch genauer.
Dabei wird das Bild nicht nur näherungsweise umrissen, sondern mit allen Komponenten wie Wasser, Himmel, Atmo, Surface gerendert, wodurch das Resultat dem normal gerenderten Bild sehr nahe kommt, natürlich in geringer Qualität. Darüber hinaus sind in der Preview auch weiße oder gelbe Linien zu sehen. Das sind rechteckige Umrisse diverser Dinge. Zum Beispiel wird das Heightfield von einer unsichtbaren Box mit weißen Kanten umrahmt. Weiterhin befindet sich in der Mitte dieser Box ein kleines Kreuz - an diesem könnte man das Heightfield verschieben, das ist jedoch momentan nicht nötig und wird hier auch nicht behandelt.
Nachteil: Die Preview verbraucht viel Leistung, besonders weil sie nach jeder kleinen Änderung von vorn anfängt. Darüber hinaus kann sie auf älteren PCs sehr langsam sein. Dabei spielt neben der CPU auch die Grafikkarte eine Rolle. Rechner mit schnellen Karten rednern die Preview schneller.
Die Vorschau ist die einzige Funktion TG2s, die von einer guten Grafikkarte profitiert. Der normale Render wird nur durch die CPU berechnet.
Steuerung von Vorschau und Kamera
Als ich mit TG2 angefangen habe, fand ich die Kamerapositionierung in der Preview, also in der 3D-Vorschau oben rechts, einfach mies - unintuitiv, zu kompliziert. Mittlerweile muss ich sagen, dass man sich sehr schnell dran gewöhnt und Planetside es geschafft hat, ein flexibles und einfach zu bedienendes System zu programmieren.
Zur Kamerapositionierung gibt es diverse Tasten/Mausklick-Kombinationen, die es zu üben gilt. Dabei sollte man beachten, dass es in TG2 zwei Typen von "Kameras" gibt. Zum einen ist da die Kamera, mit der gerendert wird. Was sie sieht, das ist nachher auch im Bild. Es kann auch mehrere Kameras geben, aber das lassen wir erstmal bleiben. Dann gibt es noch die "Kamera" der Preview. Damit meine ich den Bildausschnitt, den die Preview gerade zeigt.
Die folgende Übersicht zeigt die wichtigsten Möglichkeiten, die Vorschau-Kamera zu bewegen:
Sich umsehen Um mit der Kamera in eine andere Richtung zu sehen, halte [Alt] gedrückt und klicke währenddessen mit der linken Maustaste irgendwo in die Vorschau und halte auch die gedrückt. Wenn man jetzt die Maus bewegt, bewegt sich das Blickfeld in die entsprechende Richtung.
Die Kamera versetzen Um die Kamera ein Stück beiseite oder nach oben/unten zu schieben, hält man [Alt] und die Rechte Maustaste gedrückt. Bewegt man nun die Maus, verschiebt sich der Bildausschnitt.
"Zoom" Mit "Zoom" meint Planetside, die Kamera näher ran oder weiter weg zu bewegen. Das Prinzip der Tastenkombinationen sollte inzwischen klar geworden sein: Es gibt immer ein paar Tasten und eine Maustaste, die gedrückt gehalten werden müssen. Dann bewegt man die Maus und es passiert irgendetwas. Die Tasten für die Kamerabewegung auf das Motiv zu und vom Motiv weg sind [Alt]+[Shift] und die linke Maustaste.
Meine Empfehlung: Einfach mal alles ausprobieren. Im Prinzip kann man einen Finger immer auf [Alt] halten und [Strg] bzw [Shift] bei Bedarf zuschalten. Am Anfang kann das alles noch etwas ungewohnt sein, aber nach etwa einer Stunde aktiver Arbeit mit TG2 hat man's dann schon im Blut.
Während man sich in der Vorschau bewegt, kann man erkennen, dass sich die Werte in der Leiste unter der Preview ändern.
Im Ruhezustand stehen dort zunächst vier Werte. x, y und z, sowie slope (dt. Neigung). Die ersten drei sind offensichtlich Koordinaten, und zwar die Koordinaten des Punktes auf den der Mauszeiger gerade zeigt. Auch die Neigung/slope wird dort ermittelt und in Grad angezeigt. Zum Ausprobieren: Zeigt man auf eine flache Stelle, ist der slope-Wert niedrig. Zeigt man in den Himmel, wachsen die Werte der Koordinaten extrem an. Tatsächlich werden die Zahlen so groß, dass die Einheit "km" in die nächste Zeile rutscht - davon ist dann nur noch der oberste Zipfel des "k" zu sehen.
Bewegt man sich, oder hält man beim Zeigen in die Preview die rechte Maustaste gedrückt, ändert sich die Anzeige und neue Werte werden angezeigt: Vx, Vy, Vz und Vheight. Die ersten drei geben die Koordinaten des aktuellen Standpunkts an. Der vierte die Höhe über dem Terrain.
Links neben den Koordinaten befinden sich einige Buttons. Einer davon hat die viel sagende Beschriftung "L". "L" steht für "look at" zu deutsch: "drauf schauen". Ist der Button aktiviert, kann man mit [Strg]+Rechtsklick die Stelle bestimmen, auf die die Kamera schaut.
Der Button daneben ist mit "FO" beschriftet. Oben in der Tabelle steht, dass man sich mit [Alt]+Linke Maustaste in der Preview umsehen kann. "FO" steht nun für "free orbit mode". In diesem Modus kann man sich per [Alt]+Linke Maustaste freier bewegen als vorher. Konkret heißt das, man kann nun auch die Seitenneigung ändern. Am besten einfach mal ausprobieren!
Nun gibt es dort noch zwei Buttons. Zum einen den "View Camera"-Button. Klickt man ihn an, wechselt die Vorschau sofort zur Perspektive der (Render-)Kamera. Was man jetzt in der Vorschau sieht, genau so sieht es die Kamera.
Jetzt gibt es mal wieder wirklich was zu tun. Such dir mit Hilfe der Vorschau eine schöne Stelle im Terrain und rücke die Ansicht so zurecht, dass die Landschaft in der Vorschau so zu sehen ist, wie du es gern in deinem Bild hättest.
Bisher haben wir immer nur mit der Vorschau gearbeitet, sind auf unserem Planeten umhergewandert, haben dabei aber nie die Render-Kamera geändert. Das machen wir jetzt mit Klick auf "Set Camera". *klick* Dieser Button hat uns gerade die Kamera genau so eingestellt, dass sie genau das zeigt, was wir in der Vorschau sehen.
Die Vorschau hat momentan keinen Himmel, stattdessen ist alles schwarz. Das lässt sich ändern. Über der Preview sind immer noch die drei kleinen bunten Buttons. Der erste schaltet eventuelle Shader an oder aus. Allerdings ist nicht jeder Shader davon betroffen. Der zweite Button hat ein Himmels-Bild drauf. Klickt man ihn an, werden in der Vorschau auch Himmel und Atmo (Nebel, Wolken etc.) gerendert. Der dritte schaltet ein realistischeres Beleuchtungsmodell ein.
4. Rendern
Zum Render-Tab gelangt man durch Klicken auf den Button "Renderers". Links befindet sich wieder eine Liste. Dort stehen standardmäßig zwei Einträge: "Full Render" - Voller Render und "Quick Render" - Schneller Render. Grundsätzlich kann man beliebig viele eigene Renderer anlegen und für jeden eine eigene Kamera platzieren. Schauen wir uns aber erst einmal die beiden vorhandenen Renderer an.
Beispiel: Quick Render
Der Quick Render ersetzt die Preview aus TG0.x. Er unterscheidet sich von anderen Renderern, wie etwa Full Render, prinzipiell nicht. Alle Renderer bieten dieselben Optionen. Man könnte zum Beispiel den Quick Render genau so einstellen, wie den Full Render und andersherum. Damit man aber nicht bei jedem neuen Projekt erst einen Renderer für Vorschaubilder und einen für Bilder mit voller Qualität erstellen muss, legt TG2 bei jedem neuen Projekt automatisch zwei Renderer für diese Zwecke an. Weil er nur zur Vorschau gedacht ist, ist der Quick Render so eingestellt, dass er nur ein kleines Bild mit geringerer Qualität berechnet.
Allgemeine Einstellungen
Wählt man einen der Renderer aus der Liste aus, erscheinen dessen Einstellungen unter der Liste.
Die erste Einstellung ist der Name. Dazu gibt es natürlich nicht viel zu sagen, außer, dass manche Namen Probleme machen können (siehe oben).
Dann folgen Image width (dt. Bildbreite) und Image height (dt. Bildhöhe). Wie die Namen schon sagen, stellt man hier Höhe und Breite des Bildes in Pixel ein. Beim Quick Render beispielsweise ist ein 320x240px großes Bild eingestellt. Neben dem Feld für Image width befindet sich ein Kästchen. Mit diesem kann man "Lock aspect ratio" (dt. Seitenverhältnis sperren) einschalten. Im Feld darunter wird das Seitenverhältnis angezeigt. Anfangs ist das Seitenverhältnis 1.33333, denn 320/240 = 1.3333... = 4:3.
Was bedeutet nun "Lock aspect ratio" genau? Aktiviert man das Kästchen, bleibt das Seitenverhältnis immer gleich. Erhöht man zum Beispiel die Breite auf 1024, dann wäre das Bild im Format 1024:240. Hat man aber Lock aspect ratio aktiviert, wird die Höhe automatisch angepasst, sodass das Seitenverhältnis genau so groß ist wie vorher. Die Option sollte daher aktiviert sein, wenn man die Auflösung des Bilds vergrößern will.
In der nächsten Zeile stellt man Pixel aspect ratio ein. Das ist das Seitenverhältnis eines einzelnen Pixels (dt. Bildpunkts) auf dem Ausgabegerät. Normalerweise ist dieses Seitenverhältnis 1, denn ein Pixel auf einem Computer-Monitor ist quadratisch - das Seitenverhältnis also 1:1 = 1. Um diesen Punkt braucht man sich normalerweise nicht zu kümmern.
Camera ist die Kamera. Hier ist im Normalfall die Standard-Kamera "Render Camera" eingetragen. Wenn man mehr Kameras hat, kann man diese hier eintragen. Haben wir aber nicht, also gibt es hier auch nichts zu tun.
Unter der Camera-Zeile befinden sich 3 Kästchen: "Surface visible" (dt. Oberfläche sichtbar), "Atmosphere visible" (dt. Atmosphäre sichtbar) und "Do shadows" (Schatten werfen). Die drei sind standardmäßig aktiviert und im Grunde selbst erklärend. Das Bild links zeigt einen Render einmal mit allen Optionen eingeschaltet und drei Versionen, in denen jeweils eine Option ausgeschaltet wurde. Im Einzelnen passiert dabei Folgendes: Surface visible schaltet die gesamte Surface an/aus. Atmosphere visible schaltet die Atmosphäre, kurz "Atmo", an/aus. Dabei verschwindet auch der Himmel. Do shadows schaltet Schlagschatten an/aus. Das heißt die Schatten, die dadurch entstehen, dass eine Fläche nun mal nicht im Licht liegt, bleiben sichtbar.
Darunter befindet sich nun schön groß der "Render Image"-Button. Drückt man drauf, rendert Terragen los.
Der Renderprozess
Wähle den "Quick Render" aus und klick auf "Render Image". Nun taucht ein neues Fenster "Render View" in Größe des zu rendernden Bildes auf. Das kann jetzt, je nach PC, 'ne Weile dauern. Währenddessen hier ein paar Erklärungen, wie TG2 rendert. Zunächst tauchen auf der schwarzen Fläche vereinzelt Punkte auf. Die Berechnung dieser Punkte hört auf den Namen "Global Illumination Prepass". Sie ist Teil der Berechnung der Global Illumination, darauf kommen wir später noch. An den Punkten erkennt man vor allem, dass Terragen tatsächlich etwas tut.
Im Render View gibt es oben eine Leiste mit zwei Buttons und einem Statustext. Der "Pause..."-Button tut das, was drauf steht: er hält den Render an. Klickt man noch einmal auf den selben Button, der nun mit "PAUSED" beschriftet ist, geht es weiter. Der "Stop"-Button daneben ist ebenfalls selbst erklärend: er bricht den Render ab. Klickt man darauf, wird man noch gefragt, ob der Render gestoppt ("Stop"), oder ob weitergerendert werden soll ("Continue Rendering"). Zu guter letzt ist neben den Buttons noch eine Statuszeile. Rendert TG, zeigt sie "Rendering" an, dahinter die Zeit, wie lange bereits gerendert wird. Ist der Render pausiert, steht dort "PAUSED render". Am besten ist natürlich die Meldung "Finished rendering" - Render beendet. Dahinter steht noch die insgesamt abgelaufene Zeit.
Ist das gesamte Bild mit Punkten gefüllt, kann man anhand deren Farben schon das Aussehen des Bilds erahnen. Als nächstes wird irgendwo ein rechteckiger Teil des Bilds wieder schwarz werden, die Punkte dort sind dann verschwunden. Nun geht das eigentliche Rendern los. Zunächst werden Wasser und Objekte gerendert, dann kommt das Terrain und die Surface. Ist das aktuelle Rechteck fertig, kommt das nächste dran, bis das gesamte Bild fertig gerendert ist oder Terragen abstürzt.
Ist es fertig, vermeldet das Programm im Renderfenster "Finished rendering". Nun hat man die Möglichkeit, das Bild in verschiedenen Formaten zu speichern, indem man "Save..." klickt. Man kann aber auch sofort wieder "Render" drücken, und es fängt wieder an zu rendern. Der Sinn dieses Buttons ist folgender: Wenn man am Projekt irgendetwas verändert, das Terrain, die Surface, das Wasser, was auch immer, dann kann man dazu immer den letzten Render geöffnet lassen. Beim nächsten Render braucht man nicht erst in den Render-Tab zu gehen, sondern kann gleich im noch offenen Fenster "Render" anklicken.
Weitere Einstellungen des Renderers
Die Qualität eines Bildes hängt logischerweise ganz entscheidend davon ab, wie es schlussendlich gerendert wird. Deshalb ist es wichtig, die wesentlichen Einstellungen des Render-Algorithmus zu kennen. Diese Einstellungen sind unter dem "Render"-Button in Tabs geordnet:
Quality (dt. Qualität)
Detail: Der "Detail"-Regler ist ein globaler Parameter. Er hebt die Qualität aller Aspekte des Bildes an. Höhere Werte sind natürlich besser. Je nach Szenerie sollte man für das fertige Bild einen Wert zwischen 0.5 und 1 wählen. An dieser Stelle gibt es allerdings auch ein paar Dinge zu beachten.
Indem man die gewünschte Zahl direkt eintippt, lassen sich in der Regel höhere bzw. niedrigere Werte erzielen, als durch Ziehen des Reglers. Beispiel Detail: Der niedrigste Wert, den man einstellen kann, ist 0. Per Eingabe kann man aber auch Werte kleiner als 0, wie etwa -1, nutzen. Das interpretiert TG allerdings trotzdem als 0, weil ein negativer Detail-Wert keinen Sinn macht.
Anders sieht es mit einem höheren Wert aus, beispielsweise 2. Der Regler sieht dann aus, als stehe er bei eins, dennoch ist jetzt ein höheres Detaillevel eingestellt. Siehe Screenshot. Das geht bei praktisch jedem Parameter in TG2!
Anti-aliasing, kurz AA: ist eine Methode um Kanten zu glätten. Da Pixel auf einem PC rechteckig sind, hat jede Fläche aus Pixeln einen Rand aus horizontalen und vertikalen Kanten. Dadurch entsteht eine Art Treppeneffekt. Anti-Aliasing vermindert diesen.
Besonders am Horizont sind die Stufen deutlich zu erkennen, das Bild wirkt unrealistisch. Mit AA hingegen werden die Kanten angenehm weich, wie man es auch auf Digitalfotos sieht. Die Voreinstellung ist 3, das reicht auch aus, ein höherer Wert bewirkt kaum noch etwas, außer längere Renderzeiten.
GI - Global Illumination (dt. Globale Ausleuchtung) ist ein ganz alltägliches optisches Phänomen. Wenn man sich sein Zimmer anschaut und sich die Frage stellt, aus welcher Richtung das Licht kommt, fällt einem die Sonne ein, die durch die Fenster scheint. Aber es muss noch andere Lichtquellen geben, sonst wäre ja jede Fläche, die nicht direkt im Sonnenlicht liegt, völlig schwarz. Tatsächlich aber kann man selbst in den hintersten Ecken eines Zimmers noch alles gut erkennen. Das liegt natürlich daran, dass alle Materialien Licht reflektieren/streuen. Das gestreute Licht wird wiederum gestreut, diese gestreute Licht wird wieder gestreut usw..
Dieser Prozess wird durch GI simuliert. Eine Fläche, die im Schatten liegt, wird nun nicht mehr einfach pauschal etwas dunkler gemacht, wie noch in TG0.9, sondern kann ebenfalls sehr hell sein, falls durch Streuung an anderen Flächen genug Licht in den Schatten gelangt. In den Beispielbildern links ist das gut zu erkennen. Der weiße Schnee reflektiert Licht sehr stark, so ist selbst der Bereich im Schatten gut ausgeleuchtet. Etwas weiter hinten sind die Schatten nicht so hell, da dort eine Fläche fehlt, die das Licht geeignet zurückstreuen würde.
Die Einstellungen der GI haben einen enormen Einfluss auf die Renderzeit! Zu GI gibt es zwei Parameter. Zum einen ist da GI relative detail. Je höher dieser Wert ist, desto detaillierter wird die GI-Berechnung: Konturen werden stärker sichtbar, die Beleuchtung gewinnt an Kontrast. Der zweite Parameter ist GI sample quality. Er gibt an, wie hoch die Qualität der Berechnung ist.
Die Übersicht links sollte man sich mal anschauen. Ich erhebe keinen Anspruch darauf, dass die Szene ein besonders typisches Beispiel ist, dennoch sieht man dort einige interessante Effekte - oder man sieht sie nicht, was ebenfalls gut zu wissen ist. Als erstes fällt auf: Höheres relative detail resultiert in stärkeren Schatten. Flächen, die weniger Licht erhalten, werden konsequent dunkler gerendert. Gleichzeitig wird dieser Effekt sehr grob dargestellt - Schatten erscheinen als große Flecken. Dieser Effekt kann durch eine höhere sample quality jedoch gut gemindert werden. Letztlich ist kaum zu unterscheiden, welche Kombination nun am besten aussieht. Dennoch spielt es eine Rolle, welche man wählt - denn die Renderzeiten sind umso höher, je größer die Werte sind. Ich persönlich würde Werte von 1 oder 2 für jeweils beide Parameter empfehlen.
Crop Region (dt. Bereich eingrenzen)
Dem "Crop Region"-Tab kommt eine besondere Bedeutung zu. Die Einstellungen hier begrenzen die Fläche, die gerendert wird. Am besten probiert man die Crop-Funktion sofort aus, dabei kann man nichts falsch machen.
Klick' auf das Kästchen "Do crop region"! Um die Vorschau erscheint ein rotes Rechteck. Dieses markiert den Bereich, der gerendert wird. Zieh die Regler darunter hin und her. Mit eben diesen lässt sich die zu rendernde Fläche einstellen.
Rendert man jetzt das Bild, ist es zum Teil schwarz, nur die ausgewählte Fläche wird gerendert. Das ist besonders dann nützlich, wenn man das Aussehen einer bestimmten Stelle im Bild prüfen will, ohne einen Zeit raubenden Test-Render in Kauf nehmen zu müssen.
Für das weitere Tutorial sollte "Do crop region" wieder deaktiviert werden.
Effects (dt. Effekte)
Der zunächst einzige wichtige Wert hier ist der Gamma-Wert. Dieser Wert ist grob gesagt eine Art Maß für den Kontrast. Erhöht man den Wert, werden hellere Farben noch einmal heller dargestellt - das kann bei einem Bild ohne dunkle Stellen sehr blass wirken. Da man aber seine Bilder meist mit viel Kontrast rendern möchte, macht es oft Sinn, den Gamma-Wert zu verringern. Wie weit nach unten - das ist jedem selbst überlassen. Die Grafik links gibt einen groben Eindruck davon, wie sich der Gamma-Wert auswirkt.
Stelle sowohl im Full, als auch im Quick Render einen Gamma-Wert von 1.5 ein! Momentan ändert sich nicht viel, aber später wird der Unterschied deutlich zu erkennen sein.
Renderzeiten
Ein Render hat in TG0.9 schon lange gebraucht. Das hat sich in TG2 nicht geändert. Man sollte jedoch bedenken, dass man in TG2 wesentlich mehr für die investierte Zeit geboten bekommt, als in TG0.9. Darüber hinaus kann man Renderzeiten drastisch verkürzen, indem man auf sinnlos hoch geschraubte Qualitätswerte verzichtet. Für Tests kann man einfach per Crop den zu testenden Teil des Bilds auswählen, und nur diesen rendern lassen. Für viele Dinge, wie etwa die Farbwahl, braucht man gar keinen Render mehr - die Live-Preview zeigt sofort das Ergebnis an, oder zumindest schneller, als es ein normaler Render würde.
Hier ist Kapitel 4 zu Ende. Es war recht trocken, aber
jetzt kommen wir wieder zu etwas Interessanterem!
5. Surface
Die Surface - auf Deutsch Oberfläche, umfasst, wie der Name schon sagt, die Oberfläche des Terrains. Eine gute Surface zu kreieren fällt den meisten Leuten am Anfang schwer. In TG2 wird es durch die vielen Möglichkeiten zunächst noch etwas komplizierter als in TG0.9, die Surface wunschgemäß zu verändern. Dafür sieht man in der Preview zum Beispiel sofort, wie die gewählte Farbe im Bild aussieht, was einem viel Zeit für Testrender erspart.
Wechsle zuerst einmal in den Tab "Shaders". Links erscheint, wie gewohnt, eine Liste mit bereits vorhandenen Shadern. Das heißt: mit den Shadern, die die Surface verändern. Momentan ist das genau einer: "Base colours" (dt. Basis-Farben), übrigens ein Power fractal shader. Er überzieht das Terrain mit einer zweifarbigen prozeduralen Textur. Welche Farben das sind, sieht man in den Einstellungen des Shaders im Tab "Colors". Der Standard sind zwei Grautöne, die als Grundlage für Gestein auch völlig ausreichen.
Planung für die Surface
Mein Ziel für das Tutorial ist eine einfache, aber solide Gras-Surface. So eine kann man immer gebrauchen und ist auch nicht zu aufwendig. Dabei soll ein Layer für Sand und zwei für Gras zunächst ausreichen. Der Sand macht den Anfang.
Surface Layer
Einen Surface Layer (dt. Oberflächen-Schicht) kann man sich als eine Boden-Schicht vorstellen. Man stellt sich die Surface (dt. Oberfläche) aus verschiedenen dieser Layers/Schichten zusammen. Man ist aber nicht gezwungen, nur Erde oder Gestein damit darzustellen, sondern kann auch große Grasflächen simulieren. Als erstes wollen wir den Layer für Sand erstellen. Klick auf "Add Layer" und in dem sich öffnenden Auswahlmenü auf "Surface Layer".
Daraufhin ändern sich drei Dinge:
- In der Liste erscheint ein neuer Eintrag "Surface layer 01"
- Die Preview rendert die Szene neu, diesmal in einem milchigen Weiß - der Farbe des soeben hinzugefügten Layers
- Im Network View kommen im Bereich "Shaders" zwei Nodes hinzu.
Klick den Eintrag "Surface layer 01" an. Wie üblich, werden darunter dessen Einstellungsmöglichkeiten sichtbar. Die Eigenschaften eines Surface Layers werden von TG2 in zwei Kategorien unterschieden, die auch beide in getrennten Bereichen eingestellt werden (siehe Screenshot). Oben (blau markiert) finden sich alle Parameter zum Aussehen des Layers. Darunter (rot markiert) befinden sich die Einstellungen zur Verteilung des Layers.
Sand - Color, Luminosity, Smoothing
Wir wollen zunächst einen sandigen Untergund für unser Gras. Am besten benennen wir den Layer erstmal in "Sand" o.Ä. um. Das erste was wir dazu sinnvollerweise einstellen, ist...
Color
Color, zu deutsch Farbe. Sie lässt sich im Tab "Color" ändern, indem man auf das kleine Kästchen neben dem Regler klickt. Daraufhin wird ein Windows- bzw. Mac-typisches Farbwahlfenster sichtbar. Für Sand empfiehlt sich intuitiv ein heller gelblicher Ton. Aber: Intuition kann auch zu Fehlschlüssen führen. Sand zum Beispiel ist praktisch nie wirklich gelb, sondern, besonders an Stränden, eher weiß. Ich habe für meinen Sand die Werte 243,239,212 (Rot,Grün,Blau) gewählt. Das ist ein heller Ton mit einem leichten Gelb-Schimmer. Dieser Wert soll aber nur als Orientierung dienen, dieses Tutorial ist keine Abschreib-Übung. ;)
Der schon erwähnte Regler dient dazu, die Helligkeit der Farbe schnell ändern zu können. Dabei wird als Besonderheit die Sättigung gleich mit korrigiert, d.h. sie wächst mit der eingestellten Helligkeit. Der Hintergrund dazu ist folgender: Erhöht man am PC wirklich nur die Helligkeit einer Farbe, nähert sie sich immer weiter an Weiß an - dadurch wird sie zwar tatsächlich heller, allerdings auch immer blasser. Diesem Effekt wird durch Erhöhen der Sättigung entgegengesteuert. Natürlich hat auch diese Methode Grenzen: Wenn man auf einem ganz Mindestmaß an Sättigung besteht, kann man bestimmte sehr helle und sehr dunkle Farbtöne nicht erreichen. (Wobei die dunklen Farben weniger kritisch sind, da das menschliche Auge sie ohnehin kaum unterscheiden kann.)
Sofort nach Festlegen der neuen Farbe fängt auch die Preview wieder an zu arbeiten und man sieht sofort, oder zumindest recht bald, wie die Farbe wirkt. Sah sie in der Farbwahl noch etwas dröge aus, wirkt sie nun, dank Licht und Schatten wesentlich frischer! Wenn nicht - auch nicht schlimm, denn wenn nachher das Gras hinzukommt wirkt die Farbe ohnehin wieder anders. Kommen wir erstmal zu den restlichen Tabs.
Arbeitet man an der Surface, wird in der Preview automatisch die Darstellung des Himmels/der Atmosphäre abgeschaltet. Das beschleunigt zwar den Renderprozess der Preview, Farben können aber aufgrund der fehlenden Atmosphäre eintönig und trocken aussehen. Daher ist es manchmal ratsam, die Atmosphäre wieder anzuschalten.
Luminosity
Luminosity ist die Eigenschaft einer Oberfläche, zu leuchten. Diese Option ist normalerweise nicht aktiv, da in der freien Wildbahn die wenigsten Steine, Erden, Gräser von sich aus leuchten. Möchte man für eine bestimmte Oberfläche, beispielsweise Lava, dennoch, dass sie glüht, kann man neben der Intensität des ausgestrahlten Lichts via Luminosity tint auch dessen Farbe einstellen.
Einige Lichteffekte, wie zum Beispiel Reflexionen, sind noch nicht wirklich fertig. Deren Verwendung kann daher zu Abstürzen führen, oder die erzielten Effekte entsprechen nicht den Erwartungen. Bei der Verwendung sollte man daher vorsichtig sein und noch öfter speichern als sonst.
Displacement
Displacement (dt. Verscheibung) kam nun im Tutorial schon öfter vor. Bisher haben wir es lediglich benutzt, um Berge aus dem Boden zu stampfen. Man kann, mit der richtigen Funktion, jedoch nicht nur Landschaften, sondern auch sehr feine Strukturen damit erzeugen. Insbesondere kann man damit einem Surface-Layer eine Struktur verleihen. Die Funktion ist vorerst deaktiviert, was bedeutet, dass unser Layer momentan lediglich die Farbe verändert. Die Erklärung zu dieser Option gibt es später.
Smoothing
Smoothing hilft einem Layer, weniger stark der Struktur des unter ihm liegenden Layers zu folgen. Ein Beispiel: Eine starke Schneeschicht kann völlig glatt und weich erscheinen, obwohl das darunterliegende Geröll unwegsam und schroff ist. Auch diesen Parameter werden wir nicht benutzen, warum eigentlich nicht?
Smoothing funktioniert in Verbindung mit Intersect underlying, das wiederum funktioniert momentan noch nicht korrekt.
Das war einfach, aber Sand ist ja auch nur eine grobe Basis - weiter geht es mit Gras.
Gras - Slope constraints, Displacement, Coverage and breakup, Altitude constraints, Tweaks
Jetzt wird's interessant. Füge per "Add Layer" - "Surface Layer" einen weiteren Layer hinzu und benenne ihn in "Gras" um. Das Gras soll nachher aus mindestens zwei Layern bestehen: einem mittleren, einem dunklen und einem hellen. Der, den wir grad erstellt haben, soll der mittlere sein, also gib ihm einen nicht zu hellen, matten, grün-gelblichen Farbton. (Ich nehm 61,68,34). Sofort färbt sich in der Preview die gesamte Landschaft grün. Das ist allerdings langweilig und unrealistisch, das Gras sollte nicht überall wachsen können, sondern nur an flachen Stellen. Diese und weitere Optionen können in den Tabs unten eingestellt werden.
Slope Constraints
Wo das Terrain zu steil ist, sollte statt des Grases der Untergrund zum Vorschein kommen. Das geht mit Slope Constraints (dt. Neigungsgrenzen). Das gleichnamige Tab befindet sich im auf dem Screenshot oben rot markierten Bereich. Die erste Option dort ist Limit maximum slope (dt. maximalen Anstieg begrenzen). Mit einem Klick auf das Kästchen wird sie aktiviert. In der Preview sieht man das Resultat: Gras wächst nun bei weitem nicht mehr überall. Um den Effekt noch anzupassen, gibt es zwei Parameter: Maximum slope angle (dt. maximaler Neigungswinkel) bestimmt, ab wieviel Grad der Layer aufhört zu existieren. An Stellen, deren Neigung höher ist, als dieser Wert, kommt der Layer dann nicht mehr vor.
Der andere Parameter ist Max slope fuzzy zone (dt. Übergangszone des maximalen Neigungswinkels). Er steuert, wie weich der Übergang zwischen "sichtbar" und "nicht sichtbar" ist. Im oberen der beiden Screenshots links ist die fuzzy zone auf 0 gesetzt, daher gibt es keinen Übergang - entweder der Layer ist zu sehen, oder nicht. Bei exakt 60° ist die Grenze. Im Bild darunter steht fuzzy zone auf der Voreinstellung von 30°, deswegen ist der Übergang sehr weich. Oberhalb von 60° ist erwartungsgemäß nichts zu sehen. Bei 60° taucht langsam der Layer auf, bei 30° ist er dann voll zu sehen.
Dabei spielt auch Fractal breakup noch eine Rolle, was aber im Moment noch nicht wichtig ist.
Ich werde fuzzy zone etwas runterstellen, damit die Trennung von Gras und dem Rest besser rauskommt. Nun, da eine rudimentäre Surface vorhanden ist, lohnt es sich, nochmal zu prüfen, ob der bisherige PoV tatsächlich gut ist, und ggf. auf die Suche nach einem anderen PoV zu gehen. Inzwischen kann man auch mal wieder einen Test-Render machen.
Na das sieht doch schon ganz brauchbar aus, aber "ganz brauchbar" reicht uns natürlich nicht. Man kann sofort einige Dinge sehen, die an der Surface verbessert werden sollten: Das Gras könnte etwas Struktur vertragen, die Surface ist generell nicht sehr abwechslungsreich.
Displacement
Um Struktur in unseren Gras-Layer zu bekommen, wechseln wir in das Displacement-Tab. Momentan ist keine der Einstellungen dort aktiv, da keine Displacement function angegeben ist.
Displacement bezeichnet allgemein eine Verformung des Terrains. Am besten stellt man sich Displacement so vor, dass anhand einer vorgegebenen Form, also einer Funktion oder einem Heightfield, Strukturen in das Terrain geprägt werden.
Ein Heightfield ist oft nur ein kleiner Ausschnitt einer 3-dimensionalen Funktion. Es hat eine bestimmte Größe und einen feststehenden Detailgrad, Funktionen hingegen sind unendlich groß und gleichzeitig sehr detailliert strukturiert. Ein weiterer Unterschied: Heightfields liegen fertig vor, während Terrains aus Funktionen erst bei Bedarf berechnet werden. Terrains, die erst beim Rendern aus Funktionen generiert werden nennt man Prozedurale Terrains. In TG2 werden solche Funktionen durch Shader erzeugt.
Wir wollen für die Struktur unseres Layers einen Power fractal shader verwenden. Klick auf den Button "..." neben dem Eingabefeld in der Zeile "Displacement function", geh dann auf "Create new shader" - "Surface shader" und klick auf den Eintrag "Power fractal shader v3".
Würde man nun einen weiteren Testrender starten, könnte man sehen, dass dort, wo vorher Gras war, die Oberfläche tatsächlich rauer geworden ist. Allerdings hat die Beschaffenheit der Surface nun nicht mehr viel mit Gras zu tun, außerdem sind durch das Displacement Stellen entstanden, wo die Surface plötzlich nicht mehr grün ist, obwohl wir das in unserem Surface Layer so festgelegt hatten.
Scale
Zuerst stellen wir das Displacement passend ein. Klick wieder auf den ...-Button und wähle "Go to Power fractal shader v3 01". Ein Fenster mit den Einstellungen des Shaders öffnet sich. Das bereits geöffnete "Scale"-Tab bietet genau, was wir brauchen. Drei Parameter gibt es hier einzustellen: Lead-In scale, Smallest scale und Feature scale. Die Werte geben an, in welchen Größenordnungen sich die vom Shader erzeugten Features (dt. Geländemerkmale) bewegen. Dabei gibt Smallest scale an, wie groß die feinsten Strukturen sind. Voreingestellt ist hier 0.1, das heißt es gibt keine Strukturen, die kleiner sind als 10cm. Umgekehrt bestimmt Lead-In scale, wie groß die Landschaftsmerkmale, beispielsweise Berge, höchstens werden. Feature scale ist die Größenordnung, in der sich die meisten Features bewegen.
Was "Features" tatsächlich sind, hängt von der Interpretation ab. Benutzt man einen Shader mit hohen Scale-Werten, um ein Terrain zu erstellen, sind die Features letztlich Gebirgsketten, Berge, Hügel oder Felsen. Nutzt man den Shader zum Displacement eines Surface Layers, können die Features aber auch so klein gemacht werden, dass sie eher Sandkörner simulieren.
Das Resultat des Shaders muss auch nicht für Displacement genutzt werden, sondern kann auch als Maske oder Textur dienen.
Wir wollen Gras simulieren. Eine Wiese ist sehr fein struktiert, ein Grashalm ist kaum breiter als 1cm. Deswegen geben wir folgende Werte ein: 0.01 für Lead-In scale, 0.005 für Smallest scale und 0.008 für Feature scale. Mit dieser Lead-In scale ist unser Gras allerdings auch nur maximal 1cm hoch. Das macht allerdings nichts, denn die maximale Höhe lässt sich noch separat einstellen, schließe dazu das Fenster und schau wieder in das Displacement-Tab des Gras-Layers. Displacement multiplier (dt. Displacement-Multiplikator) bestimmt, zumindest in unserem Fall, die Höhe des Displacements. Grashalme sind in der Natur immer ziemlich hoch, aber 20cm (0.2) sollten ausreichen.
Slope Key
Nun zum nächsten Problem. Durch das Displacement wird unsere Surface verformt. Dadurch sind Stellen entstanden, deren Neigung größer als 60° ist. Wir haben aber unseren Gras-Layer auf höchstens 60° begrenzt - daher ist an solchen Stellen die grüne Farbe des Layers nicht mehr zu sehen, obwohl auch diese Stellen ursprünglich im Layer lagen.
Der Grund für dieses Phänomen liegt in Reihenfolge, in der TG2 die Layer rendert. Zuerst werden die Displacements angewandt, dann wird anhand des entstandenen Terrains entschieden, ob ein Layer an einer Stelle zu sehen ist, oder nicht. TG2 bietet aber auch eine Möglichkeit, das zu beeinflussen. Gehe zurück in das Tab "Slope constraints". Hier gibt es ganz unten eine Wahlmöglichkeit für Slope key (dt. Neigungs-Schlüssel). Dieser Schlüssel gibt an, welche Terrains oder Displacements zur Berechnung der Hangneigung herangezogen werden. Normalerweise ist hier Final normal (dt. End-Normale) eingestellt. Das bedeutet, dass das Terrain und die Displacements der gesamten Surface nacheinander angewandt werden und das Resultat zur Ermittlung der Neigung genutzt wird. Wir wählen die zweite Option: Terrain normal. Damit wird das nur das Terrain, also die im Terrain-Tab eingestellten Shader, beachtet. Unser Displacement wirkt sich also nicht mehr auf den Gras-Layer aus. Eine dritte Option Planet/object normal ignoriert sogar das Terrain und richtet sich nur nach der Form des Planeten bzw. des Objekts auf dem die Surface liegt.
Gradient Patch Size
Das Resultat unser bisherigen Bemühungen sieht leider schlimmer aus als vorher, die Surface wirkt grob und irgendwie fleckig. Das liegt am neuen Slope Key. Vorher wurden die Displacements/das Terrain erst in voller Genauigkeit ausgerechnet und dann die Surface verteilt. Nun, da wir aber als Slope key die Terrain-Normale benutzen, kann TG2 nicht auf ein fertig berechnetes Displacement/Terrain zurückgreifen - stattdessen nimmt es das Ergebnis des Compute Terrain-Nodes.
Zur Erinnerung: Nodes sind die kleinen Kästchen im Node Network unten rechts. Dort werden wir jetzt wohl oder übel kurz ran müssen. Klick zuerst auf den grünen Button "Terrain" (im Screenshot mit weißem Pfeil gekennzeichnet). Dadurch wird der Bereich mit den Nodes fürs Terrain herangegeholt. Klicke dann doppelt auf den Node namens "Compute Terrain" (das rote Kästchen, siehe anderen weißen Pfeil).
Compute Terrain (dt. Berechne Terrain) berechnet eine vorläufige Version des Terrains. Das geschieht jedoch nur mit 10m-Genauigkeit. Auch wenn das Terrain sehr detailliert ist, wird es nur in 10m-Brocken berechnet. Die großen Flecken von Gras bzw. die großen grasfreien Flecken - die Ursache ist das ungenaue Terrain. Doch das muss nicht sein! ;)
Gradient patch size (dt. Größe der Teilflächen zur Anstiegsberechnung) heißt der einzige Parameter des Compute-Terrain-Nodes. Er gibt an, wie groß die Flächen sind, aus denen sich das für die Berechnung der Hangneigung herangezogene Terrain zusammensetzt. Je kleiner der Wert, desto genauer. Im Bild links sind die Resultate für einige Werte gezeigt. Standard sind 10, für unsere Zwecke eignet sich ein Wert von 0.1 oder weniger. Übrigens: Für uns wäre es zwar Unsinn, aber auch ein hoher Wert kann nützlich sein.
Child Layer
Bis jetzt haben wir nur einen einzigen Gras-Layer, was sehr wenig ist. Damit die Surface abwechslungsreicher wird, fügen wir zum Gras zwei Child Layer (dt. Kind-Layer) hinzu. Klick in der Liste auf unseren Gras-Layer und dann auf den Button "Add Child Layer" und dann "Add Surface Layer". Auf diese Art und Weise bekommen wir einen neuen Layer, der genau dort auftaucht, wo der Gras-Layer auch ist. Unser Displacement ist übrigens auch eine Art Child-Layer.
Die Surface färbt sich sofort weiß. Mit einem Klick auf das +, klappen wir den Gras-Eintrag auf. Dort steht nun, über dem Displacement, das wir hinzugefügt haben, den neuen Layer. Außerdem sehen wir, dass er seinen Eltern-Layer (das Gras) völlig überdeckt, das wollen wir natürlich nicht, deswegen kümmern wir uns nun um...
Coverage and breakup
Coverage
Coverage (dt. Abdeckung) befindet sich im Tab "Coverage and breakup" ganz oben. Sie bezeichnet, wie stark der Layer die darunterliegenden bedeckt. Fügt man einen neuen Layer hinzu, steht Coverage auf 1, das heißt 100% - der Layer verdeckt alles was darunter liegt vollkommen. Auch, weil noch keine Begrenzungen für Höhe oder Neigung (Slope, siehe oben) angegeben sind.
Das Bild links zeigt das Testbild mit voller (1), das rechts mit halber Coverage (0.5). Dabei ist Breakup auf 0. Man kann deutlich erkennen, wie der zweifarbige Base colors-Layer durchscheint, das Rot ist dabei deutlich verblasst.
Stell' die Coverage des neuen Layers auf 0.5.
Solche halb-transparenten Erdschichten kommen in der Natur allerdings doch eher selten vor und sehen auch recht künstlich aus. Abhilfe schafft Breakup.
Fractal Breakup
Fractal Breakup (dt. Fraktales Aufbrechen) befindet sich im "Coverage and breakup"-Tab unter dem Regler für Coverage. Die Option muss erst mit einem Klick in das Kästchen aktiviert werden. Steht der Wert bei Null, findet kein breakup statt - dieses Beispiel haben wir gerade bei Coverage schon gesehen - der Layer ist einfach halb durchsichtig. Erhöht man den Wert, zeigt sich im Layer ein fraktales Muster, welches nach und nach die einfache Transparenz ersetzt. Die Struktur, die dazu benutzt wird, wird von einem Power Fractal Shader erzeugt.
Unten ist das Slope-Testbild zu sehen mit den Breakup-Werten 0, 0.5 und 1.
Wir aktivieren Fractal Breakup und lassen den Wert dafür auf 0.5.
Zu guter Letzt ändern wir die Farbe. Unser Gras-Layer hat eine recht durchschnittliche, grüne Farbe. Der Child-Layer sollte sich möglichst deutlich davon unterscheiden, um unser Gras interessant zu gestalten. Ich habe als Farbe einen sehr dunklen, gelblichen Ton genommen (25,25,14).
Farben sind aber auch Geschmackssache - wer die jetzige, dunkle Variante mag, kann gerne dabei bleiben. Für das Tutorial fügen wir aber noch einen weiteren Child-Layer hinzu. Bei dem stellen wir wieder Fractal Breakup an, und Coverage stellen wir auf ca. 0.3. Farbe will ich diesmal keine vorgeben und auch nicht verraten, welche ich nehme ;)
Ich würde empfehlen, mal selbst eine Weile mit den Werten für Coverage, Fractal Breakup und natürlich der Farbe zu spielen, bis du mit dem Ergebnis zufrieden bist. Besonders für Farbeindrücke kann man sich recht gut auf die Preview verlassen und muss nicht ständig Tests rendern.
Das soll es an konkreter Arbeit an der Surface auch schon
gewesen sein. Ich würde gerne noch mehr erklären, aber das
ist weniger simpel als es sich anhört. Dazu würde eine
umfassende Erklärung des Power Fractal Shader gehören, dazu
müsste man noch tiefer in die Geometrie TG2s gehen und
natürlich eine Menge spezieller Shader erklären, die noch
undokumentiert sind.
Nichtsdestotrotz kommen hier noch die weiteren Optionen des Surface Layers:
Altitude Constraints
Sollen Layer erst ab oder bis zu einer bestimmten Höhe vorkommen, verwendet man Altitude Constraints (dt. Höhengrenzen). Man stellt analog zu Slope Constraints einfach im Tab "Altitude constraints" die gewünschte Höhe ein. Es gibt auch wieder eine Fuzzy Zone mit der man den Übergang von sichtbar zu nicht-sichtbar einstellen kann.
Eine noch nicht besprochene Option von Slope und Altitude Constraints ist "Use Y for slope" bzw. "Use Y for altitude". Aktiviert man diese Option, wird die Höhe bzw. die Steigung nur noch über den Y-Wert ermittelt - das Terrain oder der konkrete Planet spielen dann bei der Berechnung keine Rolle mehr.
Tweaks
Im Tab "Tweaks" (dt. Anpassungen) befindet sich nur ein einziger Regler: Fuzzy zone softness.
Mit diesem kann man einstellen, wie scharf der Übergang zwischen dem normalen Bereich und der Fuzzy Zone ist. In den folgenen Testbildern sind die Werte 0, 0.5 und 1 abgebildet. Fractal Breakup steht dabei auf 0.5.:
Damit ist Kapitel 5 beendet. Ich habe zwar nur ein einziges
Beispiel gezeigt, das auch noch unerwartet kompliziert
wurde, aber es sollte trotzdem ausreichen, um von hier aus
selbst erfolgreich weiter üben zu können.
6. Atmosphere
Unter Atmosphere (dt. Atmosphäre, kurz: Atmo) versteht man alle möglichen Effekte, die sich in der Atmosphäre abspielen. Dazu zählen vor allem Himmel und Wolken, aber auch einfach Dunst oder Nebel. Alle Einstellungen zu dem Thema befinden sich im Tab "Atmosphere".
Ich möchte hier garnichts groß ändern, denn TG2 bringt schon eine recht realistische Atmosphäre mit. Die jetzt zu ändern würde heißen, ein komplett neues Bild zu planen - das möchte ich hier nicht tun. Was wir machen werden: ein paar von TG2s hervorragenden Wolken hinzufügen.
Klick auf "Add Cloud Layer" und dann auf "Mid-level: Altocumulus (3D/Volumetric)". Das Ergebnis sollte in etwa so aussehen, wie im unteren Bild links. Dabei fallen nun zwei Dinge ins Auge. Erstens: Das Bild rauscht (schon die ganze Zeit). Zweitens: die Wolken sind recht flach.
Kümmern wir uns zuerst um die Wolken. Klick auf den gerade hinzugefügten Altocumulus-Eintrag. In den Einstellungen befindet sich ein Regler namens Cloud depth (dt. Wolken-Tiefe). Damit stellt man ein, wie hoch die Wolken werden können. Momentan stehen dort 150m, das ist uns zu wenig, wir nehmen 1500m, damit ein paar schöne große Wolken entstehen. Dadurch ergibt sich allerdings ein Problem: Die Wolken sind nun so dick, dass nur noch wenig Licht hindurch dringt. Um das zu ändern, stellen wir Coverage adjust (dt. Anpassung der Bedeckung) auf -1. Damit verhindern wir, dass der Himmel zu sehr bewölkt ist.
Als nächstes kümmern wir uns um das Rauschen. Es entsteht durch den Algorithmus, der zum Rendern der Atmosphäre benutzt wird. Dieser rechnet die Dichte der Atmosphäre (oder der Wolken) nicht nach einem konkreten Muster aus, sondern benutzt in einem bestimmten Rahmen Zufallswerte. Das hat den Vorteil, das das Ergebnis sehr natürlich aussieht und trotzdem relativ schnell zu berechnen ist. Als Nachteil entsteht Rauschen. Dabei gilt: je mehr Samples (dt. Stichproben) dieser Zufallswerte berechnet werden, desto weniger Rauschen tritt auf.
Die Atmo-Samples kann man im Eintrag "Atmosphere 01" im Tab "Quality" einstellen. Momentan steht dort 16, wir verdoppeln auf 32.
Das sieht schon besser aus. Aber was, wenn einem die aktuellen Wolken nicht gefallen? Klick in den Einstellungen für den Altocumulus Layer auf den "..."-Button in der Zeile Density shader und dann auf "Go to Density fractal 01". Damit kommt man zu dem Shader, der für die Verteilung und Struktur der Wolken verantwortlich ist. Das ist ein Shader ähnlich dem Power Fractal Shader, allerdings speziell für Wolken gemacht. Auf die Einzelheiten möchte ich hier nicht eingehen, nur so viel: Dort gibt es einen Button "Random Seed" (dt. Zufälliger Seed-Wert), klick drauf, wenn du neue Wolken willst.
Das war ein sehr kurzes Kapitel. Ich denke aber, für den Anfang reicht es aus.
7. Lighting
Dies ist das vorerst letzte Kapitel. Es wird sehr kurz werden, denn es geht nur um die Beleuchtung. Wechsle in den Tab "Lighting". Dort gibt es zwei Einträge in der Liste links.
Der erste ist Enviro Light. Der Eintrag repräsentiert den Teil der Beleuchtung, der durch indirektes Licht entsteht - Global Illumination zum Beispiel. Er bietet vor allem eine interessante Einstellung: Strength on surfaces (dt. Stärke auf Oberflächen). Letztlich gibt man damit an, wie stark Schatten ausgeleuchtet werden - sollen die Schatten dunkler werden, reduziert man einfach den Wert.
Der zweite Eintrag in der Liste repräsentiert das direkte Sonnenlicht, daher heißt er auch "Sunlight 01". "01", weil man durchaus auch noch weitere Sonnen oder andere Lichtquellen hinzufügen kann.
Heading (dt. Richtung) ist die Richtung, aus der die Sonne scheint. Sie wird in ° bezüglich der y-Achse angegeben. Sofern man nach dem Start von TG2 die Kamera nicht an eine völlig andere Stelle auf dem Planeten verschiebt, kann man sich den Regler so vorstellen, dass die Sonne horizontal um den Beobachter rotiert.
Elevation (dt. Höhe) legt fest, wie hoch die Sonne am Himmel steht. Genauer ist das die Richtung in ° bezüglich der x-Achse.
Die nun folgenden Optionen kann man getrost alle so lassen, wie sie sind, denn sie sind schon ab Werk recht realistisch eingestellt.
Color kennen wir schon von der Surface - damit kann man die Farbe der Sonne einstellen. Beachte aber, dass nur weißes Sonnenlicht das ganze Farbspektrum enthält. Eine rein rote Sonne zum Beispiel färbt natürlich alles was sie beleuchtet rot.
Strength (dt. Stärke) gibt einfach an, wie hell die Sonne scheint.
Wenn Cast shadows deaktiviert wird, werden keine Shatten mehr geworfen. Diese recht radikale Maßnahme kann man auch noch verfeinern, indem man die Optionen darunter nutzt. Das sind Shadows of surfaces und Shadows of atmosphere. Deaktiviert man die beiden, so werfen Surface und Terrain bzw. atmosphärische Effekte und Wolken keine Schatten mehr.
Glow in atmosphere (dt. Schein in Atmosphäre) ist der Effekt, dass um die Sonne herum ein Lichtschein entsteht, der wesentlich größer ist, als die Sonne selbst.
Wenn sich die Sonne in glänzenden Oberflächen spiegelt, spricht man von Specular highlights (dt. Glanzlichter). Falls gewünscht, kann der Effekt hier abgeschaltet werden.
Visible disc (dt. sichtbare Scheibe) meint die Sonne, die von einem Planeten aus gesehen wie eine Scheibe wirkt. Man kann die Darstellung der Sonne ausschalten. Das kann durchaus hilfreich sein, da die Sonne bei Szenen im Weltraum oft seltsam aussieht. Zusätzlich kann man die Größe der Sonne, Angular diameter (dt. Durchmesser als Winkel), einstellen. Dabei gibt man nicht den Durchmesser in Metern an, sondern die scheinbare Größe in °. Der Standard-Wert ist 0.5 - die Sonne erscheint also am Firmament als eine 0.5° breite Scheibe.
Tja, das wars auch schon wieder!
Schluss
Wir sind am Ende des Tutorials angelangt! Zum Abschluss habe ich das Bild nochmal in guter Qualität gerendert:
Ich hoffe ich konnte dir beim Einstieg in TG2 helfen. Sicherlich wird man durch dieses Tutorial nicht sofort zum Profi, wahrscheinlich muss man auch später noch ab und zu nachschauen, wie das ein oder andere noch konkret ging. Wie geht es weiter? Tutorials lesen ist natürlich das eine, aber man muss auch ab und zu mal selbst etwas ausprobieren. Nur so kann man irgendwann etwas wirklich Neues schaffen.
Aus verschiedenen Gründen konnte ich leider auch nicht alles abhandeln, was es noch zu erklären gibt. Dazu muss ich sagen: Ich habe das gesamte Semester über an diesem Tutorial gearbeitet. Das erscheint sehr lang, aber mit einem schönen Layout und ein paar Sätzen ja nicht getan. Da müssten Tests angestellt werden um sicher zu gehen, dass ein Parameter wirklich das tut, was drauf steht. Dazu braucht man etliche Render, die alle jeweils 10 bis 30 Minuten dauern. Auch die Formulierung will durchdacht sein.
Alles in allem war es ein großes Stück Arbeit und ich bin froh dass es jetzt fertig ist. :)
Für Kommentare, Vorschläge, Hinweise auf Fehler und jede Art konstruktiver Kritik steht ein Kommentar-Formular zur Verfügung. Scheut euch nicht, direkt zu sagen, was euch stört! Ich werde dann versuchen, die Kommentare zu beherzigen und das Tutorial dahingehend verbessern. :) Falls sich bestimmte Fragen häufen, wird es eine FAQ geben, in der diese geklärt werden.
Wer will, kann mir auch direkt eine PN schreiben. Ich bin in folgenden Foren mit dem Nick nikita angemeldet: TerraDreams, Ashundar, Planetside
An dieser Stelle möchte ich mich mal bei ein paar Leuten bedanken: bei Mathias, der das Tutorial zu großen Teilen testgelesen hat, bei PassingStranger für die vielen Tipps rund ums Layout und bei tumasch fürs Korrekturlesen. Danke! :)
Das wars :)
nikita
(Letzte Änderung: 20.7.2007, Jetzt mit noch weniger Tippfehlern!)