05.08.2013 Aufrufe

Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...

Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...

Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Der vorangegangene Teil der Arbeit zeigt bereits, welche Unterschiede die einzelnen Grafiksysteme<br />

bei der Verwaltung und Manipulation von 3D-Szenen haben. Die <strong>Open</strong> GL hat dagegen keine vergleichbare<br />

Struktur wie den Szenegraphen, sondern bietet in erster Linie den Immediate <strong>Mode</strong>, der<br />

keine einschränkenden Datentypen und Verwaltungsstrukturen verlangt. Das hat zur Folge, dass der<br />

Programmcode selbst bei einfachen dreidimensionalen Strukturen sehr komplex werden kann. Es<br />

können in <strong>Open</strong> GL sehr viele variable Datenstrukturen verwendet werden, und der Entwickler hat<br />

volle Kontrolle über das Rendering. Jedoch hat diese Flexibilität ihren Preis in Form eines hohen Programmieraufwands<br />

und der Voraussetzung umfangreichen Wissens über <strong>Open</strong> GL auf der Seite des<br />

Entwicklers. Die Hersteller haben <strong>Open</strong> GL gerade unter einer solchen Zielsetzung entwickelt und<br />

<strong>Open</strong> GL als erweiterbare Grundlage für andere 3D-Grafiksysteme geplant. <strong>Open</strong> <strong>Inventor</strong>, <strong>VRML</strong> und<br />

Java3D verwenden <strong>Open</strong> GL als Renderingmaschine. Sie ermöglichen durch eine abstraktere<br />

Umgebung die einfache Erstellung und Manipulation von 3D-Szenen. Basierend auf der Szenegraphstruktur<br />

kann der Entwickler schneller und einfacher eine virtuelle Welt erschaffen und greift dabei auf<br />

eine fertige Ereignisbehandlung oder vorgegebene geometrische Objekte zurück.<br />

Im <strong>Mode</strong>ll, das vom <strong>Retained</strong> <strong>Mode</strong> vorausgesetzt wird, liegen wesentliche Unterschiede der drei Grafiksysteme.<br />

Diese beginnen mit der Auswertung des Szenegraphen, die <strong>Open</strong> <strong>Inventor</strong> von links oben<br />

beginnend nach rechts unten durchführt. Der Zustand, der dabei mitgeführt wird, ändert sich von<br />

Knoten zu Knoten. Diese Abhängigkeit der Nachfolgerknoten von ihrem Vorgänger ist in <strong>VRML</strong> nur<br />

teilweise übernommen worden. Da die Traversierung in einem <strong>VRML</strong>-Szenegraphen nicht strikt<br />

vorgeschrieben ist, sind die Abhängigkeiten zwischen den Knoten nicht so stark wie in <strong>Open</strong> <strong>Inventor</strong>.<br />

In <strong>VRML</strong> werden Eigenschaften für ein Objekt gekapselt, d.h. einer geometrischen Struktur werden<br />

ihre Eigenschaften in den Kinderknoten zugeordnet, während in <strong>Open</strong> <strong>Inventor</strong> eine Eigenschaft durch<br />

den Vorgänger bestimmt wird. Der Java3D-Renderer kann dagegen den Szenegraphen in beliebiger<br />

Reihenfolge durchlaufen oder ihn auch parallel verarbeiten, was erst die Eigenschaften einer<br />

objektorientierten Programmiersprache ermöglichen.<br />

In <strong>VRML</strong> und <strong>Open</strong> <strong>Inventor</strong> ist es Knoten erlaubt, mehrere Elternteile zu besitzen, wodurch die<br />

Wiederverwendung von Knoten oder ganzen Teilbäumen erleichtert wird. Die einzige Einschränkung<br />

besteht darin, dass kein Zyklus im Szenegraphen auftreten darf. Java3D benötigt für die Mehrfachreferenzierung<br />

einen speziellen Linkknoten.<br />

Eine Struktur, wie sie der <strong>Retained</strong> <strong>Mode</strong> voraussetzt, ist unerlässlich bei der Erstellung von Animationen.<br />

Der Szenegraph kann das Rendern einer Animationsszene effizienter gestalten. Außerdem<br />

wird durch die Anordnung der Knoten im Graphen die Lage der 3D-Objekte zueinander beschrieben.<br />

Somit werden Kollisionserkennung und die Zuordnung von Ereignissen an bestimmte Objekte möglich.<br />

Für gewöhnlich nehmen Animationen viel Rechenzeit in Anspruch. Mit steigender Zahl von Animationen<br />

steigt auch die Gefahr, dass sie nicht mehr flüssig dargestellt werden können. Da sich der<br />

Betrachter jedoch an einem bestimmten Punkt in der Szene befindet, stellt sich die Frage, welche Animation<br />

wirklich berechnet werden muss, und wie detailgetreu weit entfernte Objekte sein müssen.<br />

Somit ist entscheidend, wo sich der Betrachter befindet und welche Orientierung er hat. Java3D bietet<br />

das Behavior-Konzept an, welches es ermöglicht, je nach Betrachterposition oder Orientierung<br />

bestimmte Bereiche in Ruhezustand zu versetzen. Dies verschafft dem Anwender eine einfach<br />

anzuwendende Möglichkeit, die Zahl der Animationen, die tatsächlich berechnet werden, zu<br />

minimieren. <strong>VRML</strong> bietet dem Entwickler zwei spezielle Knoten an, um nicht benötigte Bereiche und<br />

Animationen abzuschalten. Der Sensor ProximitySensor sendet Ereignisse, wenn der Betrachter<br />

einen bestimmten Bereich betritt, ein weiterer Sensor sendet Ereignisse aus, wenn ein quaderförmiger<br />

Bereich in das Sichtfeld kommt (VisbilitySensor). Verbunden mit einem Interpolator kann das Ereignis<br />

das Ab- und Anschalten einer Animation auslösen. Damit ermöglicht die Szenegraphstruktur die<br />

Bereitstellung einer einfach anzuwendenden und effektiven Steuerung von Animation.<br />

Durch die Abgrenzung von 3D-Darstellern, die in der Struktur des Szenegraphen vorgenommen wird,<br />

ist die Selektion von Objekten im <strong>Retained</strong> <strong>Mode</strong> recht einfach umzusetzen. Wie bereits beschrieben<br />

haben alle drei Grafiksysteme mehr oder weniger abstrakte Lösungen für dieses Problem.<br />

16

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!