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.
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:
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.