VRML97 bietet zahlreiche Möglichkeiten, mit denen einer Szene Dynamik und Interaktion verliehen werden kann. Die zentralen Bausteine für die hierzu erforderliche Ereignisbehandlung sind die EventIn- bzw. EventOut-Felder von Knoten, mit denen Meldungen empfangen und Zustandsänderungen weitergeschickt werden können. Es gibt Time,- Proximity-, Visibility-, Collision- und Touch-Sensoren, welche das Verstreichen einer Zeitspanne, das Annähern des Benutzers, die Sichtbarkeit von Objekten, das Zusammentreffen des Avatars mit einem Objekt und die Berührung mit dem Mauszeiger signalisieren. Verständlicherweise müssen Typ des verschickenden Ereignisfeldes und Typ des empfangenden Ereignisfeldes übereinstimmen.
Beispiel 5 zeigt die Kugel versehen mit einem Touch-Sensor, welcher bei Mausdruck eine Nachricht an den Soundknoten schickt, der auf diese Weise seinen Spielbeginnzeitpunkt erhält und die zugeordnete Wave-Datei startet.
#VRML V2.0 utf8
# interaktion.wrl:
# Kugel macht Geraeusch bei Beruehrung
Group { # plaziere Gruppenknoten
children [ # bestehend aus
DEF Taste TouchSensor {} # einem Touch-Sensor
Inline { url "kugel.wrl" } # und einer Kugel
]
}
Sound { # plaziere Soundknoten
source DEF Tut AudioClip { # gespeist von Audio-Clip
url "tut.wav" # aus der Wave-Datei tut.wav
}
minFront 5 # Anfang des Schallbereichs
maxFront 50 # Ende des Schallbereichs
}
ROUTE Taste.touchTime # bei Beruehrung der Kugel
TO Tut.set_startTime # schicke Systemzeit an den Knoten Tut
|