Posts mit dem Label Renderer werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Renderer werden angezeigt. Alle Posts anzeigen

Mittwoch, 8. August 2007

Mental Ray - Anti-Aliasing

Die Anti-Aliasing Einstellungen definieren, wie das Bild abgetastet wird.

Werden hierbei die falschen Werte gewählt, hat man entweder Artefakte im Bildmaterial (wenn z.B die Abtastrate zu klein gewählt wird), oder aber die Berechnung des einzelnen Bildes dauert unverhältnismäßig lange.

Es macht durchaus Sinn, sich mit dem Thema zu beschäftigen.
Will man nur ein einzelnes Bild berechnen, mag dies häufig unerheblich sein, jedoch alle, die schon einmal an einer Filmproduktion teilgenommen haben, wissen genau welche Nerven es kostet stundenlang auf eine ein paar Frames dauernde Sequenz zu warten.

Die folgende Erläuterung soll als Hilfestellung und nicht als universelle Regel verstanden werden, im Endeffekt muss jeder selber wissen, wie er an die Thematik herantritt.


Anti-Alias

samples [ minint ] maxint

Hierbei werden die Minimum und Maximum Abtast-Raten festgelegt. (Hier kann man sich den Empfehlungen von Mental Ray anvertrauen. Einstellung 0 2 oder 1 3 für hochauflösende Renderings (Produktion)).

Weiterführende Einstellungen empfehlen sich über die „Contrast Treshhold options“.

Hier sind gezielte Einstellungen für jeden Kanal möglich; so können Artefakte im Bild individuell beseitigt und das Rendering unter Umständen beschleunigt werden.

Beim Contrast Treshold werden zwei benachbarte Pixel verglichen. Sollte der Kontrast (des entsprechenden Farbkanals) höher als der Eingestellte Wert sein, so wird nochmals unterteilt, bis dieser Wert nicht mehr erreicht wird.

Von der Vorgehensweise sollte man erstmal mit einer Sample-Einstellung von 0 und 2 für Produktionen anfangen und dann den Contrast Treshold herabsetzten, falls Störungen im Bild erkennbar sind. Sollte selbst die kleinste Einstellung nichts mehr bringt, erhöht man den max Sample Wert auf 3 und setzt die Contrast Treshold Werte wieder herauf.

Die max Sample Werte erhöhen die Abtastung exponential und verlangsamen das Rendern dramatisch.

>Entscheidet man sich für eine extremer Tiefenschärfe im Bild, wird man um hohe Anti-Aliasing-Einstellungen nicht herum kommen!

Mental Ray - Filter

Neben den Anti-Alias Einstellungen spielen auch die verwendeten Filter eine wichtige Rolle, deshalb natlos eine kurze Erläuterung hierzu.

Multi-pixel Filtering

filter box|triangle|gauss|mitchell|lanczos [width [height]]

Es gibt vordefinierte Filter die man in Metal Ray nutzen kann. Über das Multi-pixel Filtering können mehrere Samples in einem Pixel Wert abgelegt werden.

Alle Filter summieren die Samples innerhalb eines Filterbereichs mit einem bestimmten Gewichtungsfaktor.

Diese Gewichtung kann überall gleich sein (box) oder auch in Form einer Kurve verteiltsein (Gauss Mitchell oder Lanczos)

Ich habe zwar sehr gute Ergebnisse mit dem Gauss Filter erzielt, jedoch sind Sample-Einstellungen ein sehr komplexes Thema und erfordern viel Zeit und Tests.

In den Produktionseinstellungs-Empfehlungen wird meistens der Mitchell-Filter verwandt.

filter clip mitchell|lanczos [width [height]]

Abschließend zum Mitchell und Lancszos Filter. Es gibt mittlerweile noch eine Variante von diesen beiden Filtertypen. Beide Filter haben das Problem, dass sie negative Koeffizienten besitzen, was zu Wellen/Schwingungs-Artefakten an scharfen Kontrastkanten führen kann.

Um dem entgegen zu wirken gibt es den clip mitchell/ lanczos Filter. Hier werden die negativen Bereiche abgeschnitten.

Donnerstag, 2. August 2007

Mental Ray - Performance

Da ich beim berechnen von virtuellen Bildmaterial, mittels des Renderers Mental Ray schon häufiger Probleme hinsichtlich des Speichers hatte, möchte ich einen kurzen Abriss über den so genannten "bsp" geben, welcher hierbei einen entscheidenen Einfluss darauf hat, ob eine Szene mit Mental Ray gerendert werden kann oder nicht.

Es handelt sich um einen Aspekt des Render-Algorithmus, natürlich gibt es noch einige andere Punkte zu beachten.

Speicher und Performance

acceleration bsp

Der Standard raytrace-Algorithmus ist der so genannte „binary space partitioning (BSP) ray tracing algorithm“

Dieser ist häufig, aber nicht immer schneller (gegenüber anderen Algorithmen) und wird über die so genannte „bsp size“ und „bsp depth“ gesteuert.

Das Ganze kann man sich wie einen Baum (BSP tree) vorstellen, wobei die „bsp size“ die maximale Anzahl von Polygonen (Triangles) innerhalb eines Blattes (Voxels) des Baums definiert, und „bsp depth“ die Anzahl der Etagen (Rekursionstiefe) innerhalb des „BSP- Voxel- Baums“.

Je weniger Triangeln innerhalb eines Voxels zu finden sind, desto schneller können diese beim ray-Tracing ermittelt werden.

Wenn ein Voxel mehr als die maximale Anzahl von Polygonen beinhaltet, wird es in zwei kleinere Voxel unterteilt, was eine neue Etage (depth) im Baum bedeutet. Das wird so lange gemacht, bis die maximale Anzahl von Etagen erreicht ist.

Standardmäßig ist die „bsp size“ auf 10 gesetzt und die „bsp depth“ variiert von 24 – 52.

Höhere „bsp depth“ Einstellungen verringern die Renderzeit, erhöhen jedoch den Speicher-Verbrauch und auch leicht den Vorberechnungs-Prozess. Für kleinere bis mittlere Szenen (relativ) empfiehlt sich eine Standarteinstellung von 15 (size) und 35 (depth).

Da es sich jedoch nicht um absolute Werte handelt, müssen die Werte getestet werden. Hierbei kann die visuelle Diagnose (siehe BSP Diagnostic) genutzt werden.

Probleme die entstehen können

Wenn die Anzahl der Polygone nicht in den „BSP tree“ passt, wird die „bsp size“ vernachlässigt und unbrauchbare Blattgrößen werden definiert. Das hat zur Folge, dass die Renderzeit dramatisch anwächst und im schlimmsten Fall der Renderprozess zusammenbricht. Hier muss man andere Lösungen finden.

acceleration large bsp

Eine Lösung bietet die „acceleration large bsp“, bei der alle Parameter exakt dieselben sind, nur das hierbei ein so genannter „multi-level BSP tree“ zum Einsatz kommt.

Nachteil ist hierbei, dass das ray Tracing um 15-20% langsamer wird, dieses Verfahren jedoch viel effektiver mit Speicherproblematiken umgehen kann, und somit auch das Rendern von sehr großen Szenen ermöglicht.