Entwicklung eines BRDF-Shader-Plugins für Cinema 4d
Entwicklung eines BRDF-Shader-Plugins für Cinema 4d
Entwicklung eines BRDF-Shader-Plugins für Cinema 4d
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1. Schritt: das unsortierte Array<br />
2 5 3 1 4<br />
2. Schritt: den ersten Wert selektieren<br />
2 5 3 1 4<br />
3. Schritt: das restliche Array nach dem kleinsten Wert durchsuchen und<br />
diesen ebenfalls selektieren. Wird kein kleinerer Wert gefunden, so<br />
wird Schritt 4 übersprungen.<br />
2 5 3 1 4<br />
4. Schritt: die selektierten Felder tauschen<br />
1 5 3 2 4<br />
5. Schritt: nächstes Feld selektieren (die Felder links davon sind nun<br />
sortiert)<br />
1 5 3 2 4<br />
Schritt 3 bis 5 wird nun solange wiederholt, bis das Array vollständig sortiert<br />
ist. Selection Sort benötigt bei einem durchschnittlichen Datensatz etwa<br />
O(n 2 /2) Vergleiche und O(n) Vertauschungen.<br />
Der Datei-Loader<br />
Bevor das Array sortiert werden kann, muss es zunächst erzeugt werden.<br />
Dazu wurde eine CINEMA 4D-Komponente verwendet, die es ermöglicht,<br />
eine Datei in der GUI anzuwählen. Sobald eine Datei ausgewählt wurde,<br />
wird diese in das Array geladen. Pseudocodeausschnitt 1 auf Seite 24 gibt<br />
eine zusammenfassende Übersicht über die einzelnen Schritte des Loaders.<br />
Zunächst wird die im astm-Format vorliegende Datei geöffnet. Da CINEMA<br />
4D keine Funktion bietet, mit der komplette Zeilen gelesen werden können,<br />
wird die Datei Byte <strong>für</strong> Byte eingelesen und zu Zeilen zusammen gesetzt.<br />
Ist das Zeilenende erreicht, so wird diese Zeile darauf untersucht, ob es<br />
sich um Datei-Informationen handelt, die in den ersten Zeilen der Datei<br />
stehen, oder ob es sich um <strong>BRDF</strong>-Daten handelt. Diese werden anhand <strong>eines</strong><br />
vorher definierten Trennzeichens (in diesem Fall durch das astm-Format<br />
definierte Komma) zerlegt und im Array gespeichert. Im Kopfbereich der<br />
Datei befinden sich allgemeine Angaben, wie beispielsweise die Anzahl<br />
der <strong>BRDF</strong>-Werte, die <strong>für</strong> spätere Zwecke in einer Membervariable zwischengespeichert<br />
werden. Anschließend wird das Array durch Selectionsort<br />
zeilenweise sortiert, wobei es Zeilen in diesem Sinne in einem Array nicht<br />
gibt. Es wird lediglich darauf geachtet, dass die Werte einer Zeile immer<br />
zusammengehörig vertauscht werden. Wird dies nicht beachtet, so ist die<br />
Datei unbrauchbar. Sortiert wird zunächst nach den Werten von θi, dann<br />
nach φi, anschließend nach θo und letztendlich nach φo.<br />
23