Sensor nodes. Types of sensor nodes (using VRML)

Sensor nodes ... sense changes „ ... watch attributes „ ... react to changes „ ... trigger an control animations „ Types of sensor nodes (using VRML)...
Author: Luisa Sachs
16 downloads 1 Views 3MB Size
Sensor nodes ... sense changes „ ... watch attributes „ ... react to changes „ ... trigger an control animations „

Types of sensor nodes (using VRML) environment sensors

„

Proximity Sensor Time Sensor Visibility Sensor

„

Collision

„ „

input sensors „ „ „ „ „

Anchor Cylinder sensor Sphere sensor Touch sensor Plane sensor

1

sensor-event-routing

sensor-event-routing

2

3

time sensor abstract wall clock „ no position in the virtual scene „ generation of repeating (or unique) events „ e.g., to drive an interpolation „

Ð This concept is the basis for animations!

time sensor (VRML) TimeSensor { exposedField exposedField exposedField exposedField exposedField eventOut eventOut eventOut eventOut }

SFTime SFBool SFBool SFTime SFTime SFTime SFFloat SFBool SFTime

cycleInterval enabled loop startTime stopTime cycleTime fraction_changed isActive time

1 TRUE FALSE 0 0

4

visibility sensor activates if it comes into view (almost like an interaction sensor) „ can activate certain simulation parts to avoid unnecessary calculations „

visibility sensor (VRML) VisibilitySensor { exposedField SFVec3f exposedField SFBool exposedField SFVec3f eventOut SFTime eventOut SFTime eventOut SFBool }

center enabled size enterTime exitTime isActive

0 0 0 TRUE 0 0 0

5

proximity sensor activates if the user (e.g., the view platform) reaches the sensors proximity „ is activated during the whole time something is in its proximity „ Can test for different proximity shapes (e.g., a box in VRML) „

proximity sensor (VRML) ProximitySensor { exposedField SFVec3f exposedField SFVec3f exposedField SFBool eventOut SFBool eventOut SFVec3f eventOut SFRotation eventOut SFTime eventOut SFTime }

center 0 0 0 size 0 0 0 enabled TRUE isActive position_changed orientation_changed enterTime exitTime

6

proximity sensor (Box, VRML)

collision (VRML) tests for collision with the user (the view platform) „ is implemented as a group node „ has additional alternative test geometry (e.g., to speed up calculation) „

ÐHow would you implement an arbitrary collision engine?

7

collision (VRML)

collision (VRML) Collision { eventIn eventIn exposedField exposedField field field field eventOut }

MFNode MFNode MFNode SFBool SFVec3f SFVec3f SFNode SFTime

addChildren removeChildren children collide bboxCenter bboxSize proxy collideTime

[] TRUE 0 0 0 -1 -1 -1 NULL

8

interaction sensors map data from input devices to scene changes „ input devices: mouse, trackball, stylus, gloves or gesture events „ detects isOver and isActive as events „

Touch Sensor (VRML) Detektiert Mausinteraktion mit benachbarter Geometrie „ Liefert Touchtime (Zeit zwischen button down und button up) „ Liefert Normale, Punkt und Texturkoordinate am Auftreffpunkt (während isOver) „

9

Touch Sensor (VRML) TouchSensor { exposedField eventOut eventOut eventOut eventOut eventOut eventOut }

SFBool SFVec3f SFVec3f SFVec2f SFBool SFBool SFTime

enabled TRUE hitNormal_changed hitPoint_changed hitTexCoord_changed isActive isOver touchTime

ÐFrage: Wie ist das Touch Sensor Konzept auf immersive VR Anwendungen zu erweitern?

Drag Sensoren Spezielle Interaktionssensoren „ Mappen Pointing-Device Bewegungsinformationen auf Objektänderungen „ Siehe dazu z.B. auch die OpenInventor Klassenbibliothek „

10

Sphere Sensor (VRML) „

Rotiert benachbarte Geometrie um den Nullpunkt des Sensors

SphereSensor { exposedField exposedField exposedField eventOut eventOut eventOut }

SFBool SFBool SFRotation SFBool SFRotation SFVec3f

autoOffset TRUE enabled TRUE offset 0 1 0 0 isActive rotation_changed trackPoint_changed

Sphere Sensor (VRML)

11

Cylinder Sensor (VRML) „

Rotiert benachbarte Geometrie in zwei Arten um die y-Achse des Sensors

