Wer kennt das nicht: Um einen Gegenstand spiegeln zulassen verwendet man ein Raytrace-Material in der Szene, und schwupps: die Renderzeiten explodieren, man wartet Ewigkeiten auf ein Ergebnis. Die Alternative das Refraktion/Reflektions-Map zu verwenden scheitert meist daran, das die Reflektionen ungenau berechnet werden, bzw. einfach nicht stimmen und unlogisch sind.

Um Rechenzeiten bei einer "geraytraceten" Spiegelung zu verkürzen gibt es zunächst eine einfache, wenn auch teure Lösung: Ein Dual-Board, mit zwei Prozessoren. Dies beschleunigt den Rechenvorgang enorm, aber wie gesagt, diese Lösung ist teuer, und somit nicht jedermanns Sache.

Es gibt aber noch andere Methoden die Renderzeiten im Zusammenhang mit Raytrace-Materialien zu verringern.

1. Antialiasing ausschalten:
Im Materialeditor bei den Raytrace-Parametern einmal auf "Options" geklickt, und schon erscheint eine Palette zahlreicher Einstellmöglichkeiten, die sich sowohl lokal (also speziell nur für das momentan ausgewählte Material) als auch global (für alle Raytrace-verwendenden Materialien) ein- und ausschalten lassen. Eine davon ist das Antialiasing, welches standardmäßig jedoch sowieso meistens deaktiviert ist (global).

Das Bild oben zeigt eine Szene mit 5 Kugeln (eine in der Mitte, die anderen vier außenherum), einer Decke und einem Boden. Auf einem 450MHZ SingelPentiumII, mit 128 MB Arbeitsspeicher, hat es 2:28 Minuten Rendertime beansprucht. Dabei war Antialiasing jedoch aktiviert. Ohne Antialiasing dauerte es nur noch 0:30. In diesem Menü findet Ihr auch noch weitere Knöpfe für Eigenreflektionen, ob Atmosphäreneffekte oder Nebel in Reflektionen einbezogen werden sollen. Auch auf diese Dinge kann man zumeist verzichten.

2. Den Raytrace-Falloff einschalten

Im Rollout "Attenuation" kann der Falloff der Spiegelung eingeschaltet werden. Im ausgeschaltetem Zustand werden selbst Objekte in der unmöglichsten Entfernung noch gespiegelt, auch wenn sie dann nicht einmal mehr einen Pixel groß sind. Das ist meist unnötig, da man sie sowieso nicht wahrnimmt. Also Falloff ein! Es gibt mehrere Arten des Falloffs. Ich benutze meist den linearen, ist er doch am einfachsten zu verstehten: Der unter "Range-End" eingegebene Wert bedeutet, daß alle Objekte außerhalb eines Radius von x-Einheiten sich nicht mehr in dem Material spiegeln werden. Der "Range-Start"-Wert gibt den Beginn des "Refelktions-Verlustes" an. Spielt ruhig mal mit diesen Werten herum, und ihr werdet feststellen, daß sich der Falloff auch auf die Spiegelkraft des Materials auswirken wird (sprich die Reflektionen werden dunkler). In unserem Beispiel jedoch verkürzt sich die Renderzeit somit von 30 auf 20 sek (Bild rechts).

 

3. Die Raytrace-Tiefe (Ray-Depth) runterschrauben

Unter den Globalen Parametern des Raytrace-Maps läßt sich die Raytracetiefe regulieren. Standardmäßig auf 9 eingestellt, wird der "Raytrace-Strahl" neun mal an den spiegelnden Oberflächen reflektiert, bis der Rechner endlich Ruhe gibt. Dadurch wird erreicht, wie in Bild 1 und 2 schön zu erkennen ist, daß sich die Kugeln in den Kugeln wo sich die Kugeln nochmals in den Kugeln und wiederum in den Kugeln spiegeln. Wer braucht das schon?!

Oft ist eine solche Genauigkeit nicht notwendig, und das Herabsetzen dieses Wertes auf "1" reduziert die Renderzeit auf 9 Sekunden (Bild links). Man sieht nun aber deutlich den Verlust zusätzlicher Reflektionen. Die Kugeln spiegeln sich gegenseitig nur noch einmal, dann ist Schluß. Je nach Situation läßt sich dieser Wert also herabsetzen, nur muß man dabei eben einen Kompromis zwischen Renderzeit und Realitätsgrad eingehen. Zu dieser Methode sei noch gesagt, daß sie nur wirksam ist, wenn sich mehrere Objekte gegenseitig spiegeln, oder ein einzelnes Objekt in der Lage ist sich selbst zu spiegeln (z.B. das Innere eines Rohres). Bei einer einzelnen Chrom-Kugel z.B. hat das Ändern der Raytracetiefe kaum eine Auswirkung, jedoch bietet es sich hier erst recht an die Raytrace-Tiefe auf 1 zu reduzieren, da in solchen Fällen keine Spiegelungen in den Spiegelungen erwartet werden.

4. Objekte von der Reflektion ausschliessen

Auch dies läßt sich im Rollout "Raytrace-Parameters" einstellen, sowohl lokal als auch global. Manchmal ist es einfach nicht notwendig jedes einzelne Objekt in den Spiegelungen auftreten zu lassen. Das Ausschliessen mehrerer Objekte kann die Renderzeit nochmals verkürzen. Bei unserem Kugelbeispiel, macht es jedoch wenig Sinn.

FAZIT: In diesem kurzen Beispiel haben wir nun die Renderzeit von 2:28 auf ganze 9 sek. verringern können, jedoch auch einen herben Qualitätsverlust hinnehmen müssen. Je nach Situation solltet Ihr eben abschätzen, inwiefern Ihr die obengenannten Möglichkeiten einsetzen wollt.

 

© 2000 Andreas Skrzypnik / lightrays.de

93Grad - design und animation für entertainment