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.
2.4 Knoten und Felder<br />
Knoten beschreiben in <strong>VRML</strong> die 3D-Objekte, wobei sich die Knoten in Gruppenknoten oder Blattknoten<br />
unterteilen lassen. Erstere können wiederum Gruppenknoten oder Blattknoten als Kinder in<br />
beliebiger Anzahl enthalten. Blattknoten können zwar keine Kinderknoten aber untergeordnete Knoten<br />
besitzen, zu denen Knoten wie Materialeigenschaft oder die geometrischen Knoten gehören. So wäre<br />
ein Knoten für einen Quader vom Typ „Box“, und seine Knoten für Oberflächeneigenschaft vom Typ<br />
Material. Die untergeordneten Knoten können nicht als eigenständige Blattknoten verwendet werden.<br />
Ein Knoten besteht aus einem oder mehreren Feldern, die den Zustand des Knotens beschreiben. So<br />
würde einen Knoten, der mit dem Knotentyp „Sphere“ vereinbart wurde, eine Kugel ergeben. Mit dem<br />
folgendem Programmcode entsteht dabei eine Kugel mit dem Radius 2.<br />
Sphere { radius 2 }<br />
Felder werden in geschweifte Klammern eingeschlossen, und im Falle von mehreren Eigenschaften<br />
werden die Felder untereinander geschrieben. Die Feldtypen sind wie in <strong>Open</strong> <strong>Inventor</strong> einfache<br />
Basistypen, zum Beispiel Vektoren, boolesche Werte u.a..<br />
Die Wiederverwendung von Knoten in <strong>Open</strong> <strong>Inventor</strong> ist auch in <strong>VRML</strong> übernommen worden. Um<br />
einen Knoten erneut zu nutzen, muss er mit DEF benannt und an anderer Stelle mit USE und seinem<br />
Namen wieder angesprochen werden. Es wird dabei keine Kopie sondern eine Referenz angelegt.<br />
Im anschließenden Programm wird eine Pyramide beschrieben. Mit diesem relativ einfachen Beispiel<br />
werden die Struktur einer <strong>VRML</strong>-Datei und die Anwendung einiger Knoten deutlich.<br />
#<strong>VRML</strong> V2.0 utf8<br />
Transform { # lokales Koordinatensystem für alle<br />
children [ # Kindknoten<br />
DirectionalLight{}, # Lichtstrahlen parallel und eine Richtung<br />
Shape { # Knoten zur Beschreibung sichtbarer Objekte<br />
geometry IndexedFaceSet { # Knoten um Polygone zu beschreiben<br />
coord Coordinate { # Knoten der Eckpunkte der Polygone enthält<br />
point [<br />
1 0 0 # Punkt 0<br />
0 0 1 # Punkt 1<br />
-1 0 0 # Punkt 3<br />
0 0 -1 # Punkt 4<br />
0 1.5 0 # Punkt 5<br />
]<br />
}<br />
coordIndex [ # Vereinbarung der Polygone,<br />
0,1,2,3,0,-1, # Grundfläche<br />
1,0,4,1,-1, # Seite aus Punkt 1, Punkt 0 usw.<br />
2,1,4,2,-1, # Seite, Wert -1 trennt die einzelnen Polygone<br />
3,2,4,3,-1, # Seite<br />
0,3,4,0,-1 # Seite<br />
]<br />
}<br />
appearance Appearance { # Knoten beschreibt das Aussehen<br />
material Material { # Knoten für Materialeigenschaft (Werte 0-1)<br />
diffuseColor 0.1 0.1 0.1 # Farbe in RGB für Reflexion, helles grau<br />
shininess 0.6 # Glanzwert<br />
specularColor 0.8 0.8 0.8 # Reflexionskoeffizient für Spiegelung<br />
transparency 0.5 # Transmissionskoeffizient für Transparenz<br />
}}}]}<br />
Background { # Knoten für Hintergrundeigenschaften<br />
skyColor [ 1 1 1 ] # Farbe des Himmels in RGB. weiß<br />
}<br />
09