Einführung in VRML - Teil 2 Advanced Features. 7. 7. 2000AWS 2000 - Jan Schröter2 Inhalt zTypen-...

Post on 05-Apr-2015

103 views 0 download

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