05.11.2012 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!