einführung in vrml - teil 2 advanced features. 7. 7. 2000aws 2000 - jan schröter2 inhalt ztypen-...
TRANSCRIPT
Einführung in VRML - Teil 2
„Advanced Features“
7. 7. 2000 AWS 2000 - Jan Schröter 2
Inhalt
Typen- und Event-ModellModularisierungskonzepteInteraktionBrowserinteraktionAnimation
7. 7. 2000 AWS 2000 - Jan Schröter 3
Typen- und Event-Modell
Felder eines Knotens
Bestehen aus 4 Teilen Feldtyp (field, exposedField, eventIn,
eventOut) Datentyp (MFNode, SFVec3f, ...) Name (translation, ...) Default-Wert ( 0 0 0, [] ...)
7. 7. 2000 AWS 2000 - Jan Schröter 4
Typen- und Event-Modell
Feldtypen
field wird nur einmal gesetzt
exposedField kann verändert werden
eventIn Eingang von EventseventOut Ausgang von
Events
7. 7. 2000 AWS 2000 - Jan Schröter 5
Typen- und Event-Modell
Event-Konventionen
Konventionen zur Bezeichnung bestimmter Events Präfix set_ für eventIn (set_on) Suffix _changed für eventOut
(enabled_changed) Präfix is für Boolean-Ereignisse (isActive) Suffix Time für Time-Ereignisse (enterTime) Suffix Children für Manipulation von
KindKnoten (addChildren)
7. 7. 2000 AWS 2000 - Jan Schröter 6
Modularisierungskonzepte
DEF/USE
Jeden Knoten kann mit DEF ein (eindeutiger) Name gegeben werden.z.B.: DEF Baum Transform{ ... }
Benannter Knoten kann mit USE wiederverwendet werden.z.B.: children USE Baum
7. 7. 2000 AWS 2000 - Jan Schröter 7
Modularisierungskonzepte
Inline
Externe VRML-Dateien werden über den Inline-Knoten eingebunden.
Bsp.: Inline {url „foobar.wrl“ }
7. 7. 2000 AWS 2000 - Jan Schröter 8
Modularisierungskonzepte
PROTO
Zur Erzeugung eigener Knoten dient das PROTO-Konzept.
Zwei Teile: Deklaration der Felder Definition des Objekts
7. 7. 2000 AWS 2000 - Jan Schröter 9
Modularisierungskonzepte
PROTO - Beispiel
PROTO Quader[field SFVec3f Groesse 4 2 1 ] {
Box { size IS Groesse }}
Zugriff auf Felder mit Schlüsselwort IS.
Benutzung des Objekts nur innerhalb einer Datei
7. 7. 2000 AWS 2000 - Jan Schröter 10
Modularisierungskonzepte
EXTERNPROTO
Mit EXTERNPROTO können PROTOs aus anderen Dateien benutzt werden.
Dazu muß aber die Felddeklaration lokal wiederholt werden.
Bsp.:EXTERNPROTO Baum [field SFColor Blätter 0 1 0 ]„http://www.wald.de/baum.wrl“
7. 7. 2000 AWS 2000 - Jan Schröter 11
Interaktion
ROUTE
Mit ROUTE können eventIn- mit eventOut-Feldern verbunden werden
ROUTE-Befehle stehen außerhalb der restlichen Knoten-Deklarationen
Die zu verbindenden Knoten müssen mit DEF benannt sein, um sie anzusprechen
7. 7. 2000 AWS 2000 - Jan Schröter 12
Interaktion
ROUTE - Beispiel
ROUTE Schalter.enabled TO Licht.on
Verbundene Knoten müssen vom gleichen Datentyp sein.
7. 7. 2000 AWS 2000 - Jan Schröter 13
Interaktion
Sensoren
Um auf Ereignisse reagieren zu können benutzt man Sensoren, deren Ausgabe dann mit ROUTE in entsprechende Objekte umgeleitet wird.
Sensoren sind einer Knoten und seinen evtl. Kindern zugeordnet
7. 7. 2000 AWS 2000 - Jan Schröter 14
Interaktion
TouchSensor
Reagiert auf Berührung (Anklicken)Benutzung:ROUTE Taste.touchTime TO Musik.set_startTime
7. 7. 2000 AWS 2000 - Jan Schröter 15
Interaktion
PoximitySensor
Reagiert auf Betreten eines QuadersBsp:DEF Raum ProximitySensor{
size 10 10 10}ROUTE Raum.enterTime TO Musik.setStartTime
7. 7. 2000 AWS 2000 - Jan Schröter 16
Interaktion
TimeSensor
Läßt eine Uhr ablaufenWichtig für Animation (später)Wichtige Parameter:
loop: Wenn TRUE, dann zyklisches Ablaufen der Uhr
cycleIntervall: Länge der Zeit, die ablaufen soll in Sekunden
7. 7. 2000 AWS 2000 - Jan Schröter 17
Interaktion
TimeSensor - Beispiel
DEF Wecker TimeSensor{loop TRUEcycleIntervall 60
}...ROUTE Wecker.cycleTime TO Alarm_Ton.startTime
7. 7. 2000 AWS 2000 - Jan Schröter 18
Browserinteraktion
Anchor
Links ins WWW realisierbar mit dem Anchor-Knoten.
Reagiert auf Anklicken des Objekts.Parameter
url - URL der zu ladenden Seite parameter - zusätzliche Informationen
mit „target=xxx“ können Frames angesprochen werden
7. 7. 2000 AWS 2000 - Jan Schröter 19
Animation
Interpolatoren
Zur Animation (= fließender Veränderung von Objektparametern) benutzt man Interpolatoren.
Diese berechnen den Weg entlang eines „Wertepfades“ mit linearer Interpolation
Jede Ecke auf diesem Pfad wird durch ein Wertepaar im key/keyValue-Feld festgelegt.
7. 7. 2000 AWS 2000 - Jan Schröter 20
Animation ColorInterpolator
Animation von FarbwertenBsp.:
DEF Timer TimeSensor{cycleIntervall 5.0loop TRUE }
DEF FarbGeber ColorInterpolator{key [0, 1]keyValue[0 0 0, 1 0 0] }
ROUTE Timer.fraction TO FarbGeber.fractionROUTE FarbGeber.value TO Blinker.color
7. 7. 2000 AWS 2000 - Jan Schröter 21
Animation Weitere Interpolatoren
CoordinateInterpolator Animation von 3D-Koordinaten
OrientationInterpolator Animation von Rotationen