Die Anwendung von Global Illumination (Radiosity) in Lightwave3D

In Lightwave3D hat sich Global Illumination, seit der Einführung, sehr gewandelt. Craig Monins (aka RebelHill), der schon öfter aus den Tiefen des Lightwave3D Dschungels Knowhow Perlen der Community gebracht hat, nimmt sich in einem Videotutorial diesem Thema an. Das Tutorial ist schon 2012 erstellt worden und da von Lightwave3D Avenue zu einem Contest auf Facebook ausgerufen worden ist, der sich mit dem Ausleuchten einer vorgegebenen Szene beschäftigt, dachte ich, dass ich wieder eine Auffrischung in Sachen Global Illuminosity nötig hätte.

Das Videotutorial findet man im Youtube Chanel von RebelHill. Wer sich für Global Illumination in Animationen interessiert, den möchte ich auf ein weiteres Lehrvideo von Reblehill verweisen, das es auf cmiVFX.com zu kaufen gibt.

Wenn mit Global Illumination gerendert werden soll, ist es empfehlenswert, die Tests mit einer Szenen durchzuführen, in der die Objekte keinerlei Texturen etc. Aufweisen. Damit kann man die Einstellungen testen und verbraucht nicht unnötig Rechenzeit. Ein weiterer Vorteil ist, dass in solchen Szenen die Probleme und die Fehler besser zu erkennen sind und sich daher leichter eingrenzen lassen.

Ein weiterer wichtiger Punkt ist die Verwendung des richtigen Farbraums. In Lightwave3D findet man die Einstellungen im Preference Fenster unter dem CS (Colorspace) Tab. Wer sich mit dem Farbraum im Allgemeinen näher beschäftigen möchte, kann hier nachlesen, was Jürgen Krausz dazu aufbereitet hat.

Beim Modellieren sollte man z.B. sehr kleine Spalten und Ritzen vermeiden, wenn diese für die Szene nicht unbedingt nötig sind. Weiters sollte beachtet werden, dass die Polygone von verschiedenen Objekten nicht ineinander ragen, da an diesen Stellen die Global Illumination durchscheinen kann, was zu unschönen Artefakten führen kann.

Bei der Anwendung von Global Illumination, sollte man über die 4 Lichtarten in Lightwave3D Beschied wissen, die in Global Illumination zur Anwendung kommen können. Das sind: Ambient Light, Backdrop Lighting, die in Lightwave3D zur Anwendung kommenden Lichter (Point, Globe, Spot etc.) und Geometrie bei dem die Oberfläche mit Luminosity selbst leuchtet.

Jede dieser 4 Beleuchtungsarten führt zu unterschiedlichen Ergebnissen bei der Berechnung der Radiosity. Ambient Light wird am schnellsten und saubersten berechnet. Dann folgt das Beleuchten mit Backdrop. Danach mit den in Lightwave3D vorhandenen Leuchtmitteln und zum Schluss selbstleuchtende Geometrie.

Radiosity Berechnungsarten

Um Global Illumination einzusetzen muss natürlich Radiosity eingeschaltet werden. Lightwave3D bietet da drei verschiedene Berechnungsarten, die auch unterschiedlich arbeiten. Ein optimales Zusammenspiel der verschiedenen Einstellungsmöglichkeiten führt zum gewünschten Ergebnis in Qualität und Rendergeschwindigkeit.

Backdrop Only: Rendert schnell, bietet aber keine Möglichkeit, dass das Licht mehrfach in der Szene reflektiert wird (Bounces). Daher funktioniert diese Methode nur mit Ambient und Backdrop Lighting. Es gibt aber einen Trick, Multibounce bei Backdrop Lighting zu erreichen: Man verwendet einen der anderen Radiosity Arten, aber keine Lights oder selbstleuchtende Oberflächen in der Szene. Dieser Trick funktioniert aber nicht mit Ambient Lighting, weil dieser immer Single Bounce ist.

Monte Carlo: Wird generell dann verwendet, wenn man die bestmögliche Qualität erreichen möchte.

Final Gather: Ist etwas schneller als Monte Carlo, aber mit kleinen Abstrichen bei der Qualität. Mehr dazu weiter unten.

Interpolated: Ist diese Funktion aktiviert, werden die Oberflächen in Felder geteilt, berechnet und die Ergebnisse anschließend ineinander geglättet. Deaktiviert man diese Option, dann rechnet Lightwave mit allen Samples (brute force) und das Ergebnis kann nur durch höhere Werte in der Rays per Evaluation verbessert werden, das führt natürlich zu längeren Rechnenzeiten (mehr dazu, im Video von Rebelhill „Rendering, Sampling and Antialiasing“, das ich auch vor einiger Zeit vorgestellt habe).

