prev up inhalt next


8.3 Geometrie

Wichtigster Bestandteil von VRML-Szenen ist der sogenannte Knoten (meistens mit großem Anfangsbuchstaben geschrieben) der ähnlich eines Programmiersprachenrecords aus Feldern verschiedenen Typs besteht (meistens klein geschrieben). Diese Felder verweisen entweder auf nicht weiter strukturierte Objektknoten oder andere Gruppenknoten, die wiederum mittels ihrer Felder verzweigen können.

Beispiel 1 zeigt den Aufbau einer Szene, in der eine Kugel mit Radius 1.5 im Ursprung des Weltkoordinatensystems plaziert wird. Die x-Richtung entspricht der horizontalen Bewegung, y beschreibt die vertikale Richtung und z wächst auf den Betrachter zu. Der Sphere-Knoten hat dabei als einziges (optionales) Feld den Radius. Diese Kugel wird referiert über das geometry-Feld des Shape-Knotens, zuständig für die Gestaltung eines Objekts. über das appearance-Feld wird die Materialbeschaffenheit in Form einer RGB-Farbe und eines Transparenz-Koeffizienten spezifiziert. Der Shape-Knoten wiederum ist als eins der Kinder im Transform-Knoten eingetragen, der über ein translation-Feld für die Verschiebung der Kugel sorgt.

 
#VRML V2.0 utf8 
# kugel.wrl 
# gruene, stark reflektierende  Kugel mit Radius 1.5 

Transform {                        # Plaziere 
  translation 0 0 0                # im Ursprung 
  children [ 
    Shape {                        # eine Gestalt 
      geometry Sphere {            # von der Form einer Kugel 
        radius 1.5                 # mit Durchmesser 1.5 
      } 
      appearance Appearance {      # in der Erscheinung 
        material Material {        # mit Materialbeschaffenheit 
          diffuseColor 0 1 0       # gruene Farbe 
          shininess 0.9            # stark reflektierend 
        } 
      } 
    } 
  ] 
}   
}

Neben den Grundbausteinen Sphere (Kugel), Box (Quader), Cone (Kegel) und Cylinder (Zylinder) lassen sich eigene geometrische Gebilde konstruieren. Ausgehend von einer Liste von 3-D-Punkten im Raum werden jeweils gegen den Uhrzeigersinn alle Punkte durchlaufen, die ein Face (durch Polygon approximierte Körperfläche) aufspannen. Beispiel 2 zeigt die Definition einer 5-farbigen Pyramide mit quadratischer Grundfläche.

 
#VRML V2.0 utf8 
# pyramide.wrl 
# selbstdefinierte 5-seitige Pyramide 

Shape { 
  geometry IndexedFaceSet { 

    coord Coordinate { 
      point [            # beteiligte Punkte 
         0  3  0         # 0. Pyramidenpunkt (Spitze) 
         0  0 -2         # 1. Pyramidenpunkt (Norden) 
        -2  0  0         # 2. Pyramidenpunkt (Westen) 
         0  0  2         # 3. Pyramidenpunkt (Sueden) 
         2  0  0         # 4. Pyramidenpunkt (Osten ) 
      ] 
    } 

    coordIndex [         # Polygone gegen Uhrzeiger, Ende: -1 
         4  3  2  1 -1   # 0. Face: Punkte 1 2 3 4 (Grundflaeche) 
         0  1  2    -1   # 1. Face: Punkte 0 1 2   (Nordwesten) 
         0  2  3    -1   # 2. Face: Punkte 0 2 3   (Suedwesten) 
         0  3  4    -1   # 3. Face: Punkte 0 3 4   (Suedosten) 
         0  4  1         # 4. Face: Punkte 0 4 1   (Nordosten) 
    ] 

    colorPerVertex FALSE 
    color Color { 
        color [          # pro Face eine Farbe benennen 
          0 1 1          # 0. Face: Cyan 
          1 0 0          # 1. Face: Rot 
          1 1 0          # 2. Face: Gelb 
          0 1 0          # 3. Face: Gruen 
          0 0 1          # 4. Face: Blau 
        ] 
    } 
  } 
}





prev up inhalt next