Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...
Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...
Proseminar Computergrafik: Retained Mode: Open Inventor, VRML ...
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