Mit Interpolated kann man zu einem schnelleren Ergebnis kommen. Das führt aber auch zu einem anderen unerwünschten Ergebnis: das Bild wird fleckig (im englischen splotchy genannt). Der Grund ist folgender: wie schon erwähnt, teilt Lightwave die Oberflächen der Szene in Felder ein. Da kommt es mitunter vor, dass benachbarte Felder eine unterschiedliche Anzahl an Lichtstrahlen (rays) erhalten. Das ergibt Variationen in der Helligkeit der einzelnen Felder, die nach der anschließenden Glättung merkbare Übergänge in der Helligkeit haben.

Mit der Final Gather Option kann Interpolated ausgeschaltet bleiben, wenn die Anzahl von Indirect Bounces und Secondary Bounce Rays erhöht wird. Der erste Durchgang (grundsätzlich der wichtigste) wird zwar mit brute force berechnet, alle weiteren, indirekten und sekundären Rays aber dennoch geglättet.

Tendenziell kann beobachtet werden, dass bei Monte Carlo mehr Flecken in den dunklen Bereichen verursacht. Bei Final Gather sind diese eher in den helleren Bereichen beobachtbar. Daher ist Monte Carlo vorzugsweise in Innenräumen anzuwenden, da sich in solchen Szenen oft mehr Schattenbereiche zu finden sind. In Außenszene ist üblicherweise viel mehr Oberflächen ausgeleuchtet und daher sind die Flecken in diesen Bereichen nicht so sichtbar vertreten.

Außenszenen vs. Innenszenen

Welche Global Illumination Methode verwendet werden soll, hängt also von der Art der Szene ab: Außenszenen, Innenszenen oder Szenen mit einem Studio Lichtsetup.

Für die Außenszenen kann in den meisten Fällen die Einstellung Backdrop Only verwendet werden. Aber auch Final Gather kann hier gut funktionieren. Eine höhere Anzahl der Indirect Bounces, ist bei Außenaufnahmen nur in seltenen Fällen notwendig. In Szenen mit einem Studio Lichtsetup ist Backdrop Only oder Monte Carlo oft die geeignete Wahl. Wenn Monte Carlo verwendet wird, kann die Anzahl der Indirect Bounces, falls nötig, erhöht werden. Bei Innenaufnahmen ist Monte Carlo meist die passendere Global Illumination Methode und die „Indirect Bounces“ können hier tendenziell auf zwei gesetzt werden.

In Lightwave3D gibt es ein praktisches Tool mit dem Namen Radiosity Flags (Render → Options → Radiosity Flags). Hier können diverse Parameter im berechneten Bild farblich markiert angezeigt werden, um auftretende Probleme leichter zuordnen zu können, anstatt auf mögliche Fehler vom finalen Bild aus interpretieren zu müssen.

Zusätzliche Einstellungen

Blur Background tut das wofür es steht. Wenn ein Bild als Hintergrund verwendet wird, dann wird dieses verwischt, um kontrastreiche Übergänge zwischen den Pixeln abzuschwächen. Das ist für ein eben mäßig ausgeleuchtetes Bild hilfreich, um die vorher erwähnten Flecken zu reduzieren.

Hier spielen die Einstellungen für Shading Samples und Light Samples die im Render Tab zu finden sind, eine Rolle. Wenn das Licht viel Rauschen ergibt, hat das auf die Verteilung der Samples einen Einfluss, mit einem entsprechenden unregelmäßigen Ergebnis, das mit einer Erhöhung dieser Werte korrigiert werden kann. Mehr zu dem Thema findet sich, wie eingangs erwähnt, im Video Tutorial „Rendering, Sampling and Antialiasing“.

Use Transperency lässt Licht durch transparente Flächen scheinen. Diese Einstellung verlangsamt aber die Bildberechnung. Um das zu vermeiden können Fensterobjekte im Object Einstellungsfenster (Object Properties) aus der Radiosityberechnung ausgeklammert werden. Dies verlangsamt die Berechnung nicht und trotzdem können gewünschte Effekte wie Reflexionen etc. mitberechnet werden. Wenn durchsichtige Objekte wie Gläser, Schüsseln, etc in der Szene vorhanden sind, muss im Einzelfall entschieden werden, inwieweit eine präzise Berechnung dieser Teile mit Global Illumination für ein gewünschtes Ergebnis notwendig ist oder nicht.

