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.

Keine Kommentare: