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.
Eine spezielle Form der Gruppenknoten ist der Separator. Beim Eintritt in den Separator-Teilbaum<br />
wird der aktuelle Zustand gespeichert und nach Verlassen wiederhergestellt. Dabei wird verhindert,<br />
dass Veränderungen von Attributen im Teilbaum sich auf den Rest des Szenegraphen übertragen. Im<br />
Falle des Wurzelknotens wird nach dem Rendering der 3D-Szene der Ausgangszustand wieder<br />
eingesetzt.<br />
Wie das obige Beispiel zeigt, können Knoten mehrfach verwendet werden. Bei der Verknüpfung<br />
zweier Knoten muss beachtet werden das kein Zyklus entsteht, so dass ein Knoten keine Referenz<br />
besitzt, die über seine Kindknoten auf ihn zurück verweist. Richtig angewendet kann diese Technik<br />
jedoch Rechzeit und Hauptspeicher sparen helfen.<br />
1.3 <strong>Inventor</strong> Objekte<br />
<strong>Open</strong> <strong>Inventor</strong> als Klassenbibliothek für objektorientierte Sprachen kann mittels Vererbung erweitert<br />
werden. Diese Erweiterung von bestehenden Knoten durch Ableiten ermöglichen dem Programmierer<br />
hohe Flexibilität und die gewohnte Übersichtlichkeit objektorientierter Programmiersprachen. <strong>Open</strong><br />
<strong>Inventor</strong> stellt verschiedene Grundtypen von Objekten zur Verfügung. Die Basistypen werden durch<br />
ein „Sb“ gekennzeichnet und umfassen neben Farbe oder einfachen geometrische Strukturen<br />
(Zylinder, Ebenen, Vektoren, ...)viele andere 3D-Grundstrukturen. Eine weitere Gruppe stellen die<br />
Szene-Objekte dar, in der alle Knoten, Felder, Pfade, Aktionen und Events enthalten sind. Die<br />
Elemente dieser Gruppe sind durch ein „So“ (SceneObjekt) gekennzeichnet.<br />
Aus diesen Objekttypen kann der Programmierer entsprechend seiner Vorstellung ein 3D-Objekt<br />
erstellen und es nach Belieben wiederverwenden.<br />
1.4 Event<br />
Der <strong>Inventor</strong> bietet eine Reihe von Möglichkeiten zur Selektion und Manipulation von Objekten. In<br />
einer bestehenden Szene können etwa durch anklicken einfache Transformationen an einem Objekt<br />
durchgeführt werden. Mit einem solchen Event wird eine erneute Traversierung des Szenegraphen<br />
ausgelöst. Jedes Objekt im Graphen kann nun prüfen, ob der Mausklick innerhalb seiner Koordinaten<br />
auf dem Bildschirm liegt. Ist dies der Fall, wird der Event verarbeitet und gegebenenfalls werden alle<br />
weiteren Events an dieses Objekt weitergeleitet. Den Nutzen einer solchen Verarbeitungsstruktur<br />
haben zum Beispiel „Handle“-Obiekte. Durch einmaliges Anklicken werden alle weiteren Mausevents<br />
an diesen Objekttyp weitergeleitet, ohne die aufwendige Traversierung des Szenegraphen.<br />
Events werden auf diese Art und Weise direkt und sehr schnell verarbeitet, kombiniert mit der<br />
Funktionalität des Szenegraphen.<br />
Ein anderer Weg ist die Definition eigener Objekte mit Call-Back-Methoden. Sind sie registriert,<br />
werden sie bei Auftreten eines Events aufgerufen.<br />
1.5 Manipulatoren<br />
Die Manipulatoren sind eine Ableitung der Transformationsknoten. Sie haben eine Reihe von Kindern<br />
in Form von Handl-Objekten. Manipulatoren sind, wenn sie im Szenegraphen integriert werden, in der<br />
Lage Events aufzunehmen und zu verarbeiten. Visuell repräsentieren sie sich in Form kleiner Kugeln,<br />
Linien oder Kegel. Klickt man eines dieser Manipulatorobjekte an und hält es mit der Maus fest, so<br />
sind durch ziehen direkte Veränderungen an dem zugehörigen Objekt möglich. Der Anwender kann<br />
die Szene intuitiv mit Manipulatoren verändern.<br />
Der mitgelieferte Szeneviewer ermöglicht sogar eine direkte Manipulation ohne solche Knoten, da er<br />
normale Transformationsknoten durch Manipulatoren ersetzen kann und umgekehrt.<br />
03