Einführung in VRML - Teil 2 Advanced Features
AWS Jan Schröter2 Inhalt zTypen- und Event-Modell zModularisierungskonzepte zInteraktion zBrowserinteraktion zAnimation
AWS Jan Schröter3 Typen- und Event-Modell Felder eines Knotens zBestehen aus 4 Teilen yFeldtyp (field, exposedField, eventIn, eventOut) yDatentyp (MFNode, SFVec3f,...) yName (translation,...) yDefault-Wert ( 0 0 0, []...)
AWS Jan Schröter4 Typen- und Event-Modell Feldtypen zfield wird nur einmal gesetzt zexposedField kann verändert werden zeventIn Eingang von Events zeventOut Ausgang von Events
AWS Jan Schröter5 Typen- und Event-Modell Event-Konventionen zKonventionen zur Bezeichnung bestimmter Events yPräfix set_ für eventIn (set_on) ySuffix _changed für eventOut (enabled_changed) yPräfix is für Boolean-Ereignisse (isActive) ySuffix Time für Time-Ereignisse (enterTime) ySuffix Children für Manipulation von KindKnoten (addChildren)
AWS Jan Schröter6 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
AWS Jan Schröter7 Modularisierungskonzepte Inline zExterne VRML-Dateien werden über den Inline-Knoten eingebunden. Bsp.: Inline {url foobar.wrl }
AWS Jan Schröter8 Modularisierungskonzepte PROTO zZur Erzeugung eigener Knoten dient das PROTO-Konzept. zZwei Teile: yDeklaration der Felder yDefinition des Objekts
AWS Jan Schröter9 Modularisierungskonzepte PROTO - Beispiel zPROTO Quader[ field SFVec3f Groesse ] { Box { size IS Groesse } } zZugriff auf Felder mit Schlüsselwort IS. zBenutzung des Objekts nur innerhalb einer Datei
AWS Jan Schröter10 Modularisierungskonzepte EXTERNPROTO zMit EXTERNPROTO können PROTOs aus anderen Dateien benutzt werden. zDazu muß aber die Felddeklaration lokal wiederholt werden. Bsp.: EXTERNPROTO Baum [ field SFColor Blätter ]
AWS Jan Schröter11 Interaktion ROUTE zMit ROUTE können eventIn- mit eventOut-Feldern verbunden werden zROUTE-Befehle stehen außerhalb der restlichen Knoten-Deklarationen zDie zu verbindenden Knoten müssen mit DEF benannt sein, um sie anzusprechen
AWS Jan Schröter12 Interaktion ROUTE - Beispiel zROUTE Schalter.enabled TO Licht.on zVerbundene Knoten müssen vom gleichen Datentyp sein.
AWS Jan Schröter13 Interaktion Sensoren zUm auf Ereignisse reagieren zu können benutzt man Sensoren, deren Ausgabe dann mit ROUTE in entsprechende Objekte umgeleitet wird. zSensoren sind einer Knoten und seinen evtl. Kindern zugeordnet
AWS Jan Schröter14 Interaktion TouchSensor zReagiert auf Berührung (Anklicken) Benutzung: ROUTE Taste.touchTime TO Musik.set_startTime
AWS Jan Schröter15 Interaktion PoximitySensor zReagiert auf Betreten eines Quaders Bsp: DEF Raum ProximitySensor{ size } ROUTE Raum.enterTime TO Musik.setStartTime
AWS Jan Schröter16 Interaktion TimeSensor zLäßt eine Uhr ablaufen zWichtig für Animation (später) zWichtige Parameter: yloop: Wenn TRUE, dann zyklisches Ablaufen der Uhr ycycleIntervall: Länge der Zeit, die ablaufen soll in Sekunden
AWS Jan Schröter17 Interaktion TimeSensor - Beispiel zDEF Wecker TimeSensor{ loop TRUE cycleIntervall 60 }... ROUTE Wecker.cycleTime TO Alarm_Ton.startTime
AWS Jan Schröter18 Browserinteraktion Anchor zLinks ins WWW realisierbar mit dem Anchor-Knoten. zReagiert auf Anklicken des Objekts. zParameter yurl - URL der zu ladenden Seite yparameter - zusätzliche Informationen mit target=xxx können Frames angesprochen werden
AWS Jan Schröter19 Animation Interpolatoren zZur Animation (= fließender Veränderung von Objektparametern) benutzt man Interpolatoren. zDiese berechnen den Weg entlang eines Wertepfades mit linearer Interpolation zJede Ecke auf diesem Pfad wird durch ein Wertepaar im key/keyValue-Feld festgelegt.
AWS Jan Schröter20 Animation ColorInterpolator zAnimation von Farbwerten Bsp.: DEF Timer TimeSensor{ cycleIntervall 5.0 loop TRUE } DEF FarbGeber ColorInterpolator{ key [0, 1] keyValue[0 0 0, 1 0 0] } ROUTE Timer.fraction TO FarbGeber.fraction ROUTE FarbGeber.value TO Blinker.color
AWS Jan Schröter21 Animation Weitere Interpolatoren zCoordinateInterpolator yAnimation von 3D-Koordinaten zOrientationInterpolator yAnimation von Rotationen