Volumetric Radiosity kann einschaltet werden, wenn in der Szene volumetrische Objekte wie Volumetrisches Licht, Hypervoxels, Particle Shader etc. vorhanden sind.

Directional Rays ist eine Option für die Berechnung von Licht, das von spiegelnden Oberflächen zurückgeworfen wird. Diese Einstellung verlängert die Renderzeit. Die Notwendigkeit ist im Einzelfall zu prüfen.

Use Behind Test ist eine Einstellung, um die Genauigkeit der Berechnung zu Erhöhung. Wenn kleine Polygone sehr nahe beieinander stehen prüft Lightwave, inwieweit die Polygone auf der gleichen Ebene liegen. Das hat einen Einfluss auf die Berechnung der Übergänge zwischen den Samples und in weiterer Folge auf die Länge der Rechenzeit.

Use Bumps bestimmt, ob die Radiosityberechnung Bump Maps berücksichtigen soll oder nicht.

Use Gradients bestimmt, ob mittels Gradients die Samples in der Szene verteilt werden. Das ist eine gute Methode für Szenen die mit Lightwave 10.1 und früher gerendert werden. Seit Lightwave3D 11, gibt es eine neue Methode wie die Samples verteilt werden. Diese Modell ist eng mit dem neuen Unified Sampling System verknüpft. Grundsätzlich kann die Use Gradients Methode verwendet werden, wenn die Classic Camera verwendet wird.

Ambient Occlusion ist eine Einstellung wie Ambient Light für die Berechnung der Szene verwendet wird. (Hier ein Wikipedia Artikel über Ambient Occlusion – die Deutsche Übersetzung des Begriffs bringt’s auf den Punkt, klingt aber doch sehr… naja;) Wird eine Szene nur mit Ambient Light berechnet, wird das Ergebnis üblicherweise extrem Flach im Aussehen. Die Einstellung Ambient Occlusion wirkt dem entgegen. Mit dieser Methode kann man beim testrendern schnell zu Bildergebnissen kommen, um Problembereiche zu identifizieren.

Obwohl reines Ambient Light alleine nur in extrem speziellen Anwendungsgebieten verwendbar ist, kann eine sehr niedrige Einstellung, eine zusätzliches Licht Nuance einfügen, um dem Bild eine zusätzliche Aufhellung inkl. Farbandeutung zu geben. Damit wird ein schnell ein zusätzlicher und Bounce simuliert.

Da Ambient Occlusion von Ambient Light abhängt, funktioniert diese Einstellung bei Innenaufnahmen nur dann, wenn es Öffnungen (Fenster, Türen, etc.) nach Außen gibt. sei es ein Fenster, eine Tür etc.

Wenn ohne Interpolated (sozusagen mit brute force) berechnet wird, dann kann die Qualität des Bilds mit einer Erhöhung der Rays Per Evaluation Werte verbessert werden. Um die Rechenzeiten nicht ausufern zu lassen, können mit den Unified und Adaptive Sampling Einstellung im Camera Reiter (Min./Max. Sample, ect.), mit niedrigeren Rays Per Evalutation Werten, bessere Ergebnisse erreicht werden.

Andere Einstellungen im Global Illumination Reiter

Ist Interpolated aktiviert, werden weitere Einstellungen freigeschaltet:

Angular Tolerance bewirkt, dass auf flachen Oberflächen, die einzelnen Felder die für die Berechnung verwendet werden, immer größer werden, je größer der Wert eingestellt wird. Auf gebogenen Oberflächen wird die Flachheit der Oberfläche durch die Winkel der benachbarten Polygone bestimmt. Wird der Angular Tolerance Wert bei relativ leicht gebogenen Oberflächen hoch eingestellt, so werden infolgedessen auch große Felder für die Berechnung verwendet, was wiederum zu unschönen Übergängen führt. Niedrigere Werte verkleinern die Feldgröße auf gebogenen Flächen. Die Abstufungen sind geringer und dadurch die Übergänge schöner.

Minimum/Maximum Pixel Spacing bestimmt die Pixelgröße der Felder die für die Einteilung verwendet werden sollen. Der entscheidende Wert ist der Minimum Wert. Wird dieser erhöht, dann vergrößert sich damit auch die Größe der Felder, was wiederum dazu führt, dass die Übergänge zwischen den Feldern größer werden, wenn die Bereiche geglättet werden. Das reduziert die Renderzeit des Bildes aber dies geht Kosten der Details. Gut bei Szenen mit großen ebenen Flächen, aber unpassend mit Szenen mit vielen Details.

