Index Weiter Zurück Literatur 

3 VRML 2.0

3.1 Grundlagen einer VRML-Welt

Hinweis: In den folgenden Beispielen sind nicht alle möglichen Felder der einzelnen Nodes angegeben. In diesem Falle verwendet der Browser default-Werte für die ausgelassenen Felder. Eine Beschreibung der Nodes einschließlich aller Felder steht in der VRML97-Spezifikation der VRML-Architecture-Group [7].

Nachstehende VRML-Datei stellt einen violetten Cylinder ohne Oberseite am Koordinatenursprung dar:

#VRML V2.0 utf8

Shape {
  appearance Appearance {
    material Material {
      diffuseColor  .5  0  .5
      shininess     .5
    }
  }
  geometry Cylinder {
    radius  3
    height  6
    side    TRUE
    top     FALSE
    bottom  TRUE
  }
}

Die erste Zeile dieser Datei zeigt dem Browser an, daß es sich um eine VRML-Datei in der VRML-Version 2.0 handelt. Es ist darauf zu achten, daß nach dem #-Zeichen kein Blank steht, da eine Zeile mit #-Zeichen gefolgt von einem Blank einen Kommentar einleitet.
In der weiteren Beschreibung ist es wichtig, auf die Groß-/Kleinschreibung zu achten. Node-Namen beginnen immer mit einem Großbuchstaben, Feldnamen mit Kleinbuchstaben.
Im Shape Node werden geometrische Objekte und deren Eigenschaften eingebettet. In diesem Beispiel sind die Felder appearance und geometry angegeben. Das Feld appearance enthält den Appearance Node. In diesem Node werden z.B. die Materialeigenschaften beschrieben. Die Geometrie enthält dadurch die Farbe violett (50% Rot, 0% Grün, 50% Blau) und eine 50% reflektierende Oberfläche.
Das geometry Feld stellt einfache geometrische Objekte zur Verfügung wie z.B. Sphere, Cylinder, Box, Cone. Es ist aber auch möglich eigene Modelle zu entwerfen (IndexedFaceSet). Dabei  müssen allerdings sämtliche Eckpunkte angegeben werden, und das in einer Reihenfolge aus der hervorgeht, welche Punkte zu welchen Flächen gehören.
 

Grouping Nodes (Gruppenknoten):

Ein grouping Node ist ein Node, der children Nodes und weitere grouping Nodes zu einer Einheit (Gruppe) zusammenfaßt und dieser Gruppe eine spezifische gemeinsame Eigenschaft zuweist. Diese Eigenschaft wird durch den Typ des grouping Node bestimmt. Eine Auflistung aller grouping Nodes ist in der VRML97-Spezifikation enthalten [7].
Durch die Gruppierungen entsteht ein baumartiger Aufbau der VRML-Welt. Dieser Aufbau wird im sogenannten Scene-Graph dargestellt:
 

Hier wird beispielhaft der Transform Node vorgestellt:

#VRML V2.0 utf8

Transform {
  translation  10  -5  0
  rotation      1   1  0  1.1
  scale         2   2  2
  children [
    Shape {
      appearance Appearance {
        material Material {
          diffuseColor  1  0  0
        }
      }
      geometry Sphere {
        radius 5
      }
    } # Ende children 1
    Shape {
      appearance Appearance {
        material Material {
          diffuseColor  0  0  1
        }
      }
      geometry Box {
        size 9 9 9
      }
    } # Ende children 2
  ]
} # Ende Transform

In diesem Beispiel entsteht ein blauer Würfel, an dem an jeder Seite ein Teil der darin liegenden roten Kugel zu sehen ist.
Das translation Feld gibt eine Verschiebung des Objekts entlang der x,y,z Achsen an (siehe Koordinatensystem im Abschnitt ?Allgemeines?)
Im rotation Feld kann eine Drehung angegeben werden. Hier ist zunächst der Ursprung der Drehung (x,y,z) anzugeben und anschließend der Drehwinkel (im Bogenmaß !).
Das scale Feld ermöglicht eine Deformation des Objekts (oder der Objekte). Hier wird die Skalierung getrennt nach x,y,z Achse angegeben. Ein Wert >1 bedeutet eine Vergrößerung, ein Wert <1 bedeutet eine Verkleinerung entlang der entsprechenden Achse.
Im Scene Graph würde dann folgendes Konstrukt entstehen:

Scene-Graph

Anmerkungen:
- Die Rotation hat keinen Einfluß auf die Skalierung ! D.h. bei z.B. einer Verbreiterung des Objekts wird immer zuerst entlang der x-Achse skaliert und anschließend das Objekt beispielsweise um 90 Grad gedreht.
- Wird ein Objekt, welches sich nicht am Ursprung befindet,  entlang einer Achse gedreht, wird es sich im Raum bewegen. Das Problem läßt sich umgehen, indem man das Objekt zuerst an den Ursprung verschiebt, rotiert und dann wieder zurückverschiebt.



Index Weiter Zurück Literatur