Cinema 4d

Global Illumination - Von Null auf Hundert! (Cinema 4d Tutorial)

Tutorial erstellt von Gentle, letzte Änderung am 14.12.2006

Global Illumination (GI)- ehemals Radiosity - ist ein interessantes Thema, wohl eines der komplexesten und gewichtigsten im Bereich der virtuellen Beleuchtung von 3D-Szenen - erleichtert zwar einiges, führt aber zu langen Spielereien mit den Einstellungen und oft zu einer gewissen Frustration. Das Bild ist voller Artefakte (Interpolationsfehler; die GI-Technik wird zu ungenau berechnet), dauert Tage um fertig zu rendern, und eigentlich weiß niemand, wieso eigentlich.
Ich will versuchen, in diesem Artikel Global Illumination auf die Schliche zu kommen.

Grundsätzlich: GI ist eine grobe Technik, die versucht, reale Beleuchtungsmodelle zu imitieren.  Für diesen Zweck berechnet der jeweilige Algorithmus (die verschiedenen Techniken werden später aufgeführt) von Lichtquellen oder selbstleuchtenden Flächen ausgesendete Lichtstrahlen und bezieht dann die Objekte, auf die der Strahl trifft, mit ein. Beispielsweise nimmt ein weißer Lichtstrahl, wenn er auf ein grünes Objekt auftrifft, einen Teil der Farbinformation dieses Objektes mit und wird reflektiert (jede Farbe reflektiert Licht, bis auf Schwarz). Lichtabgewandte Stellen erhalten durch diese Reflektionen Farbe und ein diffuses Licht. Die GI-Berechnung wird in so genannten Samples dargestellt, die man wiederum im Prepass findet. Ein Sample ist ein Streu-/Reflexionspunkt, der Prepass ist ein non-interpoliertes Vorausrendering, das auf AntiAlaising verzichtet. Die einzelnen Samples kann man als rote Punkte erkennen.




BEDEUTUNG DER EINZELNEN PARAMETER, DIE GI BEEINFLUSSEN


Nun, was genau bedeutet das jetzt in Cinema 4D? Der GI-Dialog kann nur aktiviert werden, wenn man das Advanced Render-Modul hat. Er ist in den RENDER-VOREINSTELLUNGEN zu finden und sieht folgendermaßen aus:



Die Selectbox des Typs gibt folgende Auswahlmöglichkeiten:
• Standard: Berechnet die GI mit der Sample-Methode, nimmt an, dass ein Still gerendert wird.
• Stochastisch: Berechnung erfolgt durch eine Art zufällige Strahlverteilung, die ein körniges Aussehen durch die einzelnen Strahlen verleiht – angelehnt an den ARNOLD-Render-Algorithmus.
• Kamera-Animation: Die Kamerabewegung wird mit einbezogen, das Flimmern wird großteils beseitigt, das bei einem Standard-Render mehrerer Frames auftreten würde – es resultiert daraus, dass die einzelnen GI-Berechnungen sich bei „Standard“ nicht aneinander angleichen.
• Objekt-Animation: Erlaubt es auch, Objekte und die Kamera zu bewegen und ein beinahe flimmerfreies Ergebnis zu erzielen – ist dafür aber auch langsamer als der Standard-Modus.

Der Stärkeparameter gibt an, wie intensiv das Licht reflektiert wird und welchen  Anteil an der Gesamtfarbe des Lichtstrahls die Farbe des Objektes hat. Je größer der Wert, desto heller das Bild, und desto stärker das sog. „Colorbleeding“ – die Intensität der abgestrahlten Farben. Er hat eine Beschränkung von Null bis zu einer Million.

Der Parameter der Genauigkeit regelt die Anzahl der Samples – ein geringer Wert berechnet wenige Samplepunkte, ein hoher extrem viele – indirekt wird durch diesen Parameter die Interpolationsgenauigkeit/-qualität zwischen den einzelnen Samples gesteuert. Er hat eine Einschränkung von null bis hundert Prozent und vergrößert die Renderzeit bei Vergrößerung des Genauigkeit-Wertes beinahe exponentiell - d.h. er hat einen sehr großen Einfluss auf die Renderzeit. Von 100% Genauigkeit ist daher dringend abzuraten.

Der nächste Parameter ist die Prepass-Auflösung. Er bestimmt, wie groß die Breite und Höhe des Prepasses in Relation zum gerenderten Bild stehen. Kleinere Auflösungen reduzieren die gesamte Renderzeit eher unmerklich, treiben dafür aber die Qualität nach unten.. Der Wert hat eine Beschränkung von 1/1 bis 1/10 bzw. gar keine Größe (Prepass wird nicht ausgegeben) – allerdings sollten Werte von 1/1 bis 1/3 gewählt werden