Um die Qualität des Bild entscheidend zu verbessern, ist eine Erhöhung der Rays per Evaluation vonnöten. Da sich die Rechenzeit aber dadurch auch erhöht, kann man mit VPR und Limited Region die einzelnen Ausschnitte des Bild ansehen die noch Probleme machen.

Secondary Bounce Rays verbessern die Qualität insofern, dass durch die zusätzlichen Lichtstrahlen, betroffene Bereiche aufgehellt werden und dadurch die Flecken reduziert werden. Das erhöht die Rechenzeit zusätzlich, aber man kann jetzt dafür auf der anderen Seite die Anzahl der „Rays Per Evaluation“ wieder reduzieren und dadurch die Renderzeit verkürzen. Als grobe Regel, kann man die Anzahl der Rays Per Evaluation als erstes soweit erhöhen, so dass das Ergebnis, bis auf kleine Fehler in fernen Ecken und Spalten, zufriedenstellend ist. Dann beginnt man mit dem halben Wert in den Secondary Bounce Rays Einstellungen. Und spielt mit den Werten so lange bis das Ergebnis passt.

Multiplier ist eine Einstellung, die die Größe des Bilds für die Vorberechnungen bestimmt. Nach der Vorberechnung, wird das Ergebnis wieder hochskalliert. Wenn dieser Multiplier geändert wird, sollte man auch den Wert für Maximum Pixel Spacing entsprechend in die gleiche Richtung korrigieren. Als Folge rendert das Bild schneller. Es gibt auch Nachteile, die es zu bedenken gibt. Durch das Hochskalieren, werden z.B. Fehler bei schärferen Pixelübergängen deutlicher sichtbar.

Andere Möglichkeiten die Rechenzeiten zu verbessern findet man im Object Properties Fenster im Reiter Global Illumination, wo standardmäßig Use Global ausgewählt ist. Bei Objekten die generell mit niedrigeren Global Illumination Einstellungen schon schöne Ergebnisse liefern, kann man diese Funktion deaktivieren und Werte individuell einstellen.

Der Cache

Cache wird dafür verwendet, die Vorberechnungen für Global Illumination zu speichern, um diese bei einer Neuberechnung des Bildes erneut zu verwenden. In das Cache wandert die Geometie der Szene, aber z.B. nicht die Kameraposition. D.h. wenn Cache eingeschaltet und die Kameraposition verändert wird, kommt es zu Fehlern in den Bereichen, die in der vorhergehenden Kameraposition nicht sichtbar waren. Um das in den Cache zu bringen, was durch die neue Kameraposition sichtbar geworden ist, wählt man Bake Radiosity Scene. Durch diesen Vorgang, werden die Werte im Cache sukzessive verbessert und die Berechnung dadurch schneller. Diese Methode kann auch dazu verwendet werden, mittels einer Änderung der Kameraposition, oder der Verwendung zusätzlicher Cameras mit unterschiedlichen Auflösungen, die Anzahl der Sampels im Cache zu erhöhen und dadurch fleckige Bereiche zu reduzieren.

Es ist nicht möglich Geometrie und Licht zu verändern (Positon, Farbe). Das wird beim Update des Cache nicht berücksichtigt. Wenn es notwendig sein sollte, muss man den Cache löschen und neu berechnen. Es ist daher nicht sinnvoll die Oberflächeneigenschaften zu verändern, bis auf die Werte für Reflection. Kleine Veränderungen der anderen Oberflächeneigenschaften sind aber durchaus möglich, ohne dass das Ergebnisse falsch erscheint.

Weiters ist es ist möglich die Radiosity Intensity zu verändern. Eine Änderung der Werte für Rays Per Evaluation und Multiplier haben keinen Einfluss auf den Cache.

Um Bake Radiosity Scene zu beschleunigen, kann man im Render Tab des Render Globals, die Einstellungen für Raytrace TransparencyRaytrace Reflection, und Raytrace Fefraction deaktivieren und diese nach der neuerlichen Cacheberechnung für das Rendern wieder einschalten.

 

Wie man sieht ist die Materie und die Zusammenhänge recht mannigfaltig, aber nicht unberechtigt. Wenn man nicht täglich damit zu tun hat, vergisst man schnell, wie diese zusammenspielen. Dank an Rebelhill für die visuelle Zusammenfassung!

Bis zum nächsten mal…


Schreibe einen Kommentar