CylinderSensor { exposedField exposedField exposedField exposedField exposedField exposedField eventOut eventOut eventOut }

SFBool SFFloat SFBool SFFloat SFFloat SFFloat SFBool SFRotation SFVec3f

autoOffset TRUE diskAngle 0.262 enabled TRUE maxAngle -1 minAngle 0 offset 0 isActive rotation_changed trackPoint_changed

Cylinder Sensor (VRML)

12

Cylinder Sensor (VRML)

Plane Sensor (VRML) „

Translatiert in Sensor-lokaler xy-Ebene

PlaneSensor { exposedField exposedField exposedField exposedField exposedField eventOut eventOut eventOut }

SFBool SFBool SFVec2f SFVec2f SFVec3f SFBool SFVec3f SFVec3f

autoOffset TRUE enabled TRUE maxPosition -1 -1 minPosition 0 0 offset 0 0 0 isActive trackPoint_changed translation_changed

13

Designüberlegungen Übertragbarkeit auf andere VRAnwendungen bzw. VR-Designsysteme „ Homogene Einbettung in existierende Datenstrukturen (Szenengraph) „ Abstraktion von aktuell gegebenen Datenlieferanten; siehe dazu den Transfer von Maus zu Glove etc. „ Performanz im Hinblick auf ständige Triggerung „

Prinzipielle Sensorenlage im Szenengraph root Sensor

root

Sensor root

Sensor

14

Prinzipielle Sensorenlage im Szenengraph Wird ein Knotenzugriff auf die beeinflußten Knoten benötigt? „ Wenn ja, Knotenzugriff per Traversierungsfunktionen (get-children, get-parent ...) oder per registrierter Referenz? „ Ist eine Position des Sensors von funktionaler Bedeutung (siehe Annäherung vs. Kollisionsengine)? „

Datenaustausch zwischen den Komponenten (Field vs. Referenz) Fieldconnections durch das Scripting steuerbar aber bei großem Datenaustausch evt. langsam „ Funktion durch Knotenreferenz ist performant aber weniger flexibel und setzt nicht auf die eventuelle Kommunikationsfähigkeiten der Fields „

15

Aufgaben 1.

2. 3. 4. 5.

Entwickle zwei verschiedene Proximitysensoren, Proximitysensoren, einen mit BoxBoxund einen mit Sphereumgebung. Sphereumgebung. Wie könnte man eine Staffelung verschiedener Umgebungen in einer Instanz umsetzen? -> Wer kann setzt dieses um! Entwickle einen Touchsensor für mögliche PointingPointing-Devices. Kopple den Touchsensor an einen Interpolator, Interpolator, so dass nach touch eine Interpolationsanimation ausgeführt wird. Entwerfe ein eigenes Architekturkonzept für eine Kollisionsengine. Kollisionsengine. Stelle die VorVor- und Nachteile unterschiedlicher Grapheinbettungen zusammen.

Animation durch Interpolation

16

Animation durch Interpolation „

„

„Animation verstehen wir als die Veränderung eines Attributs (einer Eigenschaft) im Zeitverlauf.“ Eine Animation benötigt zwei Elemente: – 1. Einen Zeitgeber, um die Wiedergabe der Animation zusteuern – 2. Eine Beschreibung der Form der Veränderung während der Animation

Aufgaben „

„ „

„

„

Für die folgenden Aufgaben kann der bereits entwickelten Viewer benutzt werden. Alternativ dazu kann ebenfalls der aview ($(AV_HOME)/bin/aview.sh) verwendet werden. 1. Lade ein beliebiges Objekt und rotiere es unter Einsatz der Interpolatoren um eine Achse deiner Wahl. 2. Lade ein Objekt mit impliziten Ausrichtungen (vorne, oben, etc., also ein Auto oder eine humanoide Figur...) und positioniere es so über einem ebenfalls zu ladenden Boden (floor.iv) der virtuellen Welt, dass es realistisch Bodenkontakt erhält. Interpoliere die Position des Objekts in Form eines Vierecks. 3. s.2. aber lade nun ebenfalls ein statisches Hindernis (Baum, Tisch...) und umfahre das Hindernis durch Interpolation des Position und der Orientierung. Dabei soll „vorne“ immer der Bewegungsrichtung entsprechen. 4. Zusatz: Teste beliebige andere Interpolatoren (für Skalierung, Farbe, etc.).

17

and that‘s it...have fun...

18

Suggest Documents