Die Strahltiefe legt fest, wie oft ein Lichtstrahl reflektiert wird. Je höher die Strahltiefe ist, desto eher werden dunkle Stellen im Bild von reflektiertem Licht erreicht. Es gibt eine Einschränkung von 1 bis 20, wobei Werte um 3 Reflexionen in Indoor-Szenen meist völlig ausreichen – höhere Werte sind manchmal bei Outdoor-Szenen erforderlich, würden aber in geschlossenen Räumen zu unnötig hohem Rechenaufwand führen.

Die Stochastischen Strahlen sind eine wichtige Komponente der Einstellungen – dennoch wissen wenige Leute, worum es sich eigentlich dabei handelt. Die Stochastischen Strahlen legen fest, wie gut die Farbinformationen der einzelnen Samples untereinander interpoliert werden – niedrige Werte erzeugen bunte Farbkleckse (da keine Rücksicht auf andere Farbabstrahlungen genommen wird), hohe Werte einen weichen Farbverlauf. Der Parameter hat eine Einschränkung von 1 bis 100.000.

Der nächste Parameter ist die Min-Auflösung. Dieser Punkt legt fest, wie viele Samples an einer Stelle berechnet werden sollen, die sich nicht in der Nähe von anderen Objekten befinden und kaum Kanten aufweisen, z.B. eine Zimmerdecke – überall dort, wo wenig Kontraste und Colorbleeding entstehen und dadurch leichter zwischen den Samples interpoliert werden kann. Eine Beschränkung gibt es von 1 bis 1.000.000.

Die Max-Auflösung bestimmt die Anzahl der Samples, die an dataillierten Stellen berechnet werden sollen – meistens Schnittstellen von Objekten, Furchen oder detailreich modellierte Oberflächen, z.B. die Stelle, wo Lampenkabel und Decke sich berühren, Zwischenräume von Tasten einer Tastatur usw. Ist beschränkt von Eins bis zu einer Million.

Die Einstellungen Neuberechnen und Lösung speichern stehen im direkten Zusammenhang und sind nur für in den Modi Standard, Kamera-Animation und Objekt-Animation aktivierbar.
• Einmal bedeutet, dass die GI-Lösung für den derzeitigen Bildausschnitt einmal berechnet, ein neuer Ordner namens „illum“ erstellt und dorthin ein File mit der Extention *.gi gespeichert wird - welches beim nächsten Render aufgerufen werden kann. Spart Zeit ein, aber nachdem neue Objekte hinzugefügt wurden, sollte man unbedingt noch einmal neu rechnen lassen. Bei Animationen wird für jedes Frame ein einzelnes *.gi-File erstellt – Achtung, große Datenmengen!
• Immer ist die voreingestellte Option und lässt bei jedem Render die Samples neu berechnen.
• Niemals sucht gleich zu Anfang der Berechnung einen illum-Ordner mit einem passenden *.gi-File – wird keines gefunden, wird der Rendervorgang abgebrochen.

Der Punkt Identische Noise-Verteilung hat kaum Auswirkungen auf die drei Sample-Modi, lediglich der Stochastische Modus wird dadurch wesentlich beeinflusst – verringert das Rauschen bei Animationen.



Auch in den MATERIALEINSTELLUNGEN gibt es wichtige Punkte für Global Illumination:



GI generieren lässt das Material einfallendes Licht reflektieren, die Stärke regelt, wie stark diese Abstrahlung ist. Die möglichen Werte gehen von Null bis zehntausend  Prozent.
GI empfangen setzt fest, ob „fremde“ Lichtstrahlen das Objekt beeinflussen – die Stärke regelt, wie stark das Material von GI beeinflusst werden soll (0-10.000%). Die Sättigung bestimmt, wie instensiv das Colorbleeding auf diesem Material ausfallen soll. Werte von null bis tausend Prozent sind möglich.

Das RENDERTAG im Objektmanager kann GI in Bezug auf ein Objekt beeinflussen:



Sichtbar für GI bezieht das Objekt in die GI-Berechnung mit ein (Standard: Aktiviert).
Die GI-Genauigkeit stellt einen eigenen Genauigkeitswert für die GI-Berechnung dieses Objektes ein – äquivalent zur globalen GI-Genauigkeit, nur eben beschränkt auf das Objekt und dessen Unterobjekte. Werte von 0-100% sind möglich.


EFFIZIENTES EINSETZEN VON GI

GI ist einfach zu aktivieren – aber schwer zu konfigurieren. Deshalb möchte ich hier ein Tutorial geben, wie man GI auf die Szene bezüglich individuell einstellt. Als Ausgangsszene dient dieses Badezimmer, als ich anfing mit der Optimierung, hatte ich 55min Renderzeit:



Was sich hier im Prepass sehr gut erkennen lässt, ist, dass die Sampleanordnung trotz sehr hoher Verteilungswerte äußerst unausgeglichen und schlecht wirkt:



Man sieht klar, dass es trotz dieser – nach meinen Maßstäben – gewaltigen Renderzeit extrem viele Artefakte vorhanden sind. Woher kommen sie? Dem wollen wir auf den Grund gehen. Das Erste, was die Renderzeit zumindest halbiert hat, war, die GI-Abstrahlung der Wolken abzuschalten. Sie sind beinahe transparent (zumindest der Großteil), der Rest ist weiß – aber der Himmel erzeugt den größten Anteil des Skylights, deshalb können wir den Wolken-Layer als Abstrahlungsquelle abschalten. Was natürlich die Testrenderings sehr beschleunigt, ist, das Antialaising vollkommen abzuschalten – damit man die Bilder besser erkennen kann, habe ich es aber angeschalten. Grundsätzlich gilt: transparente/durchsichtige Materialen kein GI erzeugen lassen bzw. für die GI unsichtbar machen, sie brauchen nur zusätzlich Renderzeit, ohne die Szene besonders zu beeinflussen.
Weshalb der nächste Punkt funktioniert, weiß ich nicht – aber er funktioniert. Zuerst war der Himmel auf einem Himmel-Objekt, steckt man ihn allerdings auf eine große Kugel (die Wolkenkugel muss etwas kleiner gewählt werden), so verschwinden alle(!) der großen Artefakte, die sich als durchgehende Linien zeigten – nur noch kleine Fehler bleiben – ein paar Objekte wurden hinzugefügt.



Macht man die Kugel kleiner, wird auch die Renderzeit kleiner – bei zu kleinen Werten kann das Ergebnis aber schlechter ausfallen, also einfach mit dem Kugelradius des Himmels (und möglicherweise der Wolken) spielen. Große Himmel beeinflussen die Gesamtfarbe nicht so stark (selbe Szene).



Wichtige Punkte, die die Berechnung beschleunigen und Fehler vermeiden:
• Volltransparente Materialen kein GI erzeugen lassen bzw. für die GI unsichtbar machen.
• Das Renderfenster und/oder Cinemafenster minimieren
• Programme wie ICQ oder Skype nach Gutdünken ausschalten – belasten die CPU unnötig stark – vor allem bei Verbindungsproblemen.
• Bei großen Szenen: Die Editorszene speichern und schließen. So entlastet ihr vor allem den Arbeitsspeicher.
• ACHTUNG: Zu kleine Werte, z.B. bei der Min-Auflösung, führen zu extremen Renderzeiten – aus eigener Efahrung habe ich bei der Bespielrender gemacht, dass mehr als 50 Minuten gedauert hätte (mit 1 bei Min-Auflösung) – und bei einer Auflösung von 16 dauerte es gerade mal 12 Minuten(!!). Der Grund ist folgender: Cinema 4D muss lange rechnen, wo es diesen Sample am Omptimalsten hinplaziert – und das kostet Zeit. Viel Zeit; deshalb ist auch von zu kleinen Werten abzuraten.
Hier nun der Prepass nach diesen Korrekturen – gut verteilt, kaum Artefakte.



Um die allgemeine Farbe etwas bläulicher zu gestalten, habe ich die allgemeine GI-Stärke heruntergesetzt und dem Himmel eine größere Abstrahlung im Materialmanager verpasst – so überwiegt er gegenüber der orangen Sonne.





FEHLER FINDEN UND BEHEBEN

Fehler in der GI-Berechnung kommen vor, man kann sie natürlich auch beheben – stellt sich nur die Frage, WIE. Welche Werte müssen erhöht werden – wie ist das erkennbar? Ich werde im Folgenden nicht auf den stochastischen Modus eingehen, nur auf die samplebasierenden Methoden.
Dazu habe ich eine kleine Artefakte-Checklist erstellt (ein Artefakt ist ein Renderfehler).


Zu wenig Genauigkeit: Der Fehler ist daran zu erkennen, dass es eine schlechte bzw. körnige Interpolation zwischen den Samples gibt, oder zu wenige Samples trotz hoher Einstellungen beim Rest der Parameter.



Zu wenig Stochastische Strahlen: Diese Artefaktquelle äußert sich in einem sehr fleckigen Bild, obwohl genügend Samples im Prepass gerendert werden. Als fleckig ist gemeint, dass die Samples sehr viele Farbunterschiede aufweisen.



Zu wenig Min-Auflösung: Kann man dadurch erkennen, dass auf flachen Objekten nur sehr wenige Samples mit einer schlechten Interpolation vorhanden sind.



Zu wenig Max-Auflösung: Dieser Fehler zeigt sich durch Striche und schlechte Interpolation unter Objekten, bzw. an brenzligen Stellen.




So  weit von mir, ich hoffe, das Thema wurde für den ein oder anderen verständlicher.
Viel Erfolg beim Einsatz!

Tobias Deml
aka
Gentle
thegentle0@gmail.com
www.gentle.tk


>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!

Impressum / Datenschutzerklärung          © der-Webdesigner.net 2002 - 2008           top ▲