05.11.2012 Aufrufe

Design einer Bedienschnittstelle für die multimodale Navigation in ...

Design einer Bedienschnittstelle für die multimodale Navigation in ...

Design einer Bedienschnittstelle für die multimodale Navigation in ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Technische Universität München<br />

Lehrstuhl <strong>für</strong><br />

Mensch-Masch<strong>in</strong>e-Kommunikation<br />

Prof. Dr. rer. nat. M. Lang<br />

Diplomarbeit<br />

<strong>Design</strong> <strong>e<strong>in</strong>er</strong> <strong>Be<strong>die</strong>nschnittstelle</strong><br />

<strong>für</strong> <strong>die</strong> <strong>multimodale</strong> <strong>Navigation</strong><br />

<strong>in</strong> virtuellen 3D Welten<br />

Verfasser: Herbert Stocker<br />

Goldbachstr. 40<br />

83620 Vagen<br />

Matrikelnummer 1615084<br />

Betreuer TUM: Dipl.-Inform. Frank Althoff<br />

Betreuende Firma: blaxxun <strong>in</strong>teractive AG<br />

Elsenheimer Str. 61-63<br />

D-80687 München<br />

Abgabeterm<strong>in</strong>: 04.02.2002


München, den 04.02.2002<br />

Ich versichere, daß ich <strong>die</strong>se Diplomarbeit<br />

selbständig verfaßt und nur <strong>die</strong><br />

angegebenen Quellen und Hilfsmittel<br />

verwendet habe.<br />

Herbert Stocker


Inhaltsverzeichnis<br />

1 E<strong>in</strong>leitung .................................................................................. 1<br />

2 Benutzungs<strong>in</strong>terfaces ............................................................... 4<br />

2.1 Verfügbare Modalitäten .......................................................................... 4<br />

2.2 Entwicklung von Benutzungs<strong>in</strong>terfaces ..................................................... 6<br />

2.3 Forderungen an e<strong>in</strong> 3D Benutzungs<strong>in</strong>terface ............................................. 7<br />

3 VR Anwendungen ..................................................................... 9<br />

3.1 Beispiele ............................................................................................. 9<br />

3.2 Applikationsstruktur ............................................................................ 11<br />

3.3 Interaktionsparadigmen ....................................................................... 12<br />

3.3.1 <strong>Navigation</strong> ............................................................................... 12<br />

3.3.2 Manipulation ............................................................................ 13<br />

3.3.3 Kommunikation ........................................................................ 14<br />

3.4 Kategorisierung von E<strong>in</strong>gabegeräten ...................................................... 14<br />

3.5 Das <strong>multimodale</strong> Be<strong>die</strong>nsystem MIVIS ................................................... 16<br />

4 Die VRML Technologie ............................................................. 18<br />

4.1 Sprachmodell ..................................................................................... 18<br />

4.2 Ausführungsmodell .............................................................................. 23<br />

4.3 Konzept <strong>für</strong> Benutzer<strong>in</strong>teraktion ............................................................ 24<br />

4.3.1 Manipulation ............................................................................ 24<br />

4.3.2 <strong>Navigation</strong> ............................................................................... 25<br />

5 Anpassbare <strong>Navigation</strong> ........................................................... 28<br />

5.1 Zugrundeliegende Formalismen ............................................................ 28<br />

5.1.1 Bewegungsarten ....................................................................... 29<br />

5.1.2 Koord<strong>in</strong>atensysteme ................................................................. 29<br />

5.1.3 Richtungssysteme ..................................................................... 31<br />

5.2 Bewegungen ....................................................................................... 33<br />

5.2.1 Darstellung .............................................................................. 33<br />

5.2.2 Filterung .................................................................................. 34<br />

5.3 Möglichkeiten <strong>in</strong> existierendem VRML ..................................................... 35<br />

5.3.1 E<strong>in</strong> typischer Browser ................................................................ 35<br />

5.3.2 Anpassbare <strong>Navigation</strong> .............................................................. 36<br />

5.4 Lösungsansatz .................................................................................... 37<br />

5.4.1 Zielsetzung .............................................................................. 38<br />

5.4.2 Konzept ................................................................................... 38


6 Repräsentation von E<strong>in</strong>gabegeräten ....................................... 41<br />

6.1 Anforderungen .................................................................................... 41<br />

6.2 Überblick ............................................................................................ 42<br />

6.3 Knoten-Spezifikation ........................................................................... 43<br />

6.4 Erläuterungen ..................................................................................... 44<br />

6.4.1 Aktivierungslogik ...................................................................... 44<br />

6.4.2 Standardisierung von Geräten .................................................... 45<br />

6.5 Diskussion .......................................................................................... 46<br />

6.5.1 E<strong>in</strong>gabefokus <strong>in</strong> Multitask<strong>in</strong>g Systemen ....................................... 46<br />

6.5.2 Flexibilität durch Rückgriff auf Proto Mechanismus ........................ 46<br />

6.5.3 Methoden <strong>für</strong> den Gerätezugriff .................................................. 47<br />

6.5.4 DeviceSensor als b<strong>in</strong>dbarer Knoten ............................................. 48<br />

6.6 Typische Geräte und deren Implementierung .......................................... 50<br />

6.6.1 Implementierung der Basisfunktionalität ..................................... 50<br />

6.6.2 Spacemouse ............................................................................ 50<br />

6.6.3 Joystick ................................................................................... 52<br />

6.6.4 Maus und Tastatur .................................................................... 54<br />

6.6.5 TCP Verb<strong>in</strong>dungen .................................................................... 56<br />

7 Steuerung der <strong>Navigation</strong> ....................................................... 59<br />

7.1 Anforderungen an Knoten <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> ........................................... 59<br />

7.1.1 Unterstützung geschw<strong>in</strong>digkeitsorientierter E<strong>in</strong>gabegeräte .............. 59<br />

7.1.2 Unterstützung positionsorientierter E<strong>in</strong>gabegeräte ........................ 60<br />

7.1.3 Unterstützung referenzierender <strong>Navigation</strong> .................................. 60<br />

7.1.4 Unterstützung diskreter <strong>Navigation</strong> ............................................. 61<br />

7.1.5 Kontrolle über grundlegende <strong>Navigation</strong>sparameter ...................... 61<br />

7.2 Knotenspezifikation ............................................................................. 62<br />

7.2.1 Der Knoten <strong>Navigation</strong>Info2 ....................................................... 63<br />

7.2.2 Der Knoten <strong>Navigation</strong>Sensor ..................................................... 64<br />

7.2.3 Der Knoten Navigator ................................................................ 65<br />

7.2.4 Abbrechbarkeit von Viewpo<strong>in</strong>t-Animationen ................................. 68<br />

7.3 Komb<strong>in</strong>ation der Bewegungsdaten ......................................................... 70<br />

7.3.1 Darstellung als Signalflußplan .................................................... 70<br />

7.3.2 Darstellung als Pseudocode ........................................................ 74<br />

8 Multimodale Interaktion ......................................................... 77<br />

8.1 Existierende Software .......................................................................... 77<br />

8.1.1 Formale Funktionsmodellierung .................................................. 77<br />

8.1.2 Aufbau des ursprünglichen MIVIS Systems .................................. 80<br />

8.2 <strong>Design</strong>entscheidungen ......................................................................... 83<br />

8.2.1 Kommunikationskanal <strong>für</strong> zeitkont<strong>in</strong>uierliche Werte ...................... 83<br />

8.2.2 <strong>Navigation</strong>smodi ....................................................................... 83<br />

8.2.3 Haptische Interpreter ................................................................ 84<br />

8.2.4 Kont<strong>in</strong>uierlicher Integrator ......................................................... 85<br />

8.2.5 Feedback an Benutzer ............................................................... 85


8.3 Systemarchitektur ............................................................................... 86<br />

8.3.1 Systemüberblick ....................................................................... 86<br />

8.3.2 E<strong>in</strong>gabemodule ........................................................................ 87<br />

8.3.3 Kommunikationskanäle ............................................................. 88<br />

8.3.4 Diskreter Integrator .................................................................. 89<br />

8.3.5 Navigator ................................................................................ 89<br />

8.3.6 Kont<strong>in</strong>uierlicher Integrator ......................................................... 90<br />

8.3.7 Feedback-Modul ....................................................................... 90<br />

8.4 Erweiterung des Funktionsumfangs ....................................................... 90<br />

8.4.1 Quasikont<strong>in</strong>uierlichen <strong>Navigation</strong> ................................................ 91<br />

8.4.2 Referenzierende <strong>Navigation</strong> ....................................................... 92<br />

8.4.3 Steuerkommandos .................................................................... 95<br />

8.4.4 Formalismus <strong>für</strong> Status Anzeigen ................................................ 97<br />

8.5 Implementierung ............................................................................... 99<br />

8.5.1 Verwendung von VRML/VrmlScript ............................................ 100<br />

8.5.2 Kommunikationskanäle ........................................................... 101<br />

8.5.3 Diskreter Integrator ................................................................ 102<br />

8.5.4 Kont<strong>in</strong>uierlicher Integrator ....................................................... 102<br />

8.5.5 Navigator .............................................................................. 102<br />

8.5.6 Die haptischen Interpreter ....................................................... 103<br />

9 Weiterführende Arbeiten ...................................................... 104<br />

9.1 Anwendungsbeispiele ......................................................................... 104<br />

9.2 Ausbau der Systemstruktur ................................................................ 105<br />

9.2.1 Rückgängig machen haptisch gesteuerter Bewegungen ................ 105<br />

9.2.2 Kont<strong>in</strong>uierliche Zeigegesten ..................................................... 106<br />

9.3 Ausbau der Funktionalität ................................................................... 107<br />

9.3.1 Zugriff der Anwendung ............................................................ 107<br />

9.3.2 Referenzieren beweglicher Objekte ............................................ 108<br />

9.3.3 Multimodale und dreidimensionale Umsetzung des Kontextmenüs .... 110<br />

9.4 Ausbau auf das Paradigma Manipulation ................................................ 111<br />

9.4.1 Systemarchitektur .................................................................. 112<br />

9.4.2 Funktionalität ......................................................................... 113<br />

9.4.3 Anwendungen ........................................................................ 114<br />

10 Zusammenfassung .............................................................. 115


Verzeichnisse ........................................................................... 117<br />

Abbildungsverzeichnis ............................................................................. 117<br />

Referenzen ............................................................................................ 118<br />

Internet Seiten ....................................................................................... 119<br />

Anhang A Konventionen ............................................................ 120<br />

Anhang B Beispielszenarios <strong>für</strong> angepaßte <strong>Navigation</strong> .............. 121<br />

Anhang C Erweiterter Kommunikationsformalismus ................. 124<br />

Anhang D DeviceSensor SDK <strong>für</strong> blaxxun Contact ..................... 127


1 E<strong>in</strong>leitung<br />

Kapitel 1, E<strong>in</strong>leitung<br />

Menschen kommunizieren sowohl untere<strong>in</strong>ander als auch mit e<strong>in</strong>em technischen System<br />

besonders effektiv, wenn ihnen dazu möglichst viele Interaktionsformen zur Verfügung<br />

stehen. Jede E<strong>in</strong>gabemodalität hat ihre besonderen Stärken und Schwächen. Beispielsweise<br />

können mit gesprochener Sprache abstrakte Zusammenhänge sehr gut ausgedrückt<br />

werden, und Handgesten eignen sich gut zum Beschreiben von Positionen und<br />

Richtungen. In der Komb<strong>in</strong>ation eignen sich beide Modalitäten hervorragend, um auf e<strong>in</strong><br />

Objekt zu zeigen und anzugeben, was damit passieren soll.<br />

Computersysteme haben im Laufe der Zeit e<strong>in</strong>e starke Verbreitung gefunden. Während<br />

Anfang der 50er Jahre Rechenmasch<strong>in</strong>en noch ausschließlich von Experten be<strong>die</strong>nt wurden,<br />

hat <strong>in</strong> den 90er Jahren mit den Personal Computern (PC) der E<strong>in</strong>zug <strong>in</strong> den Büroalltag<br />

begonnen, und <strong>in</strong> letzter Zeit eroberten Computer durch <strong>die</strong> Verbreitung des Internets<br />

und der mobilen Kommunikationsmöglichkeiten das Alltagsleben auch im privaten<br />

Bereich. Während sich das bei den durchschnittlichen Benutzern vorhandene Fachwissen<br />

über Computersysteme immer weiter verr<strong>in</strong>gert hat, wurden <strong>die</strong> E<strong>in</strong>satzgebiete immer<br />

umfangreicher und damit <strong>die</strong> Be<strong>die</strong>nung immer komplexer. Dadurch waren auch <strong>die</strong> <strong>Be<strong>die</strong>nschnittstelle</strong>n<br />

e<strong>in</strong>em starken Wandel unterworfen und nahmen an Komplexität zu. Die<br />

ersten Systeme wurden mit Lochkarten programmiert. Heute s<strong>in</strong>d zweidimensionale,<br />

grafische Benutzungsoberflächen weit verbreitet.<br />

Für <strong>die</strong> Zukunft zeichnet sich e<strong>in</strong>e Entwicklung <strong>in</strong> Richtung dreidimensionaler Be<strong>die</strong>nsysteme<br />

ab, <strong>die</strong> der real erfahrbaren Welt nachempfunden s<strong>in</strong>d. Anwendungen der virtuellen<br />

Realität erlauben <strong>die</strong> unmittelbare Wechselwirkung des Menschen mit der computergenerierten<br />

Darstellung. Die bei grafischen Benutzungsoberflächen typischen Be<strong>die</strong>nelemente<br />

W<strong>in</strong>dow, Icon, Menü und Zeigegerät (WIMP) werden durch dreidimensionale E<strong>in</strong>und<br />

Ausgabeverfahren ersetzt. Neben visueller Darstellung können auch richtungsabhängige<br />

akustische Signale und taktile Reize e<strong>in</strong>bezogen werden.<br />

Obwohl <strong>die</strong> Kommunikationsfähigkeit des Menschen von e<strong>in</strong>em <strong>in</strong>tensiven Gebrauch<br />

möglichst vieler Kommunikationskanäle (Multimodalität) abhängt, wurde bei der Kommunikation<br />

mit dem Computer meistens nur e<strong>in</strong> E<strong>in</strong>gabegerät, <strong>die</strong> Tastatur e<strong>in</strong>gesetzt.<br />

Erst <strong>in</strong> letzter Zeit kam <strong>die</strong> Maus als Zeigegerät h<strong>in</strong>zu, wodurch sich erste Ansätze von<br />

Multimodalität abzeichneten. Dreidimensionale (3D) Benutzungsschnittstellen bieten e<strong>in</strong>en<br />

flexiblen und <strong>in</strong>tuitiven Zugang zu komplexen Systemen. Während sich beispielsweise<br />

semantisch höherwertige Modalitäten wie natürliche Sprache und Gestik gut eignen,<br />

um abstrakte Zusammenhänge auszudrücken und deshalb von großer Bedeutung <strong>für</strong> <strong>die</strong><br />

Be<strong>die</strong>nung komplexer Systeme s<strong>in</strong>d, können erst mit haptischen E<strong>in</strong>gabekanälen präzise<br />

räumliche Informationen schnell weitergegeben werden.<br />

Aber auch haptische E<strong>in</strong>gabegeräte haben ihre Stärken und Schwächen: An e<strong>in</strong>em bildschirmorientierten<br />

3D Arbeitsplatz eignet sich e<strong>in</strong> Joystick beispielsweise sehr gut, um<br />

weite Strecken zurückzulegen, <strong>die</strong> Spacemouse hat ihre Stärken bei der exakten Positionierung<br />

<strong>in</strong> allen Freiheitsgraden, benötigt aber im Umgang viel Übung und Erfahrung.<br />

E<strong>in</strong>e Maus eignet sich gut zum Referenzieren von Objekten.<br />

Zielsetzung<br />

Am Lehrstuhl <strong>für</strong> Mensch-Masch<strong>in</strong>e-Kommunikation wird e<strong>in</strong> <strong>multimodale</strong>s Be<strong>die</strong>nsystem<br />

<strong>für</strong> 3D Applikationen (MIVIS) entwickelt, mit dem e<strong>in</strong> Benutzer mittels semantisch höherwertigen<br />

Modalitäten Interaktionsaufgaben <strong>in</strong> dreidimensionalen Umgebungen durchführen<br />

kann. Ziel <strong>die</strong>ser Diplomarbeit ist es, <strong>die</strong>ses System so zu erweitern, daß darauf<br />

basierende Anwendungen auch mit haptischen E<strong>in</strong>gabegeräten <strong>in</strong>tuitiv und effizient be<strong>die</strong>nt<br />

werden können. Dabei soll der Benutzer <strong>die</strong> Möglichkeit haben, zur Erledigung <strong>e<strong>in</strong>er</strong><br />

Aufgabe aus semantisch höherwertigen Modalitäten und mehreren haptischen E<strong>in</strong>gabegeräten<br />

frei zu wählen und <strong>die</strong>se komb<strong>in</strong>ieren zu können. Die Arbeit orientiert sich an der<br />

Domäne der <strong>Navigation</strong> <strong>in</strong> virtuellen 3D Umgebungen.<br />

Seite 1


Kapitel 1, E<strong>in</strong>leitung<br />

In e<strong>in</strong>em ersten Schritt werden Sprachkonstrukte <strong>in</strong> der 3D Szenenbeschreibungssprache<br />

VRML entwickelt, <strong>die</strong> es dem Autor <strong>e<strong>in</strong>er</strong> Anwendung ermöglichen, das <strong>Navigation</strong>sparadigma<br />

an <strong>die</strong> Bedürfnisse <strong>e<strong>in</strong>er</strong> Anwendung und deren Nutzerkreis anzupassen, sowie<br />

beliebige E<strong>in</strong>gabegeräte dabei zu berücksichtigen. Darauf aufbauend wird <strong>die</strong> Architektur<br />

des bestehenden MIVIS Systems um <strong>die</strong> Unterstützung mehrerer haptischer E<strong>in</strong>gabegeräte<br />

erweitert, so daß e<strong>in</strong> System <strong>für</strong> hochgradig <strong>multimodale</strong> Be<strong>die</strong>nung entsteht.<br />

Wenn e<strong>in</strong>e umfangreiche Funktionsvielfalt <strong>die</strong> Kopplung zwischen Mensch und Masch<strong>in</strong>e<br />

<strong>in</strong>tensiviert, kann das Benutzungs<strong>in</strong>terface <strong>in</strong> der Wahrnehmung des Benutzers verschw<strong>in</strong>den<br />

und den Blick auf <strong>die</strong> eigentliche Aufgabe freigeben. Daher wird der Funktionsumfang<br />

des MIVIS Systems substantiell erweitert und <strong>die</strong> Kommunikation zwischen den<br />

e<strong>in</strong>zelnen Systemkomponenten ausgedehnt.<br />

Durchführung<br />

Das ursprüngliche MIVIS System basiert auf dem als freie Software verfügbaren VRML<br />

Browser FreeWRL unter L<strong>in</strong>ux. Da sich der kommerzielle Browser blaxxun Contact <strong>in</strong> e<strong>in</strong>em<br />

wesentlich fortgeschrittenerem Entwicklungsstadium bef<strong>in</strong>det, wird das System im<br />

Zuge <strong>die</strong>ser Diplomarbeit auf <strong>die</strong>sen Browser umgestellt. Zunächst wird der Browser um<br />

e<strong>in</strong>e modulare Schnittstelle zur Anb<strong>in</strong>dung beliebiger E<strong>in</strong>gabegeräte und <strong>die</strong> Sprachkonstrukte<br />

<strong>für</strong> anpassbare <strong>Navigation</strong> ergänzt. Die erweiterte Infrastruktur des MIVIS Systems<br />

wird <strong>in</strong> der Sprache VRML und JavaScript implementiert, damit das System nach<br />

Beendigung <strong>die</strong>ser Diplomarbeit leicht modifizierbar bleibt. Darauf aufbauend wird <strong>die</strong><br />

ausgebaute Funktionalität und <strong>die</strong> Anb<strong>in</strong>dung der haptischen E<strong>in</strong>gabegeräte implementiert.<br />

Um <strong>die</strong> bestehenden Module der semantisch höherwertigen Modalitäten und der<br />

Modellierung der Benutzer<strong>in</strong>tention e<strong>in</strong>zub<strong>in</strong>den, wird <strong>die</strong> anfangs entwickelte Erweiterungsarchitektur<br />

des Browsers dazu benutzt, um <strong>die</strong>se Module über Netzwerkverb<strong>in</strong>dungen<br />

anzukoppeln.<br />

Gliederung<br />

In Kapitel 2 wird zunächst e<strong>in</strong> Überblick über <strong>die</strong> Modalitäten gegeben, welche dem Menschen<br />

zur Kommunikation zur Verfügung stehen, und <strong>die</strong> geschichtliche Entwicklung von<br />

Benutzungs<strong>in</strong>terfaces aufgezeigt. Anschließend werden <strong>die</strong> zentralen Forderungen motiviert,<br />

welche <strong>die</strong>ser Diplomarbeit zugrunde liegen.<br />

Kapitel 3 gibt e<strong>in</strong>en groben Überblick über existierende Virtual Reality (VR) Anwendungen.<br />

Zunächst werden exemplarisch <strong>die</strong> umfangreichen Anwendungsgebiete von VR Anwendungen<br />

aufgezeigt. Danach werden zentrale Bestandteile der Architektur von VR Anwendungen<br />

identifiziert, <strong>die</strong> möglichen Interaktionsparadigmen erläutert und haptische<br />

E<strong>in</strong>gabegeräte bezüglich ihrer Eignung <strong>für</strong> Interaktionsaufgaben kategorisiert. Abschließend<br />

wird e<strong>in</strong> Überblick über das bestehende MIVIS System gegeben.<br />

In Kapitel 4 wird VRML als e<strong>in</strong>e Technologie <strong>für</strong> Internet basierte VR Anwendungen vorgestellt.<br />

Es wird e<strong>in</strong> Überblick über das Sprachmodell gegeben, da <strong>die</strong>ses <strong>die</strong> Grundlage<br />

<strong>für</strong> wesentliche Teile <strong>die</strong>ser Diplomarbeit darstellt. Anschließend wird <strong>die</strong> Architektur von<br />

VRML erläutert und <strong>die</strong> Konzepte <strong>für</strong> Benutzer<strong>in</strong>teraktion werden beschrieben.<br />

Die <strong>in</strong> <strong>die</strong>ser Diplomarbeit entwickelten Konzepte <strong>für</strong> flexible Interaktion werden <strong>in</strong><br />

Kapitel 5 erarbeitet. Zunächst werden <strong>die</strong> mathematischen Grundlagen und Konzepte zur<br />

Beschreibung von <strong>Navigation</strong> <strong>in</strong> 3D Umgebungen identifiziert, auf <strong>die</strong> sich <strong>die</strong> gesamte<br />

weitere Arbeit stützt. Ferner wird VRML dah<strong>in</strong>gehend analysiert, <strong>in</strong>wiefern es, ohne verändert<br />

zu werden, im aktuellen Zustand bereits Möglichkeiten zur Anpassung der <strong>Navigation</strong><br />

bietet. Anschließend wird e<strong>in</strong> Konzept entwickelt, nach dem VRML <strong>in</strong> den Kapiteln<br />

6 und 7 auf e<strong>in</strong>e echte Anpassbarkeit des <strong>Navigation</strong>sparadigmas erweitert wird. Abschließend<br />

wird das Konzept <strong>für</strong> <strong>die</strong> Erweiterung des MIVIS Systems auf haptische E<strong>in</strong>gabegeräte<br />

ausführlich diskutiert.<br />

Seite 2


Kapitel 1, E<strong>in</strong>leitung<br />

Kapitel 6 schlägt e<strong>in</strong> Sprachkonstrukt vor, mit dem sich beliebige haptische E<strong>in</strong>gabegeräte,<br />

aber auch semantisch höherwertige Modalitäten <strong>in</strong> der Szenenbeschreibung formal<br />

e<strong>in</strong>heitlich darstellen lasen. Nach der Def<strong>in</strong>ition der Zielsetzung <strong>für</strong> <strong>die</strong>ses Sprachkonstrukt<br />

und <strong>e<strong>in</strong>er</strong> Diskussion s<strong>e<strong>in</strong>er</strong> generellen Eigenschaften wird das Konstrukt als VRML<br />

Knoten deklariert. Anschließend wird <strong>die</strong>se Deklaration erläutert und se<strong>in</strong>e Besonderheiten<br />

diskutiert. Das Kapitel schließt mit <strong>e<strong>in</strong>er</strong> Diskussion ausgewählter Beispiele <strong>für</strong> <strong>die</strong><br />

Repräsentation von E<strong>in</strong>gabegeräten, <strong>die</strong> im Rahmen <strong>die</strong>ser Diplomarbeit implementiert<br />

wurden.<br />

Kapitel 7 widmet sich der Steuerung der <strong>Navigation</strong> durch <strong>die</strong> Szene. Es werden aus den<br />

Eigenheiten der möglichen <strong>Navigation</strong>sarten und der verschiedenen Arten von E<strong>in</strong>gabegeräten<br />

e<strong>in</strong>e Anzahl von Attributen und Signalen abgeleitet, <strong>die</strong> e<strong>in</strong>e Anwendung kontrollieren<br />

bzw. erzeugen muß, damit sich der Benutzer auf vielfältige Weise durch <strong>die</strong> virtuelle<br />

Welt bewegen kann. Anschließend werden <strong>die</strong> aus <strong>die</strong>ser Diskussion abgeleiteten<br />

Sprachkonstrukte spezifiziert und erläutert. Den Abschluß <strong>die</strong>ses Kapitels bildet e<strong>in</strong> Überblick<br />

über <strong>die</strong> zugrunde liegende Implementierung.<br />

Kapitel 8 beschreibt <strong>die</strong> Erweiterung des Be<strong>die</strong>nsystems MIVIS auf haptische Modalitäten<br />

und <strong>die</strong> Erweiterung des Funktionsumfangs. Nach e<strong>in</strong>em Überblick über <strong>die</strong> technische<br />

Realisierung des MIVIS Systems werden <strong>die</strong> <strong>für</strong> <strong>die</strong> Erweiterung der Infrastruktur getroffenen<br />

<strong>Design</strong>entscheidungen herausgearbeitet. Darauf aufbauend wird <strong>die</strong> erweiterte<br />

Modulstruktur und der gesteigerte Funktionsumfang detailliert erläutert. Abschließend<br />

erfolgt e<strong>in</strong>e Darstellung e<strong>in</strong>iger Besonderheiten der Implementierung.<br />

In Kapitel 9 werden nach H<strong>in</strong>weisen auf Arbeiten, welche auf <strong>die</strong> Ergebnisse <strong>die</strong>ser Arbeit<br />

aufbauen, Anstöße <strong>für</strong> <strong>die</strong> Weiterführung <strong>die</strong>ser Arbeit gegeben. Unter anderem wird e<strong>in</strong><br />

Vorschlag zur Erweiterung des Interaktionsparadigmas der <strong>Navigation</strong> auf das Paradigma<br />

der Manipulation gegeben. Ferner werden <strong>die</strong> auftretenden Probleme, z.B. bei der Referenzierung<br />

beweglicher Objekte diskutiert und e<strong>in</strong> Vorschlag zu deren Lösung angegeben.<br />

Die Zusammenfassung <strong>die</strong>ser Diplomarbeit erfolgt abschließend <strong>in</strong> Kapitel 10.<br />

Im Anhang A werden <strong>die</strong> <strong>in</strong> <strong>die</strong>ser Arbeit verwendeten Formatierungskonventionen erläutert.<br />

Anhang B gibt e<strong>in</strong>ige Beispiele <strong>für</strong> VRML Code, der das <strong>Navigation</strong>sparadigma an<br />

<strong>die</strong> Bedürfnisse <strong>e<strong>in</strong>er</strong> Anwendung anpaßt. Die <strong>in</strong> <strong>die</strong>ser Arbeit entwickelte Grammatik,<br />

welche <strong>die</strong> Funktionalität des erweiterten <strong>multimodale</strong>n Be<strong>die</strong>nsystems beschreibt, ist <strong>in</strong><br />

Anhang C zusammengefaßt. Anhang D enthält schließlich e<strong>in</strong>e Kopie der Dokumentation,<br />

welche <strong>die</strong> Erweiterungsarchitektur beschreibt, mit der unabhängige Programmierer den<br />

Browser um <strong>die</strong> Repräsentation zusätzlicher E<strong>in</strong>gabegeräte erweitern können.<br />

Seite 3


2 Benutzungs<strong>in</strong>te rfaces<br />

Kapitel 2, Benutzungs<strong>in</strong>terfaces<br />

Interagiert e<strong>in</strong> Mensch mit e<strong>in</strong>em technischen System, und ist er nicht der Konstrukteur<br />

oder Wartungs<strong>in</strong>genieur, so hat er es immer mit <strong>e<strong>in</strong>er</strong> Schnittstelle zu tun, <strong>die</strong> Information<br />

zwischen dem Menschen und den technischen Vorgängen <strong>in</strong>nerhalb der Masch<strong>in</strong>e<br />

austauscht. Diese Schnittstelle stellt das Benutzungs<strong>in</strong>terface dar. Für <strong>die</strong> Menschen, <strong>die</strong><br />

ke<strong>in</strong> Verständnis der Technik der Masch<strong>in</strong>e haben, ist das Benutzungs<strong>in</strong>terface der e<strong>in</strong>zige<br />

Zugang zum System. In der Vergangenheit bestand das Benutzungs<strong>in</strong>terface aus<br />

Schaltern, Hebeln und Anzeigen, <strong>die</strong> sehr stark an <strong>die</strong> technischen Gegebenheiten der<br />

Masch<strong>in</strong>e gebunden waren. Seit der Entwicklung der Computertechnik können Benutzungs<strong>in</strong>terfaces<br />

durch das hohe Maß an Flexibilität, welche <strong>die</strong>se Technik mit sich br<strong>in</strong>gt,<br />

von den Gegebenheiten <strong>in</strong> der Masch<strong>in</strong>e sehr stark abstrahiert gestaltet, und an <strong>die</strong> Bedürfnisse<br />

des Menschen angepaßt werden. Dies ist wichtig, da so e<strong>in</strong> <strong>in</strong>tuitiver Umgang<br />

mit der Masch<strong>in</strong>e ermöglicht wird, ohne daß langwierige E<strong>in</strong>arbeitungs- oder Umlernphasen<br />

beim Wechsel auf e<strong>in</strong> anderes System nötig werden. Auch ist der Mensch <strong>in</strong> Streßsituationen<br />

eher <strong>in</strong> der Lage, richtig zu reagieren, wenn <strong>die</strong>s durch <strong>in</strong>tuitive Handlungen<br />

geschehen kann, da mühsam angelernte Vorgehensweisen leicht bei <strong>e<strong>in</strong>er</strong> durch Streß<br />

hervorgerufenen Blockade verlorengehen[3].<br />

2.1 Verfügbare Modali täten<br />

Dem Menschen stehen e<strong>in</strong>e Vielzahl von Kanälen zur Verfügung, über <strong>die</strong> er sich äußern<br />

und auf se<strong>in</strong>e Umgebung e<strong>in</strong>wirken kann. Die wichtigsten davon sollen hier kurz erläutert<br />

werden. Diese Zusammenstellung ist Henn<strong>in</strong>g[4] entnommen.<br />

• Die gesprochene Sprache ist von allen Modalitäten das augenfälligste und wichtigste<br />

Kommunikationsmittel. Mit ihr können sehr abstrakte Inhalte vermittelt werden.<br />

Da<strong>für</strong> eignet sie sich nicht sehr gut, um schnell exakte Positionsangaben zu übermitteln.<br />

Die gesprochene Sprache wird überwiegend bewußt e<strong>in</strong>gesetzt, und wird vom<br />

Menschen auf natürliche Weise erlernt.<br />

• Die Hände eignen sich durch <strong>die</strong> Möglichkeit zu gestikulieren ebenso zum Vermitteln<br />

abstrakter Inhalte, jedoch wird <strong>die</strong>s im Alltag nicht so umfassend e<strong>in</strong>gesetzt wie <strong>die</strong><br />

gesprochene Sprache. An e<strong>in</strong>e bestimmte Problemdomäne angepaßte Zeichensprachen<br />

s<strong>in</strong>d jedoch leicht erlernbar. Die von Gehörlosen verwendete Zeichensprache<br />

zeigt, daß <strong>die</strong>se Zeichensprachen <strong>die</strong> Komplexität von gesprochener Sprache erreichen<br />

kann. E<strong>in</strong>e besondere Stärke des Gestikulierens mit den Händen ist <strong>die</strong> Fähigkeit,<br />

positionsbezogene Information zu vermitteln. Dies kann sehr <strong>in</strong>tuitiv beim Zeigen<br />

auf Objekte verwendet werden, oder wenn Menschen e<strong>in</strong>ander beim E<strong>in</strong>parken<br />

e<strong>in</strong>es PKWs <strong>in</strong> e<strong>in</strong>e enge Parklücke e<strong>in</strong>weisen.<br />

• Die Mimik ist e<strong>in</strong> weitgehend unbewußt e<strong>in</strong>gesetztes Kommunikationsmittel. Sie gibt<br />

Aufschluß über den Gemütszustand <strong>e<strong>in</strong>er</strong> Person, und wird häufig ergänzend zur gesprochenen<br />

Sprache e<strong>in</strong>gesetzt. Im Bezug auf <strong>die</strong> Kommunikation mit <strong>e<strong>in</strong>er</strong> Masch<strong>in</strong>e<br />

kann <strong>die</strong>ser Kanal Aufschluß über <strong>in</strong>nere Zustände und Emotionen des Benutzers geben,<br />

etwa wenn er mit der falschen Ausführung e<strong>in</strong>es Befehls unzufrieden ist.<br />

• Kopfbewegungen setzt der Mensch nur spärlich bewußt e<strong>in</strong>. Häufigstes Beispiel ist<br />

das Nicken oder Schütteln des Kopfes, das „ja” bzw. „ne<strong>in</strong>” bedeutet. Es lassen sich<br />

jedoch e<strong>in</strong>ige wenige Kopfgesten <strong>für</strong> <strong>die</strong> bewußte Kommunikation vere<strong>in</strong>baren. Allerd<strong>in</strong>gs<br />

stoßen <strong>die</strong>se sehr leicht auf Ablehnung. Es hat sich jedoch gezeigt, daß Menschen<br />

durch <strong>die</strong> Kopfhaltung <strong>in</strong>st<strong>in</strong>ktiv Information preisgeben, etwa wenn nach dem<br />

Kommando an e<strong>in</strong>e 3D Anwendung, <strong>die</strong> Blickrichtung zu ändern der Kopf schräg gehalten<br />

wird, weil das Kommando zu stark oder zu schwach ausgeführt wurde[19].<br />

Seite 4


Kapitel 2, Benutzungs<strong>in</strong>terfaces<br />

• Die Blickrichtung der Augen gibt Aufschluß über <strong>die</strong> Aufmerksamkeit e<strong>in</strong>es Benutzers.<br />

Der anvisierte Punkt kann dazu benutzt werden, um über andere Modalitäten<br />

gegebene Kommandos mit e<strong>in</strong>em Objekt <strong>in</strong> Beziehung zu setzen. Der Sehs<strong>in</strong>n ist e<strong>in</strong>e<br />

re<strong>in</strong> sensorische Aktivität. In der natürlichen Umgebung ist e<strong>in</strong> E<strong>in</strong>wirken auf <strong>die</strong> Umwelt<br />

durch bloßes Anschauen nicht möglich. Daher wirkt es irritierend <strong>für</strong> Benutzer<br />

e<strong>in</strong>es Computersystems, wenn über <strong>die</strong> Blickrichtung Aktionen ausgelöst werden oder<br />

sich <strong>die</strong> Darstellung ändert[3].<br />

Diesen Kanälen ist geme<strong>in</strong>sam, daß sie dem Menschen von Natur aus zur Übermittlung<br />

von Bewußtse<strong>in</strong>s<strong>in</strong>halten gegeben s<strong>in</strong>d. Da sie überwiegend abstrakte Inhalte transportieren,<br />

werden sie semantisch höherwertige Modalitäten, oder kurz SHM genannt. Ihre<br />

Verwendung zur Kommunikation mit der Masch<strong>in</strong>e ist zur Zeit noch Gegenstand der Forschung.<br />

Um auf se<strong>in</strong>e physikalische Umgebung e<strong>in</strong>zuwirken benutzen Menschen hauptsächlich<br />

<strong>die</strong> Hände. Für <strong>die</strong> Mensch-Masch<strong>in</strong>e-Kommunikation wird e<strong>in</strong>e Vielzahl von E<strong>in</strong>gabegeräten<br />

e<strong>in</strong>gesetzt, <strong>die</strong> darauf beruhen, daß sie physikalisch mit den Händen, teilweise<br />

auch mit anderen Körperteilen manipuliert werden. Man nennt <strong>die</strong>s haptische Modalitäten.<br />

Abgesehen von alphanumerischen Tastaturen eignen sich haptische Modalitäten<br />

besonders gut, um exakte, mehrdimensionale Größen e<strong>in</strong>es kont<strong>in</strong>uierlichen Wertebereiches<br />

e<strong>in</strong>zugeben, und um schnell auf Ereignisse <strong>in</strong> der Anwendung zu reagieren.<br />

Manche E<strong>in</strong>gabegeräte haben e<strong>in</strong>e Möglichkeit, Informationen an den Benutzer zurückzugeben,<br />

meist <strong>in</strong> Form von Kräften, <strong>die</strong> auf den Körper des Benutzers wirken. Damit können<br />

Ereignisse, <strong>die</strong> <strong>in</strong> <strong>e<strong>in</strong>er</strong> Anwendung auftreten, z.B. <strong>die</strong> Beschränkung e<strong>in</strong>es Bewegungsbereiches<br />

dem Benutzer auf sehr <strong>in</strong>tuitive Weise signalisiert werden.<br />

• Die am häufigsten e<strong>in</strong>gesetzten E<strong>in</strong>gabegeräte s<strong>in</strong>d Tastaturen zur Texte<strong>in</strong>gabe oder<br />

um Kommandos abzusetzen, und <strong>die</strong> Maus als zweidimensionales Zeigegerät. Mit der<br />

Maus kann sehr präzise auf bestimmte Positionen <strong>in</strong> e<strong>in</strong>em zweidimensionalen Koord<strong>in</strong>atensystem<br />

gezeigt werden, jedoch geschieht <strong>die</strong>s durch e<strong>in</strong>en mehrschrittigen<br />

Vorgang, bei dem <strong>die</strong> Position <strong>e<strong>in</strong>er</strong> auf dem Bildschirm dargestellten Positionsmarke<br />

korrigiert wird. Dadurch s<strong>in</strong>d besonders schnelle E<strong>in</strong>gaben exakter Positionen nicht<br />

ohne weiteres möglich.<br />

• Joysticks s<strong>in</strong>d im Zusammenhang mit Computerspielen sehr populär geworden, da<br />

sie billig hergestellt werden können, und mit ihnen e<strong>in</strong>e flüssige Steuerung von Bewegungsabläufen<br />

möglich ist. Es gibt Joysticks <strong>in</strong> vielfältigen Ausführungen, von e<strong>in</strong>fachen<br />

Steuerknüppeln mit nur zwei Freiheitsgraden und zwei Druckknöpfen bis h<strong>in</strong><br />

zu aufwendigen Nachbildungen realer Flugzeugsteuerknüppel mit vielen e<strong>in</strong>zelnen<br />

Be<strong>die</strong>nelementen und Kraftrückkopplung.<br />

Manche E<strong>in</strong>gabegeräte s<strong>in</strong>d speziell <strong>für</strong> <strong>die</strong> E<strong>in</strong>gabe von dreidimensionalen Bewegungen<br />

oder Positionen geschaffen. Wenn <strong>die</strong>se E<strong>in</strong>gabegeräte alle sechs Freiheitsgrade des<br />

dreidimensionalen Raumes – drei unabhängige Richtungen der Verschiebung und drei<br />

unabhängige Richtungen der Drehung – unterstützen, werden sie als 6DOF Geräte (six<br />

degrees of freedom – sechs Freiheitsgrade) bezeichnet.<br />

• E<strong>in</strong> Beispiel <strong>für</strong> 6DOF Geräte ist <strong>die</strong> Spacemouse der Firma 3DConnexion[25]. Sie<br />

besteht aus <strong>e<strong>in</strong>er</strong> Kappe, <strong>die</strong> vom Benutzer <strong>in</strong> alle sechs Richtungen gedrückt werden<br />

kann. Es wird <strong>die</strong> <strong>in</strong> jede Richtung wirkende Kraft separat gemessen. Diese Geräte<br />

eignen sich besonders, um Objekte virtuell im Raum frei zu bewegen, oder um <strong>die</strong><br />

Position und <strong>die</strong> Orientierung, aus der man e<strong>in</strong>e simulierte 3D Szene sieht, frei zu<br />

verändern.<br />

• Tracker s<strong>in</strong>d Sensoren, welche <strong>die</strong> Position und <strong>die</strong> Orientierung e<strong>in</strong>es Objektes im<br />

Raum berührungslos messen. Sie werden besonders effektiv <strong>in</strong> Verb<strong>in</strong>dung mit e<strong>in</strong>em<br />

Datenhandschuh e<strong>in</strong>gesetzt. E<strong>in</strong> Datenhandschuh mißt <strong>die</strong> Beugung der F<strong>in</strong>ger <strong>e<strong>in</strong>er</strong><br />

Hand. In Verb<strong>in</strong>dung mit e<strong>in</strong>em Tracker kann das Manipulieren von Objekten und<br />

das Zeigen realisiert werden. Mißt man mit e<strong>in</strong>em Tracker <strong>die</strong> Position und Orientierung<br />

des Kopfes, läßt sich auf <strong>die</strong>se Weise der darzustellende Bildschirmausschnitt<br />

bestimmen.<br />

Seite 5


2.2 Entwicklung von B enutzungs<strong>in</strong>terfaces<br />

Kapitel 2, Benutzungs<strong>in</strong>terfaces<br />

Die Entwicklung von Schnittstellen <strong>für</strong> <strong>die</strong> Mensch-Masch<strong>in</strong>e-Kommunikation (MMK) stellt<br />

schon seit langem e<strong>in</strong> eigenes Forschungsgebiet dar, <strong>in</strong>sbesondere da durch <strong>die</strong> wachsende<br />

Funktionalität von Computer Systemen <strong>die</strong>se sehr komplex werden können. Bisher<br />

mußte zumeist der Benutzer sich an <strong>die</strong> Systeme anpassen und den Umgang mit ihnen<br />

lernen. Viel Aufwand wurde und wird getrieben, um <strong>die</strong>se Hürde zu m<strong>in</strong>imieren, und <strong>die</strong><br />

Schnittstellen <strong>in</strong>tuitiver zu gestalten, so daß <strong>die</strong> Systeme auch von Laien benutzt werden<br />

können.<br />

Im Laufe der Zeit war <strong>die</strong> Beschaffenheit von Benutzungsschnittstellen e<strong>in</strong>em Wandel<br />

unterworfen. Nach Henn<strong>in</strong>g[4] kann <strong>die</strong>se Entwicklung <strong>in</strong> <strong>die</strong> folgenden sechs Generationen<br />

e<strong>in</strong>geteilt werden. Jeder Generation kann e<strong>in</strong>e Anzahl Dimensionen zugeordnet werden,<br />

<strong>in</strong> der Interaktionen möglich s<strong>in</strong>d. Es läßt sich e<strong>in</strong> e<strong>in</strong>deutiger Trend mit der Zeit<br />

ansteigender Dimensionalität feststellen, der den wachsenden Interaktionsspielraum veranschaulicht.<br />

1) Re<strong>in</strong> physikalische Mensch-Masch<strong>in</strong>e-Schnittstellen<br />

Die allerersten Systeme, <strong>die</strong> als programmierbare Rechner bezeichnet werden konnten,<br />

existierten hauptsächlich im Zeitalter der Röhrentechnologie. Rechenmasch<strong>in</strong>en <strong>die</strong>ser<br />

Generation bestanden vollständig aus unveränderlichen mechanischen und elektromechanischen<br />

Bauteilen. Das Programm zu ändern bedeutete e<strong>in</strong>e Umstrukturierung der<br />

Masch<strong>in</strong>e. Der Benutzer mußte daher tiefgreifende Kenntnisse der Systemarchitektur der<br />

Masch<strong>in</strong>e haben. Diese Masch<strong>in</strong>en wurden hauptsächlich von Experten zum Durchführen<br />

komplexer Berechnungen benutzt. Es war mit <strong>die</strong>sen Masch<strong>in</strong>e ke<strong>in</strong>e Interaktion möglich.<br />

2) Batch Systeme – nulldimensional<br />

Batch Systeme waren <strong>die</strong> ersten Systeme, <strong>die</strong> sich vollständig mittels Software be<strong>die</strong>nen<br />

ließen. Der Benutzer benötigte Programmierkenntnisse über <strong>die</strong> spezielle Masch<strong>in</strong>e. Der<br />

Umgang mit der Masch<strong>in</strong>e gestaltete sich <strong>in</strong> drei Phasen: Man erstellt e<strong>in</strong> Programm –<br />

typischerweise auf Lochkarten – das <strong>die</strong> Lösung der gestellten Aufgabe beschreibt, übergibt<br />

es e<strong>in</strong>em Operator, der <strong>die</strong> Programme der e<strong>in</strong>zelnen Benutzer nache<strong>in</strong>ander der<br />

Masch<strong>in</strong>e zuführt, und wartet auf das Ergebnis. Der gravierendste Nachteil <strong>die</strong>ser Methode<br />

ist <strong>die</strong> fehlende Rückkopplung vom System. Das Ergebnis <strong>e<strong>in</strong>er</strong> Berechnung ist erst<br />

nach Beendigung des Programms bekannt. Tritt e<strong>in</strong> Fehler während der Programmausführung<br />

auf, z.B. e<strong>in</strong> fehlender Parameter, kann der Benutzer nicht korrigierend <strong>in</strong> den<br />

Programmablauf e<strong>in</strong>greifen. Somit ergab sich auch bei <strong>die</strong>sen Systemen ke<strong>in</strong>e Möglichkeit<br />

der Interaktion.<br />

3) Zeilenorientierte Schnittstellen – e<strong>in</strong>dimensional<br />

Mit alphanumerischen Term<strong>in</strong>als – oder umgebauten Fernschreibern – hat <strong>die</strong> Wandlung<br />

des Computers <strong>in</strong> e<strong>in</strong> Werkzeug des Alltags begonnen. In e<strong>in</strong>em klassischen Frage –<br />

Antwort Dialog fragt <strong>die</strong> Masch<strong>in</strong>e den Benutzer nach Parametern, oder welche Aufgabe<br />

sie erledigen soll. Wenn genügend Information gesammelt ist, führt sie <strong>die</strong> Berechnungen<br />

durch und präsentiert <strong>die</strong> Ergebnisse dem Benutzer. Die Dialoge s<strong>in</strong>d e<strong>in</strong>fach gehalten<br />

und nach <strong>e<strong>in</strong>er</strong> strikten Hierarchie organisiert. Der Benutzer kann <strong>die</strong> Dialoge zwar selbständig<br />

anstoßen, ist dann aber im Dialogschema gefangen und kann das Geschehen<br />

nicht mehr direkt kontrollieren.<br />

4) Bildschirmorientierte Schnittstellen – zweidimensional<br />

Bildschirmorientierte Schnittstellen verschieben <strong>die</strong> Kontrolle über <strong>die</strong> Interaktion schon<br />

mehr <strong>in</strong> Richtung des Benutzers. E<strong>in</strong>gabemasken, <strong>die</strong> an auszufüllende Formulare angelehnt<br />

s<strong>in</strong>d, e<strong>in</strong>e Menüstruktur und e<strong>in</strong>e Kommandosprache s<strong>in</strong>d <strong>die</strong> kennzeichnenden<br />

Merkmale solcher Systeme. Der Benutzer kann mit der Menüstruktur E<strong>in</strong>gabemasken<br />

oder Befehle aufrufen und <strong>in</strong>nerhalb <strong>e<strong>in</strong>er</strong> E<strong>in</strong>gabemaske zwischen den e<strong>in</strong>zelnen E<strong>in</strong>gabefeldern<br />

wechseln. Hat der Benutzer e<strong>in</strong>e Reihe von anstehenden Teilaufgaben zu lösen,<br />

kann er se<strong>in</strong>e Aktionen besser planen, um e<strong>in</strong> bestimmtes Ziel zu erreichen.<br />

Seite 6


Kapitel 2, Benutzungs<strong>in</strong>terfaces<br />

5) Graphische Schnittstellen – zweie<strong>in</strong>halbdimensional<br />

Graphische Benutzungsoberflächen bilden <strong>die</strong> Grundlage <strong>für</strong> <strong>die</strong> heute üblichen Arbeitsplatzrechner.<br />

Sie erweitern <strong>die</strong> bildschirmorientierten Oberflächen um das WIMP Paradigma<br />

(WIMP = W<strong>in</strong>dow, Icon, Menu, Po<strong>in</strong>t<strong>in</strong>g) und <strong>die</strong> direkte Manipulation[20]. Auf<br />

dem Bildschirm werden zweidimensionale graphische Objekte plaziert, <strong>die</strong> sich gemäß<br />

ihrer Reihenfolge <strong>in</strong> der dritten Dimension verdecken können. Mit e<strong>in</strong>em Zeigegerät kann<br />

der Benutzer auf <strong>die</strong>se Objekte zeigen, sie auswählen oder manipulieren. E<strong>in</strong> E<strong>in</strong>gabefokus<br />

legt fest, an welches Element Tastature<strong>in</strong>gaben gerichtet s<strong>in</strong>d. Graphische Elemente<br />

werden zu Fenstern (W<strong>in</strong>dows) zusammengefaßt. Diese <strong>die</strong>nen als Schnittstelle zu Anwendungen.<br />

E<strong>in</strong> Icon ist e<strong>in</strong> S<strong>in</strong>nbild, das <strong>für</strong> e<strong>in</strong>e Anwendung, e<strong>in</strong>en Befehl, e<strong>in</strong> Dokument,<br />

usw. stehen kann.<br />

Direkte Manipulation bedeutet, daß mit dem Zeigegerät <strong>die</strong> dargestellten Objekte direkt<br />

verändert werden können, um über entsprechende Metaphern Aktionen auszulösen, ohne<br />

daß dazu über e<strong>in</strong> Menü oder über direkte Kommandoe<strong>in</strong>gabe e<strong>in</strong> Befehl abgesetzt werden<br />

müßte. Diese Form der Be<strong>die</strong>nung kann sehr <strong>in</strong>tuitiv gestaltet werden. Da graphische<br />

Benutzungsschnittstellen meist mit <strong>e<strong>in</strong>er</strong> Tastatur und e<strong>in</strong>em Zeigegerät be<strong>die</strong>nt werden,<br />

be<strong>in</strong>halten sie schon frühe Formen <strong>multimodale</strong>r Mensch-Masch<strong>in</strong>e-Kommunikation.<br />

6) Virtual Reality Systeme – dreidimensional<br />

Systeme <strong>für</strong> Virtuelle Realität (VR) stellen den modernsten Ansatz <strong>für</strong> Benutzungsoberflächen<br />

dar. Dreidimensionale, aber auch zweidimensionale Objekte werden <strong>in</strong> e<strong>in</strong>em dreidimensionalen<br />

Raum plaziert und dem Benutzer zur Manipulation angeboten. Durch <strong>die</strong><br />

hohe Ähnlichkeit mit der gewohnten Umgebung des Menschen können <strong>die</strong>se Schnittstellen<br />

sehr stark auf <strong>in</strong>tuitive Fertigkeiten des Benutzers bauen, was <strong>für</strong> ungeübte Personen<br />

besonders wichtig ist. Erstmalig erlauben <strong>die</strong>se Systeme <strong>die</strong> Immersion – das vollständige<br />

E<strong>in</strong>tauchen <strong>in</strong> <strong>die</strong> simulierte Umgebung, so daß <strong>die</strong>se an <strong>die</strong> Stelle der realen Welt<br />

tritt. Dies wird dadurch erreicht, daß dem Benutzer z.B. über vor den Augen positionierten<br />

kle<strong>in</strong>en Bildschirmen der visuelle E<strong>in</strong>druck <strong>e<strong>in</strong>er</strong> künstlichen Welt vermittelt wird,<br />

während Sensoren <strong>die</strong> Position des Betrachters messen und das generierte Bild entsprechend<br />

aktualisieren. Aber auch Desktop Systeme, <strong>die</strong> e<strong>in</strong>e 3D Szene auf e<strong>in</strong>em Monitor<br />

darstellen und vom Benutzer bee<strong>in</strong>flussen lassen, gehören zur Domäne der VR Anwendungen.<br />

Der Umgang mit solchen Systemen umfaßt das Navigieren (sich bewegen) <strong>in</strong> der<br />

simulierten Welt und das Manipulieren der simulierten Objekte.<br />

2.3 Forderungen an ei n 3D Benutzungs<strong>in</strong>terface<br />

Menschen kommunizieren sowohl untere<strong>in</strong>ander als auch mit e<strong>in</strong>em technischen System<br />

besonders effektiv, wenn ihnen dazu möglichst viele Interaktionsformen zur Verfügung<br />

stehen. Jede E<strong>in</strong>gabemodalität hat ihre besonderen Stärken und Schwächen. Beispielsweise<br />

können mit gesprochener Sprache abstrakte Zusammenhänge sehr gut ausgedrückt<br />

werden, und Handgesten eignen sich gut zum Beschreiben von Positionen und<br />

Richtungen. In der Komb<strong>in</strong>ation eignen sich beide Modalitäten hervorragend, um auf e<strong>in</strong><br />

Objekt zu zeigen und anzugeben, was damit passieren soll.<br />

Ebenso haben im Bezug auf <strong>die</strong> Interaktion mit technischen Systemen haptische E<strong>in</strong>gabegeräte<br />

ihre Stärken und Schwächen: An e<strong>in</strong>em bildschirmorientierten Arbeitsplatz eignet<br />

sich e<strong>in</strong> Joystick gut, um weite Strecken zurückzulegen, <strong>die</strong> Spacemouse hat ihre<br />

Stärken bei der exakten Positionierung <strong>in</strong> allen Freiheitsgraden, benötigt aber im Umgang<br />

viel Erfahrung und Übung. E<strong>in</strong>e Maus eignet sich gut zum Referenzieren von Objekten.<br />

Zudem s<strong>in</strong>d Benutzer <strong>in</strong>dividuell verschieden. Je nach Vorgeschichte haben Benutzer unterschiedliches<br />

Wissen über das konkrete System, über Computer an sich oder <strong>die</strong> Domäne<br />

der Anwendung[3]. Manche Benutzer haben e<strong>in</strong> ausgeprägtes räumliches Vorstellungsvermögen,<br />

manche s<strong>in</strong>d geübt im Umgang mit bestimmten E<strong>in</strong>gabegeräten, und<br />

andere wiederum können sich gut Tastenkomb<strong>in</strong>ationen merken. Besonders Anfänger<br />

benutzen gerne semantisch höherwertige Modalitäten und geben dabei redundante Information<br />

über verschiedene Kanäle, während Experten eher zur Benutzung der Tastatur<br />

ten<strong>die</strong>ren[6].<br />

Seite 7


Kapitel 2, Benutzungs<strong>in</strong>terfaces<br />

Bietet man dem Benutzer zur Steuerung e<strong>in</strong>es Computersystems möglichst viele haptische<br />

E<strong>in</strong>gabegeräte und semantisch höherwertige Modalitäten gleichzeitig an, ergibt sich<br />

<strong>für</strong> ihn e<strong>in</strong> breiter Zugang zum System, so daß er se<strong>in</strong>en Fähigkeiten und Präferenzen<br />

zufolge <strong>die</strong> <strong>für</strong> ihn geeignetste und <strong>für</strong> <strong>die</strong> zu erledigende Teilaufgabe effektivste Form<br />

der Interaktion wählen kann. Im Gegensatz zu e<strong>in</strong>em System, das dem Benutzer e<strong>in</strong>e<br />

Interaktionsform aufzw<strong>in</strong>gt, verstärkt sich durch den breiten Freiraum an Interaktionsmöglichkeiten,<br />

aus denen der Benutzer wählen kann, das Gefühl, <strong>die</strong> Kontrolle über das<br />

System <strong>in</strong>ne zu haben. Durch <strong>die</strong> erhöhte Zufriedenheit mit dem System steigt <strong>die</strong> Effektivität<br />

<strong>in</strong> der Be<strong>die</strong>nung des Benutzungs<strong>in</strong>terfaces weiter[3].<br />

� E<strong>in</strong> gutes Benutzungs<strong>in</strong>terface muß viele haptische und semantisch höherwertige<br />

Modalitäten unterstützen und dem Benutzer erlauben, aus <strong>die</strong>sen frei auszuwählen<br />

und zu komb<strong>in</strong>ieren.<br />

Ferner haben unterschiedliche Anwendungen unterschiedliche Benutzerkreise, <strong>die</strong> ihre<br />

eigenen Anforderungen an e<strong>in</strong> Benutzungs<strong>in</strong>terface stellen. E<strong>in</strong>e <strong>in</strong>teraktive Lernumgebung<br />

<strong>für</strong> K<strong>in</strong>der braucht z.B. e<strong>in</strong>e besonders e<strong>in</strong>fach zu benutzende Schnittstelle und an<br />

<strong>die</strong> spielerische Art, wie K<strong>in</strong>der <strong>die</strong> Welt entdecken, angepaßte Metaphern. Aber auch <strong>für</strong><br />

andere Anwendungsdomänen muß <strong>die</strong> Sprache der Anwendung an deren Zielgruppe angepaßt<br />

werden. Dies betrifft sowohl den Kulturkreis der Anwender als auch durch <strong>die</strong><br />

Anwendungsdomäne gegebene Fachsprachen, als auch beim Benutzerkreis zu erwartendes<br />

Wissen und Fertigkeiten[3].<br />

� Der Autor <strong>e<strong>in</strong>er</strong> Anwendung benötigt e<strong>in</strong>e Möglichkeit, <strong>die</strong> verwendeten Interaktionsparadigmen<br />

an <strong>die</strong> Anwendung und an deren Benutzerkreis anzupassen.<br />

Wegen der ger<strong>in</strong>gen Eignung konventioneller E<strong>in</strong>gabemethoden bei VR Anwendungen und<br />

wegen des hohen Maßes an Flexibilität und Komplexität, das sich mit VR Anwendungen<br />

realisieren läßt, muß <strong>die</strong>sen beiden Forderungen bei dreidimensionalen Benutzungsschnittstellen<br />

ganz besondere Bedeutung zugemessen werden. Dies ist das Ziel <strong>die</strong>ser<br />

Diplomarbeit.<br />

Seite 8


3 VR Anwendunge n<br />

Kapitel 3, VR Anwendungen<br />

VR Anwendungen stellen <strong>die</strong> bisher höchste Stufe der Entwicklung von Benutzungs<strong>in</strong>terfaces<br />

dar. Dieses Kapitel gibt e<strong>in</strong>en Überblick über <strong>die</strong>s Anwendungsklasse und identifiziert<br />

wesentliche Konzepte. Abschließend wird das am Lehrstuhl entwickelte Be<strong>die</strong>nsystem<br />

MIVIS vorgestellt.<br />

3.1 Beispiele<br />

Die unüberschaubare Bandbreite an VR Anwendungen, <strong>die</strong> es schon heute gibt, zeigt das<br />

enorme Potential, das h<strong>in</strong>ter <strong>die</strong>ser Anwendungsdomäne steckt. VR Anwendungen können<br />

grob <strong>in</strong> folgende Kategorien e<strong>in</strong>geteilt werden, wobei teilweise ke<strong>in</strong>e klaren Grenzen<br />

zwischen den e<strong>in</strong>zelnen Kategorien gelten.<br />

• Simulation<br />

• Datenvisualisierung<br />

• Computergestütztes Lernen<br />

• Telepräsenz<br />

• Kollaboration<br />

• Kommunikation<br />

• Unterhaltung<br />

• Kunst<br />

• Augmented Reality<br />

Im Folgenden werden e<strong>in</strong>ige <strong>die</strong>ser E<strong>in</strong>satzgebiete kurz angesprochen. Viele <strong>die</strong>ser Beispiele<br />

s<strong>in</strong>d [4] entnommen.<br />

Simulation<br />

Es sche<strong>in</strong>t naheliegend, daß mit der VR Technologie D<strong>in</strong>ge simuliert werden können, deren<br />

Umgang <strong>in</strong> der Realität zu riskant, zu teuer oder zu aufwendig wäre. In der Mediz<strong>in</strong><br />

werden komplizierte chirurgische E<strong>in</strong>griffe vor der Operation an e<strong>in</strong>em virtuellen Modell<br />

des Patienten geübt. Der Arzt verwendet Nachbildungen chirurgischer Werkzeuge, <strong>die</strong><br />

ihm taktiles Feedback geben.<br />

E<strong>in</strong>e Simulation des Prototyps e<strong>in</strong>es Produktes mit dem Computer aus CAD Daten kann<br />

sehr viel schneller und billiger erreicht werden, als es mit e<strong>in</strong>em physikalischen Modell<br />

möglich wäre. Zudem kann durch <strong>die</strong> Simulation der physikalischen Eigenschaften <strong>die</strong><br />

Funktionsweise überprüft und das <strong>Design</strong> verändert werden. So simuliert <strong>die</strong> NASA <strong>die</strong><br />

aerodynamischen Eigenschaften von nur im Rechner existierenden Flugzeugen <strong>in</strong> e<strong>in</strong>em<br />

virtuellen W<strong>in</strong>dkanal. Während der Simulation können <strong>die</strong> Eigenschaften des Modells verändert<br />

und deren Auswirkungen auf das Strömungsverhalten stu<strong>die</strong>rt werden.<br />

Der Showroom von Matsushita ist e<strong>in</strong> virtueller Verkaufsraum, <strong>in</strong> dem der Kunde mit<br />

e<strong>in</strong>em Verkäufer aus rund 10 000 E<strong>in</strong>zelteilen e<strong>in</strong>e Küchene<strong>in</strong>richtung zusammenstellen<br />

kann. Diese kann er dann sofort <strong>in</strong> Orig<strong>in</strong>algröße begutachten. Aber nicht nur voll immersive<br />

Systeme mit Datenhelm und -handschuh s<strong>in</strong>d <strong>für</strong> e-Commerce <strong>in</strong>teressant. Durch<br />

<strong>die</strong> rasante Entwicklung des Internets könnten Onl<strong>in</strong>e Shops bald <strong>in</strong> der Lage se<strong>in</strong>, Produkte<br />

dem Kunden <strong>in</strong> <strong>e<strong>in</strong>er</strong> 3D Umgebung zu präsentieren.<br />

Datenvisualisierung<br />

Abstrakte Zusammenhänge lassen sich mit VR Systemen ebenso gut darstellen wie sich<br />

reale Umgebungen simulieren lassen. Dem Benutzer kann sogar <strong>die</strong> Möglichkeit gegeben<br />

werden, auf <strong>die</strong>se Zusammenhänge e<strong>in</strong>zuwirken. Dabei können <strong>die</strong> Fähigkeiten des Menschen<br />

zur Orientierung im realen Raum und das Wissen über den Umgang mit realen<br />

Objekten auf abstrakte Zusammenhänge angewendet werden.<br />

Die Firma <strong>in</strong>fobyte hat mit „Balance Sheet City” e<strong>in</strong> System zur Darstellung der Bilanzen<br />

e<strong>in</strong>es Unternehmens entwickelt. In <strong>e<strong>in</strong>er</strong> über den Wolken schwebenden Stadt repräsentiert<br />

jedes Gebäude e<strong>in</strong>e f<strong>in</strong>anzielle E<strong>in</strong>heit. Die Gebäude bef<strong>in</strong>den auf Plattformen, <strong>die</strong><br />

über Treppen verbunden s<strong>in</strong>d, welche <strong>die</strong> Größe und <strong>die</strong> Art des F<strong>in</strong>anzflusses ausdrükken.<br />

Ganz oben schweben <strong>die</strong> imposanten Gebäude des Bruttoe<strong>in</strong>kommens, welche durch<br />

abfallende Treppen auf <strong>die</strong> deutlich niedrigeren Plattformen des Nettoe<strong>in</strong>kommens zurückgeführt<br />

werden. Durch Betreten der Gebäude kann man Diagramme e<strong>in</strong>sehen, <strong>die</strong><br />

über <strong>die</strong> Besonderheiten der f<strong>in</strong>anziellen E<strong>in</strong>heit <strong>in</strong>formieren.<br />

Seite 9


Kapitel 3, VR Anwendungen<br />

Nach den Vorstellungen von A.J. West et al. könnte <strong>in</strong> e<strong>in</strong>em VR basierten Flugleitsystem<br />

der Kurs e<strong>in</strong>es Flugzeuges durch e<strong>in</strong>e Röhre dargestellt werden, <strong>in</strong> der sich das Flugzeug<br />

bef<strong>in</strong>det. Fluglotsen könnten den Kurs e<strong>in</strong>es Flugzeuges ändern, <strong>in</strong>dem sie e<strong>in</strong>e Röhre<br />

greifen und verschieben.<br />

Computer gestütztes Lernen<br />

Die Diszipl<strong>in</strong>en Simulation und Datenrepräsentation kann beim Computer gestützten Lernen<br />

(CBT, computer based tra<strong>in</strong><strong>in</strong>g) genutzt werden. Flugsimulationen, Simulationen der<br />

Schiffahrt und Fahrsimulationen s<strong>in</strong>d Beispiele <strong>für</strong> VR Anwendungen, <strong>die</strong> den Umgang mit<br />

teuerem Gerät ohne Unfallrisiko tra<strong>in</strong>iert werden kann. Die Darstellung von physikalischen<br />

Feldern, mathematischen Zusammenhängen, Molekülstrukturen <strong>in</strong> der Chemie,<br />

usw. macht <strong>die</strong>se Lernstoffe <strong>für</strong> den Lernenden greifbar. Durch <strong>die</strong> Manipulation der Objekte<br />

werden Wirkungszusammenhänge direkt erfahrbar, <strong>die</strong> sonst nur durch abstrakte<br />

Darstellungen vermittelt werden können. Die Firma <strong>in</strong>fobyte hat e<strong>in</strong> System entwickelt, <strong>in</strong><br />

dem Studenten <strong>die</strong> Eigenschaften des elektromagnetischen Feldes <strong>in</strong> <strong>e<strong>in</strong>er</strong> VR Umgebung<br />

stu<strong>die</strong>ren können.<br />

Kommunikation<br />

Gerade <strong>die</strong> Möglichkeit, Computer zu vernetzen birgt e<strong>in</strong> enormes Potential <strong>für</strong> VR Anwendungen.<br />

Menschen müssen nicht mehr zusammenkommen wenn sie sich über etwas<br />

austauschen wollen. Sie sparen so Zeit und Geld <strong>für</strong> Flug und Unterkunft. Zudem s<strong>in</strong>d<br />

virtuelle Treffen viel spontaner organisierbar. Virtuelle Konferenzen s<strong>in</strong>d <strong>die</strong> natürliche<br />

Fortführung der Videokonferenz und der Telefonkonferenz.<br />

Kommunikation hat auch im Unterhaltungssektor große Bedeutung. Die virtuelle Stadt<br />

Cybertown ist das Standardbeispiel <strong>für</strong> e<strong>in</strong> Chat System im Internet, das <strong>in</strong> Form <strong>e<strong>in</strong>er</strong><br />

verteilten VR Anwendung aufgebaut ist. Jedem Benutzer wird e<strong>in</strong> Avatar zugeordnet, mit<br />

dem er sich <strong>in</strong> <strong>e<strong>in</strong>er</strong> 3D Umgebung bewegt. Benutzer können über <strong>die</strong> Avatare Gesten<br />

austauschen, an virtuellen Spielen teilnehmen, sich <strong>in</strong> Clubs organisieren, mit virtuellen<br />

Gegenständen handeln, e<strong>in</strong>e eigene Wohnung e<strong>in</strong>richten, und dort wie <strong>in</strong> <strong>e<strong>in</strong>er</strong> konventionellen<br />

Homepage Informationen ablegen und den persönlichen Geschmack vermitteln.<br />

Ferner s<strong>in</strong>d Möglichkeiten zum Chatten, Versenden von Kurznachrichten und Diskussionsforen<br />

vorhanden.<br />

Die Firma jobfair24 GmbH bietet im Internet regelmäßig Kontaktmessen <strong>für</strong> Arbeit suchende<br />

Hochschulabsolventen an. In <strong>e<strong>in</strong>er</strong> 3D Umgebung können Firmen <strong>in</strong> <strong>e<strong>in</strong>er</strong> der<br />

Messehallen e<strong>in</strong>en Stand mieten und Informationen über <strong>die</strong> Firma, offene Stellen, usw.<br />

zur Verfügung stellen. Während e<strong>in</strong>es Messeterm<strong>in</strong>s s<strong>in</strong>d Vertreter der Firmen anwesend<br />

und können sich mit den Messebesuchern austauschen. Außerhalb <strong>die</strong>ser Term<strong>in</strong>e können<br />

Messebesucher an den Ständen digitale Bewerbungsmappen abgeben oder <strong>die</strong> von<br />

den Firmen bereitgestellte Information abrufen. E<strong>in</strong>zelne Firmen oder Personen können<br />

zu angekündigten Term<strong>in</strong>en Sprechstunden abhalten und Fragen beantworten. Die Anwendung<br />

ist als Webseite konzipiert, <strong>in</strong> der <strong>in</strong> e<strong>in</strong>em Fenster <strong>die</strong> Messehallen und Info<br />

Stände als 3D Umgebung dargestellt werden. Alle Messeteilnehmer können sich dort frei<br />

bewegen, gegenseitig sehen und Gesten austauschen. Die Grundlage bietet der Internet<br />

Standard VRML. Er wird <strong>in</strong> Kapitel 4 vorgestellt. Die von den Firmen angebotene Information<br />

wird <strong>in</strong> e<strong>in</strong>em 2D Fenster als Hypertext (HTML) angezeigt. Die Kommunikation<br />

der Teilnehmer f<strong>in</strong>det über e<strong>in</strong>en Text Chat statt.<br />

Kollaboration<br />

Das Anwendungsgebiet der Kollaboration faßt Elemente der Kommunikation, Simulation,<br />

Telepräsenz und Visualisierung zusammen. Obwohl Entwickler über dem Globus verteilt<br />

s<strong>in</strong>d, können sie geme<strong>in</strong>sam an e<strong>in</strong>em Projekt arbeiten. Die Firma Ford will <strong>in</strong> dem Projekt<br />

„Global Studio” alle ihre <strong>Design</strong>zentren über VR Systeme mite<strong>in</strong>ander vernetzen.<br />

Dies ermöglicht den gezielten E<strong>in</strong>satz von Fachleuten und das weltumspannende Arbeiten<br />

an e<strong>in</strong>zelnen Prototypen rund um <strong>die</strong> Uhr. Die Entwicklungszeit kann so bis auf e<strong>in</strong> Drittel<br />

zusammenschrumpfen.<br />

Seite 10


Kapitel 3, VR Anwendungen<br />

Telepräsenz<br />

Die NASA arbeitet zusammen mit der russischen Raumfahrtbehörde an e<strong>in</strong>em Projekt,<br />

das e<strong>in</strong> Fahrzeug auf dem Mars fernsteuern soll. Da <strong>die</strong> Laufzeit der Funksignale zwischen<br />

Mars und Erde etwa e<strong>in</strong>e halbe Stunde beträgt, ist e<strong>in</strong>e direkte Steuerung des Gefährts<br />

über Kammeras nicht möglich. Deshalb wird das Gelände auf dem Mars von den<br />

Scannern des Fahrzeugs erfaßt und auf der Erde <strong>in</strong> <strong>e<strong>in</strong>er</strong> VR Umgebung nachgebildet. In<br />

<strong>die</strong>ser Umgebung wird das Fahrzeug virtuell gesteuert. Die Signale, <strong>die</strong> der Fahrer dabei<br />

an das Fahrzeug sendet, werden zum Mars übertragen, und steuern dort zeitverzögert<br />

<strong>die</strong> Motoren des echten Gefährts....<br />

3.2 Applikationsstrukt ur<br />

Bei Anwendungen mit e<strong>in</strong>em 3D Benutzungs<strong>in</strong>terface lassen sich drei wesentliche Bestandteile<br />

identifizieren:<br />

• Szene<br />

Die Szene ist das, was der Benutzer wahrnimmt, und worauf er E<strong>in</strong>fluß nehmen<br />

kann. Die Beschreibung der Szene def<strong>in</strong>iert somit das äußere Ersche<strong>in</strong>ungsbild der<br />

Anwendung. Sie ist e<strong>in</strong> wesentlicher Bestandteil des Benutzungs<strong>in</strong>terfaces.<br />

Sie umfaßt:<br />

- das optische Ersche<strong>in</strong>en und <strong>die</strong> Position aller Objekte der Szene<br />

- das akustische Ersche<strong>in</strong>en und evtl. das Ersche<strong>in</strong>en <strong>für</strong> alle anderen S<strong>in</strong>ne<br />

- Bewegungen der Objekte (z.B. sich drehende W<strong>in</strong>dmühlenflügel)<br />

- <strong>die</strong> Art und Weise, wie Objekte vom Benutzer manipuliert werden, können<br />

- <strong>die</strong> den Objekten <strong>in</strong>newohnende Logik. (z.B. E<strong>in</strong> Druckknopf, der leuchtet,<br />

wenn man ihn drückt)<br />

- <strong>für</strong> <strong>die</strong> Objekte geltende physikalische Gesetze, sofern <strong>die</strong>se simuliert werden<br />

Darüber h<strong>in</strong>aus legt <strong>die</strong> Szenenbeschreibung fest, auf welche Weise der Benutzer<br />

durch <strong>die</strong> Szene navigieren kann. Dies kann unter Umständen ortsabhängig se<strong>in</strong>.<br />

Erreicht der Benutzer z.B. e<strong>in</strong>en See, paßt sich <strong>die</strong> <strong>Navigation</strong> an <strong>die</strong> Gegebenheiten<br />

im Wasser (Schwimmen oder Tauchen) an. Kommt er <strong>in</strong> <strong>e<strong>in</strong>er</strong> Stadt an e<strong>in</strong>em<br />

Kunstwerk vorbei, kann er es vielleicht von allen Seiten betrachten, <strong>in</strong>sbesondere<br />

auch von oben. Besonders große Welten könnten über e<strong>in</strong> Transportsystem<br />

<strong>für</strong> weite Strecken verfügen, das <strong>in</strong> Form <strong>e<strong>in</strong>er</strong> Landkarte realisiert ist, auf<br />

der man e<strong>in</strong>e Position auswählt und an <strong>die</strong>se dann „teleportiert” wird.<br />

• Anwendungslogik<br />

Die Anwendungslogik umfaßt <strong>die</strong> gesamte Logik, welche <strong>die</strong> Anwendung def<strong>in</strong>iert.<br />

Sie ordnet durch ihre Implementierung den Objekten <strong>in</strong> der Szene e<strong>in</strong>e Bedeutung<br />

zu. Wenn der Benutzer mit der Szene <strong>in</strong>teragiert, löst er Ereignisse aus, auf welche<br />

<strong>die</strong> Anwendungslogik reagiert. Hat <strong>die</strong> Anwendungslogik dem Benutzer Information<br />

mitzuteilen, tut sie <strong>die</strong>s, <strong>in</strong>dem sie <strong>die</strong> Szene modifiziert. Möglicherweise<br />

wird hier<strong>für</strong> e<strong>in</strong>e Schnittstelle benutzt, welche <strong>die</strong> Szene aus der Sicht der Anwendungslogik<br />

abstrahiert. Die Anwendungslogik hat Zugriff auf Betriebsmittel des<br />

Systems, wie Dateisystem, Netzwerkverb<strong>in</strong>dungen, etc.<br />

• Präsentationse<strong>in</strong>heit<br />

Die Präsentationse<strong>in</strong>heit <strong>in</strong>terpretiert <strong>die</strong> Szenenbeschreibung und stellt sie dar.<br />

Sie verwaltet den Zustand der Szene, der sich während der Laufzeit <strong>e<strong>in</strong>er</strong> Anwendung<br />

ständig ändern wird. Deshalb muß <strong>die</strong> Darstellung der Szene laufend aktualisiert<br />

werden. Die Präsentationse<strong>in</strong>heit verarbeitet <strong>die</strong> E<strong>in</strong>gaben des Benutzers<br />

und <strong>in</strong>terpretiert sie entsprechend den Paradigmen <strong>Navigation</strong> und Manipulation<br />

und gemäß den Vorgaben aus der Szenenbeschreibung, um daraus Modifikationen<br />

an der Szene oder der Position des Benutzers abzuleiten. Dadurch ausgelöste Er-<br />

Seite 11


Kapitel 3, VR Anwendungen<br />

eignisse sendet <strong>die</strong> Präsentationse<strong>in</strong>heit an <strong>die</strong> Anwendungslogik. Befehle von der<br />

Anwendungslogik, <strong>die</strong> Szene zu modifizieren werden von der Präsentationse<strong>in</strong>heit<br />

ausgeführt.<br />

In <strong>die</strong>ser Arbeit werden <strong>die</strong> beiden anwendungsspezifischen Teile Szene und Anwendungslogik<br />

häufig unter dem Begriff Anwendung zusammengefaßt. Anstelle von Szene<br />

wird mehrmals der Begriff Welt benutzt, wobei mit Szene der technische Charakter im<br />

S<strong>in</strong>ne e<strong>in</strong>es Szenengraphen (siehe Kapitel 4) betont wird und bei Welt <strong>die</strong> Wahrnehmung<br />

des Benutzers der simulierten Umgebung im Vordergrund steht.<br />

3.3 Interaktionsparadi gmen<br />

Die Interaktion mit VR Anwendungen kann <strong>in</strong> drei große Interaktionsparadigmen e<strong>in</strong>geteilt<br />

werden: <strong>Navigation</strong>, Manipulation und Kommunikation. Diese können zwar auch<br />

schon bei graphischen Benutzungs<strong>in</strong>terfaces identifiziert werden, ihre große Bedeutung<br />

wird aber erst <strong>in</strong> simulierten dreidimensionalen Umgebungen augenfällig, da sie dort weniger<br />

von der Domäne der jeweiligen Anwendung abhängen.<br />

3.3.1 <strong>Navigation</strong><br />

Die Sicht auf e<strong>in</strong>e simulierte Welt wird hauptsächlich von der Position, an der sich e<strong>in</strong><br />

Betrachter virtuell bef<strong>in</strong>det und von s<strong>e<strong>in</strong>er</strong> Blickrichtung bestimmt. Der Benutzer sieht<br />

meist nur e<strong>in</strong>en ger<strong>in</strong>gen räumlichen Ausschnitt der gesamten Simulation. <strong>Navigation</strong><br />

kann als <strong>die</strong> Veränderung <strong>die</strong>ser Position und Blickrichtung durch den Benutzer def<strong>in</strong>iert<br />

werden. E<strong>in</strong>e mehr an den immersiven Charakter von VR Anwendungen angelehnte Def<strong>in</strong>ition<br />

bezeichnet <strong>Navigation</strong> als <strong>die</strong> benutzergesteuerte Bewegung des Menschen <strong>in</strong>nerhalb<br />

der von der Anwendung simulierten Welt. Beide Def<strong>in</strong>itionen s<strong>in</strong>d identisch. Da <strong>Navigation</strong><br />

zentrales Thema <strong>die</strong>ser Arbeit ist, wird <strong>die</strong> Komb<strong>in</strong>ation aus Position und Blickrichtung<br />

im folgenden Text mit dem Begriff Viewpo<strong>in</strong>t bezeichnet.<br />

E<strong>in</strong> wichtiges Konzept bezüglich <strong>Navigation</strong> ist der Avatar. E<strong>in</strong> Avatar repräsentiert e<strong>in</strong>en<br />

Benutzer <strong>in</strong> der virtuellen Welt. Technisch gesehen ist das e<strong>in</strong> geometrisches Objekt, das<br />

an der Position des Benutzers <strong>in</strong> der virtuellen Welt dargestellt wird. Im Fall von Mehrbenutzersystemen<br />

können sich so <strong>die</strong> Benutzer gegenseitig wahrnehmen und mite<strong>in</strong>ander<br />

<strong>in</strong>teragieren. Aber unabhängig von der Mehrbenutzerfähigkeit <strong>e<strong>in</strong>er</strong> Anwendung kann <strong>die</strong><br />

Darstellung e<strong>in</strong>es Avatars <strong>für</strong> den eigenen Benutzer von Vorteil se<strong>in</strong>, da sie ihm so se<strong>in</strong>e<br />

virtuelle Präsenz deutlich macht und se<strong>in</strong>e Relation zu anderen Objekten der Szene zeigt.<br />

Abb. 1: Sicht auf <strong>die</strong> Szene im First Person Modus (l<strong>in</strong>ks)<br />

und im Third Person Modus (rechts)<br />

Man spricht <strong>in</strong> <strong>die</strong>sem Zusammenhang von First Person Modus und Third Person Modus.<br />

Im First Person Modus wird ke<strong>in</strong> Avatar dargestellt, und der Benutzer sieht <strong>die</strong> Szene aus<br />

Seite 12


Kapitel 3, VR Anwendungen<br />

der Position se<strong>in</strong>es Avatars. Im Third Person Modus wird auch <strong>für</strong> den lokalen Benutzer<br />

e<strong>in</strong> Avatar dargestellt und der Benutzer sieht von ausserhalb auf <strong>die</strong>sen Avatar. Die Term<strong>in</strong>ologie<br />

stammt aus dem Szenario <strong>e<strong>in</strong>er</strong> Mehrbenutzerumgebung. Aus der Sicht e<strong>in</strong>es<br />

Benutzers ist er selbst <strong>die</strong> „erste Person” und e<strong>in</strong> anderer Benutzer, mit dem er <strong>in</strong>teragiert<br />

<strong>die</strong> „zweite Person”. Im Third Person Modus sieht der Benutzer <strong>die</strong> Simulation aus<br />

der Perspektive <strong>e<strong>in</strong>er</strong> nicht vorhandenen „dritten Person”. In Abb. 1 ist <strong>die</strong> Szene<br />

dargestellt, wie sie dem Benutzer <strong>in</strong> beiden Modi präsentiert wird.<br />

3.3.2 Manipulation<br />

Manipulation, wie sie hier beschrieben wird, ist ke<strong>in</strong>e Besonderheit von VR Anwendungen.<br />

Auch bei graphischen Benutzungsschnittstellen treten <strong>die</strong>se Konzepte auf. Während sich<br />

dort im Lauf der Zeit e<strong>in</strong> allgeme<strong>in</strong> anerkannter Standard <strong>für</strong> Be<strong>die</strong>nelemente herauskristallisiert<br />

hat, steht <strong>die</strong>se Entwicklung bei VR Anwendungen noch bevor.<br />

Manipulation bedeutet, daß Objekte <strong>in</strong> der Simulation verändert werden. Diese Objekte<br />

werden dem Benutzer präsentiert und können e<strong>in</strong>en Teil der Anwendung, z.B. e<strong>in</strong>en <strong>in</strong>neren<br />

Zustand repräsentieren. Manipulierbare Objekte s<strong>in</strong>d sensitiv gegenüber Benutzere<strong>in</strong>gaben<br />

und ihre Veränderung kann Vorgänge <strong>in</strong> der Anwendung auslösen oder Zustände<br />

ändern. Die Art und Weise, wie Objekte manipuliert werden können, kann vielfältig<br />

se<strong>in</strong> und wird von der Anwendung festgelegt. Objekte können bewegt und gedreht<br />

werden, <strong>in</strong> der Form und Größe verändert, sie können aktiviert werden, es können andere<br />

den Objekten <strong>in</strong>newohnenden Aktionen ausgeführt werden und so weiter. Aber vor<br />

Allem können sie mit anderen Objekten <strong>in</strong> Beziehung gebracht werden.<br />

Direkte Manipulation bezeichnet den Umstand, daß der Benutzer Objekte <strong>in</strong> <strong>e<strong>in</strong>er</strong> Art und<br />

Weise manipuliert, wie er es <strong>in</strong> der realen Welt mit ähnlichen Objekten auch machen<br />

würde. Jedoch können hier leichte Abstriche <strong>in</strong> der orig<strong>in</strong>algetreuen Nachbildung des<br />

realen Vorganges gemacht werden. Zum E<strong>in</strong>en, weil <strong>die</strong> Möglichkeiten des verwendeten<br />

E<strong>in</strong>gabegerätes begrenzt s<strong>in</strong>d, und zum Anderen, weil <strong>in</strong> <strong>e<strong>in</strong>er</strong> simulierten Umgebung<br />

Manipulationsvorgänge def<strong>in</strong>iert werden können, <strong>die</strong> <strong>in</strong> der realen Welt so gar nicht vorkommen.<br />

Zum Beispiel bedeutet das Verschieben e<strong>in</strong>es Objektes, daß es angefaßt werden<br />

muß, bevor es bewegt werden kann. Wie <strong>die</strong>ses Anfassen zum Ausdruck gebracht<br />

wird, hängt vom E<strong>in</strong>gabegerät ab. Es kann beispielsweise durch Drücken <strong>e<strong>in</strong>er</strong> Taste geschehen.<br />

Wenn e<strong>in</strong> Objekt sowohl verschiebbar als auch <strong>in</strong> der Größe änderbar se<strong>in</strong> soll,<br />

dann müssen auf irgende<strong>in</strong>e Weise <strong>die</strong>se beiden Interaktionsformen unterschieden werden.<br />

Beispielsweise wird <strong>in</strong> graphischen Benutzungsoberflächen <strong>die</strong>se Unterscheidung<br />

häufig über den Ort des Anfassens getroffen: Faßt der Benutzer das Objekt am Rand an,<br />

ändert er dessen Größe, während er das Objekt verschiebt, wenn er es an s<strong>e<strong>in</strong>er</strong> Titelleiste<br />

anfaßt.<br />

Metaphern erhöhen <strong>die</strong> Intuitivität <strong>e<strong>in</strong>er</strong> Anwendung, <strong>in</strong>dem sie <strong>die</strong> abstrakten Konzepte<br />

der Anwendung <strong>in</strong> Konzepte der dem Benutzer vertrauten Welt abbilden. Beispielsweise<br />

wird häufig das Konzept des Freigebens von Daten zum Löschen durch e<strong>in</strong> Papierkorbsymbol<br />

repräsentiert. Daten, <strong>die</strong> <strong>in</strong> das Symbol gelegt werden (e<strong>in</strong>e weitere Metapher)<br />

werden zur Löschung vorgemerkt. Diese Löschung wird zu e<strong>in</strong>em späteren Zeitpunkt<br />

durchgeführt. Stellt der Benutzer fest, daß er <strong>die</strong> Daten doch noch braucht, kann er sie<br />

aus dem Papierkorbsymbol wieder herausnehmen, falls sie noch nicht gelöscht wurden.<br />

Genauso verhält es sich mit e<strong>in</strong>em realen Papierkorb. Schriftstücke, <strong>die</strong> dar<strong>in</strong> abgelegt<br />

werden, werden regelmäßig vom Re<strong>in</strong>igungspersonal der Vernichtung zugeführt. Bevor<br />

<strong>die</strong>s passiert, kann man noch auf <strong>die</strong> Dokumente zugreifen.<br />

Seite 13


3.3.3 Kommunikation<br />

Kapitel 3, VR Anwendungen<br />

Kommunikation umfaßt <strong>die</strong> Äußerungen des Benutzers, <strong>die</strong> von der Anwendung zwar<br />

verarbeitet, jedoch nicht <strong>in</strong>terpretiert werden. Dies bedeutet, daß <strong>die</strong> übermittelte Information<br />

angezeigt, gespeichert, zu anderen Benutzern übertragen oder analysiert werden.<br />

Es handelt sich hier um Informationsaustausch zwischen Menschen mit Hilfe der Masch<strong>in</strong>e,<br />

nicht aber zwischen Mensch und Masch<strong>in</strong>e. Dieser Unterschied wird am Beispiel von<br />

Text deutlich, der <strong>in</strong> e<strong>in</strong>e Textverarbeitung e<strong>in</strong>gegeben wird, und dem, der <strong>in</strong> e<strong>in</strong>en Interpreter<br />

<strong>für</strong> e<strong>in</strong>e Kommandosprache e<strong>in</strong>gegeben wird.<br />

Beispiele <strong>für</strong> Äußerungen des Kommunikationsparadigma s<strong>in</strong>d:<br />

• Text, der mit <strong>e<strong>in</strong>er</strong> Tastatur, über e<strong>in</strong> Spracherkennungssystem, e<strong>in</strong> Handschrifterkennungssystem<br />

oder anderen Methoden e<strong>in</strong>gegeben wird.<br />

• Zeichnungen, <strong>die</strong> erstellt werden.<br />

• Alle Größen der dem Menschen verfügbaren Modalitäten, <strong>die</strong> sich sensorisch erfassen<br />

lassen. Diese können als re<strong>in</strong>e Sequenz physikalischer Meßwerte vorliegen,<br />

z.B. als Audio oder Video Signal, oder verschieden stark abstrahiert werden, z.B.<br />

<strong>in</strong> Phoneme oder Viseme. Die Umwandlung <strong>in</strong> Text ist nur e<strong>in</strong>e besondere Form<br />

<strong>die</strong>ser Abstrahierung.<br />

• E<strong>in</strong> Benutzer kann <strong>in</strong> <strong>e<strong>in</strong>er</strong> Mehrbenutzerumgebung se<strong>in</strong>en Avatar anweisen, bestimmte<br />

Gesten auszuführen.<br />

E<strong>in</strong>e allgeme<strong>in</strong>e Beschreibung des Kommunikationsparadigmas ersche<strong>in</strong>t wegen s<strong>e<strong>in</strong>er</strong><br />

Vielfältigkeit wenig s<strong>in</strong>nvoll. Ausserdem ist <strong>die</strong> Verarbeitung solcher Information genau<br />

der Zweck <strong>e<strong>in</strong>er</strong> Anwendung. Möglicherweise stellt aber <strong>die</strong> Bestrebungen der Human<br />

Markup Language Initiative[22] <strong>die</strong> e<strong>in</strong>e standardisierte Beschreibung menschlicher<br />

Kommunikation anstrebt genau e<strong>in</strong>e solche Standardisierung dar.<br />

3.4 Kategorisierung vo n E<strong>in</strong>gabegeräten<br />

Haptische E<strong>in</strong>gabegeräte s<strong>in</strong>d so unterschiedlich wie <strong>die</strong> semantisch höherwertigen Modalitäten.<br />

Darüber h<strong>in</strong>aus lassen sich beliebige neue E<strong>in</strong>gabegeräte oder Abwandlungen<br />

von bestehenden E<strong>in</strong>gabegeräten konstruieren. In <strong>die</strong>sem Abschnitt werden Kategorien<br />

<strong>für</strong> E<strong>in</strong>gabegeräte identifiziert, <strong>die</strong> <strong>für</strong> deren softwaretechnische Behandlung maßgeblich<br />

s<strong>in</strong>d.<br />

E<strong>in</strong>gabegräte bestehen aus <strong>e<strong>in</strong>er</strong> physikalischen Vorrichtung, <strong>die</strong> vom Benutzer manipuliert<br />

wird. Klassisches Beispiel s<strong>in</strong>d Tastatur und Maus. Die von der Software durchgeführte<br />

Interpretation der durch <strong>die</strong> Manipulation variierenden physikalischen Größen geschieht<br />

<strong>in</strong> weit weniger abstrahierender Weise als <strong>die</strong>s bei semantisch höherwertigen<br />

Sensoren der Fall ist. Aufgrund der physikalischen Vielfalt der Geräte können <strong>die</strong>se bezüglich<br />

der Information, <strong>die</strong> sie erzeugen <strong>in</strong> <strong>die</strong> Kategorien Relative Geräte, Positionale<br />

Geräte und Zeigegeräte e<strong>in</strong>geteilt werden. Da E<strong>in</strong>gabegeräte oft aus mehreren Be<strong>die</strong>nelementen<br />

bestehen, gilt <strong>die</strong>se Kategorisierung genaugenommen nur <strong>für</strong> e<strong>in</strong>zelne<br />

Be<strong>die</strong>nelemente.<br />

• Relative Geräte<br />

E<strong>in</strong> relatives E<strong>in</strong>gabegerät liefert Daten, <strong>die</strong> als Abweichung von e<strong>in</strong>em Ruhezustand<br />

gewertet werden. Diese Abweichung wird meist im Verhältnis zu <strong>e<strong>in</strong>er</strong> maximalen<br />

Auslenkung gemessen. Typischerweise besitzt e<strong>in</strong> solches Gerät e<strong>in</strong> Be<strong>die</strong>nelement,<br />

das nur <strong>in</strong> e<strong>in</strong>en kle<strong>in</strong>en Bereich um e<strong>in</strong>e Nullage beweglich ist, und das vom Benutzer<br />

<strong>in</strong> e<strong>in</strong>e bestimmte Richtung gedrückt wird. Das E<strong>in</strong>gabegerät liefert dann <strong>die</strong> Stärke<br />

und <strong>die</strong> Richtung der Auslenkung an den Computer. Häufig wird <strong>die</strong>se Information<br />

<strong>in</strong> e<strong>in</strong>e Geschw<strong>in</strong>digkeit des Avatars oder e<strong>in</strong>es sich bewegenden Objektes umgesetzt.<br />

Beispiele s<strong>in</strong>d der Joystick, <strong>die</strong> Spacemouse und das Gaspedal <strong>in</strong> e<strong>in</strong>em Fahrsimulator.<br />

Seite 14


Kapitel 3, VR Anwendungen<br />

Oft haben relative E<strong>in</strong>gabegeräte e<strong>in</strong>e Rückholvorrichtung, <strong>die</strong> das Be<strong>die</strong>nelement<br />

beim Loslassen <strong>in</strong> <strong>die</strong> Ausgangslage versetzt. Jedoch s<strong>in</strong>d auch solche Geräte möglich,<br />

<strong>die</strong> e<strong>in</strong>e e<strong>in</strong>gestellte Position halten. Schieberegler, z.B. der Trimmungsregler auf<br />

e<strong>in</strong>em Joystick s<strong>in</strong>d solche haltenden Be<strong>die</strong>nelemente.<br />

• Positionale Geräte<br />

E<strong>in</strong> positionales E<strong>in</strong>gabegerät mißt <strong>die</strong> Position e<strong>in</strong>es Objektes. Diese Position ist nicht<br />

notwendigerweise als Position im 3D Raum zu <strong>in</strong>terpretieren, jedoch können Bewegungen<br />

am E<strong>in</strong>gabegerät direkt <strong>in</strong> Bewegungen <strong>in</strong> der Szene übertragen werden. Dies<br />

ist typisch <strong>für</strong> positionale E<strong>in</strong>gabegeräte. E<strong>in</strong> Beispiel ist das <strong>in</strong> Laptops verwendete<br />

Touchpad. Es mißt auf <strong>e<strong>in</strong>er</strong> kle<strong>in</strong>en Fläche <strong>die</strong> Position <strong>e<strong>in</strong>er</strong> Berührung mit dem F<strong>in</strong>ger.<br />

Wird der F<strong>in</strong>ger bewegt, überträgt sich <strong>die</strong>se Bewegung auf e<strong>in</strong>en Zeiger am<br />

Bildschirm. Der von e<strong>in</strong>em positionalen Gerät gemessenen Position muß nicht notwendigerweise<br />

e<strong>in</strong> ebenes Koord<strong>in</strong>atensystem zugrunde liegen. Das auf Mäusen häufig<br />

vorhandene Scroll-Rad mißt zum Beispiel rotatorische Bewegungen, <strong>die</strong> der Computer<br />

<strong>in</strong> Verschiebungen e<strong>in</strong>es Bildschirm<strong>in</strong>haltes übersetzt.<br />

• Zeigegeräte<br />

Zeigegeräte s<strong>in</strong>d E<strong>in</strong>gabegeräte, <strong>die</strong> durch e<strong>in</strong>e Position mit direktem Bezug zur 3D<br />

Szene und evtl. e<strong>in</strong>e Richtung repräsentiert werden. Die Position kann e<strong>in</strong>e 3D Position<br />

im Raum, aber auch e<strong>in</strong>e 2D Position auf <strong>e<strong>in</strong>er</strong> Ebene, z.B. der Ebene des Bildschirmes,<br />

se<strong>in</strong>. Im Fall <strong>e<strong>in</strong>er</strong> 2D Position ist e<strong>in</strong>e Richtungsangabe notwendig, um<br />

durch Test auf Schnittmengenbildung zwischen dem so aufgespannten Strahl und der<br />

Geometrie der Szene e<strong>in</strong>e Interaktion erkennen zu können. Um e<strong>in</strong>e leichte Be<strong>die</strong>nbarkeit<br />

zu erreichen, ist es zweckmäßig, <strong>die</strong> Position des Zeigegerätes mit e<strong>in</strong>em Cursor<br />

zu visualisieren. Bei manchen Zeigegeräten, <strong>in</strong>sbesondere wenn sie <strong>für</strong> graphische<br />

Benutzungsschnittstellen konzipiert s<strong>in</strong>d, ist der Cursor e<strong>in</strong>e kle<strong>in</strong>e Grafik, <strong>die</strong> auf<br />

dem Bildschirm e<strong>in</strong>e Position markiert. Bei anderen Zeigegeräten ermöglicht e<strong>in</strong> geometrisches<br />

Objekt <strong>in</strong>nerhalb der Szene <strong>die</strong> Visualisierung <strong>e<strong>in</strong>er</strong> Position. Im Fall e<strong>in</strong>es<br />

Datenhandschuhs wird häufig das Modell <strong>e<strong>in</strong>er</strong> Hand als Cursor verwendet. E<strong>in</strong> weiteres<br />

typisches Zeigegerät <strong>für</strong> VR Anwendungen ist der Zeigestab.<br />

Das auf Desktop-System dom<strong>in</strong>ante E<strong>in</strong>gabegerät ist <strong>die</strong> 2D Maus (oder Maus). Sie<br />

wird durch e<strong>in</strong>en Cursor auf dem Bildschirm repräsentiert. Bei der Projektion <strong>e<strong>in</strong>er</strong> 3D<br />

Szene auf e<strong>in</strong>en 2D Bildschirm ergeben sich Projektionsl<strong>in</strong>ien, <strong>die</strong> alle Punkte des 3D<br />

Raumes beschreiben, welche auf den selben Punkt <strong>in</strong> der 2D Ebene projiziert werden.<br />

Die durch den Punkt des Maus Cursors gehende Projektionsl<strong>in</strong>ie def<strong>in</strong>iert somit den<br />

Strahl, der zur Interaktion mit den Objekten der Anwendung herangezogen wird.<br />

Die Zuordnung e<strong>in</strong>es E<strong>in</strong>gabegerätes zu e<strong>in</strong>em <strong>die</strong>ser Typen basiert nicht alle<strong>in</strong> auf der<br />

physikalischen Ausprägung des Gerätes. Häufig kann mit Hilfe von Software e<strong>in</strong> anderer<br />

Typ emuliert werden. Beispielsweise ist e<strong>in</strong>e Maus e<strong>in</strong> positionales Gerät, aber durch <strong>die</strong><br />

Verknüpfung mit e<strong>in</strong>em Cursor wird daraus e<strong>in</strong> Zeigegerät. E<strong>in</strong> Datenhandschuh kann<br />

durch <strong>die</strong> Geste des ausgestreckten F<strong>in</strong>gers zu e<strong>in</strong>em Zeigegerät werden, oder durch<br />

e<strong>in</strong>e andere Geste zu e<strong>in</strong>em relativen Gerät, das e<strong>in</strong>en Flug durch <strong>die</strong> simulierte Welt<br />

steuert, <strong>in</strong> dem <strong>die</strong> Orientierung der Hand <strong>die</strong> Richtung des Fluges vorgibt.<br />

Ferner können E<strong>in</strong>gabegeräte noch danach unterschieden werden, ob sie Information an<br />

den Benutzer zurückliefern können. Solche Feedback-Geräte können dem Benutzer <strong>in</strong>tuitiv<br />

Information geben, etwa über <strong>die</strong> Oberflächenbeschaffenheit von Objekten, oder e<strong>in</strong>fach<br />

nur, ob e<strong>in</strong> Bewegungsbereich durch e<strong>in</strong> H<strong>in</strong>dernis e<strong>in</strong>geschränkt wird. Jedoch ist <strong>die</strong><br />

Technik <strong>für</strong> Feedback-Geräte, <strong>die</strong> echte taktile Reize übermitteln noch nicht ausgereift<br />

oder sehr teuer.<br />

Seite 15


Kapitel 3, VR Anwendungen<br />

Während manche E<strong>in</strong>gabegeräte universell e<strong>in</strong>gesetzt werden können, s<strong>in</strong>d andere auf<br />

e<strong>in</strong>e bestimmte Anwendungsdomäne zugeschnitten. So stellt <strong>die</strong> Nachbildung e<strong>in</strong>es<br />

Lenkrades e<strong>in</strong> relatives E<strong>in</strong>gabegerät <strong>für</strong> Fahrsimulationen dar. In der Mediz<strong>in</strong> verwendet<br />

man bei der Simulation von Operationen der m<strong>in</strong>imal<strong>in</strong>vasiven Chirurgie Nachbildungen<br />

endoskopischer Geräte[4].<br />

Tastaturen<br />

Tastaturen lassen sich nicht <strong>in</strong> <strong>die</strong> Kategorien relative Geräte, positionale Geräte, und<br />

Zeigegeräte e<strong>in</strong>ordnen. Viel mehr müßte <strong>für</strong> Tastaturen e<strong>in</strong>e eigene Kategorie der diskreten<br />

E<strong>in</strong>gabegeräte geschaffen werden. Davon wird aber abgesehen, da im H<strong>in</strong>blick auf<br />

das Interaktionsparadigma <strong>Navigation</strong> <strong>in</strong> virtuellen 3D Umgebungen Tastaturen je nach<br />

Ausprägung e<strong>in</strong> E<strong>in</strong>gabegerät der ersten drei Kategorien emulieren oder semantisch höherwertige<br />

Kommandos auslösen.<br />

Alphanumerische Tastaturen s<strong>in</strong>d primär auf das Interaktionsparadigma Kommunikation<br />

ausgelegt. Es s<strong>in</strong>d jedoch e<strong>in</strong>ige Tasten vorhanden, <strong>die</strong> zur <strong>Navigation</strong> <strong>in</strong> Texten oder<br />

anderen zweidimensionalen Objekten vorgesehen s<strong>in</strong>d. Die Funktionen <strong>die</strong>ser Tasten<br />

können <strong>in</strong> ähnliche Funktionen der <strong>Navigation</strong> <strong>in</strong> 3D Umgebungen umgesetzt werden.<br />

Während <strong>für</strong> Pfeiltasten e<strong>in</strong>e Emulation e<strong>in</strong>es relativen E<strong>in</strong>gabegerätes naheliegt, entsprechen<br />

andere Tasten eher semantisch höherwertigen Kommandos, etwa wenn <strong>die</strong><br />

Tasten „Bild auf” und „Bild ab” mit der Funktion „nächster” bzw. „vorheriger Aussichtspunkt”<br />

belegt wird. Wird mit Pfeiltasten <strong>die</strong> Bewegung e<strong>in</strong>es Cursors gesteuert, dann<br />

entspricht <strong>die</strong>s e<strong>in</strong>em Zeigegerät.<br />

Für Tasten auf anderen E<strong>in</strong>gabegeräten oder auf dedizierten Tastaturen <strong>für</strong> 3D Anwendungen,<br />

wie sie im Zusammenhang mit Spielekonsolen tatsächlich vorkommen, gilt<br />

ebenfalls, daß <strong>die</strong>se entweder semantisch höherwertigen Kommandos zugeordnet s<strong>in</strong>d,<br />

oder <strong>e<strong>in</strong>er</strong> der drei Kategorien <strong>für</strong> haptische E<strong>in</strong>gabegeräte zugeordnet s<strong>in</strong>d.<br />

3.5 Das <strong>multimodale</strong> B e<strong>die</strong>nsystem MIVIS<br />

Dieser Abschnitt stellt das am Lehrstuhl <strong>für</strong> Mensch-Masch<strong>in</strong>e-Kommunikation entwikkelte<br />

<strong>multimodale</strong> Be<strong>die</strong>nsystem MIVIS vor. Genauere Information über das MIVIS System<br />

kann <strong>in</strong> Abschnitt 8.1 und <strong>in</strong> [6][7][8][9][12] nachgelesen werden.<br />

Am Lehrstuhl <strong>für</strong> Mensch-Masch<strong>in</strong>e-Kommunikation wird im Rahmen des MIVIS-Projekts<br />

(Multimodal Interface for Virtual Scenarios)[5] e<strong>in</strong> Be<strong>die</strong>nsystem <strong>für</strong> VR Anwendungen<br />

entwickelt, das ohne Wissen über <strong>die</strong> konkrete Anwendung zu be<strong>in</strong>halten dem Benutzer<br />

erlaubt, <strong>in</strong> <strong>e<strong>in</strong>er</strong> virtuellen 3D Umgebung zu navigieren und <strong>die</strong>se zu manipulieren. Dabei<br />

kann der Benutzer zur Lösung s<strong>e<strong>in</strong>er</strong> Aufgaben aus mehreren Modalitäten frei wählen und<br />

<strong>die</strong>se komb<strong>in</strong>ieren. Die Darstellung der Szene erfolgt mit Hilfe der 3D Technologie<br />

VRML (siehe Kapitel 4).<br />

Für den Anwender ergeben sich folgende Vorteile e<strong>in</strong>es <strong>multimodale</strong>n Benutzungs<strong>in</strong>terfaces:<br />

• Die Be<strong>die</strong>nung des Systems ist an <strong>die</strong> Kommunikationsgewohnheiten des Menschen<br />

angepaßt und dadurch <strong>in</strong>tuitiver und leichter erlernbar als bei herkömmlichen<br />

Benutzungsoberflächen.<br />

• Die Effizienz e<strong>in</strong>zelner Modalitäten hängt von der Situation im Be<strong>die</strong>nprozeß und<br />

von den Präferenzen, den Gewohnheiten und dem Wissen des Benutzers ab. Der<br />

Benutzer hat <strong>die</strong> Möglichkeit, bei Schwierigkeiten mit e<strong>in</strong>zelnen Modalitäten auf<br />

andere auszuweichen.<br />

Die Kernkomponente des Be<strong>die</strong>nsystems ist e<strong>in</strong> <strong>multimodale</strong>r Integrator, der sowohl redundante<br />

als auch komplementäre als auch konkurrierende Informationen von verschiedenen<br />

E<strong>in</strong>gabemodalitäten auswertet, um <strong>die</strong> Intention des Benutzers zu modellieren.<br />

Die Integration der Modalitäten soll unter anderem <strong>die</strong> Robustheit <strong>multimodale</strong>r Be<strong>die</strong>n-<br />

Seite 16


Kapitel 3, VR Anwendungen<br />

systeme verbessern, <strong>in</strong>dem Fehlentscheidungen e<strong>in</strong>zelner Modalitäten durch <strong>die</strong> Ergebnisse<br />

anderer Modalitäten kompensiert werden. Darüber h<strong>in</strong>aus verspricht man sich e<strong>in</strong>e<br />

Verbesserung der Erkennungsleistung von E<strong>in</strong>gabegeräten mit hoher Fehl-Erkennungsrate,<br />

wenn während des Erkennungsprozesses auch Informationen von anderen Modalitäten<br />

berücksichtigt werden.<br />

Die Architektur des <strong>multimodale</strong>n Integrators ist generisch konzipiert, das heißt, sie ist<br />

auch <strong>für</strong> andere Anwendungsdomänen und weitere E<strong>in</strong>gabemodalitäten verwendbar. Die<br />

Informationen der e<strong>in</strong>zelnen Modalitäten werden durch e<strong>in</strong>en e<strong>in</strong>heitlichen abstrakten<br />

Formalismus beschrieben, der auf <strong>e<strong>in</strong>er</strong> kontextfreien Grammatik basiert. (siehe Abschnitt<br />

8.1.1)<br />

Die Entwicklung und Evaluierung des <strong>multimodale</strong>n Integrators erfolgt anhand des <strong>Navigation</strong>sparadigmas,<br />

soll aber mittelfristig auch auf das Manipulationsparadigma erweitert<br />

werden.<br />

Gegenwärtig werden <strong>die</strong> folgenden Modalitäten unterstützt:<br />

• natürliche Sprache<br />

• e<strong>in</strong>e Kommandosprache<br />

• Handgesten<br />

• Kopfgesten<br />

• Graphisches Benutzungs<strong>in</strong>terface<br />

• <strong>die</strong> im Browser vorhandene Maus- und Tastaturnavigation<br />

Die im Browser vorhandene Maus- und Tastaturnavigation ist <strong>in</strong> den <strong>multimodale</strong>n Interaktionsprozeß<br />

nur unvollständig e<strong>in</strong>bezogen. Im Rahmen <strong>die</strong>ser Arbeit wird das MIVIS<br />

System um <strong>die</strong> vollständige Unterstützung haptischer Modalitäten, <strong>die</strong> über Maus und<br />

Tastatur h<strong>in</strong>ausgehen, erweitert.<br />

Seite 17


4 Die VRML Techn ologie<br />

Kapitel 4, Die VRML Technologie<br />

Dieses Kapitel gibt e<strong>in</strong>en Überblick über <strong>die</strong> VRML Technologie, mit der Internet basierte<br />

VR Anwendungen realisiert werden können. E<strong>in</strong>e detailliertere Beschreibung von VRML ist<br />

unter [1] zu f<strong>in</strong>den.<br />

Das Akronym VMRL steht <strong>für</strong> Virtual Reality Model<strong>in</strong>g Language und br<strong>in</strong>gt zum Ausdruck,<br />

daß VRML e<strong>in</strong>e Sprache ist, mit der <strong>die</strong> <strong>in</strong> <strong>e<strong>in</strong>er</strong> VR Anwendung dargestellte Szene<br />

beschrieben werden kann. H<strong>in</strong>ter VRML verbirgt sich aber auch e<strong>in</strong>e Technologie, welche<br />

<strong>die</strong>se Szene darstellen kann und dem Benutzer erlaubt, mit <strong>die</strong>ser Szene zu <strong>in</strong>teragieren.<br />

Zu <strong>die</strong>ser Technologie gehört auch e<strong>in</strong>e Möglichkeit, externe Module anzub<strong>in</strong>den, welche<br />

<strong>die</strong> Anwendungslogik enthalten. Um Mehrdeutigkeiten zu vermeiden, werden <strong>in</strong> <strong>die</strong>ser<br />

Arbeit <strong>die</strong> Ausdrücke „<strong>die</strong> Sprache VRML” und „<strong>die</strong> Technologie VRML” verwendet.<br />

VRML wurde als offener Standard <strong>für</strong> den Gebrauch im Internet konzipiert. Daher kann<br />

e<strong>in</strong> Browser, der VRML Welten darstellt, <strong>die</strong>se über das Internet laden und Teile davon<br />

nachladen. VRML greift auf andere im Internet etablierte Technologien wie HTML, HTTP,<br />

Java, JavaScript, JPG, PNG, URN, usw. zurück. VRML Welten können so auch verl<strong>in</strong>kt<br />

werden, d.h. Es kann ähnlich e<strong>in</strong>em Hypertext Dokument von <strong>e<strong>in</strong>er</strong> VRML Welt <strong>in</strong> e<strong>in</strong>e<br />

andere gesprungen werden.<br />

VRML ist e<strong>in</strong> von der International Standardization Organization (ISO)[2] unter der<br />

Nummer 14772 def<strong>in</strong>ierter Standard. Dieser Standard bef<strong>in</strong>det sich (zur Zeit, als <strong>die</strong>se<br />

Arbeit entsteht) <strong>in</strong> der Weiterentwicklung. Der direkte Nachfolgestandard heißt X3D.<br />

MPEG4 ist e<strong>in</strong> Standard, der den Sprachschatz von VRML be<strong>in</strong>haltet. X3D basiert auf der<br />

Sprache XML 1 , und macht starken Gebrauch von Profilen. E<strong>in</strong> Profil ist e<strong>in</strong> def<strong>in</strong>ierter Teil<br />

des gesamten Funktionsumfanges von X3D, den e<strong>in</strong> dem Profil genügender Browser unterstützen<br />

muß. MPEG4 ist e<strong>in</strong> Standard <strong>für</strong> <strong>in</strong>teraktive, gestreamte 2 2D und 3D Multimedia<br />

Inhalte. Er verwendet zur Beschreibung der dargestellten Szene e<strong>in</strong>e b<strong>in</strong>äre Repräsentation<br />

<strong>e<strong>in</strong>er</strong> Obermenge von VRML.<br />

4.1 Sprachmodell<br />

Die Sprache VRML ist e<strong>in</strong>e deklarative Sprache, <strong>die</strong> auf e<strong>in</strong>em Szenengraphen beruht und<br />

Ereignisse zwischen den Knoten austauschen kann. Sie wird als UTF8 Text notiert. Für<br />

imperatives Anwendungsverhalten kann Script Code e<strong>in</strong>gebettet oder externe Anwendungslogik<br />

angebunden werden. Es existiert e<strong>in</strong> Mechanismus, mit dem der Sprachumfang<br />

erweitert werden kann.<br />

Hierarchische Knotenstruktur<br />

3D Inhalte werden <strong>in</strong> VRML <strong>in</strong> e<strong>in</strong>em Graphen, der Szenengraph genannt wird, dargestellt.<br />

Konzeptionell besteht der Szenengraph aus e<strong>in</strong>em oder mehreren nicht zusammenhängenden<br />

Bäumen. Gemäß <strong>die</strong>ser Baumstruktur werden Knoten als Vater oder K<strong>in</strong>d<br />

Knoten bezeichnet. Durch e<strong>in</strong> spezielles Konstrukt können Teilbäume an mehr als <strong>e<strong>in</strong>er</strong><br />

Stelle verwendet werden, so daß der Szenengraph im Allgeme<strong>in</strong>en e<strong>in</strong> gerichteter, zyklenfreier<br />

Graph ist. Die Knoten des Graphen beschreiben das optische Aussehen von<br />

Objekten, deren geometrische Form, akkustische Signale oder das Verhalten von Objekten.<br />

1 XML ist e<strong>in</strong>e Sprache zur Darstellung strukturierter Information <strong>in</strong> <strong>für</strong> Menschen lesbarer Form.<br />

2 "streamen“ bedeutet, daß <strong>die</strong> Übertragung der Inhalte während der Präsentation stattf<strong>in</strong>det, und<br />

weniger Wert auf <strong>die</strong> Übertragung aller Datenpakete als auf deren rechtzeitigen Übertragung legt.<br />

Seite 18


Kapitel 4, Die VRML Technologie<br />

Neben der Darstellung von allgeme<strong>in</strong>en Beziehungen zwischen Knoten <strong>die</strong>nt der Szenengraph<br />

dazu, e<strong>in</strong>e Transformationshierarchie aufzubauen. Für jeden Knoten existiert e<strong>in</strong><br />

Koord<strong>in</strong>atensystem, <strong>in</strong> dem der Knoten beschrieben wird. Dieses wird das lokale Koord<strong>in</strong>atensystem<br />

des Knotens genannt, und wird von dem <strong>in</strong> der Hierarchie des Szenengraphen<br />

übergeordneten Knoten geerbt. E<strong>in</strong>ige Knoten modifizieren das geerbte Koord<strong>in</strong>atensystem<br />

und vererben <strong>die</strong>ses weiter. Sie beschreiben dadurch Koord<strong>in</strong>atentransformationen.<br />

Dadurch können Objekte unabhängig von ihrer Verwendung modelliert und zu<br />

größeren Objekten komb<strong>in</strong>iert werden. Die Bewegung von Objekten f<strong>in</strong>det als zeitabhängige<br />

Änderung <strong>die</strong>ser Koord<strong>in</strong>atentransformationen statt.<br />

Deklarative Beschreibung der Knoten<br />

Jeder Knoten besitzt Felder, <strong>die</strong> Eigenschaften des Knotens beschreiben, auf andere<br />

Knoten verweisen und so den Szenengraphen aufbauen, oder Information mit anderen<br />

Knoten austauschen. Für Felder existiert e<strong>in</strong> Typsystem, das neben Standardtypen wie<br />

Integer, 3D Vektoren, oder Farbwerten Referenzen auf andere Knoten umfaßt. Fast jeder<br />

Typ existiert <strong>in</strong> <strong>e<strong>in</strong>er</strong> e<strong>in</strong>fachen und <strong>e<strong>in</strong>er</strong> Array Version. Die Array Version enthält e<strong>in</strong><br />

Array von Werten des e<strong>in</strong>fachen Typs.<br />

E<strong>in</strong>ige ausgewählte Typen:<br />

SFFloat Fließkomma-Zahl mit e<strong>in</strong>facher Genauigkeit<br />

SFInt32 Integerzahl mit 32 Bit<br />

SFVec3f drei Fließkomma-Zahl, <strong>die</strong> e<strong>in</strong>en dreidimensionalen Vektor repräsentieren<br />

SFRotation vier Fließkomma-Zahl, <strong>die</strong> e<strong>in</strong>e Drehung als Richtungsvektor <strong>e<strong>in</strong>er</strong> Drehachse<br />

und e<strong>in</strong>en Drehw<strong>in</strong>kel beschreiben<br />

SFColor drei Fließkomma-Zahl zwischen 0 und 1, <strong>die</strong> e<strong>in</strong>en Farbwert spezifizieren<br />

SFNode e<strong>in</strong>e Referenz auf e<strong>in</strong>en anderen Knoten, oder NULL, um auf ke<strong>in</strong>en Knoten<br />

zu zeigen.<br />

SFBool e<strong>in</strong> boolscher Wert. entweder TRUE oder FALSE<br />

SFStr<strong>in</strong>g e<strong>in</strong> <strong>in</strong> Anführungszeichen " e<strong>in</strong>geschlossener Str<strong>in</strong>g.<br />

Die Namen <strong>die</strong>ser Typen beg<strong>in</strong>nen mit SF, da sie nur e<strong>in</strong>en Wert enthalten. Die Array<br />

Typen s<strong>in</strong>d davon abgeleitet und beg<strong>in</strong>nen mit MF: MFFloat, MFInt32, MFVec3f, ...<br />

Ereignisbasierter Informationsaustausch<br />

Neben dem Szenengraphen existiert e<strong>in</strong> zweiter, gerichteter Graph, der Routengraph. Er<br />

verb<strong>in</strong>det <strong>die</strong> Felder der Knoten, so daß Information zwischen den Knoten ausgetauscht<br />

werden können. Der Routengraph ist mit e<strong>in</strong>em Signalflußgraphen vergleichbar. E<strong>in</strong>e<br />

Kante des Routengraphen wird Route genannt. Sie verb<strong>in</strong>det jeweils zwei Felder gleichen<br />

Typs und def<strong>in</strong>iert e<strong>in</strong>e Übertragungsrichtung <strong>für</strong> <strong>die</strong> über <strong>die</strong> Route übertragenen Ereignisse.<br />

Felder können <strong>in</strong> vier Arten vorkommen:<br />

field: Se<strong>in</strong> Wert ist <strong>in</strong> der Szenenbeschreibung fest vorgegeben und kann während<br />

der Ausführung der Anwendung nicht verändert werden.<br />

eventOut: Es sendet im Knoten auftretende Ereignisse über e<strong>in</strong>e oder mehrere Routen.<br />

eventIn: Es kann Ereignisse über e<strong>in</strong>e oder mehrere Routen empfangen und ändert so<br />

se<strong>in</strong>en Wert.<br />

exposedField: Vere<strong>in</strong>igt field, eventOut und eventIn. Es kann dadurch e<strong>in</strong>en, <strong>in</strong> der<br />

Szenenbeschreibung festgelegten Anfangswert besitzen und sowohl als<br />

eventOut als auch als eventIn benutzt werden, wodurch es se<strong>in</strong>en Wert ändern<br />

kann.<br />

E<strong>in</strong>e Route verb<strong>in</strong>det immer e<strong>in</strong> eventOut mit e<strong>in</strong>em eventIn, wobei beide durch e<strong>in</strong><br />

exposedField ersetzt se<strong>in</strong> können. Tritt <strong>in</strong> e<strong>in</strong>em Knoten e<strong>in</strong> Ereignis auf, so drückt sich<br />

das durch e<strong>in</strong>en Wert aus, der an e<strong>in</strong>em eventOut angezeigt wird. Ist an das eventOut<br />

Seite 19


Kapitel 4, Die VRML Technologie<br />

e<strong>in</strong>e Route angeschlossen, überträgt sie den Wert an das eventIn e<strong>in</strong>es anderen Knoten.<br />

Dieser ändert dadurch se<strong>in</strong>en Zustand, wodurch auch <strong>in</strong> <strong>die</strong>sem Knoten e<strong>in</strong> Ereignis entstehen<br />

kann. Wird <strong>die</strong>ses Ereignis über weitere Routen übertragen, entsteht e<strong>in</strong>e Event<br />

Kaskade. Neben dem Ändern <strong>in</strong>terner Zustände kann das Empfangen von Ereignissen<br />

Änderungen am Szenengraphen bewirken.<br />

Reaktion auf äußere E<strong>in</strong>flüsse<br />

Sogenannte Sensor Knoten stehen am Anfang <strong>e<strong>in</strong>er</strong> Event Kaskade. Sie reagieren auf<br />

äußere E<strong>in</strong>flüsse wie Benutzere<strong>in</strong>gaben, das Verstreichen von Zeit, oder <strong>die</strong> Bewegung<br />

des Benutzers <strong>in</strong> der dargestellten Welt und erzeugen daraus Ereignisse.<br />

Anwendungsspezifisches Verhalten<br />

Anwendungsspezifisches Verhalten wird mit dem Script Knoten beschrieben. Dies ist e<strong>in</strong><br />

Knoten, dessen Felder anders als bei anderen Knoten nicht fest vorgegeben s<strong>in</strong>d, sondern<br />

vom Autor def<strong>in</strong>iert werden können. Über e<strong>in</strong> Feld namens url vom Typ MFStr<strong>in</strong>g<br />

kann dem Script Knoten imperativer Code zugeordnet werden. Dieser reagiert auf Ereignisse<br />

an eventIn Feldern und kann Ereignisse an eventOut Feldern senden. Als Script<br />

Sprache wird typischerweise JavaScript und Java verwendet, es können aber vom Browser<br />

beliebige andere Sprachen unterstützt werden. Dialekte von JavaScript s<strong>in</strong>d EcmaScript<br />

oder VrmlScript.<br />

Als Alternative zu Script Knoten steht <strong>für</strong> komplexere Anwendungslogik e<strong>in</strong>e Programmierschnittstelle<br />

<strong>für</strong> externe Programme zur Verfügung, das External Author<strong>in</strong>g Interface<br />

(EAI). Damit können Anwendungen e<strong>in</strong>en VRML Browser laden und als Modul zur Darstellung<br />

von 3D Inhalten benutzen. Über das EAI kann <strong>die</strong> Anwendung auf den Szenengraphen<br />

zugreifen, und Ereignisse an Knoten senden.<br />

Generik durch PROTO Mechanismus<br />

VRML Code kann modularisiert aufgebaut werden. Das PROTO Statement erlaubt es, e<strong>in</strong>en<br />

neuen Knotentyp mit eigenen Feldern zu def<strong>in</strong>ieren. Es besteht aus zwei Teilen: Der Deklarationsteil<br />

def<strong>in</strong>iert <strong>die</strong> Felder, <strong>die</strong> der neue Knotentyp besitzen soll. Dazu wird <strong>für</strong><br />

jedes Feld <strong>die</strong> Art des Feldes, der Datentyp Der Implementierungsteil enthält e<strong>in</strong>en Szenengraphen,<br />

der <strong>die</strong> Funktion des neuen Knoten beschreibt. Mit dem IS Statement wird<br />

e<strong>in</strong>e Beziehung zwischen Feldern aus dem Szenengraphen und den Feldern im Deklarationsteil<br />

hergestellt. Nach dem PROTO Statement kann der neue Knoten – man spricht hier<br />

von e<strong>in</strong>em Proto – auf <strong>die</strong> gleiche Weise wie alle anderen Knoten verwendet werden.<br />

Dieser Vorgang wird Instantiierung des Protos genannt.<br />

Soll der Proto <strong>in</strong> <strong>e<strong>in</strong>er</strong> anderen Datei verwendet werden, als <strong>in</strong> derjenigen, <strong>in</strong> der er def<strong>in</strong>iert<br />

ist, muß <strong>die</strong> verwendende Datei e<strong>in</strong> EXTERNPROTO Statement enthalten. Dieses enthält<br />

genauso wie das PROTO Statement e<strong>in</strong>en Deklarationsteil und e<strong>in</strong>en Implementierungsteil,<br />

nur daß der Implementierungsteil auf <strong>die</strong> Datei mit der Def<strong>in</strong>ition des Protos<br />

verweist. Dadurch, daß das EXTERNPROTO Statement <strong>die</strong> Beschreibung aller Felder des<br />

Knotens wiederholt, wird der Unzuverlässigkeit des Internets Rechnung getragen: Kann<br />

<strong>die</strong> Proto Def<strong>in</strong>ition nicht aus der def<strong>in</strong>ierenden Datei geladen werden, kann <strong>die</strong> verwendende<br />

Datei trotzdem geparst und angezeigt werden.<br />

Knoten mit globalem Charakter<br />

E<strong>in</strong>ige Knoten beschreiben globale Eigenschaften, welche <strong>die</strong> gesamte dargestellte Szene<br />

betreffen. Zum Beispiel beschreibt der Viewpo<strong>in</strong>t Knoten <strong>die</strong> Perspektive, aus der <strong>die</strong><br />

simulierte Welt dargestellt wird, oder der Background Knoten legt fest, welche Farben<br />

h<strong>in</strong>ter allen Objekten dargestellt werden.<br />

Da VRML e<strong>in</strong>e modularisierbare Sprache ist, und <strong>die</strong>se globalen Eigenschaften an unterschiedlichen<br />

Orten <strong>in</strong> der Welt unterschiedlich se<strong>in</strong> können, existiert e<strong>in</strong> Mechanismus,<br />

Seite 20


Kapitel 4, Die VRML Technologie<br />

der <strong>in</strong> jedem Moment e<strong>in</strong>en <strong>die</strong>ser Knoten auswählt und aktiviert: Für jeden <strong>die</strong>ser Knoten<br />

wird e<strong>in</strong> Stack angelegt, und der oberste Knoten des Stacks ist aktiv. Mit Hilfe des<br />

Routengraphen kann e<strong>in</strong> Knoten auf den Stack gelegt und dadurch aktiviert werden, z.B.<br />

wenn der Benutzer e<strong>in</strong>en bestimmten Bereich betritt. Diesen Vorgang nennt man das<br />

B<strong>in</strong>den e<strong>in</strong>es Knotens. Auf <strong>die</strong> gleiche Weise kann e<strong>in</strong> Knoten vom Stack genommen werden,<br />

wodurch er deaktiviert wird. Es wird dann der als nächstes auf dem Stack liegende<br />

Knoten aktiv. Das ist <strong>in</strong> der Regel derjenige, der vorher gebunden war.<br />

Beispiel: Szenengraph und Routengraph<br />

VRML Darstellung:<br />

Transform<br />

{<br />

translation 3.4 1.3 0.0<br />

rotation 0.0 0.6 0.4 1.57<br />

scale 1.0 0.1 0.5<br />

children Shape<br />

{<br />

appearance DEF Movie MovieTexture<br />

{<br />

url "http://www.server.de/directory/movie.mpg"<br />

}<br />

geometry Sphere<br />

{<br />

radius 1.45<br />

}<br />

}<br />

}<br />

Hier wird mit dem Transform Knoten e<strong>in</strong> lokales Koord<strong>in</strong>atensystem aufgespannt. Die<br />

Felder translation, rotation und scale geben als Vektoren bzw. Rotationswert <strong>die</strong> Verschiebung,<br />

Drehung und Skalierung des Koord<strong>in</strong>atensystems <strong>für</strong> K<strong>in</strong>dknoten an. Das Feld<br />

children be<strong>in</strong>haltet e<strong>in</strong>e Referenz auf Knoten. Ihm wird e<strong>in</strong> Shape Knoten zugeordnet,<br />

der e<strong>in</strong> sichtbares Objekt beschreibt. Shape enthält zwei Felder, <strong>die</strong> Referenzen auf e<strong>in</strong>en<br />

Knoten enthalten, der das Aussehen des Objektes beschreibt, und e<strong>in</strong>en Knoten, der <strong>die</strong><br />

geometrische Form beschreibt. Dem appearance Feld ist e<strong>in</strong> MovieTexture Knoten zugeordnet<br />

– hier wurde gegenüber realem VRML etwas vere<strong>in</strong>facht – der festlegt, daß auf <strong>die</strong><br />

Oberfläche des Objektes e<strong>in</strong> MPEG Video projiziert werden soll. Mit dem Statement DEF<br />

Movie wird <strong>die</strong>sem Knoten der Name Movie zur späteren Referenzierung zugeordnet. Die<br />

Form des Objekts wird mit dem geometry Feld als Kugel festgelegt. Durch das Koord<strong>in</strong>atensystem<br />

des umgebenden Transform Knoten wird <strong>die</strong>se Kugel zu e<strong>in</strong>em aus dem Ursprung<br />

verschobenen und gedrehten Elipsoid verformt.<br />

Diese Struktur ist auf der rechten Seite von Abb. 2 als Szenengraph dargestellt.<br />

Seite 21


TouchSensor<br />

Script<br />

touchTime<br />

touched<br />

url "<br />

var state;<br />

function touched(t)<br />

{<br />

if(state)<br />

startMovie= t;<br />

else<br />

stopMovie= t;<br />

state= !state;<br />

}<br />

"<br />

startMovie<br />

stopMovie<br />

Transform<br />

Kapitel 4, Die VRML Technologie<br />

translation 3.4 1.3 0.0<br />

rotation 0.0 0.6 0.4 1.57<br />

scale 1.0 0.1 0.5<br />

children<br />

Shape<br />

appearance geometry<br />

MovieTexture<br />

url "http://x.mpg"<br />

startTime<br />

stopTime<br />

Sphere<br />

radius 1.45<br />

Abb. 2: Szenengraph (schwarz) und Routengraph (rot) <strong>in</strong><br />

VRML<br />

Soll das Video durch den Benutzer angehalten und fortgesetzt werden können („Pause”<br />

Funktion) , muß e<strong>in</strong> TouchSensor Knoten <strong>in</strong> <strong>die</strong> Szene e<strong>in</strong>gefügt werden. Dieser ist mit<br />

dem oben beschriebenen oder e<strong>in</strong>em anderen Objekt verknüpft und signalisiert an se<strong>in</strong>en<br />

Ausgangsfeldern, wenn der Benutzer mit der Maus – oder anderem Zeigegerät – auf das<br />

Objekt klickt. Diese Ereignisse werden mit ROUTE Statements an e<strong>in</strong>en Script Knoten<br />

gesendet, der daraus entsprechende start und stop Ereignis generiert.<br />

... DEF Toucher TouchSensor {} ...<br />

DEF Worker Script<br />

{<br />

eventIn SFTime touched<br />

eventOut SFTime startMovie<br />

eventOut SFTime stopMovie<br />

url "vrmlscript:<br />

}<br />

"<br />

var state= false;<br />

function touched(t)<br />

{<br />

if(state)<br />

startMovie= t;<br />

else<br />

stopMovie= t;<br />

}<br />

state= !state;<br />

ROUTE Toucher.touchTime TO Worker.touched<br />

ROUTE Worker.startMovie TO Movie.startTime<br />

ROUTE Worker.stopMovie TO Movie.stopTime<br />

Dieser Code ist <strong>in</strong> Abb. 2 auf der l<strong>in</strong>ken Seite dargestellt.<br />

Seite 22


4.2 Ausführungsmode ll<br />

Kapitel 4, Die VRML Technologie<br />

Der VRML Standard beschreibt zum E<strong>in</strong>en e<strong>in</strong>e Sprache, mit der sich VR Anwendungen<br />

modellieren lassen, und umfaßt zum Anderen e<strong>in</strong>e Architektur, <strong>die</strong> <strong>die</strong>se ausführt. Letztere<br />

wird <strong>in</strong> <strong>die</strong>sem Abschnitt kurz umrissen.<br />

Ähnlich wie bei der 2D Technologie HTML werden auch bei VRML 3D Inhalte typischerweise<br />

auf e<strong>in</strong>em Server im Internet abgelegt und es existieren als „Browser” bezeichnete<br />

Programme, <strong>die</strong> <strong>die</strong>se Inhalte über das WWW laden und dem Benutzer präsentieren.<br />

Browser werden von unabhängigen Firmen oder Personen entwickelt. Gemäß der <strong>in</strong> Abschnitt<br />

3.2 getroffenen Kategorisierung s<strong>in</strong>d <strong>die</strong>se Browser der Präsentationse<strong>in</strong>heit zuzuordnen,<br />

da sie <strong>die</strong> anwendungsunabhängige Logik enthalten. Die Szene wird durch <strong>die</strong><br />

auf dem Server vorhandene Szenenbeschreibung <strong>in</strong> VRML Dateien und davon referenzierten<br />

Texturen, Audio und Videodateien def<strong>in</strong>iert. Browser besitzen e<strong>in</strong>e Programmierschnittstelle<br />

<strong>für</strong> externe Module. Diese Programmierschnittstelle wird EAI (External<br />

Author<strong>in</strong>g Interface) genannt und erlaubt den externen Modulen, <strong>die</strong> Szene zu verändern,<br />

oder auf Ereignisse zu reagieren, <strong>die</strong> <strong>in</strong> der Szene auftreten. Diese Module stellen<br />

somit <strong>die</strong> Applikationslogik dar. Auf Webseiten werden da<strong>für</strong> häufig Java Applets verwendet,<br />

da <strong>die</strong>se wie <strong>die</strong> Szenenbeschreibung heruntergeladen werden können. Abb. 3 verdeutlicht<br />

<strong>die</strong>ses Schema.<br />

VRML Datei<br />

Java Applet<br />

Applikationslogik<br />

E A I<br />

Browser<br />

Parser<br />

• e<strong>in</strong>gebaute<br />

Knoten<br />

Szenengraph<br />

• PROTOs<br />

Audiovisuelle<br />

Präsentation<br />

Benutzer<br />

<strong>Navigation</strong><br />

• WALK<br />

• FLY<br />

• EXAMINE<br />

Simulationse<strong>in</strong>heit<br />

• Sensoren<br />

aktualisieren<br />

• Routen<br />

aktualisieren<br />

• Scripts<br />

ausführen<br />

Abb. 3: Ausführungsmodell von VRML<br />

Die bekanntesten Browser s<strong>in</strong>d der „Cosmo Player”, „Cortona” und „blaxxun Contact”.<br />

Alle drei Browser s<strong>in</strong>d als Freeware verfügbar. Der Cosmo Player wurde von der Firma<br />

SGI[27] zu der Zeit, als VRML standardisiert wurde, entwickelt, und gilt als der zum<br />

Standard am meisten konforme Browser. Er läuft sowohl auf der W<strong>in</strong>dows Plattform, als<br />

auch auf Mac und UNIX Derivaten. SGI hat <strong>die</strong> Entwicklung <strong>die</strong>ses Browsers e<strong>in</strong>gestellt,<br />

Seite 23


Kapitel 4, Die VRML Technologie<br />

aber kürzlich wurden der Quellcode von der Firma Nexternet[29] aufgekauft, so daß der<br />

Browser unter dem Namen „Pivoron” weiterentwickelt wird. Cortona ist der Browser der<br />

englischen Firma Parallel Graphics[28]. Er ist auf Mac und W<strong>in</strong>dows verfügbar. Der Browser<br />

verfügt über Erweiterungen gegenüber dem VRML Standard und implementiert zusätzlich<br />

zu EAI e<strong>in</strong>e vom Standard abweichende Schnittstelle <strong>für</strong> externe Programmodule.<br />

Blaxxun Contact wird von der Firma blaxxun <strong>in</strong>teractive[23] entwickelt. Zusätzlich zu der<br />

Funktion als VRML Browser <strong>die</strong>nt er als Multimedia Client <strong>für</strong> <strong>die</strong> Kommunikationsplattformen<br />

der Firma. Der Browser ist auf der W<strong>in</strong>dows Plattform ausführbar und unterstützt<br />

gegenüber dem VRML Standard e<strong>in</strong>ige Erweiterungen <strong>für</strong> fortgeschrittene Darstellungstechniken.<br />

Er implementiert <strong>die</strong> Programmierschnittstelle EAI <strong>in</strong> Form von Aufrufen der<br />

Komponententechnologie COM[32]. Im Rahmen <strong>die</strong>ser Diplomarbeit wird <strong>die</strong>ser Browser<br />

um Knoten <strong>für</strong> anpassbare <strong>Navigation</strong> erweitert.<br />

Neben <strong>die</strong>sen Browsern existieren noch weitere, z.B. Blendo von Sony[31], der im Source<br />

Code verfügbare FreeWRL[26], oder Java Applets, <strong>die</strong> VRML Inhalte auf Webseiten darstellen,<br />

ohne auf dem Clientrechner <strong>in</strong>stalliert werden zu müssen. Da<strong>für</strong> bieten <strong>die</strong>se e<strong>in</strong>en<br />

weit ger<strong>in</strong>geren Funktionsumfang.<br />

4.3 Konzept <strong>für</strong> Benutz er<strong>in</strong>teraktion<br />

In VRML existieren Konzepte <strong>für</strong> <strong>die</strong> beiden Interaktionsparadigmen <strong>Navigation</strong> und Manipulation.<br />

Für das Paradigma der Kommunikation wird auf bestehende externe Technologien<br />

verwiesen. So kann auf <strong>e<strong>in</strong>er</strong> Web Seite e<strong>in</strong> Java Applet <strong>die</strong> E<strong>in</strong>gabe von Texten<br />

übernehmen.<br />

4.3.1 Manipulation<br />

Das Manipulation Paradigma wird <strong>in</strong> VRML durch e<strong>in</strong>e Reihe von Sensor Knoten abgedeckt.<br />

E<strong>in</strong> Sensor Knoten wird mit e<strong>in</strong>em Objekt der Szene verknüpft, und erfaßt Benutzere<strong>in</strong>gaben,<br />

<strong>die</strong> an <strong>die</strong>ses Objekt gerichtet s<strong>in</strong>d. Es gibt <strong>die</strong> Gruppe der Geometrie Sensoren,<br />

den TouchSensor und den Anchor. Alle Sensoren s<strong>in</strong>d auf <strong>die</strong> Benutzung mit e<strong>in</strong>em<br />

Zeigegerät ausgelegt, das auf Objekte de Szene zeigen kann. Die Geometrie Sensoren<br />

erfassen Benutzere<strong>in</strong>gaben, <strong>die</strong> das verknüpfte Objekt bewegen und geben <strong>die</strong>se <strong>in</strong> Form<br />

von variierenden Koord<strong>in</strong>aten an <strong>die</strong> Szene weiter, <strong>die</strong> <strong>die</strong>se meist e<strong>in</strong>em Transform<br />

Knoten zuweist, wodurch das Objekt erst beweglich wird.<br />

Es existieren folgende Geometrie Sensoren:<br />

• Cyl<strong>in</strong>derSensor<br />

• PlaneSensor<br />

• SphereSensor<br />

Der Cyl<strong>in</strong>derSensor überträgt Bewegungen des E<strong>in</strong>gabegerätes auf <strong>die</strong> Rotation um e<strong>in</strong>e<br />

vorgegebene Achse und ist somit e<strong>in</strong> Sensor, der e<strong>in</strong>dimensionale Bewegungen erzeugt.<br />

Der PlaneSensor wandelt erzeugt Bewegungen <strong>in</strong> <strong>e<strong>in</strong>er</strong> Ebene, und ist somit e<strong>in</strong> zweidimensionaler<br />

Sensor. Er kann durch E<strong>in</strong>schränken <strong>e<strong>in</strong>er</strong> Achse zu e<strong>in</strong>em e<strong>in</strong>dimensionalen,<br />

l<strong>in</strong>earen Sensor gemacht werden. Mit dem SphereSensor lassen sich Rotationen um e<strong>in</strong>en<br />

Punkt erfassen. Es besteht ke<strong>in</strong>e E<strong>in</strong>schränkung bezüglich der Achsen, um welche <strong>die</strong><br />

Drehung ausgeführt werden kann, so daß der SphereSensor als dreidimensionaler Sensor<br />

Knoten gewertet werden kann. Alle drei Sensor Knoten s<strong>in</strong>d <strong>für</strong> <strong>die</strong> Benutzung mit e<strong>in</strong>em<br />

Zeigegerät ausgelegt, da sie erst durch Zeigen auf Objekte, <strong>die</strong> mit e<strong>in</strong>em Sensor Knoten<br />

verknüpft s<strong>in</strong>d, aktiviert werden. Sollen Bewegungen <strong>in</strong> mehr als den durch <strong>die</strong> Sensor<br />

Knoten unterstützten Freiheitsgraden möglich se<strong>in</strong>, müssen <strong>die</strong>se komb<strong>in</strong>iert werden. Es<br />

muß e<strong>in</strong> Mechanismus geschaffen werden, der festlegt, wann welcher der Sensoren aktiv<br />

wird. Selbst wenn e<strong>in</strong> dreidimensionales Zeigegerät verfügbar ist, können Bewegungen <strong>in</strong><br />

nur zwei l<strong>in</strong>eare Freiheitsgrade gleichzeitig erlaubt se<strong>in</strong>, da zu e<strong>in</strong>em gegebenen Zeitpunkt<br />

immer nur e<strong>in</strong> Sensor knoten aktiv se<strong>in</strong> kann.<br />

Seite 24


Kapitel 4, Die VRML Technologie<br />

Der TouchSensor hat <strong>die</strong> primäre Aufgabe, e<strong>in</strong> b<strong>in</strong>äres Signal auszulösen, ähnlich e<strong>in</strong>em<br />

Schalter, den man aktivieren kann. Wird das Zeigegerät aktiviert, während es auf das<br />

dem TouchSensor zugeordnete Objekt zeigt, sendet der TouchSensor e<strong>in</strong> entsprechendes<br />

Signal an <strong>die</strong> Szene. Zudem „fühlt” <strong>die</strong>ser Sensor Knoten das Zeigen auf se<strong>in</strong> zugeordnetes<br />

Objekt auch dann, wenn das Zeigegerät nicht aktiviert wird. Diese Information wird<br />

<strong>in</strong> Form von 3D Koord<strong>in</strong>aten, <strong>die</strong> e<strong>in</strong>en Punkt auf der Oberfläche des Objektes beschreiben,<br />

an <strong>die</strong> Szene weitergegeben. E<strong>in</strong> boolsches Feld isOver zeigt an, wann das Zeigegerät<br />

auf das Objekt ausgerichtet ist.<br />

Der Anchor Knoten führt ke<strong>in</strong>e neue Interaktionsmöglichkeit e<strong>in</strong>. Er ist vielmehr e<strong>in</strong><br />

Komfortknoten, der <strong>die</strong> Schalter Funktionalität des TouchSensor Knotens mit der Möglichkeit,<br />

e<strong>in</strong>en Hyperl<strong>in</strong>k im WWW aufzurufen, oder e<strong>in</strong>en Aussichtspunkt anzuspr<strong>in</strong>gen, verb<strong>in</strong>det.<br />

Ferner existieren Sensoren, <strong>die</strong> durch <strong>die</strong> <strong>Navigation</strong> des Benutzers durch <strong>die</strong> virtuelle<br />

Welt ausgelöst werden. Der Collision Knoten stellt fest, wenn der Avatar mit Objekten<br />

der Szene kolli<strong>die</strong>rt. Es kann dabei angegeben werden, welche Objekte sensitive gegenüber<br />

Kollisionen s<strong>in</strong>d. Mit dem ProximitySensor kann <strong>die</strong> Position und <strong>die</strong> Orientierung<br />

des Avatars festgestellt werden. Das Gebiet, <strong>in</strong> dem sich der Avatar bef<strong>in</strong>den muß, damit<br />

der ProximitySensor <strong>die</strong>se Information liefert, kann angegeben werden. Zudem zeigt der<br />

ProximitySensor an, wann der Avatar <strong>in</strong> <strong>die</strong>sen Bereich e<strong>in</strong>tritt, oder ihn verläßt. Der<br />

VisibilitySensor zeigt zwar an, wann e<strong>in</strong> Objekt sichtbar ist, jedoch ist <strong>die</strong> Def<strong>in</strong>ition<br />

<strong>die</strong>ses Knoten so geschaffen, daß er nur <strong>für</strong> Optimierungsaufgaben benutzt werden kann,<br />

nicht aber zur Interaktion. Denn der VisibilitySensor muß nur verläßlich angeben,<br />

wann e<strong>in</strong> Objekt sichtbar ist. Ist das Objekt nicht sichtbar, darf der Sensor trotzdem<br />

Sichtbarkeit anzeigen, so daß Browser e<strong>in</strong>e effiziente Implementierung benutzen können.<br />

4.3.2 <strong>Navigation</strong><br />

Der VRML Standard macht ke<strong>in</strong>e Angaben über <strong>die</strong> konkrete Ausgestaltung des Interaktionsparadigmas<br />

<strong>Navigation</strong>. Dadurch wird dem Browser große Freiheit gegeben, <strong>die</strong>se<br />

möglichst komfortabel <strong>für</strong> den Benutzer zu gestalten. Leider läßt sich dadurch <strong>die</strong> <strong>Navigation</strong><br />

von der Szenenbeschreibung aus nicht an <strong>die</strong> Bedürfnisse <strong>e<strong>in</strong>er</strong> Anwendung anpassen.<br />

Da<strong>für</strong> s<strong>in</strong>d <strong>die</strong> vorhandenen Sprachkonstrukte sehr gut durchdacht und legen <strong>die</strong> Rahmenbed<strong>in</strong>gungen<br />

<strong>für</strong> <strong>die</strong> <strong>Navigation</strong> fest. Neben der Möglichkeit zur Beschränkung der<br />

Bewegungsfreiheit durch unsichtbare Geometrie stehen im wesentlichen zwei Knoten zur<br />

Verfügung: Der Viewpo<strong>in</strong>t Knoten erlaubt es, den Benutzer an feststehende oder variable<br />

Positionen zu transportieren und das Koord<strong>in</strong>atensystem festzulegen, bezüglich dessen<br />

<strong>Navigation</strong> stattf<strong>in</strong>det. Der <strong>Navigation</strong>Info Knoten erlaubt <strong>die</strong> Angabe von Eckdaten <strong>für</strong><br />

<strong>die</strong> <strong>Navigation</strong>.<br />

Der Viewpo<strong>in</strong>t Knoten zeichnet e<strong>in</strong> Koord<strong>in</strong>atensystem als dasjenige aus, bezüglich dessen<br />

der Browser <strong>die</strong> <strong>Navigation</strong> durchführt. In <strong>die</strong>sem Abschnitt wird <strong>die</strong>ses Koord<strong>in</strong>atensystem<br />

kurz <strong>Navigation</strong>skoord<strong>in</strong>atensystem genannt. Das <strong>Navigation</strong>skoord<strong>in</strong>atensystem<br />

ist das Koord<strong>in</strong>atensystem, <strong>in</strong> dem sich der momentan gebundene Viewpo<strong>in</strong>t aufgrund<br />

s<strong>e<strong>in</strong>er</strong> Position im Szenengraphen bef<strong>in</strong>det. Von <strong>die</strong>sem Koord<strong>in</strong>atensystem s<strong>in</strong>d zwei<br />

Größen wichtig: Die Richtung der negativen y-Achse def<strong>in</strong>iert <strong>die</strong> Richtung, entlang der<br />

Gravitation simuliert wird, und <strong>die</strong> Skalierung des Koord<strong>in</strong>atensystems def<strong>in</strong>iert e<strong>in</strong>en<br />

Maßstab <strong>für</strong> <strong>die</strong> Bewegungsgeschw<strong>in</strong>digkeit des Avatars. Dadurch können Welten erzeugt<br />

werden, bei denen „Unten” nicht überall gleich ist, etwa auf <strong>e<strong>in</strong>er</strong> Raumstation oder auf<br />

Asteroiden. Durch <strong>die</strong> Manipulation des Maßstabes des <strong>Navigation</strong>skoord<strong>in</strong>atensystems<br />

kann <strong>die</strong> <strong>Navigation</strong> den Größenverhältnissen <strong>in</strong> der Welt angepaßt werden. Wird <strong>die</strong>ser<br />

Maßstab dynamisch geändert, können <strong>in</strong>teressante Effekte erzeugt werden, wie etwa e<strong>in</strong><br />

Seite 25


Kapitel 4, Die VRML Technologie<br />

Puppenhaus, <strong>in</strong> dem man sich als verkl<strong>e<strong>in</strong>er</strong>ter Avatar mit entsprechend kle<strong>in</strong>en Geschw<strong>in</strong>digkeiten<br />

bewegen kann, während man sich entsprechend schneller bewegt, wenn<br />

man sich außerhalb des Puppenhauses bef<strong>in</strong>det.<br />

In Abschnitt 5.1.2 werden Koord<strong>in</strong>atensysteme def<strong>in</strong>iert, bezüglich derer <strong>Navigation</strong> beschrieben<br />

werden kann. Das dort ‚Welt lokales Koord<strong>in</strong>atensystem’ genannte Koord<strong>in</strong>atensystem<br />

ist mit dem durch den Viewpo<strong>in</strong>t Knoten def<strong>in</strong>ierte <strong>Navigation</strong>skoord<strong>in</strong>atensystem<br />

identisch.<br />

Durch zwei Felder am Viewpo<strong>in</strong>t Knoten können Position und Blickrichtung relativ zum<br />

<strong>Navigation</strong>skoord<strong>in</strong>atensystem angegeben werden, so daß der Benutzer an bestimmte<br />

Positionen „teleportiert” werden kann. Durch Animation <strong>die</strong>ser Felder kann der Avatar<br />

auch auf festgelegten Bahnen durch <strong>die</strong> Welt transportiert werden. Wird das <strong>Navigation</strong>skoord<strong>in</strong>atensystem<br />

animiert, bleibt es dem Benutzer frei, sich relativ zu <strong>die</strong>sem Koord<strong>in</strong>atensystem<br />

zu bewegen. So können Effekte geschaffen werden wie etwa e<strong>in</strong> schwimmendes<br />

Floß, auf dem sich der Benutzer frei bewegen kann, wobei er sich gleichzeitig mit<br />

dem Floß mit bewegt.<br />

E<strong>in</strong>em Browser ist es frei gestellt, e<strong>in</strong>e Liste aller verfügbaren Viewpo<strong>in</strong>ts anzuzeigen und<br />

den Benutzer daraus wählen zu lassen. Es besteht auch <strong>die</strong> Möglichkeit, Tasten mit den<br />

Funktionen vorheriger/nächster/erster Viewpo<strong>in</strong>t zu belegen. Diese Funktion wird mit<br />

e<strong>in</strong>em Feld, das dem Viewpo<strong>in</strong>t e<strong>in</strong>en beschreibenden Text zuordnet unterstützt.<br />

Mit den Sensor Knoten <strong>für</strong> Manipulation, <strong>in</strong>sbesondere dem TouchSensor hat der Autor <strong>die</strong><br />

Möglichkeit, dem Benutzer über e<strong>in</strong> Head Up Display 3 e<strong>in</strong> Interface anzubieten, über das<br />

der Benutzer Positionen – auch dynamisch berechnete – anspr<strong>in</strong>gen kann. Ebenso kann<br />

er e<strong>in</strong>e Teleportierstation 4 e<strong>in</strong>richten. Diese Möglichkeiten s<strong>in</strong>d jedoch sehr begrenzt. E<strong>in</strong>e<br />

genaue Analyse wird Abschnitt 5.2.2 im Zusammenhang mit e<strong>in</strong>em Lösungsansatz gegeben.<br />

Der <strong>Navigation</strong>Info Knoten bietet dem Autor <strong>die</strong> Möglichkeit, e<strong>in</strong>ige Eckdaten zur <strong>Navigation</strong><br />

festzulegen: <strong>die</strong> Avatargröße, <strong>die</strong> nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit und den<br />

<strong>Navigation</strong>smodus. In der Avatargröße s<strong>in</strong>d <strong>die</strong> Abmessungen enthalten, <strong>die</strong> der Browser<br />

bei der Kollisionserkennung <strong>für</strong> den virtuellen Benutzer annehmen soll. Neben der Höhe<br />

und Breite wird hier e<strong>in</strong>e Höhe festgelegt, ab der Objekte e<strong>in</strong> H<strong>in</strong>dernis darstellen – e<strong>in</strong>e<br />

Stufe soll überw<strong>in</strong>dbar se<strong>in</strong>, aber e<strong>in</strong> Tisch z.B. nicht mehr. Die nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit<br />

ist <strong>die</strong>, <strong>die</strong> der Browser als Standardgeschw<strong>in</strong>digkeit verwenden soll. Der<br />

Benutzer br<strong>in</strong>gt also zum Ausdruck, ob er sich schneller oder langsamer als <strong>die</strong>se fortbewegen<br />

will. Die Avatargröße und nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit werden relativ<br />

zum <strong>Navigation</strong>skoord<strong>in</strong>atensystem <strong>in</strong>terpretiert.<br />

Als <strong>Navigation</strong>smodus legt der VRML Standard <strong>die</strong> Randbed<strong>in</strong>gungen <strong>für</strong> <strong>die</strong> drei Modi<br />

WALK, FLY und EXAMINE fest. Im WALK Modus kann e<strong>in</strong>e Welt zu Fuß oder <strong>in</strong> e<strong>in</strong>em<br />

Fahrzeug durchwandert werden. Der Browser sollte nach Möglichkeit Maßnahmen ergreifen,<br />

<strong>die</strong> bewirken, daß der Avatar auf dem (virtuellen) Boden bleibt. Der FLY Modus ist<br />

dem WALK Modus ähnlich, jedoch versucht der Browser nicht, den Avatar auf dem Boden<br />

zu halten. Zweck des EXAMINE Modus ist es, Objekte zu betrachten. Typische Bewegungsarten<br />

s<strong>in</strong>d das sich Drehen um das Objekt und das Heranholen oder Wegschieben<br />

des Objekts.<br />

3<br />

E<strong>in</strong> Head Up Display (HUD) ist Geometrie, <strong>die</strong> immer so positioniert wird, daß der Benutzer sie jederzeit<br />

im Blickfeld hat.<br />

4<br />

E<strong>in</strong>e Teleportierstation ist e<strong>in</strong> Interaktionsobjekt, an dem der Benutzer e<strong>in</strong>en Ort auswählen kann, an<br />

den er anschließend transportiert wird.<br />

Seite 26


Kapitel 4, Die VRML Technologie<br />

Die konkrete Ausgestaltung der <strong>Navigation</strong>smodi, und damit <strong>die</strong> Komplexität und Komfortabilität<br />

der <strong>Navigation</strong> bleibt dem Browser Programmierer überlassen, ohne daß der<br />

Autor darauf E<strong>in</strong>fluß nehmen könnte. Der Browser Programmierer hat allerd<strong>in</strong>gs <strong>die</strong> Möglichkeit,<br />

über <strong>die</strong> drei Standard Modi h<strong>in</strong>ausgehende eigene Modi zu implementieren. Der<br />

Autor kann angeben, welche <strong>Navigation</strong>smodi er <strong>in</strong> s<strong>e<strong>in</strong>er</strong> Anwendung erlauben will, und<br />

welcher der als erstes aktive se<strong>in</strong> soll.<br />

Durch Setzen der nom<strong>in</strong>ellen <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit auf den Wert 0 kann e<strong>in</strong> <strong>Navigation</strong>smodus<br />

auf re<strong>in</strong> rotatorische Bewegungen e<strong>in</strong>geschränkt werden, so daß sich der<br />

Benutzer zwar umsehen, aber nicht fortbewegen kann.<br />

Seite 27


5 Anpassbare Nav igation<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

In Abschnitt 2.3 wurden <strong>die</strong> beiden grundlegenden Forderungen an e<strong>in</strong> Benutzungs<strong>in</strong>terface,<br />

nach der Möglichkeit zur <strong>multimodale</strong>n Interaktion und nach der Möglichkeit zur<br />

Anpassung der Interaktionsparadigmen an <strong>die</strong> Anwendungsdomäne und deren Benutzerkreis<br />

herausgearbeitet. Die durch das Internet weite Verbreitung f<strong>in</strong>dende Technologie<br />

<strong>für</strong> Anwendungen mit 3D Benutzungs<strong>in</strong>terface VRML erfüllt <strong>in</strong> der Standardform ke<strong>in</strong>e<br />

<strong>die</strong>ser beiden Anforderungen. Ziel <strong>die</strong>ser Arbeit ist es daher, speziell <strong>für</strong> das Interaktionsparadigma<br />

<strong>Navigation</strong>:<br />

1) e<strong>in</strong>e Erweiterung des Sprachumfanges von VRML zu erarbeiten, <strong>die</strong> e<strong>in</strong>em Autor <strong>die</strong><br />

Anpassung des <strong>Navigation</strong>sparadigmas sowohl an <strong>die</strong> Anwendung als auch an deren<br />

Benutzerkreis erlaubt, sowie<br />

2) e<strong>in</strong>e Systemarchitektur zu entwickeln, <strong>die</strong> e<strong>in</strong>en VRML Browser so erweitert, daß der<br />

Benutzer mehrere Modalitäten zur <strong>Navigation</strong> verwenden kann, und dabei aus <strong>die</strong>sen<br />

frei wählen und sie frei komb<strong>in</strong>ieren kann.<br />

In <strong>die</strong>sem Kapitel werden grundlegende Voraussetzungen erarbeitet, <strong>die</strong> zum Erreichen<br />

beider Ziele notwendig s<strong>in</strong>d. Nach der Schaffung <strong>e<strong>in</strong>er</strong> mathematischen Basis zur Beschreibung<br />

von <strong>Navigation</strong>skonzepten und <strong>e<strong>in</strong>er</strong> Analyse der Schwächen von VRML bezüglich<br />

anpassbarer <strong>Navigation</strong> wird e<strong>in</strong> Konzept entwickelt, das den Sprachumfang von<br />

VRML gemäß dem ersten Ziel <strong>die</strong>ser Diplomarbeit erweitert. Dieses Konzept wird <strong>in</strong> den<br />

nächsten beiden Kapiteln umgesetzt: Das Kapitel 6 diskutiert e<strong>in</strong> Sprachkonstrukt, das<br />

<strong>die</strong> Modellierung von beliebigen E<strong>in</strong>gabegeräten <strong>in</strong> VRML ermöglicht. Kapitel 7 entwickelt<br />

Sprachkonstrukte, mit denen <strong>die</strong> Bewegungen des Avatars kontrolliert werden können.<br />

Am Lehrstuhl <strong>für</strong> Mensch-Masch<strong>in</strong>e-Kommunikation der TU München wurde bereits e<strong>in</strong><br />

System <strong>für</strong> <strong>multimodale</strong> Interaktion <strong>in</strong> 3D Umgebungen mit semantisch höherwertigen<br />

Modalitäten entwickelt. Dieses wird im zweiten Teil <strong>die</strong>ser Arbeit um haptische Modalitäten<br />

erweitert. Dazu wird <strong>die</strong> Infrastruktur ausgedehnt, durch <strong>die</strong> haptischen Modalitäten<br />

möglich werdende Funktion werden e<strong>in</strong>geführt, und <strong>die</strong> Kommunikation zwischen den<br />

Systemkomponenten wird <strong>in</strong>tensiviert. Die zur Vali<strong>die</strong>rung des Systemkonzepts erstellte<br />

Testimplementierung erfolgt unter Verwendung der im ersten Teil erarbeiteten Sprachkonstrukte<br />

und vali<strong>die</strong>rt somit auch <strong>die</strong>se. Kapitel 8 beschreibt nach <strong>e<strong>in</strong>er</strong> Diskussion der<br />

zugrundeliegenden <strong>Design</strong>entscheidung <strong>die</strong> Erweiterung <strong>die</strong>ses Be<strong>die</strong>nsystems um haptische<br />

Modalitäten.<br />

5.1 Zugrundeliegende F ormalismen<br />

Das Konzept der <strong>Navigation</strong> <strong>in</strong> virtuellen Welten be<strong>in</strong>haltet, daß sich der Benutzer frei <strong>in</strong><br />

der Welt bewegen kann, sich an bestimmte Orte begeben und se<strong>in</strong>e Blickrichtung wählen<br />

kann. Das kann <strong>e<strong>in</strong>er</strong>seits dadurch geschehen, daß er fortlaufend e<strong>in</strong>e Geschw<strong>in</strong>digkeit<br />

und e<strong>in</strong>e Richtung vorgibt, <strong>in</strong> <strong>die</strong> er sich bewegen oder drehen will. Im Folgenden wird<br />

<strong>die</strong>se Art der Bewegung kont<strong>in</strong>uierliche <strong>Navigation</strong> genannt. E<strong>in</strong>e Abwandlung davon ist<br />

<strong>die</strong> diskrete <strong>Navigation</strong>, bei welcher der Benutzer Befehle absetzt, <strong>die</strong> ihn jeweils um<br />

e<strong>in</strong>en Schritt <strong>in</strong> e<strong>in</strong>e bestimmte Richtung weiterbewegen. Die Schrittweite ist e<strong>in</strong> Größe,<br />

auf <strong>die</strong> der Benutzer E<strong>in</strong>fluß nehmen können soll. Andererseits kann <strong>Navigation</strong> dadurch<br />

erreicht werden, daß der Benutzer e<strong>in</strong>en Punkt vorgibt, auf den er sich zu bewegen oder<br />

<strong>in</strong> dessen Richtung er blicken will. In <strong>die</strong>sem Fall sei von referenzierender <strong>Navigation</strong> <strong>die</strong><br />

Rede. Ergänzend dazu besteht <strong>die</strong> Möglichkeit, daß der <strong>Design</strong>er <strong>e<strong>in</strong>er</strong> 3D Anwendung<br />

bestimmte Positionen als charakteristisch markiert, und der Benutzer <strong>die</strong>se aus <strong>e<strong>in</strong>er</strong><br />

Liste auswählt.<br />

Seite 28


5.1.1 Bewegungsarten<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Bei kont<strong>in</strong>uierlicher <strong>Navigation</strong> reichen <strong>die</strong> drei Modi WALK, FLY und EXAMINE aus, um<br />

<strong>Navigation</strong> grob zu beschreiben. Die folgende Def<strong>in</strong>ition ist der VRML Spezifikation [1]<br />

angelehnt.<br />

• WALK<br />

Der WALK Modus <strong>die</strong>nt zum Durchwandern <strong>e<strong>in</strong>er</strong> Welt, wobei der Benutzer von der<br />

Software durch Maßnahmen wie Terra<strong>in</strong>verfolgung und Gravitationssimulation auf<br />

dem Boden gehalten wird.<br />

• FLY<br />

Der FLY Modus <strong>die</strong>nt zum Durchwandern <strong>e<strong>in</strong>er</strong> Welt, ohne daß der Benutzer von<br />

der Software auf dem Boden gehalten wird. Der Benutzer erhält zusätzlich zum<br />

WALK Modus <strong>die</strong> Möglichkeit, sich nach oben oder unten zu bewegen.<br />

• EXAMINE<br />

Mit dem EXAMINE Modus kann e<strong>in</strong> Objekt aus unterschiedlichen Richtungen und<br />

Entfernungen betrachtet werden. Das betrachtete Objekt kann entweder <strong>die</strong> ganze<br />

simulierte Welt ausmachen oder e<strong>in</strong> Teilobjekt aus <strong>e<strong>in</strong>er</strong> größeren Welt se<strong>in</strong>.<br />

WALK und FLY s<strong>in</strong>d sich sehr ähnlich, sie unterscheiden sich hauptsächlich dar<strong>in</strong>, ob <strong>die</strong><br />

Effekte der Gravitation simuliert werden. Jedoch kann <strong>die</strong> Software im FLY Modus <strong>die</strong><br />

E<strong>in</strong>gaben des Benutzers <strong>in</strong> leicht geänderter Weise <strong>in</strong>terpretieren als im WALK Modus,<br />

wenn sie dadurch der unterschiedlichen Konzeption des FLY Modus Rechnung tragen<br />

kann.<br />

5.1.2 Koord<strong>in</strong>atensysteme<br />

Um <strong>Navigation</strong> formal und mathematisch exakt beschreiben zu können, müssen zwei<br />

Koord<strong>in</strong>atensysteme def<strong>in</strong>iert werden. Darauf aufbauend werden zwei Richtungssysteme<br />

def<strong>in</strong>iert, <strong>die</strong> Bewegungen des Benutzers beschreiben.<br />

z A<br />

z W<br />

y A<br />

x A<br />

y W<br />

x W<br />

Blickfeld des Avatars<br />

Abb. 4: Avatar lokales und Welt lokales Koord<strong>in</strong>atensystem ☞3D<br />

E<strong>in</strong> Avatar lokales Koord<strong>in</strong>atensystem wird durch <strong>die</strong> Vektoren xA, yA und zA festgelegt. Es<br />

beschreibt <strong>die</strong> Position und Orientierung des Avatars, und damit <strong>die</strong> Perspektive, aus<br />

welcher der Benutzer <strong>die</strong> Szene sieht. Das Welt lokale Koord<strong>in</strong>atensystem, bestehend aus<br />

Seite 29


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

xW, yW und zW ist dasjenige, <strong>in</strong> dem <strong>die</strong> Szene beschrieben ist. Normalerweise steht der<br />

Betrachter senkrecht und yA ist parallel zu yW. Im Allgeme<strong>in</strong>en aber s<strong>in</strong>d beide Koord<strong>in</strong>atensysteme<br />

unabhängig vone<strong>in</strong>ander, wie <strong>in</strong> Abb. 4 dargestellt.<br />

Ohne daß damit e<strong>in</strong>e E<strong>in</strong>schränkung verbunden wäre, kann festgelegt werden, daß yW<br />

immer <strong>die</strong> Richtung sei, <strong>die</strong> nach „oben” zeigt. Da <strong>die</strong>se Richtung <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> e<strong>in</strong>e<br />

Sonderstellung gegenüber allen anderen Richtungen hat, wird sie im folgenden Text als<br />

Lot-Vektor bezeichnet. Im WALK Modus wirkt <strong>die</strong> simulierte Gravitation entgegen <strong>die</strong>ser<br />

Richtung. Auch erweist es sich sowohl im WALK als auch im FLY Modus als sehr hilfreich,<br />

wenn <strong>die</strong> Ausrichtung des Avatars an <strong>die</strong>se Richtung angeglichen wird, d.h. wenn yA parallel<br />

zu yW e<strong>in</strong>gestellt wird, oder wenn <strong>die</strong> Abweichung von <strong>die</strong>ser Stellung von der Software<br />

konstant gehalten wird, solange der Benutzer deren Änderung nicht ausdrücklich<br />

wünscht.<br />

E<strong>in</strong>e weitere Hilfestellung besteht dar<strong>in</strong>, daß <strong>die</strong> Abweichung der Blickrichtung von der<br />

Horizontalen nach oben oder unten auf e<strong>in</strong>en bestimmten W<strong>in</strong>kel, der kl<strong>e<strong>in</strong>er</strong> als 90° ist,<br />

beschränkt wird. Denn wenn der Benutzer annähernd senkrecht nach oben oder unten<br />

schaut, sieht er nur noch den Himmel bzw. den Boden. Versucht er sich durch seitliche<br />

Drehbewegungen aus <strong>die</strong>ser Lage zu befreien, entstehen ungewollt Drehungen um <strong>die</strong><br />

Sichtachse, da seitliche Drehungen häufig um den Lot-Vektor ausgeführt werden (siehe<br />

nächsten Abschnitt). Ferner wird durch <strong>die</strong>se Begrenzung auf weniger als 90° verh<strong>in</strong>dert,<br />

daß der Avatar auf dem Kopf steht, wodurch sich <strong>die</strong> <strong>Navigation</strong> noch schwieriger gestalten<br />

kann.<br />

Aufgrund <strong>die</strong>ser Sonderstellung der Richtung des Lot-Vektors erweist sich <strong>die</strong> Beschreibung<br />

des Avatar lokalen Koord<strong>in</strong>atensystems durch e<strong>in</strong>e Vorwärtsrichtung und e<strong>in</strong>e<br />

Schräglage als Abweichung vom Lot-Vektor als hilfreich. Die Vorwärtsrichtung wird durch<br />

den Richtungsvektor v →<br />

beschrieben, der immer senkrecht zum Lot-Vektor steht und deshalb<br />

<strong>in</strong> <strong>die</strong> Waagerechte entlang der durch xw und zw aufgespannten Ebene zeigt. Die<br />

Schräglage läßt sich durch zwei W<strong>in</strong>kel α und β als Abweichung von yA zu yW beschreiben.<br />

Der W<strong>in</strong>kel α mißt <strong>die</strong> Neigung nach vorne, und β Die Neigung zur Seite. E<strong>in</strong>e Festlegung,<br />

<strong>in</strong> welcher Weise <strong>die</strong>se beiden W<strong>in</strong>kel komb<strong>in</strong>iert werden, ist nicht notwendig, und kann<br />

der konkreten Implementierung der Software überlassen werden.<br />

Lot-<br />

Vektor<br />

α<br />

v<br />

β<br />

Lot-<br />

Vektor<br />

Abb. 5: Problem bezogene Parametrisierung des<br />

Avatar lokalen Koord<strong>in</strong>atensystems<br />

→→→→<br />

Diese Sonderstellung von yW trifft allerd<strong>in</strong>gs nicht auf alle Welten zu, so daß zusätzlich zu<br />

den Modi WALK/FLY/EXAMINE noch e<strong>in</strong>e Auswahl getroffen werden muß, ob yW <strong>die</strong>ser<br />

Sonderbehandlung unterliegen soll oder nicht. Welten, wie etwa Weltraum Simulationen,<br />

oder abstrakte Simulationen wie <strong>die</strong> dreidimensionale Darstellung von Computer Netzwerken<br />

haben ke<strong>in</strong>e <strong>in</strong>härente Richtung <strong>für</strong> „oben” oder „unten”. H<strong>in</strong>gegen ist bei der<br />

Simulation realer Welten immer e<strong>in</strong> ausgeprägtes „oben” vorhanden.<br />

Seite 30


5.1.3 Richtungssysteme<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Es lassen sich zwei Richtungssysteme def<strong>in</strong>ieren, um Bewegungen zu beschreiben. Das<br />

SixDof Richtungssystem def<strong>in</strong>iert Bewegungen im WALK und FLY Modus, <strong>die</strong> sich im wesentlichen<br />

nur durch <strong>die</strong> Simulation der Gravitation unterscheiden. Das Exam<strong>in</strong>e Richtungssystem<br />

beschreibt Bewegungen <strong>für</strong> den EXAMINE Modus. Dieser Modus wird bestimmt<br />

durch e<strong>in</strong>en als Drehzentrum ausgezeichneten Punkt im Raum, um den sich der<br />

Benutzer dreht. Obwohl im EXAMINE Modus hauptsächlich Drehungen vorkommen, machen<br />

translatorische Bewegungen durchaus S<strong>in</strong>n, da sie das Zentrum der Drehung im<br />

Blickfeld des Betrachters positionieren.<br />

roll pitch<br />

up<br />

yaw<br />

forward<br />

right<br />

Bildschirm<br />

Sichtachse<br />

Blickrichtung<br />

a) SixDof Richtungssystem ☞3D b) Exam<strong>in</strong>e Richtungssystem ☞3D<br />

ω ρ<br />

φ<br />

c) Rotierende Exam<strong>in</strong>e Richtungen d) Translatorische Exam<strong>in</strong>e Richtungen<br />

Abb. 6: Das SixDof und das Exam<strong>in</strong>e Richtungssystem<br />

Bewegungen im SixDof Richtungssystem werden <strong>in</strong> m/s bzw. rad/s gemessen. Sie geben<br />

an, wie sich der Benutzer bewegt. Up, right und forward bewegen den Benutzer entlang<br />

der Richtungen des Avatar bezogenen Koord<strong>in</strong>atensystems, wobei bei aktivierter Gravitation<br />

entsprechende E<strong>in</strong>schränkungen entlang des Lot-Vektors gelten. Da <strong>die</strong> Def<strong>in</strong>ition<br />

der Koord<strong>in</strong>atensysteme <strong>in</strong> Abb. 4 an VRML angelehnt ist, das <strong>die</strong> z-Achse nach h<strong>in</strong>ten<br />

def<strong>in</strong>iert, bewegt <strong>die</strong> Richtung forward den Avatar <strong>in</strong> negativer zA-Richtung. Die Richtungen<br />

right, up und forward ergeben somit e<strong>in</strong> L<strong>in</strong>kssystem.<br />

R<br />

B<br />

ω ρ<br />

A<br />

φ<br />

Seite 31


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Yaw und pitch drehen <strong>die</strong> Blickrichtung nach rechts und oben, während roll den Benutzer<br />

seitlich nach l<strong>in</strong>ks kippt. Pitch und roll erzeugen Drehungen um <strong>die</strong> entsprechenden Achsen<br />

des Avatar lokalen Koord<strong>in</strong>atensystems. Sie bee<strong>in</strong>flussen dadurch <strong>die</strong> Schräglage<br />

gegenüber dem Lot-Vektor. Würde yaw auch um <strong>die</strong> yA-Achse des Avatar lokalen Koord<strong>in</strong>atensystems<br />

drehen, dann hätte das neben der gewollten seitlichen Drehung e<strong>in</strong>e Änderung<br />

<strong>die</strong>ser Schräglage zur Folge. Daher dreht yaw um <strong>die</strong> yW-Achse des Welt lokalen<br />

Koord<strong>in</strong>atensystems, wenn der Richtung des Lot-Vektors <strong>in</strong> der Welt e<strong>in</strong>e besondere Bedeutung<br />

zukommt. Ist <strong>die</strong>s nicht der Fall, dreht yaw ähnlich wie <strong>die</strong> anderen Drehrichtungen<br />

um <strong>die</strong> yA-Achse des Welt lokalen Koord<strong>in</strong>atensystems.<br />

Die Exam<strong>in</strong>e Richtungen beschreiben Bewegungen e<strong>in</strong>es Objektes, das betrachtet wird.<br />

Diese Bewegungen können so <strong>in</strong>terpretiert werden, daß der Viewpo<strong>in</strong>t um e<strong>in</strong>en vorgegebenen<br />

Punkt gedreht wird. Dieser Punkt kann vom Benutzer vorgegeben se<strong>in</strong>, oder von<br />

der Software automatisch gewählt werden. Die Bewegungen des Objektes können dadurch<br />

realisiert werden, daß der Benutzer <strong>in</strong> entgegengesetzter Richtung bewegt wird.<br />

Deshalb können Bewegungen beider Richtungssysteme zur gleichen Zeit ausgeführt werden.<br />

Abb. 6 b) zeigt das Konzept des Exam<strong>in</strong>e Richtungssystems. Die Sichtachse ist <strong>die</strong><br />

Verb<strong>in</strong>dungsgerade vom Viewpo<strong>in</strong>t zum Drehzentrum. Sie deckt sich nicht<br />

notwendigerweise mit der Blickrichtung des Benutzers. Diese Richtungen decken sich<br />

nur, wenn das Drehzentrum exakt auf <strong>die</strong> Bildschirmmitte projiziert wird.<br />

Die Richtungen φ und ω drehen das Objekt um <strong>die</strong> x- bzw. y-Achse des Avatar lokalen<br />

Koord<strong>in</strong>atensystems. H<strong>in</strong>gegen dreht ρ um <strong>die</strong> Sichtachse. Alle drei Richtungen werden <strong>in</strong><br />

rad/s gemessen. Abb. 6 c) zeigt <strong>die</strong>se Richtungen aus der Sicht des Benutzers. Auf den<br />

ersten Blick sche<strong>in</strong>t ρ gleichbedeutend mit roll aus dem SixDof Richtungssystem zu se<strong>in</strong>.<br />

Da der Avatar nicht notwendigerweise genau auf das Drehzentrum schauen muß, decken<br />

sich <strong>die</strong> Richtung –zA und <strong>die</strong> Sichtachse nicht notwendigerweise. Die Def<strong>in</strong>ition von ρ<br />

erreicht, daß das Objekt dem Betrachter nach <strong>e<strong>in</strong>er</strong> Drehung <strong>in</strong> ρ-Richtung an der selben<br />

Stelle ersche<strong>in</strong>t wie vorher.<br />

A, B und R s<strong>in</strong>d translatorische Richtungen. Sie s<strong>in</strong>d <strong>in</strong> Abb. 6 d) dargestellt. Aber anders<br />

als <strong>die</strong> translatorischen Richtungen des SixDof Richtungssystems werden <strong>die</strong>se nicht <strong>in</strong><br />

m/s gemessen, sondern relativ zum Abstand zwischen Viewpo<strong>in</strong>t und Drehzentrum def<strong>in</strong>iert.<br />

Das heißt, sie werden mit dem Abstand zwischen Avatar und Objekt multipliziert.<br />

So wird erreicht, daß sich das Objekt mit gleicher Geschw<strong>in</strong>digkeit über den Bildschirm<br />

bzw. das Gesichtsfeld des Betrachter bewegt, unabhängig davon, wie weit es von ihm<br />

entfernt ist. A und B wirken entlang der xA- und yA-Achse des Avatar orientierten Koord<strong>in</strong>atensystems.<br />

Sie <strong>die</strong>nen zum Verschieben des Objektes auf dem Bildschirm bzw. <strong>in</strong>nerhalb<br />

des Gesichtsfeldes des Betrachters.<br />

R h<strong>in</strong>gegen bewegt das Objekt entlang der Sichtachse, so daß sich <strong>die</strong> Richtung, unter<br />

der das Objekt zu sehen ist, nicht verändert. Die Richtungen A, B und R def<strong>in</strong>ieren daher<br />

im Allgeme<strong>in</strong>en ke<strong>in</strong> Orthogonalsystem. Mit R kann e<strong>in</strong> Effekt ähnlich dem Zoomen realisiert<br />

werden. dadurch, daß auch R relativ zum Abstand def<strong>in</strong>iert wird, bewegt sich das<br />

Objekt um so schneller, je weiter entfernt vom Avatar es sich bef<strong>in</strong>det.<br />

Für den erfolgreichen E<strong>in</strong>satz des EXAMINE Modus s<strong>in</strong>d nicht alle Richtungen des Exam<strong>in</strong>e<br />

Richtungssystems von gleicher Bedeutung. Insbesondere können A, B und ρ im S<strong>in</strong>ne<br />

e<strong>in</strong>facher Softwareimplementierung vernachlässigt werden. Für das SixDof Richtungssystem<br />

trifft <strong>die</strong>se Regel <strong>in</strong> abgeschwächter Form auch zu. Hier kann vor allem roll weggelassen<br />

werden.<br />

Seite 32


5.2 Bewegungen<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

<strong>Navigation</strong> <strong>in</strong> virtuellen Umgebungen heißt, sich zu bewegen. Dieser Abschnitt diskutiert<br />

zwei Arten der Darstellung von Bewegungen und führt den Gedanken, Bewegungen zu<br />

filtern, e<strong>in</strong>.<br />

5.2.1 Darstellung<br />

Es werden <strong>in</strong> <strong>die</strong>ser Arbeit zwei Arten unterstützt, Bewegungen darzustellen: als Geschw<strong>in</strong>digkeiten,<br />

und positionsbezogen. Diese s<strong>in</strong>d an <strong>die</strong> Kategorisierung von E<strong>in</strong>gabegeräten<br />

<strong>in</strong> Relative und Positionale Geräte angelehnt. E<strong>in</strong>gaben von Zeigegeräten können<br />

auf <strong>die</strong>se beiden Arten abgebildet werden.<br />

Bewegungen, <strong>die</strong> von Relativen E<strong>in</strong>gabegeräten rühren, werden <strong>in</strong> der Regel als Geschw<strong>in</strong>digkeit<br />

angegeben. Wird e<strong>in</strong>e solche Angabe gemacht, gilt <strong>die</strong> Geschw<strong>in</strong>digkeit bis<br />

e<strong>in</strong>e neue Geschw<strong>in</strong>digkeit – <strong>die</strong> eventuell null se<strong>in</strong> kann – angegeben wird.<br />

Positionale E<strong>in</strong>gabegeräte erzeugen e<strong>in</strong>e Serie von Positionen. Diese können genauso gut<br />

als e<strong>in</strong>e Serie von Positionsdifferenzen repräsentiert werden. Positionsdifferenzen haben<br />

gegenüber re<strong>in</strong>en Positionen den Vorteil, daß mehrere solcher Ströme, <strong>die</strong> von verschiedenen<br />

Quellen stammen, durch e<strong>in</strong>fache Addition zu e<strong>in</strong>em Strom vere<strong>in</strong>igt werden können.<br />

Es besteht auch ke<strong>in</strong>e Notwendigkeit, Bezugspunkte zu def<strong>in</strong>ieren. Ebenso wie Geschw<strong>in</strong>digkeiten,<br />

s<strong>in</strong>d Positionsdifferenzen nicht an e<strong>in</strong>e feste Abtastrate gebunden.<br />

In Abb. 7 ist <strong>die</strong> Addition zweier Bewegungen dargestellt, <strong>die</strong> als e<strong>in</strong>e Serie von Positionsdifferenzen<br />

dargestellt werden. Die Bewegung <strong>in</strong> Diagramm a) wird zu diskreten,<br />

nicht äquidistanten Zeitpunkten abgetastet und ergibt <strong>die</strong> Folge p1. Daraus wird <strong>die</strong> Folge<br />

∆p1 gebildet, <strong>in</strong>dem jeweils <strong>die</strong> Differenz e<strong>in</strong>es Wertes aus der Folge p1 und se<strong>in</strong>em Vorgänger<br />

gebildet wird. Die <strong>in</strong> Diagramm b) dargestellte Bewegung wird zu den selben<br />

Zeitpunkten abgetastet und ebenfalls <strong>in</strong> e<strong>in</strong>e Folge von Positionsdifferenzen ∆p2 umgerechnet.<br />

Beide Folgen mit Positionsdifferenzen werden ad<strong>die</strong>rt, so daß <strong>die</strong> Folge ∆p1+∆p2<br />

entsteht. Diese wird schließlich <strong>in</strong> e<strong>in</strong>e Folge p1+p2+C absoluter Positionen umgewandelt,<br />

<strong>in</strong>dem rekursiv zum jeweils letzten Wert der Folge der aktuelle Wert der Folge ∆p1+∆p2<br />

ad<strong>die</strong>rt wird. Bei <strong>die</strong>ser Operation ist <strong>die</strong> vertikale Verschiebung unbestimmt. Diese ist<br />

durch <strong>die</strong> Konstante C angedeutet, und muß aus <strong>e<strong>in</strong>er</strong> Anfangsbed<strong>in</strong>gung hergeleitet<br />

werden.<br />

p 1<br />

t<br />

a) b)<br />

c)<br />

p 2<br />

t<br />

d)<br />

∆p 1<br />

∆p 2<br />

t<br />

Σ<br />

t<br />

∆p 1 +∆p 2<br />

t<br />

e) f)<br />

+Cp 1 +p 2 +C<br />

Abb. 7: Addition von nicht äquidistanten Positionsdifferenzen<br />

t<br />

Seite 33


5.2.2 Filterung<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

E<strong>in</strong> paar am Rande durchgeführte Experimente haben den Verfasser zu Überlegungen<br />

veranlaßt, <strong>die</strong> hier geschildert werden sollen, da e<strong>in</strong>ige Stellen <strong>die</strong>ser Arbeit davon bee<strong>in</strong>flußt<br />

werden.<br />

E<strong>in</strong> testweises E<strong>in</strong>fügen e<strong>in</strong>es l<strong>in</strong>earen Filters erster Ordnung <strong>in</strong> den Signalweg, der <strong>die</strong><br />

Bewegungen des Avatars beschreibt, gibt Grund zu der Vermutung, daß generell e<strong>in</strong> Filter<br />

mit Tiefpaß Charakteristik <strong>die</strong> Bewegungen der <strong>Navigation</strong> natürlicher und angenehmer<br />

ersche<strong>in</strong>en lassen. Möglicherweise ist damit sogar e<strong>in</strong>e Abschwächung der Effekte<br />

der Simulatorkrankheit (motion sickness) verbunden.<br />

Typischerweise werden mit haptischen E<strong>in</strong>gabegeräten Bewegungsgeschw<strong>in</strong>digkeiten<br />

erzeugt, <strong>die</strong> sich sehr schnell ändern können, wenn der Benutzer das E<strong>in</strong>gabegerät manipuliert.<br />

Insbesondere beim Beenden <strong>e<strong>in</strong>er</strong> Bewegung geht <strong>die</strong> mit dem E<strong>in</strong>gabegerät erzeugte<br />

Geschw<strong>in</strong>digkeit sehr schnell gegen null, so daß <strong>die</strong> resultierende Bewegung abrupt<br />

endet. Bei positionalen E<strong>in</strong>gabegeräten, tritt <strong>die</strong>ser Effekt stärker auf, wie bei relativen<br />

E<strong>in</strong>gabegeräten, da je nach Typ des E<strong>in</strong>gabegerätes e<strong>in</strong>e Manipulation e<strong>in</strong>e hohe<br />

Geschw<strong>in</strong>digkeit <strong>für</strong> nur kurze Zeit hervorruft.<br />

Wegen der schnellen Geschw<strong>in</strong>digkeitsänderungen ersche<strong>in</strong>en <strong>die</strong> erzeugten Bewegungen<br />

abrupt und im EXAMINE Modus entsteht der E<strong>in</strong>druck e<strong>in</strong>es masselosen Objekts. E<strong>in</strong> <strong>in</strong><br />

den Signalweg e<strong>in</strong>gesetztes Tiefpaßfilter verleiht den Bewegungen des Avatars e<strong>in</strong>e gewisse<br />

Trägheit, wodurch natürlicher wirkendere Bewegungen entstehen. Möglicherweise<br />

werden <strong>die</strong>se nicht nur vom Verfasser als angenehmer empfunden.<br />

E<strong>in</strong>gabegerät..<br />

Interpreter Tiefpaßfilter<br />

Integrator<br />

Geschw<strong>in</strong>digkeit v(t)<br />

v(t) v'(t)<br />

t<br />

~<br />

geglättete<br />

Geschw<strong>in</strong>digkeit v'(t)<br />

Abb. 8: Sanfte Bewegungen durch Tiefpaßfilter<br />

Das e<strong>in</strong>gesetzte Filter realisiert <strong>die</strong> Impulsantwort<br />

={ e<br />

h(t)<br />

0<br />

-(t-t 0 ) / τ 0A<br />

A<br />

t > t0<br />

t ≤ t 0<br />

wobei<br />

t0: Bezugszeitpunkt<br />

τ0: Zeitkonstante des Filters<br />

t<br />

∫<br />

ungeglättete Position 'p'(t)<br />

geglättete Position p'(t)<br />

Das Ausgangssignal des Filters nähert sich dem E<strong>in</strong>gangssignal exponentiell asymptotisch<br />

an. Die charakteristische Größe des Filters ist <strong>die</strong> Zeitkonstante τ0, welche <strong>die</strong> Geschw<strong>in</strong>digkeit<br />

des E<strong>in</strong>schw<strong>in</strong>gens beschreibt. Bei der Wahl der Zeitkonstante muß abgewägt<br />

werden zwischen dem Glättungseffekt und der verzögerten Reaktion auf Benutzere<strong>in</strong>gaben.<br />

Variationen der Zeitkonstante haben gezeigt, daß <strong>die</strong> Glättung ab etwa 0,05 s bemerkbar<br />

wird, und ab etwa 0,3 s als träge empfunden wird. Bei größeren Werten entsteht<br />

e<strong>in</strong> Effekt ähnlich dem von Massenträgheit, <strong>die</strong> e<strong>in</strong>e angestoßene Bewegung noch<br />

e<strong>in</strong>ige Zeit aufrechterhält, bis <strong>die</strong> Bewegung durch Reibungseffekte abgeklungen ist.<br />

p(t)<br />

p'(t)<br />

t<br />

Seite 34


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Es wäre denkbar, daß andere Filter, z.B. L<strong>in</strong>eares Filter 2. Ordnung im aperiodischen<br />

Grenzfall oder e<strong>in</strong> Mittelwert der letzten 0,3 Sekunden den Effekt der Glättung bei gleicher<br />

Reaktionsdauer noch stärken und so noch natürlichere Bewegungen erzeugt werden<br />

können.<br />

5.3 Möglichkeiten <strong>in</strong> ex istierendem VRML<br />

Dieser Abschnitt untersucht VRML dah<strong>in</strong>gehend, ob es e<strong>in</strong>em Autor Möglichkeiten bietet,<br />

das Paradigma der <strong>Navigation</strong> an <strong>die</strong> Bedürfnisse der Anwendung anzupassen.<br />

5.3.1 E<strong>in</strong> typischer Browse r<br />

In VRML wird <strong>die</strong> <strong>Navigation</strong> vom Browser implementiert. Der Browser erhält Ereignisse<br />

von der Maus und Tastatur. Diese beschreiben Mausbewegungen, Mausklicks und Tastendrücke.<br />

Der Browser verarbeitet sie nach e<strong>in</strong>em festen Schema zu Bewegungen des<br />

Avatars bzw. zu Manipulationen von Objekten der Szene. In Abb. 9 ist <strong>die</strong>ser Vorgang<br />

schematisch dargestellt. Diese Grafik <strong>die</strong>nt als Diskussionsgrundlage. Sie bedeutet nicht,<br />

daß e<strong>in</strong> konkreter Browser <strong>die</strong>ser Struktur folgt.<br />

Maus<br />

Tastatur<br />

Interpreter<br />

Manipulation<br />

<strong>Navigation</strong><br />

Browser Szene<br />

Abb. 9: Typische Struktur e<strong>in</strong>es VRML Browsers<br />

Sensor<br />

Knoten<br />

Bewegung<br />

des Avatars<br />

Signale aus<br />

der Szene<br />

Signale von den E<strong>in</strong>gabegeräten werden zunächst im Modul Interpreter daraufh<strong>in</strong> untersucht,<br />

ob der Benutzer zu navigieren beabsichtigt, oder e<strong>in</strong> Objekt manipulieren will.<br />

Diese Entscheidung hängt z.B. davon ab, ob sich bei e<strong>in</strong>em Mausklick e<strong>in</strong> manipulierbares<br />

Objekt unter dem Mauszeiger bef<strong>in</strong>det. Fällt <strong>die</strong> Entscheidung auf Manipulation, werden<br />

<strong>die</strong> Signale <strong>in</strong> <strong>die</strong>sem S<strong>in</strong>ne <strong>in</strong>terpretiert und an das Modul Manipulation gesendet. Dieses<br />

aktualisiert Sensor Knoten entsprechend der erhaltenen Signale.<br />

Entscheidet sich das Interpreter Modul jedoch da<strong>für</strong>, daß der Benutzer navigieren will,<br />

wandelt es <strong>die</strong> Signale der E<strong>in</strong>gabegeräte <strong>in</strong> Bewegungen um und sendet sie an das Modul<br />

<strong>Navigation</strong>. Das Modul <strong>Navigation</strong> wertet <strong>die</strong>se Bewegungen aus und aktualisiert <strong>die</strong><br />

Szene entsprechend. Es berücksichtigt dabei <strong>die</strong> Gegebenheiten der Szene und verh<strong>in</strong>dert,<br />

daß der Benutzer durch Objekte läuft (Kollisionserkennung) und auf dem Boden<br />

bleibt (Gravitationssimulation). Ferner führt <strong>die</strong>ses Modul Viewpo<strong>in</strong>t-Animationen aus,<br />

wenn der Benutzer e<strong>in</strong>en Aussichtspunkt anwählt, oder e<strong>in</strong> Signal aus der Szene <strong>die</strong>s<br />

auslöst.<br />

Seite 35


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Da <strong>die</strong> Anwendung durch <strong>die</strong> Szenenbeschreibung def<strong>in</strong>iert ist, erhält sie bei <strong>die</strong>ser<br />

Struktur ke<strong>in</strong>e Möglichkeit, auf <strong>die</strong> Art und Weise E<strong>in</strong>fluß zu nehmen, wie Maus und Tastatur<br />

E<strong>in</strong>gaben <strong>in</strong> Bewegungen des Avatars umgesetzt werden. Es fehlt außerdem <strong>die</strong><br />

Möglichkeit, das System um weitere E<strong>in</strong>gabegeräte zu erweitern, <strong>die</strong> den Umgang mit<br />

dem System erleichtern würden.<br />

5.3.2 Anpassbare Navigati on<br />

In VRML besteht pr<strong>in</strong>zipiell <strong>die</strong> Möglichkeit, <strong>die</strong> Browser <strong>in</strong>terne <strong>Navigation</strong> zu deaktivieren<br />

und durch e<strong>in</strong>en Umweg über <strong>die</strong> Manipulation Benutzere<strong>in</strong>gaben auszuwerten und<br />

daraus Bewegungen des Avatars zu berechnen. Dadurch kann zwar <strong>die</strong> browsereigene<br />

<strong>Navigation</strong> durch den vom Autor <strong>e<strong>in</strong>er</strong> 3D Anwendung gestalteten Mechanismus ersetzt<br />

werden, jedoch hat <strong>die</strong>se Vorgehensweise schwerwiegende Nachteile.<br />

Die Sensor Knoten <strong>in</strong> VRML s<strong>in</strong>d auf das Manipulationsparadigma ausgelegt. So geben sie<br />

Benutzere<strong>in</strong>gaben nur dann weiter, wenn <strong>die</strong>se auf <strong>e<strong>in</strong>er</strong> Interaktion mit e<strong>in</strong>em Objekt<br />

der Szene beruhen. Außerdem reduzieren <strong>die</strong> Sensor Knoten <strong>die</strong> Benutzere<strong>in</strong>gaben auf<br />

nur maximal zwei unabhängige Freiheitsgrade und <strong>in</strong>terpretieren <strong>die</strong>se mit Bezug auf <strong>die</strong><br />

3D Szene. Ferner s<strong>in</strong>d Sensor Knoten <strong>für</strong> Zeigegeräte ausgelegt. Tastaturen, Relative und<br />

Positionale E<strong>in</strong>gabegeräte werden damit nicht abgedeckt.<br />

Um trotzdem <strong>für</strong> <strong>Navigation</strong> taugliche Benutzere<strong>in</strong>gaben zu erhalten, s<strong>in</strong>d zwei Techniken<br />

denkbar. Beide beruhen auf e<strong>in</strong>em sogenannten Head Up Display. Das ist e<strong>in</strong> mittels<br />

ProximitySensor 5 und Transform Knoten erzeugtes Koord<strong>in</strong>atensystem, das <strong>in</strong> jedem<br />

Augenblick mit dem Avatar lokalen Koord<strong>in</strong>atensystem übere<strong>in</strong>stimmt. In <strong>die</strong>sem Koord<strong>in</strong>atensystem<br />

entsprechend plazierte Objekte s<strong>in</strong>d immer im Blickfeld des Benutzers, unabhängig<br />

davon, wie sich <strong>die</strong>ser bewegt. Diese Objekte können mit Sensor Knoten komb<strong>in</strong>iert<br />

werden.<br />

Sichtbare Be<strong>die</strong>nelemente<br />

Objekte, <strong>die</strong> als Druckknopf fungieren, führen Bewegungen nach vorwärts, rückwärts,<br />

l<strong>in</strong>ks oder rechts herbei, wenn der Benutzer mit der Maus darauf klickt. Die Geschw<strong>in</strong>digkeit<br />

der Bewegung wäre dabei fest vorgegeben. Alternativ kann e<strong>in</strong> bewegliches Objekt<br />

wie e<strong>in</strong> virtueller Joystick funktionieren. Verschiebt der Benutzer das Objekt von s<strong>e<strong>in</strong>er</strong><br />

Ruhelage weg, bewegt sich der Avatar mit <strong>e<strong>in</strong>er</strong> der Entfernung der Verschiebung proportionalen<br />

Geschw<strong>in</strong>digkeit. Die Richtung der Bewegung entspricht der Richtung der<br />

Verschiebung. Läßt der Benutzer das Objekt los, fällt es auf se<strong>in</strong>en Ausgangspunkt zurück.<br />

In <strong>e<strong>in</strong>er</strong> Variation davon ist der bewegliche Teil des Objektes gar nicht sichtbar, so<br />

daß nur e<strong>in</strong>e <strong>für</strong> Bewegungen sensitive Fläche ersche<strong>in</strong>t.<br />

Mit jeder <strong>die</strong>ser drei Art von Objekten ist immer sichtbare Geometrie nötig, und der Benutzer<br />

muß zur <strong>Navigation</strong> immer auf e<strong>in</strong>es <strong>die</strong>ser Objekte klicken. Dies lenkt ihn aber<br />

von der Interaktion mit der Szene ab.<br />

Simulation roher Mause<strong>in</strong>gaben<br />

Die andere Technik besteht dar<strong>in</strong>, e<strong>in</strong> transparentes, rechteckiges Objekt <strong>in</strong> das Koord<strong>in</strong>atensystem<br />

des Head Up Displays zu positionieren und mit e<strong>in</strong>em TouchSensor zu komb<strong>in</strong>ieren.<br />

Da das Rechteck transparent ist, versperrt es dem Benutzer nicht den Blick auf<br />

<strong>die</strong> Szene. Ist das Rechteck so groß, daß es den ganzen Bildschirm ausfüllt, liefert der<br />

TouchSensor an se<strong>in</strong>em hitTexCoord_changed Feld <strong>die</strong> Position des Mauszeigers und am<br />

isActive Feld, ob <strong>die</strong> Maustaste gedrückt ist. Abgesehen davon, daß man bei der Suche<br />

nach der korrekten Größe des Rechteckes <strong>die</strong> zur Darstellung der Szene im Browser ver-<br />

5 zeigt <strong>die</strong> Position und Orientierung des Avatars an.<br />

Seite 36


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

wendete Projektion berücksichtigen muß, und daß <strong>die</strong>se Technik nur mit Bildschirm orientierten<br />

Zeigegeräten funktioniert – d.h. mit der Maus – ergibt sich hier der gravierende<br />

Nachteil, daß <strong>die</strong>ses Rechteck den Zugriff auf dah<strong>in</strong>ter liegende Objekte <strong>für</strong> <strong>die</strong> Manipulation<br />

versperrt. Denn manipulative Mause<strong>in</strong>gaben werden immer auf das nächstliegende<br />

Objekt angewandt.<br />

Aus den durch <strong>die</strong>se beiden Methoden gewonnenen Benutzere<strong>in</strong>gaben müßte man Bahnen<br />

berechnen, welche <strong>die</strong> gewünschte Bewegung des Avatars beschreiben, und <strong>die</strong> Felder<br />

position und orientation am Viewpo<strong>in</strong>t Knoten entsprechend animieren. Dies erfordert<br />

jedoch fun<strong>die</strong>rte Kenntnisse <strong>in</strong> analytischer Geometrie, welche nicht der Denkweise<br />

entspricht, <strong>die</strong> sonst zum Erstellen von 3D Welten notwendig ist. Somit ergibt sich e<strong>in</strong>e<br />

echte Hürde, anpassbare <strong>Navigation</strong> mit VRML zu entwickeln.<br />

E<strong>in</strong> Vorteil kommt <strong>die</strong>sen Methoden jedoch zu gute. Denn es wird damit automatisch jedes<br />

vom Browser unterstützte E<strong>in</strong>gabegerät verwendet. Dies ist jedoch gleichzeitig e<strong>in</strong><br />

Nachteil, denn andere E<strong>in</strong>gabegeräte können nicht unterstützt werden, und <strong>die</strong> Spezifika<br />

e<strong>in</strong>es unterstützten E<strong>in</strong>gabegerätes gehen verloren.<br />

E<strong>in</strong> weiterer großer Nachteil stellt der fehlende Zugriff auf <strong>die</strong> Browser Funktionen Kollisionserkennung<br />

und Terra<strong>in</strong> Follow<strong>in</strong>g dar. Das bedeutet, daß der Browser nicht <strong>die</strong> Möglichkeit<br />

hat, <strong>die</strong> Fortbewegung durch Objekte zu verh<strong>in</strong>dern, oder horizontale Bewegungen<br />

an Steigungen des simulierten Geländes anzupassen, da er den Positionen, <strong>die</strong> am<br />

Viewpo<strong>in</strong>t Knoten angegeben werden folgen muß.<br />

5.4 Lösungsansatz<br />

Der letzte Abschnitt 5.2.2 macht <strong>die</strong> E<strong>in</strong>schränkungen bei VRML deutlich, <strong>die</strong> e<strong>in</strong>en Autor<br />

daran h<strong>in</strong>dern, das <strong>Navigation</strong>sparadigma an <strong>die</strong> Bedürfnisse <strong>e<strong>in</strong>er</strong> Anwendung und deren<br />

Nutzer anzupassen:<br />

• Entweder müssen immer sichtbare Be<strong>die</strong>nelemente e<strong>in</strong>geblendet werden, oder der<br />

manipulative Zugriff auf <strong>die</strong> Szene wird verh<strong>in</strong>dert.<br />

• Der Zugriff auf Benutzere<strong>in</strong>gaben beschränkt sich auf zweidimensionale Zeigegeräte.<br />

• Es s<strong>in</strong>d <strong>in</strong>tensive Kenntnisse <strong>in</strong> analytischer Geometrie notwendig.<br />

• Der Browser hat ke<strong>in</strong>e Möglichkeit, Bewegungen durch Objekte zu verh<strong>in</strong>dern, oder<br />

im WALK Modus den Avatar auf dem Boden zu halten.<br />

In <strong>die</strong>sem Abschnitt wird e<strong>in</strong> Konzept erarbeitet, das <strong>die</strong> Szenenbeschreibungssprache<br />

VRML erweitert und versucht, <strong>die</strong>se H<strong>in</strong>dernisse zu elim<strong>in</strong>ieren. In den Kapiteln 6 und 7<br />

wird <strong>die</strong> Umsetzung <strong>die</strong>ses Konzepts detailliert beschrieben.<br />

Seite 37


5.4.1 Zielsetzung<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Die neuen Knoten <strong>für</strong> anpassbare <strong>Navigation</strong> sollen folgenden Forderungen genügen:<br />

• Die <strong>in</strong> VRML def<strong>in</strong>ierten Knoten zur <strong>Navigation</strong> sollen durch <strong>die</strong> neuen Knoten nicht<br />

überflüssig werden. Sie sollen weiterh<strong>in</strong> <strong>die</strong> Rahmenbed<strong>in</strong>gungen der <strong>Navigation</strong> beschreiben.<br />

Durch <strong>die</strong> neuen Knoten soll lediglich das <strong>in</strong> e<strong>in</strong>em konventionellen Browser<br />

existierende <strong>Navigation</strong>smodul, das <strong>in</strong> <strong>die</strong>sen Rahmenbed<strong>in</strong>gungen operiert, <strong>für</strong><br />

<strong>die</strong> Anwendung zugänglich gemacht werden, so daß der Autor mehr Kontrolle darüber<br />

erhält.<br />

• Dem Autor soll mit dem h<strong>in</strong>ter den neuen Knoten stehenden Konzept e<strong>in</strong> mächtiges<br />

Werkzeug zur Verfügung stehen. Er soll e<strong>in</strong> E<strong>in</strong>gabegerät übernehmen und <strong>die</strong> <strong>Navigation</strong><br />

da<strong>für</strong> selbst implementieren können. Er soll <strong>die</strong>s <strong>für</strong> alle vom DeviceSensor<br />

unterstützten E<strong>in</strong>gabegeräte tun können, und so das <strong>Navigation</strong>sparadigma selbst<br />

implementieren und dadurch an <strong>die</strong> Anwendung und deren Benutzerkreis anpassen<br />

können.<br />

• Mit Hilfe des EXTERNPROTO Mechanismus, der <strong>in</strong> VRML <strong>die</strong> Erstellung wiederverwendbarer<br />

Module erlaubt, sollen Module entwickelt werden können, welche <strong>die</strong> <strong>Navigation</strong>smodi<br />

WALK, FLY, EXAMINE, sowie weitere, nicht standardisierte Modi unabhängig<br />

von <strong>e<strong>in</strong>er</strong> konkreten Anwendung implementiert werden können. Diese können dann <strong>in</strong><br />

verschiedenen Anwendungen h<strong>in</strong>zugeladen werden und <strong>die</strong> Defaultnavigation des<br />

Browsers ersetzen.<br />

5.4.2 Konzept<br />

Damit e<strong>in</strong> Autor eigene <strong>Navigation</strong>sparadigmen gestalten kann, muß <strong>die</strong> <strong>in</strong> Abb. 9 dargestellte<br />

starre Verb<strong>in</strong>dung zwischen E<strong>in</strong>gabegeräten und dem <strong>Navigation</strong> Modul aufgebrochen<br />

werden. Es muß e<strong>in</strong>en Knoten geben, der <strong>die</strong> Signale e<strong>in</strong>es E<strong>in</strong>gabegerätes <strong>in</strong>nerhalb<br />

der Szene repräsentiert und e<strong>in</strong>en Knoten, der Bewegungen aus der Szene empfängt<br />

und an das <strong>Navigation</strong> Modul weitergibt. Ferner muß e<strong>in</strong> Knoten existieren, der <strong>die</strong><br />

Angabe von grundlegenden <strong>Navigation</strong>sparametern ermöglicht, und e<strong>in</strong>en Sensor Knoten,<br />

der Information vom <strong>Navigation</strong> Modul an <strong>die</strong> Szene liefert. Der Autor kann dann e<strong>in</strong>en<br />

Script Knoten schreiben, der <strong>die</strong> Signale e<strong>in</strong>es E<strong>in</strong>gabegerätes <strong>in</strong> Bewegungen des<br />

Avatars umwandelt. Die Struktur e<strong>in</strong>es so erweiterten VRML Browsers ist <strong>in</strong> Abb. 10 dargestellt.<br />

Wenn der Autor es wünscht, kann <strong>die</strong> Verb<strong>in</strong>dung von e<strong>in</strong>em E<strong>in</strong>gabegerät zum Interpreter<br />

unterbrochen werden und mit Hilfe des DeviceSensor und Navigator Knotens<br />

durch <strong>die</strong> Szene geroutet werden. Der DeviceSensor <strong>die</strong>nt zur Repräsentation e<strong>in</strong>es E<strong>in</strong>gabegerätes.<br />

Für jedes E<strong>in</strong>gabegerät, das der Autor anpassen will, muß er e<strong>in</strong>en Device-<br />

Sensor <strong>in</strong> <strong>die</strong> Szene e<strong>in</strong>fügen. Er kann dabei angeben, ob <strong>die</strong> im Interpreter Modul vorhandene<br />

Default <strong>Navigation</strong> <strong>für</strong> das E<strong>in</strong>gabegerät deaktiviert werden soll.<br />

Fügt der Autor e<strong>in</strong>en Navigator Knoten <strong>in</strong> <strong>die</strong> Szene e<strong>in</strong>, kann er mit <strong>die</strong>sem Avatarbewegungen<br />

an das <strong>Navigation</strong> Modul senden. Diese werden mit den Bewegungen anderer<br />

Navigator Knoten und den nicht deaktivierten Bewegungen des Interpreter Moduls überlagert.<br />

Am Navigator Knoten ist e<strong>in</strong> Flag vorhanden, das der Autor setzen kann, wenn er<br />

<strong>die</strong> im Browser e<strong>in</strong>gebaute <strong>Navigation</strong> vollständig deaktivieren will. Das Interpreter Modul<br />

wird dann nur noch <strong>für</strong> <strong>die</strong> Manipulation wirksam.<br />

Der DeviceSensor kann neben re<strong>in</strong>en E<strong>in</strong>gabegeräten auch Feedback-Geräte unterstützen<br />

und Ausgaben an <strong>die</strong>se senden. Dadurch ergibt sich <strong>für</strong> den Autor zusätzlich <strong>die</strong> Möglichkeit,<br />

dem Benutzer über das E<strong>in</strong>gabegerät Rückkopplung zu geben.<br />

Seite 38


Tastatur<br />

Maus<br />

Joystick<br />

DeviceSensor<br />

device<br />

"JOYSTICK"<br />

signalisiert Benutzere<strong>in</strong>gaben<br />

Interpreter<br />

Script<br />

Kapitel 5, Anpassbare <strong>Navigation</strong><br />

Manipulation<br />

function stick(s) {<br />

var tmp=<br />

new SFVec3f();<br />

tmp.x= s.x*speed;<br />

tmp.z= -s.y*speed;<br />

xyz= tmp;<br />

}<br />

<strong>Navigation</strong><br />

verarbeitet Benutzere<strong>in</strong>gaben<br />

zu <strong>Navigation</strong>swerten<br />

Browser<br />

Szene<br />

Navigator<br />

Bewegung<br />

des Avatars<br />

Signale aus<br />

der Szene<br />

bewegt den<br />

Avatar<br />

Abb. 10: Struktur e<strong>in</strong>es VRML Browsers, der anpassbare <strong>Navigation</strong> unterstützt<br />

Dem Autor steht mit <strong>die</strong>sem Konzept e<strong>in</strong> mächtiges Werkzeug zur Verfügung. Er kann e<strong>in</strong><br />

E<strong>in</strong>gabegerät übernehmen und <strong>die</strong> <strong>Navigation</strong> da<strong>für</strong> selbst implementieren. Abb. 10 zeigt<br />

<strong>die</strong>sen Vorgang. Der Autor kann das <strong>für</strong> alle vom DeviceSensor unterstützten E<strong>in</strong>gabegeräte<br />

tun, und kann so das <strong>Navigation</strong>sparadigma selbst implementieren und an <strong>die</strong><br />

Anwendung und deren Benutzerkreis anpassen. Mit Hilfe des EXTERNPROTO Mechanismus,<br />

der <strong>in</strong> VRML <strong>die</strong> Erstellung wiederverwendbarer Module erlaubt, können Module erstellt<br />

werden, welche <strong>die</strong> drei <strong>Navigation</strong>smodi WALK, FLY und EXAMINE unabhängig von <strong>e<strong>in</strong>er</strong><br />

konkreten Anwendung implementieren. Diese können dann <strong>in</strong> verschiedenen Anwendungen<br />

h<strong>in</strong>zugeladen werden und <strong>die</strong> Defaultnavigation des Browsers ersetzen.<br />

Abgesehen von dem Ziel, e<strong>in</strong> <strong>Navigation</strong>sparadigma zu gestalten, können noch weitere<br />

Effekte erzeugt werden. Benutzt man e<strong>in</strong>en DeviceSensor, verzichtet aber auf den Navigator<br />

Knoten, können <strong>in</strong> begrenztem Umfang auch Objekte <strong>in</strong> der Szene manipuliert<br />

werden. In <strong>e<strong>in</strong>er</strong> Golf Simulation könnte e<strong>in</strong> Schieberegler auf e<strong>in</strong>em E<strong>in</strong>gabegerät <strong>die</strong><br />

Stärke des Schlages bestimmen. In anderen Welten könnte e<strong>in</strong>e Taste auf dem E<strong>in</strong>gabegerät<br />

das Öffnen von Türen oder e<strong>in</strong>e andere objektspezifische Aktion auslösen, je nachdem,<br />

<strong>in</strong> der Nähe welches Objektes sich der Benutzer bef<strong>in</strong>det. Es müßte dazu e<strong>in</strong> DeviceSensor<br />

<strong>in</strong> <strong>die</strong> Szene e<strong>in</strong>gefügt werden, bei dem das Flag, das <strong>die</strong> Defaultnavigation<br />

deaktiviert, nicht gesetzt ist.<br />

Seite 39


Kapitel 5, Anpassbare <strong>Navigation</strong><br />

E<strong>in</strong> Navigator Knoten, der nicht von e<strong>in</strong>em DeviceSensor, sondern von e<strong>in</strong>em Interpolator<br />

oder e<strong>in</strong>em Script gespeist wird, könnte <strong>für</strong> Effekte wie e<strong>in</strong>en Stoß von h<strong>in</strong>ten benutzt<br />

werden, der den Benutzer e<strong>in</strong> Stück nach vorne bewegt. Anders als bei <strong>e<strong>in</strong>er</strong> Animation<br />

mit dem Viewpo<strong>in</strong>t Knoten bleibt bei Verwendung des Navigator Knotens <strong>die</strong> Kollisionserkennung<br />

aktiv, so daß der Benutzer durch den Stoß nicht <strong>in</strong> z.B. e<strong>in</strong>e Wand gedrückt<br />

werden kann. Außerdem ist es beim Navigator Knoten nicht erforderlich, <strong>die</strong> Eckpunkte<br />

e<strong>in</strong>es Interpolators abhängig von der aktuellen Position des Avatars und der<br />

Richtung des Stoßes zu berechnen, da beim Navigator Knoten <strong>die</strong> Bewegung als solches<br />

spezifiziert werden kann. Der visuelle E<strong>in</strong>druck von Erdbeben kann ebenso durch e<strong>in</strong>e<br />

Auf- und Abbewegung erzeugt werden.<br />

Seite 40


6 Repräsentation von E<strong>in</strong>gabegeräten<br />

Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Die Unterstützung des <strong>Navigation</strong>sparadigmas bedeutet <strong>für</strong> e<strong>in</strong>e Anwendung, Benutzere<strong>in</strong>gaben<br />

zu verarbeiten und <strong>in</strong> <strong>Navigation</strong>sbefehle umzuwandeln, um <strong>die</strong>se an den<br />

Browser zur Ausführung zu senden. Dieses Kapitel entwickelt e<strong>in</strong> Sprachkonstrukt, das<br />

E<strong>in</strong>gabegeräte <strong>in</strong>nerhalb des Szenengraphen von VRML darstellt. Das Sprachkonstrukt<br />

kann dabei so allgeme<strong>in</strong> gehalten werden, daß es sowohl re<strong>in</strong>e E<strong>in</strong>gabegeräte, als auch<br />

solche mit Möglichkeit, Rückkopplung an den Benutzer zu geben, als auch beliebige andere<br />

Geräte modellieren kann. Es wird daher <strong>in</strong> <strong>die</strong>sem Kapitel häufiger von „Geräten”<br />

<strong>die</strong> Rede se<strong>in</strong>, als von „E<strong>in</strong>gabegeräten”. Der Name DeviceSensor des Sprachkonstrukts<br />

ist an <strong>die</strong>sen Umstand angepaßt.<br />

6.1 Anforderungen<br />

Es werden folgende Anforderungen an e<strong>in</strong> Sprachkonstrukt zur Repräsentation von E<strong>in</strong>gabegeräten<br />

gestellt:<br />

• Unterstützung sowohl von re<strong>in</strong>en E<strong>in</strong>gabegeräten als auch von solchen mit Feedback-Möglichkeit<br />

• Forcierung leicht wartbaren VRML Codes<br />

• Interoperabilität<br />

• E<strong>in</strong>fache Implementierbarkeit <strong>in</strong> e<strong>in</strong>em Browser<br />

Der Proto Mechanismus, der es <strong>in</strong> VRML erlaubt, neue Knoten zu def<strong>in</strong>ieren, wird sämtlichen<br />

oben genannten Forderungen gerecht. Dies wird nachstehend erläutert.<br />

Unterstützung von re<strong>in</strong>en E<strong>in</strong>gabegeräten und solchen mit Feedback-Möglichkeit<br />

Wird das E<strong>in</strong>gabegerät durch e<strong>in</strong>e Proto realisiert, modellieren Felder der Art eventOut<br />

Be<strong>die</strong>nelemente, <strong>die</strong> vom Benutzer manipuliert werden können. Da <strong>die</strong>se Felder Information<br />

an <strong>die</strong> Szene weitergeben, müssen sie eventOut Felder se<strong>in</strong>. Information, <strong>die</strong> der<br />

DeviceSensor aufnehmen und an das E<strong>in</strong>gabegerät weitergeben soll, werden durch<br />

eventIn Felder modelliert.<br />

Forcierung leicht wartbaren VRML Codes<br />

Andere Ansätze, z.B. [18] verwenden e<strong>in</strong>en Knoten, der jeweils nur e<strong>in</strong> Be<strong>die</strong>nelement<br />

des E<strong>in</strong>gabegerätes modelliert, bzw. das ganze E<strong>in</strong>gabegerät als e<strong>in</strong> großes Array von<br />

Fließkomma-Zahlen repräsentiert. Beides führt zu schlecht wartbarem Code, da entweder<br />

durch e<strong>in</strong>e Vielzahl von Knoten <strong>die</strong> Lesbarkeit des Codes verr<strong>in</strong>gert wird, oder da e<strong>in</strong><br />

Array wenig über <strong>die</strong> Bedeutung der e<strong>in</strong>zelnen Elemente des Arrays aussagt. Deshalb<br />

wird <strong>in</strong> <strong>die</strong>ser Arbeit e<strong>in</strong> Ansatz verfolgt, der e<strong>in</strong> Gerät vollständig modelliert, und der<br />

ähnlich dem Script Knoten <strong>die</strong> Def<strong>in</strong>ition von Feldern mit geräteabhängigen Namen erlaubt.<br />

Zudem können <strong>die</strong>sen Feldern Datentypen gegeben werden, <strong>die</strong> dem Be<strong>die</strong>nelement,<br />

das <strong>die</strong> Felder repräsentieren, gerecht werden. Der Proto Mechanismus, der <strong>in</strong><br />

VRML erlaubt, neue Knoten zu def<strong>in</strong>ieren, ist da<strong>für</strong> gut geeignet.<br />

Interoperabilität<br />

Interoperabilität ist <strong>e<strong>in</strong>er</strong> der Grundsätze, der das <strong>Design</strong> von VRML bestimmt hat. Interoperabilität<br />

bedeutet, daß e<strong>in</strong>e Anwendung, <strong>die</strong> unter Verwendung des e<strong>in</strong>en Browsers<br />

entwickelt wurde, auch auf anderen Browsern ausführbar ist. Unterstützt e<strong>in</strong> Browser e<strong>in</strong><br />

Feature, und e<strong>in</strong> anderer nicht, dann ist <strong>die</strong> Anwendung trotzdem auf beiden Browsern<br />

ausführbar, wobei auf dem zweiten Browser nur <strong>die</strong>ses e<strong>in</strong>e Feature nicht funktioniert.<br />

Für <strong>die</strong> Modellierung von E<strong>in</strong>gabegeräten soll der selbe Grundsatz gelten. E<strong>in</strong>gabegeräte<br />

können mit der Zeit weiterentwickelt werden, so daß neue E<strong>in</strong>gabegeräte Features anbieten,<br />

<strong>die</strong> von e<strong>in</strong>igen VRML Browsern noch nicht unterstützt werden. Verwendet e<strong>in</strong>e<br />

Anwendung <strong>die</strong> neuen Features, muß sie trotzdem auf älteren Browsern ausführbar bleiben.<br />

Andersherum darf e<strong>in</strong> Browser auch nicht darauf bestehen, daß <strong>die</strong> <strong>in</strong> <strong>e<strong>in</strong>er</strong> Anwendung<br />

verwendete Modellierung e<strong>in</strong>es E<strong>in</strong>gabegerätes <strong>die</strong> neuen Features e<strong>in</strong>schließt.<br />

Seite 41


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

e<strong>in</strong>fache Implementierbarkeit <strong>in</strong> e<strong>in</strong>em Browser<br />

Für e<strong>in</strong>en Programmierer, der e<strong>in</strong>en existierenden VRML Browser um <strong>die</strong> Unterstützung<br />

des DeviceSensor Knoten erweitern will, soll der damit verbundene Aufwand möglichst<br />

ger<strong>in</strong>g se<strong>in</strong>. Deshalb darf ke<strong>in</strong> neues Konzept <strong>in</strong> <strong>die</strong> Sprache VRML e<strong>in</strong>geführt werden,<br />

sondern es muß auf bestehende Konzepte zurückgegriffen werden. Aufgrund der speziellen<br />

Syntax von VRML müssen Parser Wissen über <strong>die</strong> an jedem Knotentyp vorhandenen<br />

Felder und über deren Datentypen enthalten[1]. Mit dem PROTO Statement kann der<br />

Knoten, der das E<strong>in</strong>gabegerät modelliert, vor s<strong>e<strong>in</strong>er</strong> Verwendung deklariert werden.<br />

VRML Parser erhalten dadurch das nötige Wissen, das sie benötigen, um <strong>die</strong>sen Knoten<br />

zu parsen. Sie müssen daher nicht verändert werden.<br />

6.2 Überblick<br />

Der DeviceSensor basiert auf dem Proto Mechanismus und erfordert daher zur Implementierung<br />

ke<strong>in</strong>e Änderung an bestehenden Parsern <strong>für</strong> VRML Code. Durch den Rückgriff<br />

auf den Proto Mechanismus steht der volle Sprachumfang von VRML zur Modellierung<br />

e<strong>in</strong>es Gerätes zur Verfügung.<br />

Genaugenommen wird das Gerät nicht durch den DeviceSensor Knoten repräsentiert,<br />

sondern durch e<strong>in</strong>e Proto Instanz, <strong>die</strong> dem DeviceSensor als K<strong>in</strong>d Knoten im Szenengraph<br />

zugeordnet ist. Diese Proto Instanz wird im Folgenden Event Knoten genannt. Zweck des<br />

DeviceSensor Knotens ist es, das Gerät zu benennen und den Event Knoten zu aktivieren<br />

oder zu deaktivieren. Zudem kann am DeviceSensor festgelegt werden, ob der Browser<br />

selbst auf Ereignisse am Gerät reagieren bzw. eigene Information an das Gerät schicken<br />

darf. In der Szenenbeschreibung ist dem Proto ke<strong>in</strong>e Implementierung <strong>in</strong> Form von VRML<br />

Knoten zugeordnet, da <strong>die</strong> Felder des Event Knoten vom Browser gesetzt werden.<br />

DeviceSensor<br />

device "JOYSTICK"<br />

Event Knoten<br />

event<br />

eventOut SFVec2f stick<br />

eventOut SFBool button1<br />

eventOut SFBool button2<br />

Abb. 11: Typische Struktur e<strong>in</strong>es<br />

DeviceSensor Knoten<br />

Es muß <strong>für</strong> jedes Gerät, das <strong>in</strong> mehr als e<strong>in</strong>em Browser funktionieren soll, e<strong>in</strong>e Art M<strong>in</strong>istandard<br />

existieren, der den Namen des Gerätes, <strong>die</strong> möglichen Felder am Event Knoten<br />

und deren Bedeutung festlegt.<br />

Mit dem DeviceSensor können sowohl re<strong>in</strong>e E<strong>in</strong>gabegeräte als auch solche mit e<strong>in</strong>em<br />

Feedback-Kanal, oder re<strong>in</strong>e Ausgabegeräte unterstützt werden. Am Event Knoten drückt<br />

sich das durch <strong>die</strong> Art des Feldes aus. E<strong>in</strong> eventOut liefert Information über e<strong>in</strong> E<strong>in</strong>gabe-<br />

Seite 42


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

gerät an <strong>die</strong> Szene, während e<strong>in</strong> eventIn Information aus der Szene an e<strong>in</strong> Ausgabegerät<br />

sendet. 6<br />

Da DeviceSensor und Event Knoten so eng zusammen gehören, wird im Folgenden mit<br />

dem Begriff DeviceSensor (als e<strong>in</strong>geführter Begriff formatiert) beides bezeichnet, während<br />

DeviceSensor (als VRML Knoten formatiert) den Knoten an sich bezeichnet.<br />

6.3 Knoten-Spezifikati on<br />

In <strong>die</strong>sem Abschnitt wird der DeviceSensor Knoten deklariert und <strong>die</strong> Bedeutung s<strong>e<strong>in</strong>er</strong><br />

Felder spezifiziert. E<strong>in</strong>e ausführliche Diskussion wichtiger Konzepte folgt im nächsten<br />

Abschnitt.<br />

DeviceSensor<br />

{<br />

exposedField SFBool enabled TRUE<br />

field SFStr<strong>in</strong>g device "" # "device" oder "device[nummer]"<br />

field SFStr<strong>in</strong>g parameter ""<br />

exposedField SFNode event NULL<br />

exposedField SFBool disableDefault FALSE<br />

eventOut SFBool isActive<br />

}<br />

Das device Feld benennt das Gerät, das durch den DeviceSensor repräsentiert werden<br />

soll. Es enthält Str<strong>in</strong>gs wie etwa "JOYSTICK" oder "DATAGLOVE[2]". E<strong>in</strong>e optionale Zahl<br />

erlaubt <strong>die</strong> Auswahl e<strong>in</strong>es von mehreren vorhandenen gleichartigen Geräten. Beispielsweise<br />

könnte so zwischen e<strong>in</strong>em Datenhandschuh <strong>für</strong> <strong>die</strong> l<strong>in</strong>ke und e<strong>in</strong>em <strong>für</strong> <strong>die</strong> rechte<br />

Hand unterschieden werden. Ist <strong>die</strong>se Zahl nicht gegeben, wird dem Browser freigestellt,<br />

welches von den vorhandenen Geräten er dem DeviceSensor zuordnet. Jedoch muß der<br />

Browser <strong>für</strong> alle Instanzen des DeviceSensor Knoten, <strong>die</strong> das selbe Gerät benennen und<br />

ke<strong>in</strong>e Gerätenummer angeben, das selbe Gerät zuordnen.<br />

Das event Feld enthält e<strong>in</strong>e Referenz auf den Event Knoten. Dieser Event Knoten ist e<strong>in</strong>e<br />

Proto Instanz und enthält <strong>die</strong> Felder, <strong>die</strong> das Gerät beschreiben. Daten können mittels<br />

des ROUTE Statements von oder zu den Feldern des Event Knotens geroutet werden.<br />

Dadurch kann <strong>die</strong> Anwendung auf <strong>die</strong> Änderung jedes Feldes e<strong>in</strong>zeln reagieren. Nach<br />

jeder Änderung an e<strong>in</strong>em Feld des Event Knotens sendet der eventOut Teil von event <strong>die</strong><br />

Referenz auf den Event Knoten, so daß der Knoten als Ganzes <strong>in</strong> e<strong>in</strong>em Script Knoten<br />

verarbeitet werden kann.<br />

Um Mehrdeutigkeiten zu vermeiden, sollte jede DeviceSensor Instanz e<strong>in</strong>e eigene Instanz<br />

des Event Knotens enthalten, es sei denn, <strong>die</strong>s ist durch <strong>die</strong> Spezifikation <strong>für</strong> das Gerät<br />

ausdrücklich erlaubt. Diese Forderung vere<strong>in</strong>facht <strong>die</strong> Implementierung von VRML Browsern,<br />

da sonst Sonderfälle provoziert werden könnten, <strong>die</strong> e<strong>in</strong>e extra Behandlung erfordern<br />

würden.<br />

6 Diese Zuordnung sche<strong>in</strong>t auf den ersten Blick unlogisch. Macht man sich aber bewußt, daß <strong>die</strong> Anwendung<br />

e<strong>in</strong> E<strong>in</strong>gabegerät von der anderen Richtung sieht – nicht aus der Sicht des Benutzers,<br />

sondern aus der Sicht des Computers – wird klar, daß zu e<strong>in</strong>em E<strong>in</strong>gabegerät Felder mit der Funktion<br />

e<strong>in</strong>es Ausgangs gehören.<br />

Seite 43


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Mit parameter können Initialisierungsparameter an <strong>die</strong> Implementierung des Gerätes<br />

übergeben werden. Die Bedeutung <strong>die</strong>ses Feldes ist geräteabhängig. Für manche Geräte<br />

bedeutet <strong>die</strong>s e<strong>in</strong>e Auswahl an Ereignissen, <strong>die</strong> <strong>für</strong> das Gerät angezeigt werden.<br />

Ist enabled nicht gesetzt, ist der DeviceSensor <strong>in</strong>aktiv. Wenn enabled h<strong>in</strong>gegen gesetzt<br />

wird, wird der DeviceSensor <strong>in</strong> den aktiven Zustand gesetzt, falls das ihm zugeordnete<br />

Gerät vom Browser unterstützt wird und physikalisch vorhanden ist. An isActive zeigt<br />

der DeviceSensor se<strong>in</strong>en Aktivierungszustand an. Ist isActive gesetzt, ist der DeviceSensor<br />

aktiv. Mit anderen Worten ausgedrückt, erzw<strong>in</strong>gt e<strong>in</strong> nicht gesetztes enabled e<strong>in</strong>en<br />

<strong>in</strong>aktiven DeviceSensor und dadurch e<strong>in</strong> nicht gesetztes isActive, während e<strong>in</strong> gesetztes<br />

enabled den DeviceSensor, sofern möglich, aktiviert und möglicherweise e<strong>in</strong> gesetztes<br />

isActive bewirkt. Das isActive Feld sendet se<strong>in</strong>en Zustand immer dann, wenn sich der<br />

Aktivierungszustand des DeviceSensor Knoten ändert. Wenn e<strong>in</strong> Wert an enabled empfangen<br />

wird, sendet es se<strong>in</strong>en Wert auch dann, wenn <strong>die</strong>s ke<strong>in</strong>e Änderung von isActive<br />

bewirkt. Dadurch kann e<strong>in</strong> Script Knoten auf e<strong>in</strong> Fehlschlagen der Aktivierung e<strong>in</strong>es DeviceSensors<br />

reagieren. Aus ähnlichen Gründen sollte das isActive Feld auch se<strong>in</strong>en <strong>in</strong>itialen<br />

Wert senden, nachdem der Browser festgestellt hat, ob das angeforderte Gerät<br />

unterstützt werden kann.<br />

Mit dem disableDefault Feld läßt sich steuern, ob der Browser selbst das Gerät abfragen<br />

und darauf reagieren darf, z.B. um es zur <strong>Navigation</strong> zu verwenden. Ist <strong>für</strong> e<strong>in</strong> bestimmtes<br />

Gerät m<strong>in</strong>destens e<strong>in</strong> DeviceSensor <strong>in</strong> der Szene vorhanden, dessen enabled<br />

Feld und disableDefault Feld gesetzt s<strong>in</strong>d, darf der Browser an <strong>die</strong>sem Gerät gemachte<br />

E<strong>in</strong>gaben nicht mehr selbst verarbeiten. Er darf auch ke<strong>in</strong>e Ausgaben an das Gerät senden<br />

– z.B. um Force-Feedback bei Kollisionen mit Geometrie zu erzeugen. Dadurch liegt<br />

<strong>die</strong> komplette Kontrolle über das E<strong>in</strong>gabegerät beim Autor der Anwendung.<br />

6.4 Erläuterungen<br />

6.4.1 Aktivierungslogik<br />

In se<strong>in</strong>em <strong>in</strong>aktiven Zustand bleiben <strong>die</strong> Felder des Event Knotens unverändert, wenn e<strong>in</strong><br />

Ereignis im zugeordneten Gerät auftritt oder sich dessen Zustand ändert. Weder <strong>die</strong><br />

eventOut Felder am Event Knoten noch das event Feld des DeviceSensor senden Ereignisse<br />

über angeschlossene Routen. Lediglich exposedFields am Event Knoten dürfen<br />

Werte, <strong>die</strong> sie über e<strong>in</strong>e Route aus der Szene erhalten haben, an abgehenden Routen<br />

weitersenden. Enthält der Event Knoten eventIn Felder oder exposedFields, <strong>die</strong> Information<br />

an das E<strong>in</strong>gabegerät senden, werden <strong>die</strong>se Werte ignoriert.<br />

Ist der DeviceSensor jedoch aktiv, zeigen eventOut Felder am Event Knoten Zustände<br />

des zugeordneten Gerätes und dort auftretende Ereignisse an. Ändert sich e<strong>in</strong>es oder<br />

mehrere Felder am Event Knoten, so sendet anschließend auch das event Feld des<br />

DeviceSensor e<strong>in</strong>e Referenz auf den Event Knoten. Ereignisse, <strong>die</strong> über eventIn Felder<br />

und exposedFields aus der Szene empfangen werden, gibt der Browser an das Gerät<br />

weiter. S<strong>in</strong>d mehrere DeviceSensor Instanzen <strong>für</strong> e<strong>in</strong> Gerät aktiv, so senden alle Instanzen<br />

Information über das Gerät auf <strong>die</strong> hier angegebene Weise. Falls <strong>die</strong> Spezifikation <strong>für</strong><br />

e<strong>in</strong> Gerät nichts anderes vorsieht, werden bei Ausgabegeräten <strong>die</strong> Ereignisse, <strong>die</strong> über<br />

verschiedene Instanzen empfangen werden, nach den selben Regeln vere<strong>in</strong>igt, <strong>die</strong> gelten<br />

wenn alle Routen auf das selbe eventIn Feld nur e<strong>in</strong>es e<strong>in</strong>zigen DeviceSensors zeigen<br />

würden. In [1] werden <strong>die</strong>se Regeln unter dem Stichwort „Fan-In” erläutert. Im wesentlichen<br />

sagen <strong>die</strong>se Regeln aus, daß bei gleichzeitig erhaltenen Ereignissen <strong>die</strong> Resultate<br />

undef<strong>in</strong>iert s<strong>in</strong>d, und der Autor <strong>die</strong>se Situation vermeiden sollte.<br />

Seite 44


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Damit e<strong>in</strong> DeviceSensor aktiv ist, müssen folgende Bed<strong>in</strong>gungen erfüllt se<strong>in</strong>:<br />

• Das enabled Feld am DeviceSensor muß gesetzt se<strong>in</strong>.<br />

• Der Browser muß das im device Feld angegebene Gerät unterstützen.<br />

• Das Gerät muß physikalisch vorhanden se<strong>in</strong>.<br />

In dem Moment, <strong>in</strong> dem e<strong>in</strong> DeviceSensor deaktiviert wird, dürfen sich <strong>die</strong> Felder des<br />

Event Knoten nicht so ändern, daß sie den Ruhezustand des E<strong>in</strong>gabegerätes beschreiben,<br />

es sei denn, das E<strong>in</strong>gabegerät ist tatsächlich <strong>in</strong> se<strong>in</strong>em Ruhezustand. Mit Ruhezustand sei<br />

hier der Zustand des E<strong>in</strong>gabegerätes verstanden, der entsteht, wenn weder e<strong>in</strong>e Taste<br />

gedrückt ist, noch e<strong>in</strong> Be<strong>die</strong>nelement ausgelenkt ist. Diese Regel bewirkt, daß <strong>die</strong> Felder<br />

beim Übergang <strong>in</strong> den <strong>in</strong>aktiven Zustand aufhören, Werte über angeschlossene Routen zu<br />

senden und <strong>die</strong> Szene daher <strong>in</strong> dem Zustand belassen, der <strong>in</strong> dem Moment der Deaktivierung<br />

gültig war. Soll <strong>die</strong> Szene dennoch bei e<strong>in</strong>em deaktivierten DeviceSensor <strong>in</strong> e<strong>in</strong>en<br />

Ruhezustand versetzt werden, kann <strong>die</strong>s durch e<strong>in</strong>en Script Knoten erreicht werden, der<br />

das isActive Feld des DeviceSensor Knotens auswertet und gegebenenfalls entsprechende<br />

Werte an <strong>die</strong>jenigen eventIn Felder sendet, <strong>die</strong> mit den Feldern des Event Knoten<br />

verbunden s<strong>in</strong>d. Erst wenn der DeviceSensor wieder aktiviert wird, dürfen Felder am<br />

Event Knoten, <strong>die</strong> e<strong>in</strong>en Zustand des Gerätes anzeigen neuen Werte annehmen und <strong>die</strong>se<br />

<strong>in</strong> angeschlossene Routen senden.<br />

6.4.2 Standardisierung von Geräten<br />

E<strong>in</strong>es der Ziele von VRML ist, daß Autoren 3D Welten erstellen können, <strong>die</strong> von allen<br />

Browsern korrekt ausgeführt werden, auch wenn <strong>die</strong> Browser von unterschiedlichen Herstellern<br />

stammen. Dieses Ziel der Interoperabilität soll auch mit dem DeviceSensor erreicht<br />

werden.<br />

Damit e<strong>in</strong>e Szenenbeschreibung unabhängig vom verwendeten Browser auf e<strong>in</strong> Gerät<br />

zugreifen kann, müssen <strong>die</strong> Felder des Event Knoten <strong>für</strong> e<strong>in</strong> Gerät standardisiert werden.<br />

Durch <strong>die</strong> Forderung an e<strong>in</strong>en Browser, nicht unterstütze Felder am Event Knoten zu akzeptieren,<br />

und unterstützte, aber am Event Knoten fehlende Felder zu ignorieren, kann<br />

<strong>die</strong>ser „M<strong>in</strong>istandard” leicht erweitert werden.<br />

Für e<strong>in</strong>en bestimmten Gerätetyp muß festgelegt werden:<br />

• Der Name des Gerätetyps.<br />

• Die Namen und Typen der Felder am Event Knoten.<br />

• Die Bedeutung der Felder.<br />

Der Name des Gerätetyps muß e<strong>in</strong>deutig se<strong>in</strong>, da er im device Feld des DeviceSensor zur<br />

Auswahl des Gerätes <strong>die</strong>nt. Benötigt das Gerät Initialisierungsparameter, müssen <strong>die</strong>se<br />

als mögliche Werte des parameter Feldes festgelegt werden.<br />

Der Standard <strong>für</strong> e<strong>in</strong> Gerät kann <strong>für</strong> bestimmte Felder festlegen, daß <strong>die</strong>se nicht notwendigerweise<br />

von e<strong>in</strong>em Browser unterstützt werden. Zum Beispiel kann so der Gerätetyp<br />

„JOYSTICK” um e<strong>in</strong>e Schnittstelle <strong>für</strong> Force-Feedback erweitert werden, ohne daß jeder<br />

Browser <strong>die</strong>se neue Funktionalität unterstützen muß, und ohne daß da<strong>für</strong> e<strong>in</strong> eigener<br />

Gerätetyp mit eigenem Namen def<strong>in</strong>iert werden müßte.<br />

Seite 45


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Damit Browser Programmierer <strong>die</strong> Möglichkeit haben, eigene, nicht standardisierte Geräte<br />

zu implementieren, sollte e<strong>in</strong> Präfix def<strong>in</strong>iert werden, der <strong>in</strong> Namen standardisierter<br />

Geräte nicht vorkommt. Dieser könnte, z.B. <strong>in</strong> Anlehnung an <strong>die</strong> Mime Types 7 „x-” lauten.<br />

Für <strong>die</strong> Namen von Feldern am Event Knoten sollte ebenfalls e<strong>in</strong> solcher Präfix def<strong>in</strong>iert<br />

werden, damit Browser über den Standard h<strong>in</strong>ausgehende Felder def<strong>in</strong>ieren können.<br />

6.5 Diskussion<br />

In <strong>die</strong>sem Abschnitt werden e<strong>in</strong>ige Konzepte diskutiert, <strong>die</strong> e<strong>in</strong>en reibungslosen und<br />

mächtigen E<strong>in</strong>satz des Konzepts DeviceSensor ermöglichen.<br />

6.5.1 E<strong>in</strong>gabefokus <strong>in</strong> Mult itask<strong>in</strong>g Systemen<br />

Oft ist der Browser nur e<strong>in</strong>e Anwendung von vielen, <strong>die</strong> auf e<strong>in</strong>em System gleichzeitig<br />

ausgeführt werden und um <strong>die</strong> Betriebsmittel des Systems konkurrieren müssen. Solche<br />

Systeme werden Multitask<strong>in</strong>g Systeme genannt. Im Allgeme<strong>in</strong>en wird <strong>die</strong>se Konkurrenz<br />

bei Tastature<strong>in</strong>gaben dadurch gelöst, daß immer nur e<strong>in</strong>em Anwendungsfenster der sogenannte<br />

E<strong>in</strong>gabefokus zugeordnet wird. Über <strong>die</strong> Tastatur gemachte E<strong>in</strong>gaben werden<br />

vom Betriebssystem nur an das Fenster gesendet, das den E<strong>in</strong>gabefokus hat.<br />

Im S<strong>in</strong>ne e<strong>in</strong>es konsistenten und nachvollziehbaren Benutzungs<strong>in</strong>terfaces[3] sollte <strong>die</strong><br />

selbe Logik auch <strong>für</strong> 3D E<strong>in</strong>gabegeräte gelten, z.B. dann wenn auf e<strong>in</strong>em System mehrere<br />

Browser mit verschiedenen Anwendungen ausgeführt werden. Dem Browser, dem<br />

<strong>die</strong> Tastatur momentan zugeordnet ist, sollten auch alle anderen E<strong>in</strong>gabegeräte zugeordnet<br />

se<strong>in</strong>.<br />

Ausgehend von dem Gedanken, daß e<strong>in</strong>e (3D) Anwendung ohne E<strong>in</strong>gabefokus so reagieren<br />

sollte, als ob der Benutzer ke<strong>in</strong>e E<strong>in</strong>gaben machen würde, können folgende Regeln<br />

<strong>für</strong> den DeviceSensors aufgestellt werden:<br />

Verliert der Browser den E<strong>in</strong>gabefokus, dann ändert das nicht den Aktivierungszustand<br />

des DeviceSensors, er liefert aber trotzdem ke<strong>in</strong>e Benutzere<strong>in</strong>gaben an <strong>die</strong> 3D Szene<br />

weiter und ignoriert Signale von der 3D Szene an e<strong>in</strong>e Feedback-Möglichkeit im E<strong>in</strong>gabegerät.<br />

Das bedeutet, daß das isActive gesetzt bleibt, wenn <strong>die</strong> <strong>in</strong> Abschnitt 6.4.1 genannten<br />

Bed<strong>in</strong>gungen <strong>für</strong> e<strong>in</strong>en aktiven DeviceSensor zutreffen. Diejenigen Felder am<br />

Event Knoten, <strong>die</strong> den Zustand e<strong>in</strong>es Be<strong>die</strong>nelements am E<strong>in</strong>gabegerät anzeigen, nehmen<br />

jeweils den Wert an, der dem Ruhezustand des Be<strong>die</strong>nelements entspricht. Dieser<br />

Wert ist der letzte, den <strong>die</strong>se Felder <strong>in</strong> <strong>die</strong> 3D Szene senden solange der Browser ke<strong>in</strong>en<br />

E<strong>in</strong>gabefokus hat.<br />

6.5.2 Flexibilität durch Rüc kgriff auf Proto Mechanismus<br />

Der Rückgriff auf das Sprachkonstrukt des Protos beim Event Knoten macht das Konstrukt<br />

des DeviceSensors im Bezug auf Erweiterungen der Modellierung e<strong>in</strong>es Gerätes<br />

extrem flexibel, wenn erlaubt wird, daß der Event Knoten nicht alle <strong>für</strong> das Gerät vorgesehenen<br />

Felder enthalten muß, da<strong>für</strong> aber andere, nicht vorgesehen Felder enthalten<br />

darf.<br />

Da der Autor <strong>in</strong> der Szenenbeschreibung <strong>die</strong> Felder des Event Knoten mit e<strong>in</strong>em PROTO<br />

Statement deklarieren muß, dokumentiert er implizit, welche Felder er verwenden will.<br />

7 Mime Types ist e<strong>in</strong> Internet Standard, der Dateitypen benennt.<br />

Seite 46


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Der Browser muß dann nur <strong>die</strong>jenigen Werte berechnen, welche <strong>die</strong> Szene wirklich verarbeitet.<br />

Felder, <strong>die</strong> der Browser nicht unterstützt, kann er ignorieren.<br />

Wenn e<strong>in</strong> bestimmter Umfang an Feldern <strong>für</strong> e<strong>in</strong>en bestimmten Gerätetyp festgelegt<br />

wurde, und später erweitert werden soll, da z.B. der Funktionsumfang solcher Geräte<br />

wächst, so bleiben <strong>für</strong> ältere Browser geschriebene Anwendungen auch auf neueren<br />

Browsern lauffähig. Im umgekehrten Fall bleibt e<strong>in</strong>e <strong>für</strong> e<strong>in</strong>en neueren Browser geschriebene<br />

Anwendung auf e<strong>in</strong>em älteren Browser lauffähig, wenn <strong>die</strong> Anwendung den Fall<br />

berücksichtigt, daß e<strong>in</strong>ige Felder ke<strong>in</strong>e Werte liefern.<br />

Existiert ke<strong>in</strong>e def<strong>in</strong>ierte Obergrenze der Anzahl an e<strong>in</strong>em Gerät vorhandener Be<strong>die</strong>nelemente<br />

e<strong>in</strong>es bestimmten Typs, so kann <strong>die</strong>s durch Anhängen <strong>e<strong>in</strong>er</strong> Nummer an den Feldnamen<br />

gelöst werden. Beispielsweise könnten Felder button1, button2, ... genannt werden.<br />

Der Autor erwähnt <strong>in</strong> der Proto Deklaration <strong>für</strong> den Event Knoten so viele <strong>die</strong>ser<br />

Felder, wie er benutzen will, und der Browser unterstützt davon so viele, wie auf dem<br />

Gerät tatsächlich vorhanden s<strong>in</strong>d. Durch e<strong>in</strong> Feld numButtons könnte dann <strong>die</strong> Anzahl der<br />

tatsächlich vorhandenen Be<strong>die</strong>nelemente angezeigt werden.<br />

6.5.3 Methoden <strong>für</strong> den Ge rätezugriff<br />

Der DeviceSensor unterstützt zwei Methoden, um auf den Zustand e<strong>in</strong>es E<strong>in</strong>gabegerätes<br />

zuzugreifen. Man kann <strong>die</strong> Felder des Event Knotens e<strong>in</strong>zeln über Routen mit anderen<br />

Knoten verb<strong>in</strong>den, oder den Event Knoten als ganzes über nur e<strong>in</strong>e Route an e<strong>in</strong>en Script<br />

Knoten senden. Bei Ausgabegeräten ergeben sich <strong>die</strong> selben beiden Möglichkeiten, nur <strong>in</strong><br />

umgekehrter Richtung. Je nach Typ des E<strong>in</strong>gabegerätes kann <strong>die</strong> Ausrichtung des Event<br />

Knoten <strong>für</strong> e<strong>in</strong>e von beiden Methoden naheliegender se<strong>in</strong>.<br />

DeviceSensor<br />

device "JoyStick"<br />

event<br />

Event Knoten<br />

button1Time<br />

button2Time<br />

stick<br />

TimeSensor<br />

startTime<br />

Script<br />

next<br />

direction<br />

DeviceSensor<br />

device "SpaceMouse"<br />

event<br />

Event Knoten<br />

position<br />

rotation<br />

buttonBits<br />

Script<br />

event<br />

a) b)<br />

Abb. 12: Zugriff a) auf e<strong>in</strong>zelne Felder, oder b) auf den Event Knoten als Ganzes<br />

Bei der Methode a), welche <strong>die</strong> Felder des Event Knotens e<strong>in</strong>zeln mit den Feldern anderer<br />

Knoten zu verb<strong>in</strong>det, kann <strong>die</strong> Anwendung auf Änderungen der Werte e<strong>in</strong>zelner Felder<br />

spezifischer reagieren, da der empfangende Knoten nicht nur Information über den Zustand<br />

der Felder erhält, sondern auch darüber, wann sich welches Feld ändert. Eventuell<br />

kann e<strong>in</strong> Script Knoten sogar ganz überflüssig werden, wenn <strong>die</strong> Datentypen der Felder<br />

des Event Knoten mit denen der Felder anderer Knoten übere<strong>in</strong>stimmen. Zwischengeschaltete<br />

Interpolator Knoten 8 können den Wertebereich anpassen, oder nichtl<strong>in</strong>eare<br />

8 Interpolator Knoten realisieren stückweise stetige Kennl<strong>in</strong>ien, <strong>die</strong> e<strong>in</strong>en e<strong>in</strong>dimensionalen Wertebereich<br />

<strong>in</strong> e<strong>in</strong>en anderen e<strong>in</strong>- oder mehrdimensionalen Wertebereich transformieren. Der Zielwertebereich<br />

kann <strong>e<strong>in</strong>er</strong> der VRML Datentypen SFFloat, SFVec3f, SFRotation, SFColor, MFVec3f se<strong>in</strong>.<br />

Interpolator Knoten werden hauptsächlich bei Key Frame Animationen e<strong>in</strong>gesetzt.<br />

Seite 47


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Übertragungskennl<strong>in</strong>ien realisieren. E<strong>in</strong> Nachteil <strong>die</strong>ser Methode ist, daß möglikcherweise<br />

viele Routen nötig s<strong>in</strong>d, um e<strong>in</strong>en Event Knoten mit e<strong>in</strong>em Script Knoten zu verb<strong>in</strong>den.<br />

Methode b), den Event Knoten als Ganzes an e<strong>in</strong>en Script Knoten zu senden, wenn sich<br />

e<strong>in</strong>es s<strong>e<strong>in</strong>er</strong> Felder geändert hat, hat <strong>die</strong>sen Nachteil nicht. Da hier <strong>die</strong> Information<br />

mehrerer Felder auf e<strong>in</strong>mal übertragen wird, kann so komplexere Information co<strong>die</strong>rt<br />

werden. Möglicherweise kann e<strong>in</strong> type Feld angeben, welche Art von Ereignis im E<strong>in</strong>gabegerät<br />

aufgetreten ist, und implizit ausdrücken, welche Felder des Event Knoten gültig<br />

s<strong>in</strong>d. Der empfangende Script Knoten erhält Information über <strong>die</strong> genaue Reihenfolge<br />

<strong>die</strong>ser Ereignisse und kann e<strong>in</strong>e Programmstruktur ähnlich der Dialogfunktion <strong>in</strong> 2D GUI<br />

basierten Anwendungen aufbauen. Die Dialogfunktion ist <strong>in</strong> 2D GUI Systemen <strong>die</strong> Funktion,<br />

an <strong>die</strong> das Betriebssystem Nachrichten über Benutzere<strong>in</strong>gaben oder Systemmeldungen<br />

sendet. Erhält e<strong>in</strong> Script Knoten Ereignisse, <strong>die</strong> er nicht selbst verarbeitet, kann er<br />

sie auf e<strong>in</strong>fache Weise an andere Knoten übergeben.<br />

6.5.4 DeviceSensor als b<strong>in</strong> dbarer Knoten<br />

Der DeviceSensor wurde so gestaltet, daß zu e<strong>in</strong>em bestimmten Gerät mehr als e<strong>in</strong> DeviceSensor<br />

existieren und zur selben Zeit aktiv se<strong>in</strong> können. Dieser Sachverhalt wird im<br />

Folgenden mit kooperativer DeviceSensor umschrieben. Die Alternative zu <strong>die</strong>sem Konzept<br />

wäre, den DeviceSensor zu e<strong>in</strong>em b<strong>in</strong>dbaren Knoten zu machen, d.h. e<strong>in</strong>en Stack<br />

mit allen DeviceSensor Knoten anzulegen, und nur denjenigen Knoten zu aktivieren, der<br />

sich an oberster Stelle des Stacks bef<strong>in</strong>det. Beide Konzepte unterstützen <strong>die</strong> Modularisierung<br />

von VRML Code auf ihre eigene Art und Weise:<br />

E<strong>in</strong> b<strong>in</strong>dbarer DeviceSensor würde es erlauben, e<strong>in</strong>e Welt zu modellieren, <strong>die</strong> <strong>in</strong> <strong>e<strong>in</strong>er</strong><br />

größeren Welt e<strong>in</strong>gebettet ist, und im S<strong>in</strong>ne wiederverwendbarer Softwaremodule ke<strong>in</strong><br />

Wissen über <strong>die</strong> enthaltende Welt verfügt. Etwa e<strong>in</strong> Gebäude, das man betreten kann,<br />

<strong>in</strong>nerhalb <strong>e<strong>in</strong>er</strong> Stadt. Wenn der Benutzer das Gebäude betritt, wird e<strong>in</strong> dem Gebäude<br />

zugeordneter DeviceSensor gebunden, der Teil des Gebäude Modells ist. Dadurch würde<br />

<strong>die</strong>ser Benutzere<strong>in</strong>gaben an e<strong>in</strong> Script senden, welches e<strong>in</strong>en an <strong>die</strong> Gegebenheiten enger<br />

Räume angepaßten <strong>Navigation</strong>smodus implementiert. Außerhalb des Gebäudes würde<br />

e<strong>in</strong> anderer DeviceSensor als Teil des Stadtmodells auf <strong>die</strong> gleiche Weise e<strong>in</strong> Script<br />

versorgen, das e<strong>in</strong>e <strong>für</strong> weiträumiges Gelände besser taugliche <strong>Navigation</strong> implementiert.<br />

Auf <strong>die</strong> gleiche Weise könnte mit e<strong>in</strong>em b<strong>in</strong>dbaren DeviceSensor <strong>die</strong> Funktionen bestimmter<br />

Be<strong>die</strong>nelemente auf dem E<strong>in</strong>gabegerät geändert werden. Beispielsweise schaltet<br />

e<strong>in</strong> bestimmter Knopf <strong>in</strong>nerhalb des Gebäudes das Licht e<strong>in</strong> und aus, und außerhalb<br />

des Gebäudes <strong>die</strong>nt er zum Anhalten e<strong>in</strong>es Taxis, das e<strong>in</strong>e Metapher zum schnellen<br />

Sprung an entfernte Orte darstellt. Das Modell des Gebäudes könnte das Umschalten auf<br />

den eigenen DeviceSensor beim Betreten und das Zurückschalten auf den vorherigen<br />

DeviceSensor – sofern vorher <strong>e<strong>in</strong>er</strong> gebunden war – selbst übernehmen, ohne daß es<br />

Zugriff auf den externen DeviceSensor haben müßte, denn <strong>die</strong>s würde bedeuten, daß das<br />

Gebäudemodell Wissen über das Modell der Stadt verfügen würde.<br />

Mit e<strong>in</strong>em b<strong>in</strong>dbaren DeviceSensor würde das Gebäudemodell lediglich den eigenen<br />

DeviceSensor auf den Stack legen wenn der Benutzer das Gebäude betritt und ihn wieder<br />

vom Stack nehmen, wenn der Benutzer das Gebäude wieder verläßt. Die Logik des<br />

Stacks würde dann den DeviceSensor des Stadtmodells wieder aktivieren, da <strong>die</strong>ser an<br />

<strong>die</strong> oberste Stelle des Stacks gerutscht wäre.<br />

Sollte der DeviceSensor e<strong>in</strong> b<strong>in</strong>dbarer Knoten se<strong>in</strong>, so würde das bedeuten, daß, anders<br />

als bei anderen b<strong>in</strong>dbaren Knoten, e<strong>in</strong> eigener Stack <strong>für</strong> jedes durch e<strong>in</strong>en DeviceSensor<br />

verwendete Gerät existieren müßte. Bei nur e<strong>in</strong>em Stack <strong>für</strong> alle DeviceSensoren könnte<br />

beispielsweise das B<strong>in</strong>den e<strong>in</strong>es mit e<strong>in</strong>em Joystick verknüpften DeviceSensor e<strong>in</strong>en mit<br />

<strong>e<strong>in</strong>er</strong> Spacemouse verknüpften DeviceSensor deaktivieren. Das Konzept mehrerer Stacks<br />

Seite 48


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

würde nicht nur <strong>die</strong> Implementierung im Browser komplexer gestalten, da <strong>die</strong> Stacks<br />

dynamisch während des Parsens der Szene generiert werden müßten, es würde auch das<br />

Sprachkonstrukt des DeviceSensors schwerer verständlich machen.<br />

Zudem ist <strong>die</strong> Stack-Logik <strong>für</strong> bestimmte Arten von E<strong>in</strong>gabegeräten nicht angebracht. Hat<br />

e<strong>in</strong>e Szene mehrere Be<strong>die</strong>nelemente, <strong>die</strong> alphanumerische E<strong>in</strong>gaben von <strong>e<strong>in</strong>er</strong> Tastatur<br />

erwarten, und ist jedes Be<strong>die</strong>nelement als eigenständiges Softwaremodul <strong>in</strong> e<strong>in</strong>em eigenen<br />

Proto realisiert, dann würde auch jedes Be<strong>die</strong>nelement se<strong>in</strong>e eigene Instanz des DeviceSensors<br />

besitzen. In <strong>die</strong>sem Fall deckt sich <strong>die</strong> Stack-Logik e<strong>in</strong>es b<strong>in</strong>dbaren Device-<br />

Sensors nicht mit der bei konventionellen, graphischen Benutzungsoberflächen üblichen,<br />

und als zweckmäßig erachtete Logik <strong>für</strong> den E<strong>in</strong>gabefokus (Der E<strong>in</strong>gabefokus legt fest,<br />

welches Be<strong>die</strong>nelement Tastature<strong>in</strong>gaben erhält): E<strong>in</strong> Be<strong>die</strong>nelement, das aktiviert wird,<br />

würde se<strong>in</strong>en DeviceSensor auf den Stack legen, und dadurch e<strong>in</strong>en eventuell vorher<br />

aktiven DeviceSensor deaktivieren, so daß <strong>die</strong>ses Be<strong>die</strong>nelement <strong>in</strong> korrekter Weise den<br />

E<strong>in</strong>gabefokus erhält. Wenn aber e<strong>in</strong> Be<strong>die</strong>nelement explizit deaktiviert wird, worauf es<br />

se<strong>in</strong>en DeviceSensor vom Stack nimmt, dann würde durch <strong>die</strong> Stack-Logik, das vorher<br />

aktive Be<strong>die</strong>nelement den E<strong>in</strong>gabefokus wiedererlangen. Dies würde der Benutzer nicht<br />

erwarten. Korrekt wäre, daß <strong>in</strong> <strong>die</strong>sem Fall der E<strong>in</strong>gabefokus ke<strong>in</strong>em Be<strong>die</strong>nelement wird.<br />

Das Konzept des kooperativen DeviceSensors unterstützt e<strong>in</strong>e andere Form von Modularisierung<br />

als <strong>die</strong>s bei e<strong>in</strong>em b<strong>in</strong>dbaren Knoten der Fall ist: Vone<strong>in</strong>ander unabhängige Module<br />

können bestimmte Teile des E<strong>in</strong>gabegerätes verarbeiten. Bei e<strong>in</strong>em Joystick könnte<br />

z.B. e<strong>in</strong> Proto mit se<strong>in</strong>em DeviceSensor <strong>die</strong> Auslenkung des Knüppels abfragen und zur<br />

<strong>Navigation</strong> verwenden, während e<strong>in</strong> anderer, unabhängiger Proto mit se<strong>in</strong>em gleichzeitig<br />

aktiven DeviceSensor <strong>die</strong> Zustände der Feuerknöpfe abfrägt und damit das Abfeuern von<br />

Waffen auslöst. Bei <strong>e<strong>in</strong>er</strong> alphanumerischen Tastatur könnte e<strong>in</strong> DeviceSensor zur E<strong>in</strong>gabe<br />

von Chat Text <strong>die</strong>nen, während e<strong>in</strong> anderer DeviceSensor <strong>in</strong> e<strong>in</strong>em unabhängigen<br />

Programmodul den numerischen Tastenblock zur <strong>Navigation</strong> verwendet.<br />

Mit dem kooperativen DeviceSensor ergibt sich zudem <strong>die</strong> Möglichkeit, den Stack Mechanismus<br />

zu emulieren. Macht man es zu <strong>e<strong>in</strong>er</strong> Konvention, <strong>in</strong> <strong>e<strong>in</strong>er</strong> Anwendung das enabled<br />

Feld mit dem isBound eventOut e<strong>in</strong>es bestimmten b<strong>in</strong>dbaren Knotentyps durch<br />

e<strong>in</strong>e Route zu verb<strong>in</strong>den, dann wäre immer nur derjenige DeviceSensor aktiv, der mit<br />

dem gerade gebundenen b<strong>in</strong>dbaren Knoten verknüpft ist. Als b<strong>in</strong>dbarer Knoten bietet<br />

sich <strong>die</strong> <strong>Navigation</strong>Info an.<br />

E<strong>in</strong> dedizierter Stack Knoten wäre e<strong>in</strong>e s<strong>in</strong>nvolle Erweiterung <strong>für</strong> den VMRL Standard, da<br />

<strong>die</strong>ser Knoten <strong>für</strong> den DeviceSensor Stack-Logik verfügbar macht, ohne <strong>die</strong>s zu erzw<strong>in</strong>gen.<br />

Dieser Knoten hätte e<strong>in</strong> Feld field SFStr<strong>in</strong>g name, das e<strong>in</strong>en Namen <strong>für</strong> e<strong>in</strong>en Stack<br />

def<strong>in</strong>iert. Zusätzlich besitzt der Knoten <strong>die</strong> <strong>für</strong> e<strong>in</strong>en b<strong>in</strong>dbaren Knoten üblichen Felder<br />

eventIn SFBool set_b<strong>in</strong>d und eventOut SFBool isActive. Der Browser würde <strong>für</strong> jeden<br />

genannten Namen e<strong>in</strong>en Stack anlegen, <strong>in</strong> dem alle Stack Knoten, <strong>die</strong> den selben Namen<br />

nennen, verwaltet würden. Dieser Mechanismus wäre viel mächtiger, als e<strong>in</strong> b<strong>in</strong>dbarer<br />

DeviceSensor, denn der Stack Knoten könnte auch <strong>die</strong> Aktivierung anderer Knoten als <strong>die</strong><br />

des DeviceSensors regulieren, z.B. <strong>die</strong> von Script Knoten, <strong>die</strong> e<strong>in</strong>e bestimmte Art von<br />

Aufgaben erlegen. Ferner könnten andere Knotentypen andere Regeln implementieren –<br />

z.B. <strong>die</strong> der Logik <strong>für</strong> den E<strong>in</strong>gabefokus – und mit dem DeviceSensor verknüpft werden.<br />

Seite 49


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

6.6 Typische Geräte un d deren Implementierung<br />

Dieser Abschnitt diskutiert e<strong>in</strong>ige Besonderheiten des dem DeviceSensor zugrunde liegenden<br />

Ansatzes anhand von vier ausgesuchten Beispielen, <strong>für</strong> <strong>die</strong> e<strong>in</strong>e Repräsentation<br />

als DeviceSensor programmiert wurde.<br />

6.6.1 Implementierung der Basisfunktionalität<br />

Die Implementierung des generischen Teils des DeviceSensors wurde <strong>in</strong> Form <strong>e<strong>in</strong>er</strong> erweiterbaren<br />

Architektur realisiert. Nur <strong>die</strong> Implementierung <strong>für</strong> das Gerät „STANDARD”,<br />

das Maus und Tastatur vere<strong>in</strong>igt, ist aus technischen Gründen im Browser blaxxun Contact<br />

selbst implementiert. Die Implementierungen aller anderen Geräte s<strong>in</strong>d nachladbare<br />

Module nach dem COM[32] Standard. Dadurch können auch andere Programmierer dem<br />

Browser Unterstützung <strong>für</strong> e<strong>in</strong> E<strong>in</strong>gabegerät h<strong>in</strong>zufügen.<br />

Der generische Teil der DeviceSensor Implementierung wertet <strong>die</strong> Felder am DeviceSensor<br />

Knoten aus, und sendet Änderungen an das Erweiterungsmodul. Wenn e<strong>in</strong> Device-<br />

Sensor aktiviert werden soll, wertet der Browser das device Feld aus und stellt fest, ob<br />

e<strong>in</strong> entsprechendes Modul auf dem Rechner <strong>in</strong>stalliert ist. Ist das der Fall, wird es geladen<br />

und bekommt den Wert des evenType Feldes und e<strong>in</strong>e Referenz auf den Event Knoten<br />

mitgeteilt. Anschließend wird e<strong>in</strong>e Methode des Moduls <strong>in</strong> jedem Simulationsschritt aufgerufen,<br />

so daß das Modul Rechenzeit erhält.<br />

Die Referenz auf den Event Knoten verwendet das Modul dann, um herauszuf<strong>in</strong>den, welche<br />

Felder am Event Knoten tatsächlich vorhanden s<strong>in</strong>d, und um <strong>die</strong>se entsprechend der<br />

Benutzere<strong>in</strong>gaben am E<strong>in</strong>gabegerät zu setzen. Handelt es sich um e<strong>in</strong> E<strong>in</strong>gabegerät mit<br />

Feedback-Möglichkeit wird mit Hilfe der Referenz auf den Event Knoten auf Signale aus<br />

der Szene reagiert und <strong>die</strong>se an das E<strong>in</strong>gabegerät weitergegeben. Die Kommunikation<br />

mit den Feldern des Event Knoten basiert auf der im VRML Standard def<strong>in</strong>ierten Schnittstelle<br />

EAI, <strong>die</strong> im verwendeten Browser schon vorhanden war. Genauere Details über <strong>die</strong><br />

der Implementierung der dem DeviceSensor zugrunde liegenden Erweiterungsarchitektur<br />

können unter [24] nachgelesen werden. Anhang D enthält e<strong>in</strong>e Kopie <strong>die</strong>ses Dokuments.<br />

6.6.2 Spacemouse<br />

Die Spacemouse ist e<strong>in</strong> speziell <strong>für</strong> 3D Anwendungen entwickeltes E<strong>in</strong>gabegerät[25]. Sie<br />

besteht aus <strong>e<strong>in</strong>er</strong> federnd gelagerten Kappe, <strong>die</strong> vom Benutzer <strong>in</strong> allen sechs Freiheitsgraden<br />

des dreidimensionalen Raumes ausgelenkt werden können. Das Gerät mißt <strong>die</strong><br />

Stärke <strong>die</strong>ser Auslenkung <strong>in</strong> Form dreier translatorischer Werte und dreier Drehw<strong>in</strong>kel um<br />

<strong>die</strong> Hauptachsen des Gerätes. Zusätzlich bef<strong>in</strong>den sich auf der Spacemouse je nach Ausprägung<br />

bis zu elf Druckknöpfe. Die Auslenkungen werden mit sehr hoher Präzision gemessen<br />

und als Verhältnis zur Maximalen Auslenkung angegeben.<br />

Abb. 13: Spacemouse<br />

Die Spacemouse ist <strong>in</strong> <strong>die</strong> Kategorie der relativen E<strong>in</strong>gabegeräte e<strong>in</strong>zuordnen, da sie nur<br />

Richtungen, aber ke<strong>in</strong>e absoluten Position beschreibt.<br />

Seite 50


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Modellierung und Diskussion<br />

Soll <strong>die</strong> Spacemouse mit e<strong>in</strong>em DeviceSensor modelliert werden, ist folgendes Interface<br />

<strong>für</strong> den Event Knoten zu empfehlen:<br />

PROTO SixDOF<br />

[<br />

eventOut SFVec3f position<br />

eventOut SFRotation rotation<br />

eventOut SFVec3f rotationYPR<br />

eventOut SFBool button1<br />

eventOut SFBool button2<br />

... ... ...<br />

eventOut SFTime button1Time<br />

eventOut SFTime button2Time<br />

... ... ...<br />

eventOut SFInt32 buttonBits<br />

eventOut SFInt32 numButtons<br />

] {}<br />

Die <strong>in</strong> sechs Freiheitsgraden möglichen Auslenkungen werden <strong>in</strong> den Feldern position<br />

und rotation angezeigt. Der an position signalisierte Wert ist e<strong>in</strong> Vektor mit drei Komponenten<br />

im Wertebereich [-1 .. +1] und gibt <strong>die</strong> translatorische Auslenkung der Kappe<br />

als Verhältnis zur maximalen Auslenkung an. Das Feld rotation h<strong>in</strong>gegen gibt <strong>die</strong> rotatorische<br />

Auslenkung <strong>in</strong> Achse-W<strong>in</strong>kel Form an. Die Drehachse der Auslenkung wird als<br />

Normalenvektor repräsentiert, und der Drehw<strong>in</strong>kel wird als Verhältnis zur maximalen<br />

Auslenkung im Wertebereich [-1 .. +1] angegeben.<br />

Bei rotation ist der verwendete Datentyp SFRotation zwar derjenige, der <strong>in</strong> VRML typischerweise<br />

zur Beschreibung von Rotationen verwendet wird, aber <strong>für</strong> e<strong>in</strong>ige Berechnungen<br />

wäre e<strong>in</strong>e komponentenweise Darstellung der Drehw<strong>in</strong>kel um <strong>die</strong> drei Achsen praktikabler.<br />

Aus <strong>die</strong>sem Grund werden <strong>die</strong>se Komponenten an rotationYPR angezeigt. Da es<br />

sich nicht um W<strong>in</strong>kel, sondern um Verhältnisse zu <strong>e<strong>in</strong>er</strong> sehr ger<strong>in</strong>gen Maximalauslenkung<br />

handelt, gilt folgende Beziehung:<br />

rotation = (Axis, Angle), mit<br />

Axis = rotationYPR 0<br />

Angle = ||rotationYPR||<br />

Die Druckknöpfe auf der Spacemouse werden durch je e<strong>in</strong> boolsches eventOut Feld der<br />

Form buttonN dargestellt, wobei N e<strong>in</strong>e ganze Zahl ist. Es sei M <strong>die</strong> Anzahl der tatsächlich<br />

auf dem Gerät vorhandenen Knöpfe. Dann s<strong>in</strong>d nur <strong>die</strong> Felder button1 bis buttonM<br />

aktiv, <strong>die</strong> Felder ab buttonM+1 bleiben stumm. Es werden über <strong>die</strong>se Felder nur dann<br />

Werte an <strong>die</strong> Szene gesendet, wenn <strong>die</strong>se sich ändern. Der Wert TRUE bedeutet, daß e<strong>in</strong><br />

Knopf gedrückt wurde, und FALSE kennzeichnet das Loslassen e<strong>in</strong>es Knopfes. Mit <strong>die</strong>sen<br />

Feldern kann mit e<strong>in</strong>em Script auf e<strong>in</strong>e Änderung jedes e<strong>in</strong>zelnen Knopfes reagiert werden.<br />

Es ist aber auch möglich, <strong>die</strong>se Felder direkt an e<strong>in</strong>en anderen Knoten mit e<strong>in</strong>em<br />

boolschen eventIn zu routen. Am Feld numButtons wird <strong>die</strong> Anzahl M der vorhandenen<br />

Knöpfe angezeigt. Dieses Feld sendet se<strong>in</strong>en Wert nur <strong>in</strong> der Initialisierungsphase des<br />

DeviceSensors, d.h. wenn das enabled Feld den Wert TRUE erhält.<br />

Da zu erwarten ist, daß häufig Animationen mit e<strong>in</strong>em Druckknopf ausgelöst werden, und<br />

da <strong>die</strong>se über e<strong>in</strong> Feld vom Typ SFTime angestoßen werden müssen, existieren <strong>die</strong> Felder<br />

buttonNTime. Diese senden <strong>die</strong> aktuelle Zeit, wenn ihre zugehörigen Druckknöpfe gedrückt<br />

werden. Sie senden jedoch nicht, wenn der Druckknopf wieder losgelassen wird.<br />

Seite 51


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Ist <strong>für</strong> e<strong>in</strong>e Anwendung nur der Zustand e<strong>in</strong>iger Knöpfe wichtig, kann mit buttonBits e<strong>in</strong><br />

Bitmuster der Zustände aller Knöpfe abgefragt werden, ohne daß e<strong>in</strong>e Vielzahl von Routen<br />

angelegt werden muß.<br />

Es zeigt sich hier, daß e<strong>in</strong>e Vielzahl von Feldern <strong>für</strong> den Event Knoten nötig wird, wenn<br />

der Event Knoten so gestaltet wird, daß er bequem verwendet werden kann, d.h. wenn<br />

e<strong>in</strong> dazwischen geschalteter Script Knoten möglichst vermieden werden soll. Dies ist<br />

jedoch ke<strong>in</strong>e Schwäche des DeviceSensor Ansatzes, sondern e<strong>in</strong>e von VRML an sich. E<strong>in</strong>e<br />

angebrachte Lösung wäre hier e<strong>in</strong>e Erweiterung des ROUTE Statements z. B um arithmetische<br />

Ausdrücke, so daß Typkonvertierungen ohne Zwischenknoten möglich wären. Dieser<br />

Ansatz würde <strong>die</strong> Mächtigkeit von VRML generell erhöhen, und dessen Lesbarkeit und<br />

bequeme Nutzung steigern. Die Wirkung der buttonNTime Felder könnte dann durch folgendes<br />

ROUTE Statement erzeugt werden:<br />

ROUTE timestamp(SM.button3) TO Anim.startTime IF SM.button3 == TRUE<br />

Anwendungsbereich<br />

Ursprünglich <strong>für</strong> <strong>die</strong> Fernsteuerung von Raumfahrzeugen an der DLRG (Deutsche Luft<br />

und Raumfahrtgesellschaft) entwickelt, wird <strong>die</strong> Spacemouse vorwiegend im CAD Bereich<br />

(Computer Aided <strong>Design</strong>) und zur Modellierung von 3D Objekten verwendet. Hier bietet<br />

sie geübten Anwendern e<strong>in</strong> exzellentes Werkzeug, um Objekte <strong>in</strong> allen Freiheitsgraden zu<br />

bewegen, oder um auf e<strong>in</strong>fache Weise das Modell aus allen Richtungen betrachten zu<br />

können. Wegen ihres durch <strong>die</strong> präzise Technik verursachten hohen Preises hat sich <strong>die</strong>ses<br />

E<strong>in</strong>gabegerät im Konsumerbereich nicht durchgesetzt.<br />

Implementierung<br />

Es liegt e<strong>in</strong>e Implementierung <strong>die</strong>ses Event Knotens <strong>für</strong> <strong>die</strong> Spacemouse vor. Jedoch<br />

werden <strong>die</strong> Felder buttonNTime aus Zeitgründen nicht unterstützt.<br />

Es hat sich bei dem Versuch, e<strong>in</strong> Objekt mit der Spacemouse zu bewegen, gezeigt, daß<br />

obwohl <strong>die</strong> Achse-W<strong>in</strong>kel Form <strong>die</strong> <strong>in</strong> VRML native Form der Repräsentation von Rotationen<br />

ist, <strong>die</strong> separierten W<strong>in</strong>kel von rotationYPR leichter <strong>in</strong> andere Koord<strong>in</strong>atensysteme<br />

transformiert werden können. Es kann auf rotationYPR <strong>die</strong> selbe Matrix-Vektor Multiplikation<br />

angewendet werden, <strong>die</strong> position von e<strong>in</strong>em Koord<strong>in</strong>atensystem <strong>in</strong> e<strong>in</strong> anderes<br />

transformiert.<br />

6.6.3 Joystick<br />

Unter dem Begriff Joystick wird <strong>die</strong> vermutlich vielfältigste Gruppe von E<strong>in</strong>gabegeräten<br />

zusammengefaßt. Es soll daher nur e<strong>in</strong>e m<strong>in</strong>imale Knotenbeschreibung gegeben werden,<br />

da<strong>für</strong> wird e<strong>in</strong>e Möglichkeit aufgezeigt, wie <strong>die</strong> <strong>für</strong> <strong>die</strong>se Geräte typische Art, Rückkopplung<br />

an den Benutzer zu geben, modelliert werden könnte.<br />

Joysticks gibt es <strong>in</strong> allen Variationen <strong>für</strong> nur wenig Geld zu kaufen, da <strong>die</strong>se durch den<br />

Markt an Computerspielen weite Verbreitung f<strong>in</strong>den. E<strong>in</strong>fache Joysticks bestehen aus<br />

e<strong>in</strong>em Knüppel, der <strong>in</strong> zwei Achsen ausgelenkt werden kann, und aus zwei oder vier<br />

Druckknöpfen. Komplexere Ausprägungen s<strong>in</strong>d <strong>in</strong> der Bauform e<strong>in</strong>em Steuerknüppel e<strong>in</strong>es<br />

bestimmten Flugzeugtyps nachempfunden, und bestehen aus <strong>e<strong>in</strong>er</strong> Vielzahl von Be<strong>die</strong>nelementen,<br />

zu denen e<strong>in</strong> „Hat Switch” <strong>für</strong> <strong>die</strong> Wahl der Blickrichtung unabhängig von<br />

der Bewegungsrichtung, entriegelbare Feuerknöpfe, und diverse Schieberegler, z.B. <strong>für</strong><br />

<strong>die</strong> Schubregelung, zählen. Andere Geräte s<strong>in</strong>d an <strong>die</strong> Domäne der Fahrsimulationen angelehnt<br />

und bestehen aus e<strong>in</strong>em Lenkrad mit Ganghebel, und Pedalen <strong>für</strong> Kupplung,<br />

Bremse, Gas. Das „Gamepad”[33] ist e<strong>in</strong>e Be<strong>die</strong>ne<strong>in</strong>heit, <strong>die</strong> anstelle e<strong>in</strong>es Steuerknüppels<br />

über vier Taster zur Richtungssteuerung verfügt. Weitere Tasten <strong>die</strong>nen zum Auslösen<br />

von Programmfunktionen.<br />

Seite 52


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Aufwendige Joysticks verfügen über e<strong>in</strong>e Möglichkeit, dem Benutzer Rückkopplung zu<br />

geben. Diese wird oft durch Motoren realisiert, <strong>die</strong> über e<strong>in</strong> Getriebe e<strong>in</strong>e Kraft auf den<br />

Knüppel ausüben. Durch Komb<strong>in</strong>ation zweier orthogonal angeordneter Motoren kann <strong>die</strong><br />

Richtung der erzeugten Kraft kontrolliert werden. Das „Rumblepad”[34] besteht aus zwei<br />

Motoren mit je <strong>e<strong>in</strong>er</strong> Unwucht, deren Drehungen getrennt vone<strong>in</strong>ander gesteuert werden<br />

können. Dadurch lassen sich Vibrationen erzielen. Aufgrund der Realisierungsform mit<br />

Motoren können zwar ke<strong>in</strong>e genauen taktilen Reize wiedergegeben werden, da<strong>für</strong> s<strong>in</strong>d<br />

<strong>die</strong>se Geräte auf dem Konsumermarkt erhältlich.<br />

Modellierung und Diskussion<br />

Die folgende Proto Deklaration beschreibt den Event Knoten <strong>für</strong> e<strong>in</strong>en Joystick, von dem<br />

nur m<strong>in</strong>imale E<strong>in</strong>gabemöglichkeiten erwartet werden, der aber e<strong>in</strong>e Möglichkeit <strong>für</strong> Force-<br />

Feedback besitzt.<br />

PROTO JoyStick<br />

[<br />

eventOut SFVec2f stick<br />

eventOut SFBool button1<br />

eventOut SFBool button2<br />

eventOut SFTime button1Time<br />

eventOut SFTime button2Time<br />

field MFStr<strong>in</strong>g FF_url<br />

eventIn SFStr<strong>in</strong>g FF_effect<br />

eventIn SFVec2f FF_amplitude<br />

] {}<br />

Mit den ersten fünf Feldern wird der klassische Joystick mit zwei Freiheitsgraden und zwei<br />

Feuerknöpfen modelliert. Für stick gilt der Wertebereich [-1 .. +1]. Alle mit button beg<strong>in</strong>nenden<br />

Felder s<strong>in</strong>d <strong>in</strong> Abschnitt 6.6.2 s<strong>in</strong>ngemäß beschrieben.<br />

Die Steuerung des Drehmoments der Motoren e<strong>in</strong>es Joysticks geschieht <strong>in</strong> Form von Effekten,<br />

<strong>die</strong> <strong>in</strong> das Gerät h<strong>in</strong>untergeladen und dann ausgelöst werden. E<strong>in</strong> Effekt kann<br />

e<strong>in</strong>e abzuspielende Wellenform se<strong>in</strong>, etwa e<strong>in</strong>e Sägezahn Schw<strong>in</strong>gung, oder e<strong>in</strong> Satz Parameter<br />

<strong>für</strong> e<strong>in</strong>e Differentialgleichung. Während mit der Wellenform Vibrationen erzeugt<br />

werden, erzeugen <strong>die</strong> Parameter der Differentialgleichung <strong>die</strong> Effekte von Reibung,<br />

Dämpfung und Trägheit. Dieser Mechanismus wird im Zusammenhang mit Joysticks als<br />

Force-Feedback bezeichnet.<br />

Die mit FF_ beg<strong>in</strong>nenden Felder der Art eventIn werden <strong>in</strong> folgender Weise benutzt, um<br />

derartige Effekte zu erzeugen: Das FF_url Feld enthält e<strong>in</strong>en Verweis auf <strong>die</strong> entsprechende<br />

Effekt Dateien. Der Browser lädt <strong>die</strong>se Dateien auf den lokalen Rechner herunter,<br />

so daß <strong>die</strong> Effekte zur Verfügung stehen, wenn sie ausgelöst werden sollen. In jeder <strong>die</strong>ser<br />

Dateien s<strong>in</strong>d e<strong>in</strong> oder mehrere Effekte enthalten, denen jeweils e<strong>in</strong> Name zugeordnet<br />

ist. Erhält der Event Knoten am FF_effect e<strong>in</strong>en Str<strong>in</strong>g mit e<strong>in</strong>em gültigen Effektnamen,<br />

so wird <strong>die</strong>ser Effekt <strong>in</strong> den Joystick h<strong>in</strong>untergeladen und ausgelöst. Werte, <strong>die</strong> an<br />

FF_amplitude empfangen werden, geben <strong>die</strong> aktuelle Amplitude des Effektes <strong>in</strong> den beiden<br />

möglichen Richtungen an.<br />

Anwendungsbereich<br />

Joysticks werden hauptsächlich <strong>für</strong> Computerspiele verwendet, da mit ihnen <strong>die</strong> Spielerfigur<br />

sehr leicht durch <strong>die</strong> Welt des Spieles gesteuert werden kann und Aktionen leicht und<br />

schnell ausgelöst werden können. Das galt schon zu Zeiten, als Spiele noch auf 2D Grafik<br />

basierten. Gerade wegen <strong>die</strong>ser Echtzeitfähigkeit stellt der Joystick e<strong>in</strong> exzellentes Hilfsmittel<br />

auch <strong>für</strong> ernsthafte VR Anwendungen dar. Denn mit dem Joystick können große<br />

Entfernungen sehr leicht zurückgelegt werden, und teilweise verfügen <strong>die</strong>se über e<strong>in</strong>e<br />

Vielzahl von Be<strong>die</strong>nelementen <strong>für</strong> e<strong>in</strong>e vielseitige Steuerung der <strong>Navigation</strong>.<br />

Seite 53


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Implementierung<br />

Die Implementierung des Gerätes „JOYSTICK” wurde exemplarisch <strong>für</strong> <strong>die</strong> Felder stick<br />

und button1 bis button4 durchgeführt. Diese Implementierung reicht schon aus, um das<br />

im Kapitel 8 erläuterte Konzept zu evaluieren, das es erlaubt, mehr Freiheitsgrade als auf<br />

dem E<strong>in</strong>gabegerät vorhanden s<strong>in</strong>d durch Umschalten der Übersetzung von Gerätefreiheitsgraden<br />

auf Bewegungsrichtungen zu kontrollieren. E<strong>in</strong> entsprechender Script Knoten<br />

verarbeitet <strong>die</strong> Signale von stick, button1 und button2 so, daß durch Drücken von<br />

nur zwei Taster mit dem Joystick Bewegungen <strong>in</strong> allen sechs Freiheitsgraden komfortabel<br />

erzeugt werden können, obwohl das Gerät nur über zwei Freiheitsgrade verfügt.<br />

Der Beweis, daß mit e<strong>in</strong>em DeviceSensor auch Ausgaben erzeugt werden können, wird<br />

mit dem im Rahmen des zweiten Teils <strong>die</strong>ser Diplomarbeit implementierten Gerät „TCP”<br />

erbracht.<br />

6.6.4 Maus und Tastatur<br />

Das wahrsche<strong>in</strong>lich älteste E<strong>in</strong>gabegerät nach der Pionierzeit der Entwicklung der Computer<br />

ist <strong>die</strong> alphanumerische Tastatur. In den letzten zehn Jahren ist <strong>die</strong> Maus als zweidimensionales<br />

Zeigegerät h<strong>in</strong>zugekommen. Da beide E<strong>in</strong>gabegeräte heute <strong>in</strong> Verb<strong>in</strong>dung<br />

mit Arbeitsplatzrechnern weit verbreitet s<strong>in</strong>d, werden VRML Browser typischerweise mit<br />

<strong>die</strong>sen beiden Geräten be<strong>die</strong>nt.<br />

Die typische Konstruktion <strong>e<strong>in</strong>er</strong> Maus besteht aus e<strong>in</strong>em handtellergroßen Gehäuse, das<br />

über <strong>die</strong> Schreibtischoberfläche geschoben wird. An der Unterseite bef<strong>in</strong>det sich e<strong>in</strong>e<br />

Kugel, deren Rollbewegungen gemessen und an den Computer gesendet werden. Dort<br />

werden <strong>die</strong> Bewegungen auf e<strong>in</strong>en Zeiger übertragen, der e<strong>in</strong>e Position auf dem Bildschirm<br />

markiert. Zusätzlich hat <strong>die</strong> Maus e<strong>in</strong>e oder mehrere Tasten. Wenn <strong>die</strong>se gedrückt<br />

werden, wird das Objekt, das sich unter dem Zeiger bef<strong>in</strong>det, aktiviert, markiert, oder<br />

e<strong>in</strong>e andere Aktion wird ausgeführt.<br />

Die alphanumerische Tastatur besteht zum E<strong>in</strong>en aus Tasten, <strong>die</strong> Buchstaben erzeugen,<br />

so daß Texte geschrieben werden können. Zur Korrektur von Fehlern und zur <strong>Navigation</strong><br />

<strong>in</strong> Texten existieren Funktionstasten, welche <strong>die</strong> E<strong>in</strong>fügemarke bewegen oder Steuerfunktionen<br />

auslösen. Sogenannte Umschalttasten ändern <strong>die</strong> Funktionsweise anderer<br />

Tasten, wenn sie gedrückt s<strong>in</strong>d, während andere Tasten gedrückt werden.<br />

Modellierung und Diskussion<br />

Da E<strong>in</strong>gaben per Maus und Tastatur sehr stark korreliert s<strong>in</strong>d, werden sie zu e<strong>in</strong>em Gerät<br />

zusammengefaßt. In Anlehnung an <strong>die</strong> Tatsache, daß beide E<strong>in</strong>gabegeräte standardmäßig<br />

<strong>in</strong> e<strong>in</strong>em typischen Computersystem verfügbar s<strong>in</strong>d, wird <strong>die</strong>ses komb<strong>in</strong>ierte Gerät<br />

„STANDARD” genannt. Da Ereignisse, <strong>die</strong> mit <strong>die</strong>sen Beiden E<strong>in</strong>gabegeräten erzeugt werden,<br />

oft mehr Information enthalten, als mit den Datentypen von VRML ausgedrückt<br />

werden kann, verwendet das Gerät „STANDARD” <strong>die</strong> zweite der unter 6.5.3 Methoden,<br />

<strong>die</strong> den Event Knoten als Ganzes vom event Feld des DeviceSensors wegroutet.<br />

Seite 54


Der Event Knoten wird folgendermaßen deklariert:<br />

PROTO Event<br />

[<br />

field SFStr<strong>in</strong>g type<br />

eventIn SFBool returnValue<br />

field SFVec2f position<br />

field SFVec2f client<br />

field SFInt32 button<br />

field SFInt32 keyCode<br />

field SFStr<strong>in</strong>g character<br />

field SFBool shiftKey<br />

field SFBool ctrlKey<br />

field SFBool altKey<br />

fieldfield<br />

] {}<br />

Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Bei jedem Ereignis, das mit der Maus oder der Tastatur ausgeführt wird, sendet der DeviceSensor<br />

an se<strong>in</strong>em event Feld e<strong>in</strong>e Referenz auf den Event Knoten. Das type Feld<br />

<strong>die</strong>ses Knotens zeigt den Typ des Ereignisses an, das aufgetreten ist. Abhängig davon<br />

s<strong>in</strong>d <strong>die</strong> Felder position bis data gültig. Über das Feld parameter des DeviceSensor Knotens<br />

kann e<strong>in</strong>e Liste von Ereignissen angegeben werden, <strong>die</strong> e<strong>in</strong>e Anwendung erhalten<br />

möchte. Der DeviceSensor sendet nur dann Ereignisse, wenn der zugehörige Wert <strong>für</strong> das<br />

type Feld <strong>in</strong> <strong>die</strong>ser Liste enthalten ist. Ist das Feld parameter leer, erhält <strong>die</strong> Anwendung<br />

alle Ereignisse.<br />

Das Feld returnValue ist als e<strong>in</strong>ziges e<strong>in</strong> eventIn Feld. Wenn der DeviceSensor den Event<br />

Knoten sendet, hat <strong>die</strong>ses den Wert TRUE. Die Anwendung kann <strong>für</strong> jedes Ereignis, das<br />

sie erhält, separat entscheiden, ob sie dem Browser erlaubt, <strong>die</strong>ses zu verarbeitet. Dadurch<br />

können ganz gezielt bestimmte Funktionen des Browsers deaktiviert werden.<br />

Die Folgenden Tabelle geben an, welche Ereignisse <strong>für</strong> das Gerät „STANDARD” generiert<br />

werden.<br />

Maus:<br />

„mousedown” Maustaste wurde gedrückt<br />

„mouseup” Maustaste wurde losgelassen<br />

„dblclick” Maustaste wurde zweimal kurz h<strong>in</strong>tere<strong>in</strong>ander gedrückt<br />

„mousemove” Maus wurde bewegt<br />

„mousewheel” Das Mausrad wurde gedreht<br />

Bei <strong>die</strong>sen Ereignissen s<strong>in</strong>d <strong>die</strong> Felder position, client und button gültig. In position<br />

steht <strong>die</strong> Position des Mauszeigers zu dem Zeitpunkt, als das Ereignis erzeugt wurde. Die<br />

Angabe ist auf den Wertebereich [-1 .. +1] normiert. Der Koord<strong>in</strong>atenursprung bef<strong>in</strong>det<br />

sich <strong>in</strong> der Mitte des Fensters des VRML Browsers, und <strong>die</strong> positiven Richtungen zeigen<br />

nach rechts und oben. Das Feld client enthält ebenfalls <strong>die</strong> Koord<strong>in</strong>aten des Mauszeigers,<br />

jedoch s<strong>in</strong>d <strong>die</strong>se Angaben nicht normierte Pixel Koord<strong>in</strong>aten. Diese eignen sich<br />

besser, wenn e<strong>in</strong> <strong>Navigation</strong>sparadigma implementiert werden soll, da ihr Maßstab nicht<br />

von der Fenstergröße abhängt. Der Koord<strong>in</strong>atenursprung von client liegt <strong>in</strong> der l<strong>in</strong>ken<br />

oberen Ecke des Fensters, und <strong>die</strong> Werte wachsen nach rechts beziehungsweise nach<br />

unten. Das Feld button gibt <strong>in</strong> Form e<strong>in</strong>es Bitmusters an, welche Maustaste gedrückt<br />

wurde. Die L<strong>in</strong>ke Maustaste wird mit dem Wert 1 markiert, <strong>die</strong> rechte mit 2, <strong>die</strong> mittlere<br />

mit 4, usw.<br />

Seite 55


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Tastatur:<br />

„keydown” Taste wurde gedrückt<br />

„keyup” Taste wurde losgelassen<br />

„character” Taste, <strong>die</strong> e<strong>in</strong> druckbares Zeichen erzeugt, wurde gedrückt<br />

Erhält e<strong>in</strong>e Anwendung das Ereignis „keydown” oder „keyup”, dann ist das Feld keyCode<br />

gültig. Dieses Feld enthält e<strong>in</strong>en Tastencode nach der DOM Spezifikation[21]. Das „keydown”<br />

Ereignis zeigt an, wann e<strong>in</strong>e Taste gedrückt wird, und „keyup” zeigt an, wann e<strong>in</strong>e<br />

Taste losgelassen wird. Diese Ereignisse zeigen sowohl alphanumerische Tasten als auch<br />

Tasten mit Steuerfunktion als auch Umschalttasten an.<br />

Sollen Texte <strong>in</strong> <strong>die</strong> VRML Anwendung e<strong>in</strong>gegeben werden, eignen sich <strong>die</strong>se beiden Ereignisse<br />

nicht. Zum e<strong>in</strong>en gibt der Code <strong>e<strong>in</strong>er</strong> Taste ke<strong>in</strong>en Aufschluß darüber, welchem<br />

Zeichen <strong>die</strong>se Taste zugeordnet ist, und zum Anderen werden <strong>die</strong>se Tasten durch Umschalttasten<br />

nicht modifiziert. Für <strong>die</strong>sen Fall existiert das Ereignis „character”. Es wird<br />

nur <strong>für</strong> solche Tasten gesendet, <strong>die</strong> e<strong>in</strong> druckbares Zeichen ergeben. Erhält e<strong>in</strong>e Anwendung<br />

<strong>die</strong>ses Ereignis, ist das Feld character gültig und enthält das e<strong>in</strong>gegebene Zeichen<br />

<strong>in</strong> Str<strong>in</strong>gform. Zudem wird <strong>die</strong>ses Ereignis wiederholt gesendet, wenn e<strong>in</strong>e Taste längere<br />

Zeit gedrückt wird.<br />

Die Felder shiftKey, ctrlKey und altKey enthalten bei allen Ereignissen gültige Werte.<br />

Sie geben den Zustand der Umschalttasten ‚Shift’, ‚Strg’, bzw. ‚Alt’ an. Diese werden <strong>in</strong><br />

graphischen Benutzungsoberflächen häufig zur Modifikation auch der Mausfunktionen<br />

verwendet. Durch <strong>die</strong>se drei Felder ist <strong>die</strong>se Funktion auch <strong>für</strong> VRML Anwendungen verfügbar.<br />

Implementierung<br />

Die Unterstützung <strong>für</strong> Maus und Tastatur wurde von Blaxxun Mitarbeitern selbst (Thomas<br />

Volk und Holger Grahn) entworfen und implementiert, nachdem der erste Teil <strong>die</strong>ser Diplomarbeit<br />

abgeschlossen war. Da das Betriebssystem W<strong>in</strong>dows Maus- und Tastaturereignisse<br />

nur direkt an das Fenster <strong>e<strong>in</strong>er</strong> Anwendung sendet, wurde das Gerät „Standard”<br />

als fester Bestandteil des Browsers programmiert.<br />

6.6.5 TCP Verb<strong>in</strong>dungen<br />

Das Gerät „TCP” zeigt, daß mit dem DeviceSensor neben E<strong>in</strong>- und Ausgabegeräten auch<br />

abstrakte Geräte modelliert werden können. Es modelliert e<strong>in</strong>e Netzwerkverb<strong>in</strong>dung zu<br />

e<strong>in</strong>em anderen Rechner. E<strong>in</strong>e Implementierung <strong>die</strong>ses Gerätes liegt vor, da sie im zweiten<br />

Teil <strong>die</strong>ser Arbeit zur Anb<strong>in</strong>dung existierender Programmodule benötigt wird. Abschnitt<br />

8.5.3 beschreibt se<strong>in</strong>e Verwendung.<br />

Seite 56


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Modellierung und Diskussion<br />

Folgende Felder seien <strong>für</strong> <strong>die</strong> Modellierung <strong>e<strong>in</strong>er</strong> Netzwerkverb<strong>in</strong>dung vorgeschlagen:<br />

PROTO TCP<br />

{<br />

eventOut SFStr<strong>in</strong>g l<strong>in</strong>eReceived<br />

eventOut MFStr<strong>in</strong>g wordsReceived<br />

eventIn SFStr<strong>in</strong>g l<strong>in</strong>eToSend<br />

eventIn MFStr<strong>in</strong>g wordsToSend<br />

}<br />

DeviceSensor<br />

{<br />

device "TCP"<br />

parameter "listen=1234" # oder "connect=hostname:1234"<br />

}<br />

Mit dem Feld parameter des DeviceSensor wird festgelegt, ob der DeviceSensor als Server<br />

oder als Client fungieren soll. Hat parameter e<strong>in</strong>en Wert der Form "listen=1234", so<br />

übernimmt der DeviceSensor <strong>die</strong> Rolle des Servers und wartet auf dem Port mit der angegebenen<br />

Nummer auf e<strong>in</strong>e e<strong>in</strong>treffende Verb<strong>in</strong>dung. Bei e<strong>in</strong>em Wert der Form "connect=hostname:1234"<br />

übernimmt der DeviceSensor <strong>die</strong> Rolle des Client und versucht,<br />

e<strong>in</strong>e Verb<strong>in</strong>dung zu dem angegebenen Host Namen auf dem angegebenen Port aufzubauen.<br />

Das isActive Feld des DeviceSensor Knoten zeigt an, ob e<strong>in</strong>e Verb<strong>in</strong>dung zu e<strong>in</strong>em Client<br />

bzw. Server besteht, und mit dem enabled Feld am DeviceSensor kann e<strong>in</strong>e bestehende<br />

Verb<strong>in</strong>dung abgebrochen und neu aufgebaut werden.<br />

Das TCP Gerät unterstützt textbasierte Verb<strong>in</strong>dungen. Jede empfangene Zeile erzeugt e<strong>in</strong><br />

Ereignis an l<strong>in</strong>eReceived und e<strong>in</strong>es an wordsReceived. Erhält der Event Knoten e<strong>in</strong> Ereignis<br />

an l<strong>in</strong>eToSend oder an wordsToSend, wird daraus e<strong>in</strong>e Textzeile gebildet und über <strong>die</strong><br />

Verb<strong>in</strong>dung gesendet.<br />

Bei jeder empfangenen Zeile Text wird <strong>die</strong> Zeichenkomb<strong>in</strong>ation CR LF, <strong>die</strong> im Internet<br />

üblicherweise das Ende <strong>e<strong>in</strong>er</strong> Zeile markiert, entfernt und der Text der Zeile an<br />

l<strong>in</strong>eReceived <strong>in</strong> <strong>die</strong> Szene gesendet. Zusätzlich wird e<strong>in</strong>e Liste aller durch White Spaces<br />

getrennten Worte erzeugt und über wordsReceived an <strong>die</strong> Szene weitergegeben, so daß<br />

<strong>die</strong> Zeile <strong>in</strong> der Szene als Array von Worten ersche<strong>in</strong>t. Somit kann <strong>die</strong> Anwendung <strong>die</strong> aus<br />

der Verb<strong>in</strong>dung erhaltene Information als Folge von Zeilen verarbeiten, wenn sie<br />

lienReceived auswertet, oder auch e<strong>in</strong> Protokoll implementieren, das zusammengehörige<br />

Information als e<strong>in</strong>e Gruppe von Worten <strong>in</strong>nerhalb <strong>e<strong>in</strong>er</strong> Zeile darstellt, ohne daß sich der<br />

VRML Code mit dem Parsen solcher Zeilen beschäftigen muß.<br />

In der Sende-Richtung s<strong>in</strong>d ebenfalls beide Formen der Verarbeitung von Information<br />

möglich. Str<strong>in</strong>gs, <strong>die</strong> an l<strong>in</strong>eToSend von der Szene an den Event Knoten gesendet werden,<br />

werden um <strong>die</strong> Zeichenkomb<strong>in</strong>ation CR LF zu <strong>e<strong>in</strong>er</strong> vollständigen Zeile erweitert und<br />

<strong>in</strong> <strong>die</strong> Verb<strong>in</strong>dung geschrieben. E<strong>in</strong> an wordsToSend aus der Szene erhaltenes Array von<br />

Str<strong>in</strong>gs wird mit Leerzeichen zwischen jedem Wort und mit CR LF am Ende zu <strong>e<strong>in</strong>er</strong> Zeile<br />

komb<strong>in</strong>iert und <strong>in</strong> <strong>die</strong> Verb<strong>in</strong>dung gesandt.<br />

Seite 57


Kapitel 6, Repräsentation von E<strong>in</strong>gabegeräten<br />

Anwendungsbereich<br />

Das „TCP” Gerät wird hauptsächlich <strong>in</strong> dem <strong>in</strong> Kapitel 8 entwickelten Prototypen e<strong>in</strong>es<br />

Multimodalen Be<strong>die</strong>nsystems zur Anb<strong>in</strong>dung der semantisch höherwertigen Modalitäten<br />

und der Integrator Komponente verwendet. Generell könnte das „TCP” Gerät <strong>in</strong> zwei<br />

Szenarios verwendet werden:<br />

• zwei VRML Welten mite<strong>in</strong>ander verb<strong>in</strong>den, und so den Mechanismus der Route erweitern<br />

• von <strong>e<strong>in</strong>er</strong> VRML Welt direkten Zugriff auf Netzwerkserver zu erlangen<br />

Das Szenario, den Mechanismus der Route zu erweitern ist <strong>in</strong> der vorliegenden Form mit<br />

dem Nachteil behaftet, daß Netzwerkadressen <strong>in</strong> der VRML Welt fest angegeben werden<br />

müssen. Für e<strong>in</strong>e generelle E<strong>in</strong>setzbarkeit müßte das „TCP” Gerät um e<strong>in</strong> abstraktes<br />

Adressierungsschema, sowie um e<strong>in</strong> Sicherheitskonzept erweitert werden.<br />

an <strong>die</strong>ser Stelle erweitert werden, sowie<br />

Implementierung<br />

Die Implementierung des „TCP” Gerätes unterstützt <strong>die</strong> Felder l<strong>in</strong>eReceived, wordsReceived<br />

und l<strong>in</strong>eToSend, jedoch nicht wordsToSend.<br />

Seite 58


7 Steuerung der N avigation<br />

Kapitel 7, Steuerung der <strong>Navigation</strong><br />

<strong>Navigation</strong> <strong>in</strong> virtuellen 3D Szenarien zu implementieren bedeutet <strong>für</strong> e<strong>in</strong>e Anwendung,<br />

Benutzere<strong>in</strong>gaben zu verarbeiten und <strong>in</strong> <strong>Navigation</strong>sbefehle umzuwandeln, um <strong>die</strong>se an<br />

den Browser zur Ausführung zu senden. Der Zugriff auf Benutzere<strong>in</strong>gaben ist durch den<br />

im letzten Kapitel behandelten DeviceSensor geregelt. In <strong>die</strong>sem Kapitel wird e<strong>in</strong> Satz<br />

von Knoten entwickelt, <strong>die</strong> geeignet s<strong>in</strong>d, <strong>Navigation</strong>s<strong>in</strong>formation mit dem Browser auszutauschen.<br />

7.1 Anforderungen an Knoten <strong>für</strong> <strong>die</strong> <strong>Navigation</strong><br />

Soll <strong>die</strong> Implementierung von <strong>Navigation</strong>sparadigmen ermöglicht werden, <strong>die</strong> an <strong>die</strong><br />

Bedürfnisse <strong>e<strong>in</strong>er</strong> Anwendung anpassbar s<strong>in</strong>d, muß e<strong>in</strong> Browser folgende Funktionalitäten<br />

anbieten:<br />

• Unterstützung geschw<strong>in</strong>digkeitsorientierter E<strong>in</strong>gabegeräte<br />

• Unterstützung positionsorientierter E<strong>in</strong>gabegeräte<br />

• Unterstützung referenzierender <strong>Navigation</strong><br />

• Unterstützung diskreter <strong>Navigation</strong><br />

• Kontrolle über grundlegende <strong>Navigation</strong>sparameter<br />

• Kontrolle des Third Person Modus<br />

Damit durch <strong>die</strong> <strong>Navigation</strong>sknoten e<strong>in</strong> hohes Maß an Mächtigkeit erzielt wird, sollen folgende<br />

<strong>Design</strong>kriterien zugrunde liegen:<br />

• Die neuen Knoten sollen sich mit der Wirkungsweise bestehender Knoten nicht<br />

widersprechen. Durch <strong>die</strong>se Forderung können <strong>Navigation</strong>smodule programmiert<br />

werden, <strong>die</strong> unabhängig von den im <strong>Navigation</strong>Info Knoten festgelegten Rahmenbed<strong>in</strong>gungen,<br />

und dadurch unabhängig von der Welt, <strong>in</strong> der sie e<strong>in</strong>gesetzt<br />

werden, funktionieren.<br />

• Es soll e<strong>in</strong> modulares Programmierschema unterstützt werden. Diese Forderung<br />

erlaubt, <strong>Navigation</strong>smodule <strong>für</strong> verschiedene E<strong>in</strong>gabegeräte unabhängig vone<strong>in</strong>ander<br />

zu programmieren und zu benutzen.<br />

• Die zur Verfügung gestellte Funktionalität soll <strong>in</strong> Form von elementaren Funktionen<br />

angeboten werden, <strong>die</strong> vom Autor komb<strong>in</strong>iert werden können. Das erhöht <strong>die</strong><br />

Mächtigkeit der zur Verfügung gestellten Funktionalität.<br />

7.1.1 Unterstützung gesch w<strong>in</strong>digkeitsorientierter E<strong>in</strong>gabegeräte<br />

Die Unterstützung geschw<strong>in</strong>digkeitsorientierter E<strong>in</strong>gabegeräte erfordert e<strong>in</strong>e Möglichkeit,<br />

Bewegungsgeschw<strong>in</strong>digkeiten <strong>in</strong> beiden Richtungssystemen anzugeben. E<strong>in</strong> Script Knoten<br />

kann <strong>die</strong> Auslenkungen des E<strong>in</strong>gabegerätes <strong>in</strong>terpretieren und <strong>in</strong> Geschw<strong>in</strong>digkeitswerte<br />

umrechnen. Diese Umrechnung umfaßt das Skalieren mit e<strong>in</strong>em Faktor und <strong>die</strong><br />

Übersetzung der Freiheitsgrade des E<strong>in</strong>gabegerätes <strong>in</strong> <strong>die</strong> entsprechenden Richtungen.<br />

Da Geschw<strong>in</strong>digkeiten von dem aktuellen Zustand e<strong>in</strong>es E<strong>in</strong>gabegerätes abhängen, können<br />

<strong>die</strong>se nicht vorab gesetzt werden, so daß Felder der Art eventIn vorhanden se<strong>in</strong><br />

müssen. Da jedes der beiden Richtungssysteme sechs Freiheitsgrade umfaßt, müssen<br />

zwölf Werte auf das Typsystem von VRML übertragen werden:<br />

eventIn SFVec3f speedXYZ<br />

eventIn SFVec3f speedYPR<br />

eventIn SFVec3f speedOPR<br />

eventIn SFVec3f speedABR<br />

Seite 59


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Die Felder speedXYZ und speedYPR akzeptieren Geschw<strong>in</strong>digkeiten des SIXDOF Richtungssystems,<br />

und speedOPR und speedABR akzeptieren Geschw<strong>in</strong>digkeiten aus EXAMINE. Setzt<br />

man e<strong>in</strong>e oder mehrere ihrer Komponenten auf e<strong>in</strong>en von 0 verschiedenen Wert, so wird<br />

der Avatar mit der angegebenen Geschw<strong>in</strong>digkeit <strong>in</strong> <strong>die</strong> entsprechenden Richtungen bewegt,<br />

bis <strong>die</strong>se Werte geändert oder auf 0 gesetzt werden. Im Folgenden werden <strong>die</strong>se<br />

Felder mit Geschw<strong>in</strong>digkeitsfelder bezeichnet.<br />

7.1.2 Unterstützung positio nsorientierter E<strong>in</strong>gabegeräte<br />

Positionsorientierte E<strong>in</strong>gabegeräte erzeugen e<strong>in</strong>e Serie von Positionen. Diese können<br />

genauso gut als e<strong>in</strong>e Serie von Positionsdifferenzen repräsentiert werden. Positionsdifferenzen<br />

haben gegenüber re<strong>in</strong>en Positionen den Vorteil, daß mehrere solcher Ströme, <strong>die</strong><br />

von verschiedenen Quellen stammen, durch e<strong>in</strong>fache Addition zu e<strong>in</strong>em Strom vere<strong>in</strong>igt<br />

werden können. Es besteht auch ke<strong>in</strong>e Notwendigkeit, Bezugspunkte zu def<strong>in</strong>ieren.<br />

eventIn SFVec3f stepXYZ<br />

eventIn SFVec3f stepYPR<br />

eventIn SFVec3f stepOPR<br />

eventIn SFVec3f stepABR<br />

Diese Felder akzeptieren Positionsdifferenzen entlang der Richtungen beider Richtungssysteme<br />

(stepXYZ, stepYPR <strong>für</strong> SIXDOF und stepOPR, stepABR <strong>für</strong> EXAMINE). Ereignisse, <strong>die</strong><br />

an <strong>die</strong>sen Feldern empfangen werden, bewegen den Avatar um <strong>die</strong> angegebenen<br />

Schrittweiten <strong>in</strong> <strong>die</strong> jeweilige Richtungen. Im Gegensatz zu den Geschw<strong>in</strong>digkeitsfeldern,<br />

gelten <strong>die</strong>se nicht, bis sie durch neue Werte widerrufen werden, sondern jeder Wert, den<br />

sie als VRML Ereignis erhalten, wird e<strong>in</strong>mal <strong>in</strong> der zugehörigen Richtung zur aktuellen<br />

Avatarposition h<strong>in</strong>zuad<strong>die</strong>rt. Diese Felder werden im Folgenden mit positionsorientierte<br />

Felder bezeichnet.<br />

7.1.3 Unterstützung refere nzierender <strong>Navigation</strong><br />

Referenzierende <strong>Navigation</strong> bedeutet, daß der Benutzer e<strong>in</strong>en Punkt <strong>in</strong> der Szene auswählt<br />

und e<strong>in</strong>e Bewegung dorth<strong>in</strong> auslöst. Die Interpretation der vom E<strong>in</strong>gabegerät erhaltenen<br />

Signale ist geräte- und anwendungsabhängig. Deshalb muß sie von der Anwendung<br />

durchgeführt werden. E<strong>in</strong> <strong>Navigation</strong>sknoten sollte Felder enthalten, <strong>die</strong> e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation<br />

auslösen, wenn sie e<strong>in</strong> Ereignis mit <strong>e<strong>in</strong>er</strong> Position als Wert erhalten:<br />

eventIn SFVec3f moveTo<br />

eventIn SFVec3f orientTo<br />

eventIn SFVec3f beamTo<br />

exposedField SFFloat duration 2<br />

eventOut SFBool isAnimat<strong>in</strong>g<br />

Die Felder moveTo und orientTo lösen e<strong>in</strong>e verschiebende und e<strong>in</strong>e drehende Viewpo<strong>in</strong>t-<br />

Animation aus, <strong>die</strong> überlagert werden können. Wenn moveTo e<strong>in</strong>e Position erhält, wird der<br />

Avatar an <strong>die</strong>se Position verschoben. Erhält orientTo e<strong>in</strong>e Position, wird der Avatar so<br />

gedreht, daß er auf den angegebenen Punkt blickt. beamTo kann anstelle von moveTo und<br />

orientTo verwendet werden. E<strong>in</strong>e an beamTo gesandte Position verschiebt und dreht den<br />

Avatar so, daß der angegebene Punkt gut sichtbar wird. Die entsprechende Position und<br />

Orientierung muß der Browser selbst f<strong>in</strong>den.<br />

Die Dauer der Animationen wird mit duration festgelegt. Damit <strong>die</strong> Anwendung auf das<br />

Ende <strong>e<strong>in</strong>er</strong> Animation warten kann, zeigt isAnimat<strong>in</strong>g an, wann e<strong>in</strong>e Animation gestartet<br />

und beendet wird.<br />

Seite 60


7.1.4 Unterstützung diskre ter <strong>Navigation</strong><br />

Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Diskrete <strong>Navigation</strong> bedeutet, daß sich der Avatar um e<strong>in</strong>e gewisse Schrittweite <strong>in</strong> e<strong>in</strong>e<br />

bestimmte Richtung bewegt. Dieser Effekt kann mit den Feldern <strong>für</strong> positionsorientierte<br />

E<strong>in</strong>gabegeräte erzeugt werden. Da aber e<strong>in</strong>e sprunghafte Bewegung dem Immersionseffekt<br />

wegen s<strong>e<strong>in</strong>er</strong> Unnatürlichkeit entgegen wirkt und <strong>für</strong> den Benutzer als Bewegung<br />

schwer erkennbar ist, sollten Bewegungen der diskreten <strong>Navigation</strong> als kont<strong>in</strong>uierliche<br />

Bewegungen <strong>für</strong> e<strong>in</strong>e kurze Zeit ausgeführt werden. Dies kann mit den Feldern <strong>für</strong> geschw<strong>in</strong>digkeitsorientierte<br />

E<strong>in</strong>gabegeräte erreicht werden, <strong>in</strong>dem e<strong>in</strong>e Bewegungsgeschw<strong>in</strong>digkeit<br />

gesetzt wird, und nach kurzer Zeit – etwa <strong>e<strong>in</strong>er</strong> Sekunde – wieder zurück<br />

genommen wird. Aus <strong>die</strong>sen Gründen s<strong>in</strong>d zusätzliche Felder <strong>für</strong> diskrete <strong>Navigation</strong> nicht<br />

notwendig.<br />

7.1.5 Kontrolle über grund legende <strong>Navigation</strong>sparameter<br />

Der <strong>Navigation</strong>Info Knoten (siehe Abschnitt 4.3.2) erlaubt <strong>die</strong> Angabe e<strong>in</strong>iger Rahmenbed<strong>in</strong>gungen<br />

zur <strong>Navigation</strong>. Beispielsweise ist es wünschenswert, e<strong>in</strong> Drehzentrum <strong>für</strong><br />

den EXAMINE Modus vorzugeben, da e<strong>in</strong>e automatisierte Suche danach ke<strong>in</strong>e triviale<br />

Aufgabe darstellt. Es sollte auch e<strong>in</strong> Feld geben, das <strong>die</strong> Kontrolle des Dritte Person Modus<br />

erlaubt, und es sollte angegeben werden können, ob <strong>in</strong> der Welt dem Lot-Vektor e<strong>in</strong>e<br />

besondere Bedeutung zukommt.<br />

Neben dem Setzen von Werten müssen Module, <strong>die</strong> <strong>Navigation</strong> implementieren, über<br />

e<strong>in</strong>ige Werte <strong>in</strong>formiert werden. Deshalb sollte e<strong>in</strong> Sensor Knoten <strong>die</strong>se zur Verfügung<br />

stellen. Hier <strong>in</strong>teressieren <strong>in</strong>sbesondere der momentan e<strong>in</strong>gestellte <strong>Navigation</strong>smodus,<br />

Information über auftretende Kollisionen des Avatars mit Geometrie und <strong>die</strong> Position der<br />

virtuellen Kamera im Third Person Modus. Der momentan e<strong>in</strong>gestellte <strong>Navigation</strong>smodus<br />

erlaubt es anwendungsunabhängigen Modulen, den mittels <strong>Navigation</strong>Info oder über das<br />

Benutzungs<strong>in</strong>terface des Browsers e<strong>in</strong>gestellten <strong>Navigation</strong>smodus zu implementieren.<br />

Hat <strong>die</strong> Anwendung Information über Kollisionen zur Verfügung, kann sie <strong>die</strong>se an den<br />

Benutzer weitergeben. Mit der Information über den Ort der Kamera können On-Screen-<br />

Displays 9 oder andere von der Blickrichtung abhängige Effekte erzeugt werden. Im Gesichtsfeld<br />

feststehende Geometrie wird bisher mit Hilfe des ProximitySensors realisiert.<br />

Da der ProximitySensor <strong>die</strong> Position des Avatars widerspiegelt, wird an den<br />

ProximitySensor gekoppelte Geometrie im Third Person Modus <strong>in</strong> der Nähe des Kopfes<br />

des Avatars plaziert.<br />

E<strong>in</strong>e hilfreiche Funktion, <strong>die</strong> e<strong>in</strong> <strong>Navigation</strong>s<strong>in</strong>terface dem Benutzer zur Verfügung stellen<br />

sollte ist <strong>die</strong> Möglichkeit, sich e<strong>in</strong>fach aufrichten zu können, wenn sich der Benutzer <strong>in</strong><br />

e<strong>in</strong>e ungewollte Schräglage gebracht hat. Ebenso sollte das Drehzentrum <strong>für</strong> den<br />

EXAMINE Modus wählbar se<strong>in</strong>, was durch e<strong>in</strong>e Zeigegeste realisiert werden könnte. Die<br />

Beispielimplementation e<strong>in</strong>es <strong>Navigation</strong>smoduls <strong>für</strong> <strong>die</strong> Spacemouse hat gezeigt, daß <strong>für</strong><br />

manche E<strong>in</strong>gabegeräte <strong>die</strong> Sonderbehandlung des Lot-Vektors nachteilig ist. Deshalb<br />

sollte <strong>die</strong>se Eigenschaft, obwohl e<strong>in</strong>e Eigenschaft der Welt, auch <strong>für</strong> jedes <strong>Navigation</strong>smodul<br />

<strong>in</strong>dividuell e<strong>in</strong>stellbar se<strong>in</strong>.<br />

Wenn bei der Fortbewegung <strong>in</strong> realen Umgebungen e<strong>in</strong> H<strong>in</strong>dernis den Weg versperrt,<br />

dann erfährt man das sofort durch e<strong>in</strong>en entsprechenden taktilen S<strong>in</strong>nesreiz. Meistens<br />

9 E<strong>in</strong> On-Screen-Display besteht aus Objekten, <strong>die</strong> sich immer an <strong>e<strong>in</strong>er</strong> festen Position des Bildschirms<br />

(bzw. des Gesichtsfeldes des Benutzers) bef<strong>in</strong>den. Auf <strong>die</strong>se Weise kann e<strong>in</strong> graphisches<br />

Benutzungs<strong>in</strong>terface realisiert werden.<br />

Seite 61


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

wird man das Objekt schon vorher sehen und den Zusammenstoß vermeiden. In virtuellen<br />

Umgebungen können Kollisionen optisch nicht so leicht erkannt werden, weil <strong>die</strong> Darstellungsqualität<br />

das E<strong>in</strong>schätzen von Entfernungen erschwert, und weil <strong>in</strong>sbesondere bei<br />

bildschirmorientierten Arbeitsplätzen das Blickfeld stark e<strong>in</strong>geschränkt ist. Ohne e<strong>in</strong>en<br />

anderen H<strong>in</strong>weis auf den Umstand <strong>e<strong>in</strong>er</strong> Kollision mit e<strong>in</strong>em Objekt wirkt e<strong>in</strong>e Kollision<br />

genauso, als ob überhaupt ke<strong>in</strong>e Bewegung möglich wäre. Daher sollte der oben genannte<br />

Sensor Knoten das Auftreten <strong>e<strong>in</strong>er</strong> Kollision anzeigen, so daß <strong>die</strong>se Information<br />

an den Benutzer weitergegeben werden kann. Ungeübte Benutzer, <strong>die</strong> mit dem Umgang<br />

e<strong>in</strong>es E<strong>in</strong>gabegerätes noch nicht vertraut s<strong>in</strong>d, werden davon besonders profitieren.<br />

7.2 Knotenspezifikatio n<br />

Die erläuterten Forderungen ergeben e<strong>in</strong>e Anzahl von Feldern, <strong>die</strong> <strong>in</strong> drei Kategorien e<strong>in</strong>geteilt<br />

werden können:<br />

• Felder, welche <strong>die</strong> Welt beschreiben, und somit globalen Charakter haben.<br />

Solche Felder sollten Teil e<strong>in</strong>es b<strong>in</strong>dbaren Knotens se<strong>in</strong>, da <strong>die</strong>s der Mechanismus<br />

ist, der <strong>in</strong> VRML globale Eigenschaften <strong>e<strong>in</strong>er</strong> Szene verwaltet.<br />

• Felder, <strong>die</strong> Information vom Browser an <strong>die</strong> Szene liefern.<br />

Solche Felder machen e<strong>in</strong>en Knoten zu e<strong>in</strong>em Sensor Knoten. Für e<strong>in</strong>en Sensor<br />

Knoten ist der Mechanismus des B<strong>in</strong>dens nicht adäquat. Er sollte von der Anwendung<br />

durch e<strong>in</strong> boolsches Feld je nach Bedarf aktivierbar se<strong>in</strong>.<br />

• Felder, <strong>die</strong> von e<strong>in</strong>em <strong>Navigation</strong>smodul benutzt werden, um Befehle an den<br />

Browser zu senden. Diese Felder kommunizieren dynamische Werte, <strong>die</strong> sich<br />

schnell ändern und nicht vorhersagbare Ereignisse zum Browser. Da mehrere<br />

vone<strong>in</strong>ander unabhängige Module <strong>die</strong> Möglichkeit haben sollten, <strong>die</strong>se Felder<br />

gleichzeitig zu benutzen, sollten <strong>die</strong>se Felder nicht Teil e<strong>in</strong>es b<strong>in</strong>dbaren Knotens<br />

se<strong>in</strong>.<br />

Gemäß <strong>die</strong>ser Kategorien werden drei Knoten def<strong>in</strong>iert:<br />

• <strong>Navigation</strong>Info2<br />

Die <strong>Navigation</strong>Info2 ist e<strong>in</strong>e Erweiterung des <strong>Navigation</strong>Info Knotens. Die Felder<br />

sollten eigentlich der <strong>Navigation</strong>Info h<strong>in</strong>zugefügt werden. Da e<strong>in</strong> Nachträgliches<br />

H<strong>in</strong>zufügen von Feldern zu VRML Knoten e<strong>in</strong>e Anwendung daran h<strong>in</strong>dern würde,<br />

auf älteren Browsern ausgeführt zu werden, und da Interoperabilität 10 e<strong>in</strong>es der<br />

<strong>Design</strong>ziele von VRML ist, muß e<strong>in</strong> zweiter Knoten def<strong>in</strong>iert werden.<br />

• <strong>Navigation</strong>Sensor<br />

Der <strong>Navigation</strong>Sensor liefert Ereignisse der <strong>Navigation</strong> an <strong>die</strong> Szene. Er kann von<br />

der Welt selbst benutzt werden, oder von e<strong>in</strong>em <strong>Navigation</strong>smodul, um auf bestimmte<br />

Zustände zu reagieren.<br />

• Navigator<br />

Die letzte Kategorie enthält <strong>die</strong> größte Anzahl von Feldern. Da sich aber ke<strong>in</strong>e Anwendungsfälle<br />

identifizieren lassen, <strong>in</strong> denen e<strong>in</strong>ige <strong>die</strong>ser Felder verwendet werden,<br />

<strong>die</strong> <strong>in</strong> anderen Anwendungsfällen nicht benutzt werden, ergeben sich ke<strong>in</strong>e<br />

scharfen Grenzen <strong>für</strong> e<strong>in</strong>e Gruppierung, <strong>die</strong> e<strong>in</strong> Aufteilen <strong>die</strong>ser Felder auf mehrere<br />

Knoten s<strong>in</strong>nvoll machen würde. Die Felder der letzten Kategorie werden daher<br />

alle zum Navigator Knoten zusammengefaßt.<br />

10 Interoperabilität bedeutet, daß e<strong>in</strong>e <strong>in</strong> VRML Anwendung so geschrieben werden kann, daß sie auf<br />

Browsern unterschiedlicher Hersteller, und auf älteren Versionen e<strong>in</strong>es Browsers ausgeführt wird. In<br />

der Praxis ist <strong>die</strong>ses Ziel jedoch nicht erreicht.<br />

Seite 62


7.2.1 Der Knoten Navigatio nInfo2<br />

Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Der <strong>Navigation</strong>Info2 Knoten erweitert den <strong>Navigation</strong>Info Knoten um e<strong>in</strong>ige wichtige<br />

Felder, <strong>die</strong> globale Aspekte der Welt bezüglich <strong>Navigation</strong> beschreiben.<br />

<strong>Navigation</strong>Info2<br />

{<br />

exposedField SFBool free FALSE<br />

exposedField SFVec3f exam<strong>in</strong>eCenter 0 0 0<br />

exposedField SFBool autoExaCenter TRUE<br />

exposedField SFVec3f cameraOffset 3 0 -0.1<br />

exposedField SFBool thirdPersonMode FALSE<br />

eventIn SFBool set_b<strong>in</strong>d<br />

eventOut SFBool isBound<br />

und alle anderen Felder von <strong>Navigation</strong>Info<br />

}<br />

free:<br />

Das Feld free gibt an, ob <strong>in</strong> der Welt e<strong>in</strong> ausgeprägter Lot-Vektor vorhanden ist. Wenn<br />

free gesetzt ist, s<strong>in</strong>d alle Richtungen gleichberechtigt. In den meisten Welten kann free<br />

jedoch auf se<strong>in</strong>em Defaultwert FALSE belassen werden.<br />

exam<strong>in</strong>eCenter und autoExaCenter:<br />

Mit autoExaCenter wird kontrolliert, ob sich der Browser bei Bewegungen im EXAMINE<br />

Modus das Drehzentrum selbst suchen soll (TRUE) oder ob er den <strong>in</strong> exam<strong>in</strong>eCenter angegebenen<br />

Wert verwenden soll (FALSE). Diese beiden Felder werden immer dann ausgewertet,<br />

wenn <strong>die</strong> <strong>Navigation</strong>Info2 gebunden wird, und wenn e<strong>in</strong>es von beiden Feldern<br />

e<strong>in</strong> Ereignis erhält. Unabhängig von autoExaCenter wird e<strong>in</strong> neues Drehzentrum gesetzt,<br />

wenn das set_exam<strong>in</strong>eCenter Feld des Navigator Knotens e<strong>in</strong> Ereignis erhält. Das Bezugskoord<strong>in</strong>atensystem<br />

<strong>für</strong> exam<strong>in</strong>eCenter ist das lokale Koord<strong>in</strong>atensystem der <strong>Navigation</strong>Info2.<br />

cameraOffset und thirdPersonMode:<br />

Das Flag thirdPersonMode schaltet <strong>in</strong> den Third Person Modus um, wenn es gesetzt ist. In<br />

<strong>die</strong>sem Fall wird e<strong>in</strong> Avatar angezeigt, und <strong>die</strong> virtuelle Kamera wird aus dem Avatar<br />

herausbewegt. Abgesehen vom <strong>Navigation</strong>Sensor, dem VisibilitySensor 11 und dem<br />

LOD 12 wird <strong>die</strong> Szene weiterh<strong>in</strong> von der Position des Avatars bee<strong>in</strong>flußt, und nicht von der<br />

Position der virtuellen Kamera. Die Position der virtuellen Kamera wird relativ zum Avatar<br />

mit cameraOffset angegeben. Die Angabe erfolgt im Avatar lokalen Koord<strong>in</strong>atensystem <strong>in</strong><br />

Form von Kugelkoord<strong>in</strong>aten. Die erste Komponente ist der Abstand von der Avatar Position,<br />

<strong>die</strong> anderen beiden s<strong>in</strong>d Azimut und Elevation, gemessen <strong>in</strong> rad. Die virtuelle Kamera<br />

sei immer so ausgerichtet, daß sie <strong>in</strong> Richtung des Avatars sieht. Die angegebenen Werte<br />

s<strong>in</strong>d Richtwerte. Der Browser kann <strong>die</strong>se variieren, wenn z.B. e<strong>in</strong> Objekt <strong>die</strong> Sicht auf den<br />

Avatar verh<strong>in</strong>dert, oder um e<strong>in</strong>e gleichmäßige Kameraführung zu erreichen. Unterstützt<br />

der Browser den Third Person Modus nicht, kann er beide Felder ignorieren und sich so<br />

verhalten als wäre thirdPersonMode immer FALSE.<br />

11<br />

Stellt fest ob e<strong>in</strong> Objekt sichtbar ist.<br />

12<br />

LOD = Level of Detail. Der LOD Knoten schaltet entfernungsabhängig zwischen unterschiedlich detaillierten<br />

Repräsentationen e<strong>in</strong>es Objektes um.<br />

Seite 63


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

set_b<strong>in</strong>d, isBound, ...:<br />

Die <strong>Navigation</strong>Info2 ist e<strong>in</strong> b<strong>in</strong>dbarer Knoten, da sie globale Aspekte der Welt beschreibt.<br />

Weil sie e<strong>in</strong>e Erweiterung der <strong>Navigation</strong>Info ist, sollten beide Knoten auf dem<br />

selben Stack verwaltet werden. Damit <strong>die</strong> <strong>Navigation</strong>Info2 e<strong>in</strong>e <strong>Navigation</strong>Info ersetzen<br />

kann, enthält sie alle Felder, <strong>die</strong> auch an <strong>Navigation</strong>Info vorhanden s<strong>in</strong>d. Ist der Stack<br />

leer, oder e<strong>in</strong> <strong>Navigation</strong>Info Knoten gebunden, werden <strong>für</strong> <strong>die</strong> Felder der <strong>Navigation</strong>Info2<br />

deren Defaultwerte.<br />

7.2.2 Der Knoten Navigatio nSensor<br />

Der <strong>Navigation</strong>Sensor Knoten zeigt Ereignisse an, welche <strong>die</strong> <strong>Navigation</strong> betreffen.<br />

<strong>Navigation</strong>Sensor<br />

{<br />

exposedField SFBool enable<br />

eventOut MFStr<strong>in</strong>g navigationType<br />

eventOut SFBool collided<br />

eventOut SFBool cameraPositon<br />

eventOut SFBool cameraOrientation<br />

}<br />

enable:<br />

Dieses Flag kontrolliert den Aktivierungszustand des <strong>Navigation</strong>Sensor. Die anderen Felder<br />

des Knotens senden nur dann Werte, wenn enabled gesetzt ist.<br />

navigationType:<br />

Das Feld navigationType zeigt <strong>in</strong> se<strong>in</strong>em ersten Arrayelement den momentan verwendeten<br />

<strong>Navigation</strong>smodus an. Falls der Browser über <strong>die</strong> Standardmodi "WALK", "FLY",<br />

"EXAMINE" und "NONE" h<strong>in</strong>ausgehende <strong>Navigation</strong>smodi unterstützt, und e<strong>in</strong> solcher aktiv<br />

ist, enthält das erste Arrayelement <strong>die</strong>sen Namen, und das zweite den <strong>die</strong>sem Modus am<br />

nächsten kommenden Modus. Ist <strong>die</strong>ser Modus auch ke<strong>in</strong> Standard Modus, setzt sich<br />

<strong>die</strong>se Regel fort, bis das letzte Element e<strong>in</strong>en der vier Standard Modi enthält. Folglich ist<br />

das erste Arrayelement von navigationType immer <strong>e<strong>in</strong>er</strong> der im type Feld der aktiven<br />

<strong>Navigation</strong>Info oder <strong>Navigation</strong>Info2 enthaltenen Modi, es sei denn type enthält den<br />

Pseudomode "ANY". Das Feld navigationType kann se<strong>in</strong>en Wert senden, wenn e<strong>in</strong>e<br />

<strong>Navigation</strong>Info oder <strong>Navigation</strong>Info2 gebunden wird, wenn am Benutzungs<strong>in</strong>terface des<br />

Browsers e<strong>in</strong> <strong>Navigation</strong>smodus gewählt wird, oder wenn der <strong>Navigation</strong>Sensor aktiviert<br />

wird.<br />

collided:<br />

An collided wird angezeigt, wenn der Avatar bei s<strong>e<strong>in</strong>er</strong> Bewegung durch <strong>die</strong> Szene mit<br />

Objekten zusammenstößt. Es sendet bei jedem Zusammenstoß e<strong>in</strong>en später näher erläuterten<br />

Wert. Versucht der Benutzer über e<strong>in</strong>e gewisse Zeitperiode h<strong>in</strong>weg, sich <strong>in</strong> e<strong>in</strong><br />

Objekt h<strong>in</strong>e<strong>in</strong> zu bewegen, sendet das collided Feld laufend Werte. Der Wert, den <strong>die</strong>ses<br />

Feld sendet, ist dazu geeignet, e<strong>in</strong>en Force-Feedback Effekt zu erzeugen. D.h. es ist e<strong>in</strong><br />

der Bewegung entgegengesetzter Vektor. Das kann <strong>die</strong> negative Bewegungsrichtung im<br />

Augenblick der Kollision se<strong>in</strong>, der Normalenvektor der Oberfläche des Objektes am Ort<br />

der Berührung, oder e<strong>in</strong> berechneter Reflektionsvektor. Steht solche Information nicht<br />

zur Verfügung, kann auch der Null Vektor (0, 0, 0) gesendet werden. Bezugskoord<strong>in</strong>atensystem<br />

<strong>für</strong> <strong>die</strong>ses Feld ist das Avatar lokale Koord<strong>in</strong>atensystem. Ist <strong>die</strong> Kollisionserkennung<br />

deaktiviert, sendet auch collided ke<strong>in</strong>e Werte.<br />

Seite 64


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

cameraPosition und cameraOrientation:<br />

Diese Felder zeigen <strong>die</strong> Position und <strong>die</strong> Ausrichtung der virtuellen Kamera an. Im First<br />

Person Modus ist das <strong>die</strong> Position und Orientierung, <strong>die</strong> auch e<strong>in</strong> ProximitySensor liefert.<br />

Im Third Person Modus zeigen <strong>die</strong>se Felder <strong>die</strong> Position und Orientierung der Virtuellen<br />

Kamera an. Wenn sich der Browser nicht genau an <strong>die</strong> im cameraOffset Feld des <strong>Navigation</strong>Info2<br />

Knotens angegebenen Werte hält, werden an <strong>die</strong>sen Feldern <strong>die</strong> tatsächlichen<br />

Positionen angezeigt. Bezugssystem ist das lokale Koord<strong>in</strong>atensystem des<br />

<strong>Navigation</strong>Sensor.<br />

7.2.3 Der Knoten Navigato r<br />

Der Navigator Knoten stellt e<strong>in</strong>e Vielzahl von Feldern zur Verfügung, <strong>die</strong> es der Anwendung<br />

ermöglichen, <strong>die</strong> Bewegungen des Avatars durch <strong>die</strong> virtuelle Welt zu steuern. Der<br />

Knoten ist bewußt ke<strong>in</strong> b<strong>in</strong>dbarer Knoten, weil dadurch <strong>Navigation</strong>smodule geschrieben<br />

werden können, <strong>die</strong> unabhängig von der sonstigen Welt agieren und als EXTERNPROTO<br />

zu <strong>e<strong>in</strong>er</strong> Welt h<strong>in</strong>zugeladen werden können. Es können mehrere Navigator Knoten gleichzeitig<br />

aktiv se<strong>in</strong>. Deren Bewegungen werden additiv überlagert und bei Viewpo<strong>in</strong>t-<br />

Animationen ersetzen <strong>die</strong> später ausgelösten <strong>die</strong> vorhergehenden, wenn <strong>die</strong>se noch nicht<br />

beendet s<strong>in</strong>d.<br />

Navigator<br />

{<br />

exposedField SFBool enabled TRUE<br />

exposedField SFBool disableDefault FALSE<br />

eventIn SFVec3f speedXYZ eventIn SFVec3f stepXYZ<br />

eventIn SFVec3f speedYPR eventIn SFVec3f stepYPR<br />

eventIn SFVec3f speedOPR eventIn SFVec3f stepOPR<br />

eventIn SFVec3f speedABR eventIn SFVec3f stepABR<br />

exposedField SFBool free FALSE<br />

eventIn SFVec3f set_exam<strong>in</strong>eCenter<br />

eventIn SFVec3f moveTo<br />

eventIn SFVec3f orientTo<br />

eventIn SFVec3f beamTo<br />

exposedField SFFloat duration 2<br />

eventOut SFBool isAnimat<strong>in</strong>g<br />

eventIn SFTime straighten<br />

eventIn SFTime balance<br />

exposedField SFFloat enableFilter<strong>in</strong>g TRUE<br />

}<br />

Die Wirkungsweise des Navigator Knoten wird von dem <strong>in</strong> <strong>Navigation</strong>Info e<strong>in</strong>gestellten<br />

<strong>Navigation</strong>smodus nicht bee<strong>in</strong>flußt. Jedoch ist es <strong>die</strong> Aufgabe des den Navigator steuernden<br />

Script Knotens, <strong>die</strong>sen mit e<strong>in</strong>em <strong>Navigation</strong>Sensor abzufragen und <strong>die</strong> Signale vom<br />

E<strong>in</strong>gabegerät entsprechend zu <strong>in</strong>terpretieren. Insbesondere wenn der Modus "NONE" e<strong>in</strong>gestellt<br />

wurde, bleibt <strong>die</strong> Wirkungsweise des Navigator Knoten erhalten. Die Bedeutung<br />

von "NONE" ist, daß jegliche Browser spezifische <strong>Navigation</strong> abgeschaltet wird, und <strong>die</strong><br />

<strong>Navigation</strong> von der Anwendung übernommen wird.<br />

enabled und disableDefault:<br />

Wenn enabled den Wert TRUE hat, ist der Navigator aktiviert, andernfalls deaktiviert. E<strong>in</strong><br />

deaktivierter Navigator ignoriert alle Ereignisse, <strong>die</strong> er an se<strong>in</strong>en Feldern erhält und sendet<br />

ke<strong>in</strong>e Information an isAnimat<strong>in</strong>g. E<strong>in</strong> aktivierter Navigator reagiert auf se<strong>in</strong>e Felder<br />

wie nachfolgend beschrieben.<br />

Seite 65


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

speedXYZ, speedYPR, speedOPR und speedABR:<br />

Die mit speed beg<strong>in</strong>nenden Felder stellen <strong>die</strong> Gruppe der Geschw<strong>in</strong>digkeitsfelder dar. Sie<br />

akzeptieren Geschw<strong>in</strong>digkeitswerte <strong>in</strong> den Richtungssystemen SIXDOF (speedXYZ,<br />

speedYPR) und EXAMINE (speedOPR, speedABR). Als Grundlage <strong>für</strong> <strong>die</strong> Richtungssysteme<br />

<strong>die</strong>nt das Koord<strong>in</strong>atensystem, <strong>in</strong> dem sich der aktuell gebundene Viewpo<strong>in</strong>t bef<strong>in</strong>det.<br />

Setzt man e<strong>in</strong>e oder mehrere ihrer Komponenten auf e<strong>in</strong>en von 0 verschiedenen Wert, so<br />

wird der Avatar mit der angegebenen Geschw<strong>in</strong>digkeit <strong>in</strong> <strong>die</strong> entsprechenden Richtungen<br />

bewegt, bis <strong>die</strong>se Werte geändert oder auf 0 gesetzt werden. Die Bewegungen unterliegen<br />

den Begrenzungen und Modifikationen durch Kollisionserkennung und Gravitationssimulation,<br />

sofern <strong>die</strong>se aktiviert s<strong>in</strong>d.<br />

speedXYZ: Die Komponenten x, y, z <strong>die</strong>ses Feldes def<strong>in</strong>ieren <strong>die</strong> Bewegungsgeschw<strong>in</strong>digkeit<br />

entlang der Richtungen right, up und (gemäß e<strong>in</strong>em Rechtssystem) der negativen<br />

forward Richtung. Die Werte werden mit dem im <strong>Navigation</strong>Info Knoten angegebenen<br />

speed Wert, der <strong>die</strong> durchschnittliche Fortbewegungsgeschw<strong>in</strong>digkeit angibt multipliziert.<br />

Als Maße<strong>in</strong>heit wird m/s verwendet.<br />

speedYPR: Dieses Feld def<strong>in</strong>iert Drehungen um <strong>die</strong> eigene Achse. Die ersten beiden<br />

Komponenten drehen <strong>in</strong> <strong>die</strong> Richtungen d und pitch und ändern so <strong>die</strong> Blickrichtung. Die<br />

dritte Komponente dreht <strong>in</strong> roll Richtung und verändert <strong>die</strong> seitliche Neigung der Sicht<br />

auf <strong>die</strong> Szene. Die Maße<strong>in</strong>heit ist rad/s.<br />

speedOPR: Damit kann <strong>in</strong> e<strong>in</strong>em EXAMINE Modus das Objekt gedreht werden. Die Komponenten<br />

drehen <strong>in</strong> ω, φ und ρ. Die ersten beiden Komponenten steuern so <strong>die</strong> Richtung,<br />

aus welcher der Benutzer das Objekt sieht, während <strong>die</strong> dritte Komponente das Objekt<br />

auf dem Bildschirm bzw. im Gesichtsfeld ausrichtet. Alle drei Komponenten werden <strong>in</strong><br />

rad/s gemessen.<br />

speedABR: Dieses Feld beschreibt <strong>die</strong> translatorischen Richtungen A, B und R des<br />

EXAMINE Richtungssystems. Damit kann das Objekt auf dem Bildschirm bzw. im Gesichtsfeld<br />

verschoben werden, um es z.B. zu zentrieren, oder es kann näher herangeholt<br />

oder weiter entfernt werden. Alle drei Geschw<strong>in</strong>digkeiten werden als Faktor angegeben,<br />

der mit dem Abstand vom Avatar zum Drehzentrum multipliziert wird. Ist der Avatar z.B.<br />

10 Meter vom Drehzentrum entfernt, und hat speedABR den Wert (0,1 0,2 0,3), so bewegt<br />

sich das Objekt mit <strong>e<strong>in</strong>er</strong> Geschw<strong>in</strong>digkeit von 1 m/s nach rechts, 2 m/s nach oben<br />

und 3 m/s auf den Avatar zu. Die Maße<strong>in</strong>heit ist 1/s.<br />

stepXYZ, stepYPR, stepOPR und stepABR:<br />

Felder, deren Name mit step beg<strong>in</strong>nt werden zur Gruppe der Positionalen Felder zusammengefaßt.<br />

Ihre Semantik ist ähnlich den Geschw<strong>in</strong>digkeitsfeldern. So wirken beispielsweise<br />

<strong>die</strong> Komponenten von stepXYZ nach rechts, oben und h<strong>in</strong>ten, und <strong>die</strong> Komponenten<br />

von stepOPR wirken rotierend <strong>in</strong> <strong>die</strong> Richtungen ω, φ und ρ. Aber anders als <strong>die</strong>se erhalten<br />

<strong>die</strong> positionalen Felder ke<strong>in</strong>e Geschw<strong>in</strong>digkeitswerte, sondern Positionsdifferenzen, <strong>die</strong> zu<br />

der gegenwärtigen Position und Orientierung des Avatars <strong>in</strong> der jeweiligen Richtung h<strong>in</strong>zuad<strong>die</strong>rt<br />

werden. Während Ereignisse, <strong>die</strong> an Geschw<strong>in</strong>digkeitsfeldern erhalten werden,<br />

so lange gelten, bis <strong>die</strong>se durch e<strong>in</strong> neues Ereignis widerrufen werden, stellen an den<br />

positionalen Felder erhaltene Ereignisse e<strong>in</strong>e e<strong>in</strong>malige Verschiebung dar. Die Maße<strong>in</strong>heiten<br />

der positionalen Felder s<strong>in</strong>d <strong>die</strong> mit 1 s multiplizierten E<strong>in</strong>heiten der entsprechenden<br />

Geschw<strong>in</strong>digkeitsfelder:<br />

[stepXYZ] = m; [stepYPR] = rad; [stepOPR] = rad; [stepABR] = 1;<br />

free:<br />

Das Feld free <strong>die</strong>nt dazu, <strong>die</strong> E<strong>in</strong>stellung des gleichnamigen Feldes am <strong>Navigation</strong>Info2<br />

Knoten <strong>für</strong> den Navigator Knoten zu überschreiben. Ist free nicht gesetzt, gilt der Wert<br />

des momentan gebundenen <strong>Navigation</strong>Info2 Knoten. Wenn free gesetzt ist, gilt <strong>für</strong> den<br />

Navigator Knoten, an dem es gesetzt ist ke<strong>in</strong>e besondere Behandlung des Lot-Vektors.<br />

Seite 66


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

set_exam<strong>in</strong>eCenter:<br />

Mit set_exam<strong>in</strong>eCenter wird das Drehzentrum gesetzt, das <strong>für</strong> <strong>die</strong> Richtungen des<br />

Exam<strong>in</strong>e Richtungssystems gilt. Obwohl mehrere Navigator Knoten aktiv se<strong>in</strong> können,<br />

existiert immer nur e<strong>in</strong> Drehzentrum <strong>für</strong> alle Navigator Knoten und <strong>für</strong> <strong>die</strong> Default <strong>Navigation</strong><br />

des Browsers. Das gesetzte Drehzentrum bleibt so lange gültig, bis e<strong>in</strong> neues<br />

Drehzentrum an e<strong>in</strong>em aktiven Navigator oder mit Hilfe <strong>e<strong>in</strong>er</strong> <strong>Navigation</strong>Info2 gesetzt<br />

wird. Beim Setzen e<strong>in</strong>es Drehzentrums wird <strong>die</strong> Blickrichtung nicht verändert. Bei nachfolgenden<br />

Drehungen um das Drehzentrum bleibt der W<strong>in</strong>kel zwischen der Blickrichtung<br />

und der Richtung, unter der das Drehzentrum zu sehen ist, erhalten. Soll mit dem Navigator<br />

Knoten e<strong>in</strong> <strong>Navigation</strong>smodus implementiert werden, bei dem der Benutzer immer<br />

auf das Drehzentrum schaut, muß orientTo <strong>die</strong> selben Ereignisse wie set_exam<strong>in</strong>eCenter<br />

erhalten.<br />

moveTo, orientTo, beamTo und duration:<br />

Mit den drei Feldern moveTo, orientTo und beamTo können Viewpo<strong>in</strong>t-Animationen ausgelöst<br />

werden, und mit duration wird <strong>die</strong> Dauer der Animationen bestimmt. Es können <strong>die</strong><br />

Position und Orientierung unabhängig von e<strong>in</strong>ander geändert werden. Mit moveTo wird der<br />

Benutzer an e<strong>in</strong>e vorgebbare Position transportiert, ohne daß <strong>die</strong> Blickrichtung geändert<br />

wird. Mit orientTo h<strong>in</strong>gegen kann e<strong>in</strong> Punkt angegeben werden, worauf sich der Avatar<br />

so dreht, daß er <strong>in</strong> Richtung zu <strong>die</strong>sem Punkt schaut. Die seitliche Neigung (β) wird dadurch<br />

nicht verändert. F<strong>in</strong>det gleichzeitig e<strong>in</strong>e durch moveTo und e<strong>in</strong>e durch orientTo<br />

ausgelöste Animation statt, soll der Benutzer am Ende beider Animationen auf das angegebene<br />

Ziel blicken. Dadurch können beide Felder dazu benutzt werden, den Avatar so zu<br />

bewegen, daß er von e<strong>in</strong>em bestimmten Ort aus auf e<strong>in</strong>en bestimmten Punkt schaut.<br />

Das Feld beamTo <strong>die</strong>nt als Alternative zu moveTo und orientTo. Während mit moveTo e<strong>in</strong>e<br />

Position angegeben werden kann, an der sich der Avatar nach der Animation bef<strong>in</strong>det,<br />

beschreibt beamTo e<strong>in</strong>e Position, <strong>die</strong> der Avatar nach der Animation im Blickfeld haben<br />

soll. Es ist <strong>die</strong> Aufgabe des Browsers, e<strong>in</strong>e geeignete Position <strong>in</strong> der Nähe des angegebenen<br />

Punktes und e<strong>in</strong>e passende Orientierung zu f<strong>in</strong>den.<br />

Mit duration wird bestimmt, wie lange <strong>die</strong> Animationen dauern und ob <strong>die</strong>se abgebrochen<br />

werden dürfen. Ist duration 0, wird ke<strong>in</strong>e Animation ausgeführt und der Avatar<br />

nimmt sofort <strong>die</strong> neue Position oder Orientierung an. Ist duration von 0 verschieden, gibt<br />

dessen Betrag <strong>die</strong> Dauer der Animation <strong>in</strong> Sekunden an und das Vorzeichen bestimmt, ob<br />

<strong>die</strong>se Animationen abgebrochen werden können. Bei e<strong>in</strong>em positiven Wert werden <strong>die</strong><br />

Animationen durch e<strong>in</strong> anderes <strong>Navigation</strong>sereignis – d.h. e<strong>in</strong> nicht verschw<strong>in</strong>dender<br />

Wert e<strong>in</strong>es Geschw<strong>in</strong>digkeitsfeldes, e<strong>in</strong> Ereignis an e<strong>in</strong>em positionalen Feld oder das<br />

Auslösen von straighten oder balance – abgebrochen, so daß <strong>die</strong>ses neue Ereignis ausgeführt<br />

werden kann. Bei negativem duration werden <strong>die</strong> durch moveTo, orientTo oder<br />

beamTo ausgelösten Animationen fortgesetzt und andere <strong>Navigation</strong>sereignisse während<br />

dessen ignoriert. Dabei spielt es ke<strong>in</strong>e Rolle, ob <strong>die</strong>se Ereignisse an Feldern e<strong>in</strong>es anderen<br />

Navigator Knotens oder des selben Navigator Knotens auftreten.<br />

Ob e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation abgebrochen wird, bestimmt das Vorzeichen des duration<br />

Feldes an demjenigen Navigator Knoten, an dem <strong>die</strong> Animation ausgelöst wurde. Unabhängig<br />

von duration jedoch können Ereignisse an moveTo e<strong>in</strong>e laufende moveTo Animation<br />

und Ereignisse an orientTo e<strong>in</strong>e laufende orientTo Animation abbrechen und durch<br />

e<strong>in</strong>e Animation zum neuen Ziel ersetzen. Ebenso können beide Arten von Animation<br />

durch e<strong>in</strong> Ereignis an beamTo abgebrochen werden. Das B<strong>in</strong>den oder Unb<strong>in</strong>den e<strong>in</strong>es<br />

Viewpo<strong>in</strong>t Knoten beendet beide Animationen, wenn der Viewpo<strong>in</strong>t Knoten so<br />

konfiguriert ist, daß damit e<strong>in</strong>e Positionsänderung des Avatars verbunden ist, d.h. wenn<br />

das jump Feld des Viewpo<strong>in</strong>t Knoten gesetzt ist.<br />

Seite 67


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

isAnimat<strong>in</strong>g:<br />

Das Feld isAnimat<strong>in</strong>g zeigt an, wann e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation durchgeführt wird. Am<br />

Anfang der Animation wird TRUE gesendet, und am Ende FALSE. Wenn e<strong>in</strong>e e<strong>in</strong>e laufende<br />

Animation durch e<strong>in</strong>e weitere Animation ersetzt wird, sended isAnimat<strong>in</strong>g nur den Wert<br />

TRUE. Es werden nur dann Werte gesendet, wenn der Navigator Knoten aktiviert ist. Das<br />

Feld isAnimat<strong>in</strong>g reagiert unabhängig davon, an welchem Navigator Knoten e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation<br />

ausgelöst wird, oder ob sie <strong>in</strong> Zusammenhang mit e<strong>in</strong>em anderen Mechanismus,<br />

wie z.B. mit dem Viewpo<strong>in</strong>t Knoten, ausgeführt wird. Am Anfang oder Ende<br />

<strong>e<strong>in</strong>er</strong> Viewpo<strong>in</strong>t-Animation, senden <strong>die</strong> isAnimat<strong>in</strong>g Felder aller aktiver Navigator Knoten<br />

entsprechende Werte.<br />

straighten und balance:<br />

Mit straighten und balance kann e<strong>in</strong>e schräge Lage des Viewpo<strong>in</strong>ts wieder ausgerichtet<br />

werden. Gemäß Abb. 5 kann <strong>die</strong> Abweichung des Avatars von der senkrechten Ausrichtung<br />

durch zwei W<strong>in</strong>kel α Und β ausgedrückt werden. E<strong>in</strong> Ereignis an straighten dreht<br />

den Avatar so, daß beide W<strong>in</strong>kel 0 werden, und e<strong>in</strong> Ereignis an balance dreht den Avatar<br />

so, daß nur β zu 0 wird. Durch balance ersche<strong>in</strong>t der Horizont wieder waagerecht, ohne<br />

daß <strong>die</strong> vertikale Blickrichtung geändert wird. E<strong>in</strong> Browser muß <strong>die</strong> durch beide Felder<br />

ausgelösten Bewegungen ohne Animation ausführen, wenn duration den Wert 0 hat. Ist<br />

duration von 0 verschieden, kann der Browser e<strong>in</strong>e Animation durchführen. Für <strong>die</strong> Dauer<br />

der Animation soll aber nicht duration verwendet werden, da <strong>die</strong>s <strong>in</strong> der Regel e<strong>in</strong>e<br />

viel längere Zeit angibt, als <strong>für</strong> e<strong>in</strong>e straighten oder balance Animation s<strong>in</strong>nvoll wäre.<br />

Die Animation soll nicht durch andere <strong>Navigation</strong>sereignisse wie Setzen <strong>e<strong>in</strong>er</strong> Geschw<strong>in</strong>digkeit<br />

oder moveTo beendet werden. Nur das B<strong>in</strong>den e<strong>in</strong>es Viewpo<strong>in</strong>t, der e<strong>in</strong>e Positionsänderung<br />

des Avatars bewirkt, kann <strong>die</strong> durch straighten oder balance angestoßenen<br />

Animationen abbrechen.<br />

enableFilter<strong>in</strong>g:<br />

E<strong>in</strong> Browser kann möglicherweise <strong>die</strong> Bewegungen des Avatars mittels <strong>e<strong>in</strong>er</strong> Filterung<br />

leicht modifizieren, um z.B. weichere Bewegungen zu erzeugen. Wird das enableFilter<strong>in</strong>g<br />

Flag zurückgesetzt, muß <strong>die</strong>se Funktion <strong>für</strong> den Navigator Knoten, an dem es gesetzt<br />

ist, abgeschaltet werden.<br />

7.2.4 Abbrechbarkeit von V iewpo<strong>in</strong>t-Animationen<br />

Der Navigator Knoten führt zwei neue Typen von Viewpo<strong>in</strong>t-Animationen e<strong>in</strong>, so daß<br />

<strong>die</strong>se <strong>in</strong> folgende Gruppen e<strong>in</strong>geteilt werden können:<br />

Typ A: ausgelöst durch das B<strong>in</strong>den e<strong>in</strong>es Viewpo<strong>in</strong>t Knoten<br />

Typ B: ausgelöst durch <strong>die</strong> Felder moveTo, orientTo oder beamTo<br />

Typ C: ausgelöst durch <strong>die</strong> Felder straighten und balance<br />

An jeden <strong>die</strong>ser Typen werden verschiedene Anforderungen gestellt, ob e<strong>in</strong>e solche Animation<br />

abgebrochen werden soll, wenn während deren Durchführung e<strong>in</strong>e neue Animation<br />

des selben oder e<strong>in</strong>es anderen Typs ausgelöst wird. Wird e<strong>in</strong>e Animation nicht abgebrochen,<br />

bedeutet das e<strong>in</strong> Ignorieren der zweiten Animation.<br />

Da eventuell auch <strong>die</strong> durch kont<strong>in</strong>uierliche <strong>Navigation</strong> ausgelöste Bewegung e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation<br />

beenden kann, werden solche Bewegungen hier als Typ D „Animationen”<br />

bezeichnet:<br />

Typ D: durch speedXXX und stepXXX ausgelöste kont<strong>in</strong>uierliche Bewegungen<br />

Seite 68


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Typ A Animationen:<br />

Durch den Viewpo<strong>in</strong>t Knoten ausgelöste Animationen werden häufig von der Anwendung<br />

selbst, d.h. als Reaktion auf bestimmte Bed<strong>in</strong>gungen ausgeführt, oder vom Benutzer<br />

ausgelöst, wenn er e<strong>in</strong>e von der Anwendung vorgegebene Position anwählt. Mit solchen<br />

Animationen s<strong>in</strong>d neben der Positionsänderung noch <strong>die</strong> Änderung anderer Parameter <strong>für</strong><br />

<strong>die</strong> <strong>Navigation</strong> verbunden, etwa wenn sich der neu gebundene Viewpo<strong>in</strong>t <strong>in</strong>nerhalb e<strong>in</strong>es<br />

skalierten oder sich bewegenden Koord<strong>in</strong>atensystems bef<strong>in</strong>det. Aus <strong>die</strong>sem Grund sollten<br />

solche Typ A Animationen nicht unterbrechbar se<strong>in</strong>. Da bei Viewpo<strong>in</strong>t-Animationen immer<br />

<strong>die</strong> vollständige Position und Orientierung festgelegt ist, sollten <strong>die</strong>se Animationen Vorrang<br />

vor allen anderen Typen von Animationen haben und <strong>die</strong>se abbrechen.<br />

Typ B Animationen:<br />

Über den Navigator ausgelöste Animationen werden typischerweise vom Benutzer <strong>in</strong>itiiert,<br />

beispielsweise wenn er auf e<strong>in</strong> Objekt zeigt. Das kann genauso wie <strong>die</strong> kont<strong>in</strong>uierlichen<br />

Bewegungen Teil e<strong>in</strong>es rückgekoppelten Systems se<strong>in</strong>: Der Benutzer reagiert auf<br />

das Gesehene und gibt e<strong>in</strong> Kommando, das <strong>in</strong> <strong>e<strong>in</strong>er</strong> Viewpo<strong>in</strong>t-Animation resultiert. Wenn<br />

<strong>die</strong>se Animation ausgeführt wird, ändert sich <strong>die</strong> Darstellung der Welt, worauf der Benutzer<br />

e<strong>in</strong> neues Kommando gibt. Sei es, daß er es sich anders überlegt hat, oder se<strong>in</strong> erstes<br />

Kommando korrigiert. In <strong>die</strong>sem Fall sollte <strong>die</strong> Ausführung der ersten Animation<br />

durch <strong>die</strong> Ausführung der zweiten Animation ersetzt werden. Es kann aber auch se<strong>in</strong>, daß<br />

Typ B Animationen von der Anwendung programmatisch ausgelöst werden, und es <strong>für</strong> <strong>die</strong><br />

Anwendung wichtig ist, daß der Benutzer das Ziel der Animation erreicht. In <strong>die</strong>sem Fall<br />

kann der Programmierer durch Setzen e<strong>in</strong>es negativen Vorzeichens <strong>für</strong> duration anzeigen,<br />

daß er den Navigator Knoten <strong>für</strong> <strong>die</strong>se Art von Animationen verwendet.<br />

Typ C Animationen:<br />

Das Charakteristische an straighten und balance Animationen ist, daß sie zeitlich sehr<br />

kurz s<strong>in</strong>d, und konzeptionell e<strong>in</strong>e <strong>in</strong> sich abgeschlossene Funktion des Browsers darstellen.<br />

Etwa <strong>in</strong> der Form „Richte mich auf!”. Sie sollten deshalb <strong>in</strong> jedem Fall bis zu ihrem<br />

Ende durchgeführt werden, wenn <strong>die</strong> nachfolgende Animation den Typen B oder D zuzuordnen<br />

ist. Im Idealfall kann der Browser Typ C Animationen und Typ B oder D Animationen<br />

überlagert ausführen, so daß <strong>die</strong>se vone<strong>in</strong>ander unabhängig betrachtet werden können.<br />

Folgt auf e<strong>in</strong>e Typ C Animation e<strong>in</strong>e weitere Typ C Animation, entscheidet deren<br />

Komb<strong>in</strong>ation, ob <strong>die</strong> erste fortgesetzt oder durch <strong>die</strong> zweite ersetzt wird. Denn <strong>die</strong> balance<br />

Operation ist <strong>in</strong> der straighten Operation enthalten. Wenn während <strong>e<strong>in</strong>er</strong> balance<br />

Animation e<strong>in</strong>e straighten Animation ausgelöst wird, so muß als Resultat e<strong>in</strong>e straighten<br />

Animation durchgeführt werden. Bei allen anderen Komb<strong>in</strong>ationen reicht es, <strong>die</strong> erste<br />

fortzuführen.<br />

Typ D Animationen:<br />

Bewegungen aufgrund kont<strong>in</strong>uierlicher <strong>Navigation</strong> s<strong>in</strong>d zwar ke<strong>in</strong>e Animationen <strong>in</strong> dem<br />

S<strong>in</strong>ne, daß sie nach ihrer Initiierung selbständig ablaufen, doch ist mit der Möglichkeit,<br />

durch solche Bewegungen vorher ausgelöste Viewpo<strong>in</strong>t-Animationen abzubrechen, e<strong>in</strong><br />

Problem verbunden, da <strong>die</strong>se Bewegungen <strong>e<strong>in</strong>er</strong> Filterung unterliegen können. Zweck<br />

<strong>e<strong>in</strong>er</strong> solchen Filterung könnte se<strong>in</strong>, Bewegungsausklänge e<strong>in</strong> wenig zu glätten, und dadurch<br />

realistischer zu gestalten. Filterung bedeutet aber, daß e<strong>in</strong>e Bewegung nach dem<br />

sie ausgelöst wurde, noch kurze Zeit nachwirkt. Die Simulation von Trägheit 13 kann durch<br />

e<strong>in</strong>e extrem starke, glättende Filterung erreicht werden. Zudem ist es möglich, daß Bewegungen<br />

der diskreten <strong>Navigation</strong> implementiert werden, <strong>in</strong>dem nach e<strong>in</strong>em Kommando<br />

13 Physikalisch gesehen ist <strong>die</strong>s aber ke<strong>in</strong>e korrekte Berechnung von Trägheit, da <strong>die</strong>se zum E<strong>in</strong>en<br />

geschehen müßte, nachdem <strong>die</strong> Geschw<strong>in</strong>digkeiten der beiden Richtungssysteme zu Geschw<strong>in</strong>digkeiten<br />

<strong>in</strong> den realen sechs Freiheitsgraden vere<strong>in</strong>igt wurden, und zum Anderen, da <strong>für</strong> Massenträgheit<br />

andere Differentialgleichungen gelten.<br />

Seite 69


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

des Benutzers <strong>für</strong> kurze Zeit Bewegungen über <strong>die</strong> Geschw<strong>in</strong>digkeits- und positionalen<br />

Felder des Navigator Knotens ausgelöst werden.<br />

Da <strong>die</strong>s dazu führen kann, daß ungewollt Typ B Animationen abgebrochen werden können,<br />

existiert am Navigator e<strong>in</strong> eventOut isAnimat<strong>in</strong>g, das anzeigt, wann e<strong>in</strong>e Typ B<br />

Animation durchgeführt wird. Die Anwendung kann so auf <strong>die</strong>sen Umstand reagieren,<br />

<strong>in</strong>dem sie das durch Filterung ausgelöste Nachwirken von Bewegungen unterdrückt und<br />

<strong>die</strong> Erzeugung von Bewegungen der diskreter <strong>Navigation</strong> beendet, sofern <strong>die</strong>se Bewegungen<br />

vor der Typ B Animation ausgelöst wurden. Durch <strong>die</strong>sen Mechanismus wird erreicht,<br />

daß Benutzer Bewegungen sowohl der kont<strong>in</strong>uierlichen, der diskreten als auch der<br />

referenzierenden <strong>Navigation</strong> zu jeder Zeit auslösen können, auch wenn noch e<strong>in</strong>e vorher<br />

ausgelöste Bewegung <strong>e<strong>in</strong>er</strong> anderen <strong>Navigation</strong>sart durchgeführt wird, und daß dabei<br />

immer <strong>die</strong> zuletzt ausgelöste Bewegung wirksam wird. Denn das Auslösen <strong>e<strong>in</strong>er</strong> Bewegung<br />

während noch e<strong>in</strong>e andere Bewegung ausgeführt wird, bedeutet mit hoher Wahrsche<strong>in</strong>lichkeit,<br />

daß der Benutzer <strong>die</strong> vorher ausgelöste Bewegung widerrufen oder ändern<br />

möchte.<br />

Haptische E<strong>in</strong>gabegeräte können sehr empf<strong>in</strong>dlich se<strong>in</strong>, und schon kle<strong>in</strong>e, unbeabsichtigte<br />

Auslenkungen können dazu führen, daß von 0 verschiedene Geschw<strong>in</strong>digkeiten erzeugt<br />

werden, <strong>die</strong> Typ B Animationen abbrechen. Deshalb sollte e<strong>in</strong>e Anwendung, <strong>die</strong><br />

solche E<strong>in</strong>gabegeräte abfrägt, bei gesetztem isAnimat<strong>in</strong>g nur Bewegungen an den Navigator<br />

weitergeben, <strong>die</strong> e<strong>in</strong>en Schwellwert überschreiten.<br />

7.3 Komb<strong>in</strong>ation der B ewegungsdaten<br />

In <strong>e<strong>in</strong>er</strong> Szene können mehrere Navigator Knoten gleichzeitig aktiv se<strong>in</strong>, deren Bewegungsdaten<br />

der Browser <strong>in</strong> e<strong>in</strong>e e<strong>in</strong>zige Bewegung des Avatars umwandeln muß. Da Bewegungen<br />

als Geschw<strong>in</strong>digkeiten und als Positionsdifferenzen angegeben werden können,<br />

und da zwei Felder am Navigator Knoten <strong>die</strong> Wirkungsweise <strong>die</strong>ser Angaben bee<strong>in</strong>flussen<br />

können, muß e<strong>in</strong>e große Anzahl an verschiedenartiger Information zusammengeführt<br />

werden. Der <strong>in</strong> <strong>die</strong>ser Arbeit verfolgte Lösungsweg wird im Folgenden dargestellt.<br />

Die im Rahmen <strong>die</strong>ser Diplomarbeit durchgeführte Implementierung basiert auf <strong>e<strong>in</strong>er</strong><br />

Simulationsschleife, <strong>die</strong> <strong>in</strong> kurzen Zeitabständen <strong>die</strong> Bewegungsdaten aller aktiven Navigator<br />

Knoten sammelt und <strong>in</strong> e<strong>in</strong>e leicht geänderte Position und Orientierung des Avatars<br />

umrechnet. Jeder Schleifendurchlauf entspricht e<strong>in</strong>em Simulationsschritt. Die Zeit zwischen<br />

zwei Simulationsschritten ist nicht konstant, kann aber als kle<strong>in</strong> angenommen<br />

werden und liegt abhängig von der im Augenblick verfügbaren Rechenleistung und der<br />

Komplexität des darzustellenden Teils der Szene <strong>in</strong> der Regel zwischen 10 und 100 ms.<br />

Dadurch wird der E<strong>in</strong>druck <strong>e<strong>in</strong>er</strong> flüssigen Bewegung erreicht. Die dem Browser eigene<br />

Implementierung der Maus- und Tastaturnavigation wird jeweils als e<strong>in</strong> zusätzlicher, Bewegungsdaten<br />

liefernder Navigator Knoten realisiert.0,08<br />

7.3.1 Darstellung als Signalflußplan In Abb. 14 ist der Signalfluß dargestellt, der <strong>die</strong> Bewegungsdaten der Navigator Knoten<br />

<strong>in</strong> e<strong>in</strong>e Avatarbewegung umwandelt. Jeder aktive Navigator liefert zwei mal sechs Fließkomma-Zahlen,<br />

<strong>die</strong> e<strong>in</strong>e Bewegung <strong>in</strong> den beiden Richtungssystemen SixDof und Exam<strong>in</strong>e<br />

beschreiben. Diese müssen ad<strong>die</strong>rt, gefiltert und teilweise unter Berücksichtigung des<br />

Lot-Vektors <strong>in</strong> <strong>die</strong> sechs Freiheitsgrade des dreidimensionalen Raumes umgewandelt<br />

werden.<br />

Seite 70


von Navigator Knoten mit<br />

enableFilter<strong>in</strong>g = FALSE<br />

+ +<br />

Glättungsfilter<br />

~<br />

von Navigator Knoten mit<br />

enableFilter<strong>in</strong>g = TRUE<br />

Gf1 Pf1 Gf2 Pf2 Gf3 Pf3 Gd4 Pd4 Gf5 Pd5 Gd6 Pd6 G f<br />

P f<br />

Geschw<strong>in</strong>digkeiten<br />

mit Positionen<br />

komb<strong>in</strong>ieren ∫<br />

P f '<br />

G d<br />

+<br />

P d<br />

Geschw<strong>in</strong>digkeiten<br />

mit Positionen<br />

komb<strong>in</strong>ieren ∫<br />

P d '<br />

P f ' * P''<br />

Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Interpretation<br />

der Richtungssysteme<br />

14 Geschw<strong>in</strong>digkeitswerte (6 x SixDof + 6 x Exam<strong>in</strong>e + 2 x free yaw & pitch)<br />

14 Positionsdifferenzen (6 x SixDof + 6 x Exam<strong>in</strong>e + 2 x free yaw & pitch)<br />

6 Freiheitsgrade des dreidimensionalen Raumes<br />

Abb. 14: Informationsfluß <strong>in</strong> der Navigator Implementierung von Contact<br />

Berücksichtigung des Flags free<br />

Das Flag free des Navigator Knotens bedeutet, daß je nachdem, ob es gesetzt ist, <strong>die</strong><br />

Geschw<strong>in</strong>digkeiten und Positionsdifferenzen <strong>die</strong>ses Knotens unter Berücksichtigung des<br />

Lot-Vektors oder ohne dessen Berücksichtigung verarbeitet werden müssen. Für <strong>die</strong> meisten<br />

Richtungen ergibt sich aber ke<strong>in</strong> Unterschied, so daß nur <strong>die</strong> Angaben <strong>in</strong> <strong>die</strong> Richtung<br />

yaw und pitch abhängig vom Flag free separat verwaltet werden müssen. Es werden<br />

daher pro Navigator Knoten e<strong>in</strong> Vektor G mit 14 Geschw<strong>in</strong>digkeitswerten verarbeitet,<br />

<strong>die</strong> sich aus vier von free unabhängigen Werten des SixDof Richtungssystem, zweimal<br />

yaw, zweimal pitch und sechs von free unabhängigen Werten des Exam<strong>in</strong>e Richtungssystems<br />

zusammensetzen. Nach dem selben Pr<strong>in</strong>zip ergibt sich pro Navigator Knoten<br />

e<strong>in</strong> 14 dimensionaler Vektor P mit Positionsdifferenzen. Es muß jedoch angemerkt<br />

werden, daß <strong>die</strong> meisten Komponenten <strong>die</strong>ser Vektoren den Wert 0 haben. Insbesondere<br />

ist <strong>die</strong> Wahrsche<strong>in</strong>lichkeit, daß beide Richtungssysteme gleichzeitig aktiv s<strong>in</strong>d, sehr ger<strong>in</strong>g.<br />

Daher ist es vertretbar, wenn e<strong>in</strong>e Implementierung <strong>die</strong>sen Fall nicht oder nur <strong>in</strong>effizient<br />

unterstützt.<br />

Berücksichtigung des enableFilter<strong>in</strong>g Flags<br />

Für Navigator Knoten mit gesetztem enableFilter<strong>in</strong>g Flag und solche mit nicht gesetztem<br />

enableFilter<strong>in</strong>g Flag werden <strong>die</strong> Vektoren G und P <strong>in</strong> zwei separaten Ad<strong>die</strong>rgliedern<br />

jeweils komponentenweise aufsummiert.<br />

→ →<br />

G f = Σ G d<br />

f<br />

→ →<br />

P = f Σ Pf f<br />

→ →<br />

G = Σ G d d<br />

d<br />

→ →<br />

P d = Σ P d<br />

d<br />

wobei<br />

Gf: Summe der nicht zu filternden Geschw<strong>in</strong>digkeitsvektoren<br />

Pf: Summe der nicht zu filternden Positionsdifferenz Vektoren<br />

Gd: Summe der nicht zu filternden Geschw<strong>in</strong>digkeitsvektoren<br />

Pd: Summe der nicht zu filternden Positionsdifferenz Vektoren<br />

Seite 71


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Anschließend werden <strong>die</strong> Geschw<strong>in</strong>digkeitsvektoren Gf und Gd mit der Zeit zwischen dem<br />

letzten und dem aktuellen Simulationsschritt multipliziert, und ergeben so jeweils e<strong>in</strong>en<br />

Vektor mit Positionsdifferenzen, <strong>die</strong> der Bewegung seit dem letzten Simulationstick entsprechen.<br />

Diese Positionsdifferenzen werden zu den Vektoren Pf bzw. Pd mit den von den<br />

Navigator Knoten stammenden Positionsdifferenzen h<strong>in</strong>zuad<strong>die</strong>rt, so daß nachfolgend<br />

nur noch Positionsdifferenzen (Vektoren Pf’ und Pd’) verarbeitet werden müssen.<br />

→ → → .<br />

Pf ' = Pf + Gf (tn - tn-1 )<br />

Pd ' = Pd + G .<br />

d (tn - tn-1 )<br />

wobei<br />

tn: Zeitpunkt des aktuellen Simulationsschritt<br />

tn-1: Zeitpunkt des vorausgehenden<br />

Simulationsschritt<br />

Filterung der Bewegungsdaten<br />

Die im Vektor Pf’ zusammengefaßten Bewegungsdaten aller Navigator Knoten mit gesetztem<br />

enableFilter<strong>in</strong>g Flag werden komponentenweise mit e<strong>in</strong>em l<strong>in</strong>earen Tiefpaßfilter<br />

erster Ordnung gefiltert, um e<strong>in</strong>e gleichmäßigere Bewegung zu erreichen. Die Spezifikation<br />

des enableFilter<strong>in</strong>g Feldes <strong>in</strong> Abschnitt 7.2.3 erlaubt dem Browser, jede beliebige,<br />

aber geeignete Methode zur Filterung der Bewegungsdaten e<strong>in</strong>zusetzen, wenn das<br />

enableFilter<strong>in</strong>g Feld an e<strong>in</strong>em Navigator Knoten gesetzt ist. Dies umfaßt auch den Fall,<br />

daß e<strong>in</strong> Browser gar ke<strong>in</strong>e Filterung e<strong>in</strong>setzt. Abschnitt 5.2.2 diskutiert <strong>die</strong> Motivation <strong>für</strong><br />

e<strong>in</strong> solches Filter. In <strong>die</strong>ser Arbeit wurde aus Gründen der e<strong>in</strong>fachen Implementierung e<strong>in</strong><br />

l<strong>in</strong>eares Filter erster Ordnung e<strong>in</strong>gesetzt. Se<strong>in</strong>e Funktionsweise soll im Folgenden kurz<br />

skizziert werden.<br />

Obwohl <strong>die</strong> Simulationsschleife zeitdiskret arbeitet, muß das System zeitkont<strong>in</strong>uierlich<br />

betrachtet werden, da <strong>die</strong> zeitlichen Abstände zwischen zwei Simulationsschritten variieren<br />

können. Das Filter implementiert <strong>die</strong> kausale Impulsantwort<br />

={ e<br />

h(t) -(t-t 0 ) / τ t > 0A<br />

t0<br />

0<br />

t ≤ t0 Diese führt zur Sprungantwort<br />

wobei<br />

t0: Bezugszeitpunkt<br />

τ0: Zeitkonstante des Filters<br />

={ 1 - e<br />

s(t)<br />

0<br />

-(t-t 0 ) / τ 0<br />

Daraus ergibt sich der Ausgangsvektor Pf’ * des Filters aus dem E<strong>in</strong>gangsvektor Pf’ zu<br />

→<br />

P' [n] =<br />

f *<br />

∞<br />

Σi = 1<br />

→<br />

A<br />

A<br />

A<br />

t > t 0<br />

t ≤ t 0<br />

P' [n-i] . s(t[n] - t[n-i])<br />

f<br />

wobei<br />

Pf’ * [n]: Vektor Pf’ * zum aktuellen Simulationsschritt<br />

Pf’[n-i]: Vektor Pf’ vor i Simulationsschritten<br />

s[n]: Zeitstempel des aktuellen Simulationsschritt<br />

s[n-i]: Zeitstempel vor i Simulationsschritten<br />

Abb. 15 stellt e<strong>in</strong>e Komponente <strong>e<strong>in</strong>er</strong> kont<strong>in</strong>uierlichen Bewegung dar, <strong>die</strong> <strong>in</strong> unregelmäßigen<br />

Zeitabständen abgetastet, <strong>in</strong> e<strong>in</strong>e Folge von Positionsdifferenzen konvertiert und<br />

mit e<strong>in</strong>em l<strong>in</strong>earen Filter erster Ordnung gefiltert wird. Obwohl zur Veranschaulichung der<br />

Funktionsweise des Filters e<strong>in</strong>e gleichmäßig ansteigende kont<strong>in</strong>uierliche Bewegung dar-<br />

Seite 72


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

gestellt wird, s<strong>in</strong>d Bewegungen, <strong>die</strong> mit e<strong>in</strong>em haptischen E<strong>in</strong>gabegerät erzeugt werden<br />

<strong>in</strong> der Realität oft weniger gleichmäßig, so daß e<strong>in</strong>e Filterung tatsächlich lohnt (siehe<br />

Abschnitt 5.2.2).<br />

Gemäß Abb. 15 a) wird e<strong>in</strong>e kont<strong>in</strong>uierliche Bewegung zu unregelmäßigen Zeitabständen<br />

abgetastet. Die Differenzen zwischen jeweils zwei Abtastwerten stellt e<strong>in</strong>e Folge von<br />

Sprungfunktionen dar. (Der Maßstab auf der p-Achse <strong>in</strong> Abb. 15 b) wurde im Vergleich zu<br />

Abb. 15 a) vergrößert.) Würde man <strong>die</strong>se Sprungfunktionen aufsummiert, würden sie <strong>die</strong><br />

Orig<strong>in</strong>albewegung als Treppenfunktion approximieren. Abb. 15 c) zeigt <strong>die</strong> Antwort s(t)<br />

des Filters auf jede <strong>die</strong>ser Sprungfunktionen. Gemäß dem Überlagerungspr<strong>in</strong>zip bei l<strong>in</strong>earen<br />

Filtern müssen <strong>die</strong>se Antworten aufsummiert werden, um das Ausgangssignal zu<br />

erhalten.<br />

a)<br />

p<br />

p<br />

t<br />

p<br />

c)<br />

t<br />

b)<br />

Abb. 15: Filterung von Positionsdifferenzen<br />

a) Abtastung <strong>e<strong>in</strong>er</strong> kont<strong>in</strong>uierlichen Bewegung mit variabler Abtastrate<br />

b) Differenz der Abtastwerte als Sprungfunktion<br />

c) Sprungantworten, <strong>die</strong> überlagert werden müssen<br />

Der Wert der Zeitkonstante τ0 des <strong>in</strong> Abb. 15 dargestellten Filters entspricht <strong>in</strong> etwa der<br />

durchschnittlichen Zeitspanne zwischen zwei Abtastwerten. In dem implementierten realen<br />

System hat <strong>die</strong> Zeitspanne mit 0,08 s e<strong>in</strong>en vergleichsweise größeren Wert, wodurch<br />

sich am Ausgang des Filters e<strong>in</strong>e Funktion ergibt, <strong>die</strong> der ursprünglichen kont<strong>in</strong>uierlichen<br />

Bewegung langsam folgt. Zudem kommen Bewegungen wegen der asymptotischen Eigenschaften<br />

von s(t) erst allmählich zum Stehen, schießen dennoch nicht über das Ziel<br />

h<strong>in</strong>aus. Da <strong>die</strong> Simulationsschleife <strong>für</strong> jeden Abtastwert e<strong>in</strong>mal aufgerufen wird, muß sie<br />

zu <strong>die</strong>sen Zeitpunkten e<strong>in</strong>e Überlagerung aller <strong>in</strong> der Vergangenheit hervorgerufenen<br />

Sprungantworten berechnen. Damit wieder e<strong>in</strong>e Folge von Positionsdfferenzen am Ausgang<br />

des Filters entsteht, muß e<strong>in</strong>e Differenz des aktuell berechneten Wertes mit dem im<br />

letzten Schleifendurchlauf berechneten Wert gebildet werden.<br />

Dies bedeutet zunächst e<strong>in</strong>en immensen Verwaltungsaufwand. Jedoch ergibt sich wegen<br />

der Selbstähnlichkeitseigenschaft der e-Funktion 14 e<strong>in</strong>e Vere<strong>in</strong>fachung, so daß aus der<br />

Summe aller bisher ausgegebenen Positionsdifferenzen und der Summe aller bisher<br />

empfangenen Positionsdifferenzen <strong>die</strong> aktuell auszugebende Positionsdifferenz ermittelt<br />

werden kann.<br />

14 e t = A�e (t - t0) bei entsprechend gewähltem A und t0<br />

t<br />

Seite 73


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Komb<strong>in</strong>ation von gefilterten mit ungefilterten Bewegungen<br />

Der Ausgangsvektor Pf’ * des Filters beschreibt Positionsdifferenzen, <strong>die</strong> mit den nicht zu<br />

filternden Positionsdifferenzen Pd’ ad<strong>die</strong>rt werden müssen:<br />

P'' = P'* + P'<br />

f d<br />

Ausführung der resultierenden Bewegung<br />

Das Ergebnis <strong>die</strong>ser Berechnungen ist der Vektor P’’, der <strong>die</strong> durchzuführende Bewegung<br />

des Avatars <strong>für</strong> den aktuellen Simulationsschritt, basierend auf den beiden Richtungssystemen<br />

beschreibt. Se<strong>in</strong>e 14 Komponenten beziehen sich auf <strong>die</strong> beiden Richtungssysteme<br />

SixDof und Exam<strong>in</strong>e, wobei <strong>die</strong> Richtungen yaw und pitch zweimal vorkommen, da<br />

sie vom Flag free abhängen. Diese 14 Werte werden mit der aktuellen Position und Orientierung<br />

des Avatars entsprechend ihrer Def<strong>in</strong>ition <strong>in</strong> 5.1.3 zu <strong>e<strong>in</strong>er</strong> neuen Position und<br />

Orientierung verknüpft. Diese Bewegung kann mit der Geometrie der Szene verglichen<br />

werden, und bei Auftreten <strong>e<strong>in</strong>er</strong> Kollision wird <strong>die</strong> Bewegung entsprechend verkürzt.<br />

7.3.2 Darstellung als Pseud ocode<br />

Der oben erläuterte Vorgang ist zur besseren Veranschaulichung noch e<strong>in</strong>mal als Pseudocode<br />

dargestellt. Es wird e<strong>in</strong>e leicht lesbare, an <strong>die</strong> Programmiersprache Visual Basic<br />

angelehnte Darstellung verwendet. Damit <strong>die</strong> Darstellung prägnant bleibt, wird der Inkrementoperator<br />

+= verwendet, der se<strong>in</strong> l<strong>in</strong>ksseitiges Argument um den Wert des<br />

rechtsseitigen Arguments erhöht. Variablendeklarationen werden durch Nennung des<br />

Typs vor den deklarierten Variablen notiert.<br />

Anders als der Signalflußplan <strong>in</strong> Abb. 14 verwendet <strong>die</strong> Pseudocode Darstellung den fiktiven<br />

Datentyp vector, der mit dem VRML Datentyp SFVec3f kompatibel ist und e<strong>in</strong>en<br />

dreidimensionalen Vektor enthält. Zur Erhöhung der Lesbarkeit wird e<strong>in</strong>e farbliche Co<strong>die</strong>rung<br />

der auf <strong>die</strong>sem Datentyp basierenden Variablen verwendet. Die Zuordnung zwischen<br />

Variablen und den 14-dimensionalen Vektoren des Signalflußgraphen ist als Kommentar<br />

gekennzeichnet.<br />

vector speedFiltXYZ, speedFiltYPR, speedFiltOPR, speedFiltABR; // G f<br />

vector stepFiltXYZ, stepFiltYPR, stepFiltOPR, stepFiltABR; // P f<br />

vector speedXYZ, speedYPR, speedOPR, speedABR; // G d<br />

vector stepXYZ, stepYPR, stepOPR, stepABR; // P d<br />

vector speedFiltFreeYPR, stepFiltFreeYPR; // <strong>für</strong> <strong>die</strong> vom Flag free abhängigen Werte<br />

vector speedFreeYPR, stepFreeYPR; // <strong>für</strong> <strong>die</strong> vom Flag free abhängigen Werte<br />

In e<strong>in</strong>em ersten Schritt werden <strong>die</strong> Bewegungsdaten aller aktiven Navigator Knoten gesammelt<br />

und abhängig vom Flag enableFilter<strong>in</strong>g zu den Variablen <strong>für</strong> Gf und Pf bzw.<br />

Gd und Pd h<strong>in</strong>zuad<strong>die</strong>rt. Aus Übersichtlichkeitsgründen wurde auf e<strong>in</strong>e Behandlung des<br />

Flags free <strong>in</strong> <strong>die</strong>sem Teil des Pseudocodes verzichtet. Korrekterweise müßten <strong>die</strong> Zeilen<br />

<strong>für</strong> <strong>die</strong> Zuweisungen an speedFiltYPR, stepFiltYPR, speedYPR und stepYPR abhängig<br />

vom Flag free mittels <strong>e<strong>in</strong>er</strong> if Anweisung durch e<strong>in</strong>e Zuweisung an speedFiltFreeYPR,<br />

stepFiltFreeYPR, speedFreeYPR und stepFreeYPR ersetzt weden.<br />

Seite 74


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

// alle Bewegungen von den Navigator Knoten sammeln:<br />

for <strong>in</strong>t I= 1 to NumberOfNavigatorNodes<br />

do<br />

if Navigator[I].enabled then<br />

if Navigator[I].enableFilter<strong>in</strong>g then<br />

speedFiltXYZ+= Navigator[I].speedXYZ; stepFiltXYZ+= Navigator[I].stepXYZ;<br />

speedFiltYPR+= Navigator[I].speedYPR; stepFiltYPR+= Navigator[I].stepYPR;<br />

speedFiltOPR+= Navigator[I].speedOPR; stepFiltOPR+= Navigator[I].stepOPR;<br />

speedFiltABR+= Navigator[I].speedABR; stepFiltABR+= Navigator[I].stepABR;<br />

else<br />

speedOPR+= Navigator[I].speedOPR; stepOPR+= Navigator[I].stepOPR;<br />

speedYPR+= Navigator[I].speedYPR; stepYPR+= Navigator[I].stepYPR;<br />

speedXYZ+= Navigator[I].speedXYZ; stepXYZ+= Navigator[I].stepXYZ;<br />

speedABR+= Navigator[I].speedABR; stepABR+= Navigator[I].stepABR;<br />

end if<br />

end if<br />

end if<br />

done<br />

Die Geschw<strong>in</strong>digkeitswerte werden mit der Zeit zwischen dem aktuellen und dem letzten<br />

Simulationsschritt multipliziert und ergeben so e<strong>in</strong>e Bewegung während <strong>die</strong>ser Zeitspanne,<br />

der zu den Positionsdifferenzen h<strong>in</strong>zuad<strong>die</strong>rt werden kann. Nach <strong>die</strong>sem Schritt muß<br />

nur noch mit den Variablen stepFiltXYZ bis stepFiltABR und stepXYZ bis stepABR,<br />

sowie der entsprechenden *FreeYPR Versionen weiter gerechnet werden.<br />

// komb<strong>in</strong>iere speed mit step Werten:<br />

float DeltaTime= TimeOfThisFrame – TimeOfLastFrame;<br />

stepFiltXYZ+= speedFiltXYZ * DeltaTime; stepXYZ+= speedXYZ * DeltaTime;<br />

stepFiltYPR+= speedFiltYPR * DeltaTime; stepYPR+= speedYPR * DeltaTime;<br />

stepFiltOPR+= speedFiltOPR * DeltaTime; stepOPR+= speedOPR * DeltaTime;<br />

stepFiltABR+= speedFiltABR * DeltaTime; stepABR+= speedABR * DeltaTime;<br />

stepFiltFreeYPR+= speedFiltFreeYPR * DeltaTime;<br />

stepFreeYPR+= speedFreeYPR * DeltaTime;<br />

Für Werte, <strong>die</strong> von Navigator Knoten mit gesetztem enableFilter<strong>in</strong>g Flag stammen, ist<br />

es dem Browser freigestellt, e<strong>in</strong> Filter anzuwenden. Dieses sei <strong>in</strong> der Funktion ApplyFilter(�)<br />

realisiert, <strong>die</strong> ihre Parameter verändert. Die im Rahmen <strong>die</strong>ser Diplomarbeit<br />

durchgeführte Implementierung verwendet e<strong>in</strong> l<strong>in</strong>eares Filter erster Ordnung mit der<br />

Zeitkonstante τ0 = 0.08 s. Dies bewirkt e<strong>in</strong>e leichte Glättung der Bewegungen, wodurch<br />

<strong>die</strong> <strong>Navigation</strong> angenehmer ersche<strong>in</strong>t. Die Funktion ApplyFilter(�) hält <strong>in</strong>terne Zustandsdaten,<br />

<strong>die</strong> den vergangenen Verlauf der E<strong>in</strong>gangsdaten zusammenfassen.<br />

// filtern:<br />

ApplyFilter(stepFiltXYZ, stepFiltYPR, stepFiltOPR, stepFiltABR);<br />

Die gefilterten Positionsdifferenzen können nun mit den ungefilterten zusammengefaßt<br />

werden, so daß nach <strong>die</strong>sem Schritt nur noch <strong>die</strong> Variablen stepXYZ bis stepABR weiter<br />

verarbeitet werden müssen.<br />

// komb<strong>in</strong>iere <strong>die</strong> gefilterten zu den ungefilterten Werten:<br />

stepXYZ+= stepFiltXYZ;<br />

stepYPR+= stepFiltYPR; stepFreeYPR+= stepFiltFreeYPR;<br />

stepOPR+= stepFiltOPR;<br />

stepABR+= stepFiltABR;<br />

An <strong>die</strong>ser Stelle s<strong>in</strong>d alle Richtungen der beiden Richtungssysteme <strong>in</strong> jeweils nur e<strong>in</strong>em<br />

Wert – <strong>e<strong>in</strong>er</strong> Komponente <strong>e<strong>in</strong>er</strong> Variablen vom Typ vektor – zusammengefaßt. Es können<br />

hier <strong>die</strong> <strong>in</strong> der <strong>Navigation</strong>Info oder <strong>Navigation</strong>Info2 festgelegten Rahmenbed<strong>in</strong>gungen<br />

<strong>für</strong> <strong>die</strong> <strong>Navigation</strong> berücksichtigt werden. Die Variable CurrentBound_<strong>Navigation</strong>-<br />

Info sei e<strong>in</strong>e Referenz auf e<strong>in</strong>en <strong>die</strong>ser beiden Knotentypen. Zunächst werden <strong>die</strong> Richtungen<br />

x, y und z mit der nom<strong>in</strong>ellen <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit multipliziert. Ist <strong>die</strong><br />

Seite 75


8 Multimodale Int eraktion<br />

Kapitel 8, Multimodale Interaktion<br />

In Abschnitt 3.5 wurde das am Lehrstuhl entwickelte <strong>multimodale</strong> Be<strong>die</strong>nsystem MIVIS<br />

vorgestellt. MIVIS ermöglicht <strong>die</strong> Be<strong>die</strong>nung <strong>e<strong>in</strong>er</strong> VR Anwendung unter Verwendung von<br />

semantisch höherwertigen Modalitäten. Maus und Tastaturbe<strong>die</strong>nung ist zwar möglich,<br />

wird aber <strong>in</strong> den <strong>multimodale</strong>n Integrationsprozeß nicht e<strong>in</strong>bezogen. Andere VR E<strong>in</strong>gabegeräte<br />

werden nicht unterstützt.<br />

Die <strong>in</strong> <strong>die</strong>sem Kapitel beschriebene Arbeit erweitert <strong>die</strong>ses Be<strong>die</strong>nsystem um <strong>die</strong> Möglichkeit<br />

zur Be<strong>die</strong>nung mit beliebigen haptischen E<strong>in</strong>gabegeräten. Abschnitt 8.1 gibt e<strong>in</strong>en<br />

Überblick über den technischen Aufbau des ursprünglichen MIVIS Systems und Abschnitt<br />

8.2 bis 8.5 beschreiben <strong>die</strong> <strong>in</strong> <strong>die</strong>ser Arbeit durchgeführten Erweiterungen.<br />

8.1 Existierende Softw are<br />

Dieser Abschnitt gibt zuerst e<strong>in</strong>en Überblick über den Formalismus der Grammatiken und<br />

beschreibt darauf aufbauend <strong>die</strong> Realisierung des existierenden MIVIS Systems.<br />

8.1.1 Formale Funktionsmo dellierung<br />

In <strong>die</strong>sem Kapitel wird an mehreren Stellen der im MIVIS System verwendete Formalismus<br />

mittels <strong>e<strong>in</strong>er</strong> Grammatik beschrieben. In <strong>die</strong>sem Absatz soll e<strong>in</strong> kurzer Überblick<br />

über den formalen H<strong>in</strong>tergrund gegeben werden. Der Abschnitt basiert auf der <strong>in</strong> [12]<br />

gegebenen formalen Def<strong>in</strong>ition. Die Grundlagen können <strong>in</strong> [10] und [11] nachgelesen<br />

werden.<br />

Ausgehend von e<strong>in</strong>em Alphabet, das <strong>die</strong> Menge aller <strong>in</strong> <strong>e<strong>in</strong>er</strong> Sprache erlaubten Symbole<br />

def<strong>in</strong>iert, kann e<strong>in</strong>e formale Sprache als <strong>die</strong> Menge aller erlaubten Worte über <strong>die</strong>sem<br />

Alphabet def<strong>in</strong>iert werden, wobei e<strong>in</strong> Wort e<strong>in</strong>e erlaubte Komb<strong>in</strong>ation der Symbole aus<br />

dem Alphabet ist. Umfaßt das Alphabet z.B. <strong>die</strong> Symbole Σ = {a, b, c}, dann ist Σ * = {ε, a,<br />

b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, ...} <strong>die</strong> Menge aller möglichen Worte.<br />

Hier bezeichnet ε das leere Wort, das aus null Symbolen besteht. E<strong>in</strong>e Sprache über dem<br />

Alphabet Σ ist e<strong>in</strong>e Teilmenge von Σ * , z.B. L = { ab, abba, bac }.<br />

E<strong>in</strong>e Grammatik ist e<strong>in</strong> Satz von Regeln (Produktionen), <strong>die</strong> def<strong>in</strong>ieren, auf welche Weise<br />

gültige Worte der Sprache L gebildet werden können. Variablen werden aus Symbolen<br />

des Alphabets und aus anderen Variablen zusammengesetzt. Um zu überprüfen, ob e<strong>in</strong><br />

gegebenes Wort zu <strong>e<strong>in</strong>er</strong> Sprache gehört, müssen Teile des Wortes solange mit Hilfe der<br />

Produktionen durch Variablen ersetzt werden, bis das Wort vollständig durch e<strong>in</strong>e bestimmte<br />

Variable dargestellt wird. Diesen Vorgang nennt man Parsen. Die Variable, <strong>die</strong><br />

e<strong>in</strong> gültiges Wort def<strong>in</strong>iert, heißt Startsymbol und wird meist mit S bezeichnet.<br />

Der Umgekehrte Vorgang zum Parsen ist <strong>die</strong> Produktion oder Generierung e<strong>in</strong>es Wortes.<br />

Dazu wird das Startsymbol solange mit Hilfe der Produktionen durch andere Variablen<br />

oder durch Symbole ersetzt werden, bis nur noch Symbole <strong>in</strong> dem Ausdruck auftreten.<br />

Oft werden Variablen als nicht term<strong>in</strong>ale Symbole und <strong>die</strong> Symbole aus dem als term<strong>in</strong>ale<br />

Symbole bezeichnet, da Variablen so lange mit Hilfe der Produktionen ersetzt werden, bis<br />

nur noch Symbole des Alphabets vorhanden s<strong>in</strong>d.<br />

Seite 77


Kapitel 8, Multimodale Interaktion<br />

Beispiel:<br />

Es sei Σ1 = {der, <strong>die</strong>, das, Vater, Mutter, K<strong>in</strong>d, Bruder, Schwester, lacht, spielt, s<strong>in</strong>gt,<br />

und} das Alphabet, dann kann <strong>die</strong> Sprache L1 durch <strong>die</strong> folgenden Regeln def<strong>in</strong>iert<br />

werden:<br />

::= <br />

::= <br />

::= <br />

::= der | <strong>die</strong> | das<br />

::= Vater | Mutter | K<strong>in</strong>d | Bruder | Schwester<br />

::= <br />

::= <br />

::= lacht | spielt | s<strong>in</strong>gt<br />

::= und<br />

Mögliche Sätze aus <strong>die</strong>ser Sprache s<strong>in</strong>d:<br />

<strong>die</strong> Mutter lacht<br />

das K<strong>in</strong>d lacht und s<strong>in</strong>gt<br />

In <strong>die</strong>ser Arbeit wird <strong>die</strong> Backus-Naur-Form[10] verwendet. Diese def<strong>in</strong>iert das Zeichen<br />

::= als das Zuweisungszeichen. Variablen auf der l<strong>in</strong>ken Seite werden durch <strong>die</strong><br />

Ausdrücke auf der rechten Seite ersetzt. Das Zeichen | <strong>die</strong>nt zur Kennzeichnung von<br />

Alternativen – z.B. wird <strong>die</strong> Variable durch der, <strong>die</strong> oder durch das ersetzt. In<br />

<strong>die</strong>ser Arbeit werden ferner Variablen <strong>in</strong> spitze Klammern gesetzt, um sie von term<strong>in</strong>alen<br />

Symbolen zu unterscheiden. Der Konvention, <strong>die</strong>jenige Variable, welche <strong>die</strong> gültigen<br />

Worte der Sprache def<strong>in</strong>iert, mit zu bezeichnen wird Folge geleistet.<br />

Nach Chomsky[13] lassen sich Grammatiken unter anderem <strong>in</strong> kontextfreie und kontextsensitive<br />

Grammatiken e<strong>in</strong>teilen. E<strong>in</strong>e kontextfreie Grammatik besteht nur aus Regeln,<br />

<strong>die</strong> e<strong>in</strong>e Variable unabhängig von der Umgebung, <strong>in</strong> der <strong>die</strong> Variable ersetzt werden soll,<br />

def<strong>in</strong>ieren. Auf der l<strong>in</strong>ken Seite <strong>e<strong>in</strong>er</strong> Produktion taucht nur <strong>die</strong> zu def<strong>in</strong>ierende Variable<br />

auf. Das oben angegebene Beispiel <strong>e<strong>in</strong>er</strong> Grammatik <strong>für</strong> e<strong>in</strong>fache deutsche Sätze ist e<strong>in</strong>e<br />

kontextfreie Grammatik.<br />

E<strong>in</strong>e kontextsensitive Grammatik h<strong>in</strong>gegen ist e<strong>in</strong>e Grammatik, bei der zur Bildung e<strong>in</strong>iger<br />

Variablen bestimmte Symbole <strong>in</strong> der Umgebung der Variablen vorhanden se<strong>in</strong> müssen.<br />

Auf der l<strong>in</strong>ken Seite <strong>e<strong>in</strong>er</strong> kontextsensitiven Bildungsregel stehen weitere Symbole,<br />

welche <strong>die</strong> Gültigkeit der Regel beschreiben. Im obigen Beispiel könnte <strong>die</strong> Regel <strong>für</strong><br />

durch <strong>die</strong> folgenden kontextsensitiven Regeln ersetzt werden, um auszudrücken,<br />

daß bestimmte Nomen bestimmte Artikel voraussetzen:<br />

der ::= Vater | Bruder<br />

<strong>die</strong> ::= Mutter | Schwester<br />

das ::= K<strong>in</strong>d<br />

Auf der l<strong>in</strong>ken Seite <strong>e<strong>in</strong>er</strong> Regel können sowohl l<strong>in</strong>ks als auch rechts von der zu def<strong>in</strong>ierenden<br />

Variable kontextspezifizierende Symbole auftreten. Da kontextfreie Grammatiken<br />

algorithmisch und systemtheoretisch leichter zu handhaben s<strong>in</strong>d als kontextsensitive,<br />

und da sie <strong>für</strong> <strong>die</strong> Modellierung der Systemfunktionen ausreichen, werden <strong>in</strong> <strong>die</strong>ser Arbeit<br />

nur kontextfreie Grammatiken verwendet.<br />

Kontextsensitivität<br />

In <strong>die</strong>sem Abschnitt wurden Grammatiken <strong>in</strong> kontextfreie und kontextsensitive Grammatiken<br />

e<strong>in</strong>geteilt. Es gibt noch e<strong>in</strong>e weitere Form der Kontextabhängigkeit: Kommandos,<br />

<strong>die</strong> der Benutzer an e<strong>in</strong> System abgibt, können sich auf andere Kommandos beziehen,<br />

<strong>die</strong> vor oder nach dem aktuellen Kommando oder über e<strong>in</strong>e andere Modalität abgegeben<br />

wurden. Um Mehrdeutigkeiten zu vermeiden, werden <strong>in</strong> <strong>die</strong>ser Arbeit Kontextabhängigkeiten<br />

mit dem Zusatz „im S<strong>in</strong>ne der Funktionalität” bzw. „im S<strong>in</strong>ne formaler Sprachen”<br />

gekennzeichnet. Meistens jedoch ist von Kontextsensitivität im S<strong>in</strong>ne der Funktionalität<br />

Seite 78


Kapitel 8, Multimodale Interaktion<br />

<strong>die</strong> Rede, und nur der Begriff kontextfreie Grammatik bezeichnet Kontextfreiheit im S<strong>in</strong>ne<br />

formaler Sprachen, so daß <strong>in</strong> solchen Fällen auf den Zusatz verzichtet wird.<br />

Konventionen zur Darstellung<br />

Um <strong>die</strong> Übersichtlichkeit der Darstellung zu erhöhen, werden folgende Konventionen <strong>in</strong><br />

<strong>die</strong>ser Arbeit zur Darstellung kontextfreier Grammatik verwendet:<br />

Bei <strong>e<strong>in</strong>er</strong> kontextfreien Grammatik beschreiben <strong>die</strong> Bildungsregeln, wie e<strong>in</strong>e Variable<br />

durch andere Variablen unter Verwendung von Term<strong>in</strong>alsymbolen ersetzt werden. Diese<br />

Abhängigkeit zwischen den Variablen wird durch e<strong>in</strong>e E<strong>in</strong>rückung gekennzeichnet. E<strong>in</strong>e<br />

Regel wird wenn möglich von solchen Regeln gefolgt, welche <strong>die</strong>se Regel benötigt. Diese<br />

unterstützenden Regeln werden um e<strong>in</strong>e Ebene weiter e<strong>in</strong>gerückt, als <strong>die</strong> Regel, durch<br />

<strong>die</strong> sie benutzt werden.<br />

E<strong>in</strong> Teil der Regeln <strong>die</strong>nt dazu, <strong>die</strong> term<strong>in</strong>alen Symbole zu Wertebereichen zu gruppieren.<br />

So def<strong>in</strong>iert <strong>die</strong> Regel ::= on | off | toggle e<strong>in</strong>e Variable, welche <strong>die</strong> term<strong>in</strong>alen<br />

Symbole on, off und toggle zu e<strong>in</strong>em Wertebereich komb<strong>in</strong>iert, der zur Kontrolle boolscher<br />

Parameter benutzt werden kann. Solche Variablen und <strong>die</strong> Regeln, durch <strong>die</strong> sie<br />

def<strong>in</strong>iert werden, s<strong>in</strong>d <strong>in</strong> grüner Farbe dargestellt. Damit <strong>die</strong>se Kennzeichnung auch auf<br />

Schwarzweiß Ausdrucken erkennbar ist, werden Wertebereich def<strong>in</strong>ierende Regeln am<br />

l<strong>in</strong>ken Rand mit Punkten markiert.<br />

E<strong>in</strong>e spezielle Art von Variablen umfaßt e<strong>in</strong>en allgeme<strong>in</strong>gültigen Wertebereich oder Datentyp.<br />

Da <strong>die</strong>se als allgeme<strong>in</strong> bekannt vorausgesetzt werden können, und deren exakte<br />

Def<strong>in</strong>ition von sekundärer Bedeutung <strong>für</strong> <strong>die</strong> Funktionsmodellierung ist, werden sie mit<br />

kursiver Schrift notiert und nicht näher durch Produktionen def<strong>in</strong>iert. Folgende Variablen<br />

werden verwendet:<br />

• : bezeichnet Ganzzahlen der Form 1234 oder -5678<br />

• : bezeichnet Fließkomma-Zahlen der Form 10.23 oder –5.2e+20<br />

• : bezeichnet beliebige Zeichenketten, <strong>die</strong> <strong>in</strong> Anführungszeichen stehen<br />

Da <strong>in</strong> <strong>die</strong>sem Kapitel e<strong>in</strong>e Grammatik entwickelt wird, <strong>die</strong> im S<strong>in</strong>ne der Funktionalität<br />

sowohl kontextsensitive als auch kontextfreie Kommandos beschreibt, und da an bestimmten<br />

Stellen nur kontextfreie Kommandos erlaubt s<strong>in</strong>d, werden kontextsensitive<br />

Kommandos mit dunkelroter Farbe gekennzeichnet. Zusätzlich werden <strong>die</strong>se durch e<strong>in</strong>en<br />

Strich am l<strong>in</strong>ken Rand, beziehungsweise mit <strong>e<strong>in</strong>er</strong> punktierten Unterstreichung markiert.<br />

Um <strong>die</strong> Lesbarkeit der Grammatik zu erhöhen, s<strong>in</strong>d <strong>in</strong> der elektronischen Form <strong>die</strong>ser<br />

Arbeit alle Variablen sensitiv gegenüber Mausklicks. Wird e<strong>in</strong>e Variable angeklickt, spr<strong>in</strong>gt<br />

der Cursor an <strong>die</strong> Def<strong>in</strong>ition der Variable. Die Brauchbarkeit <strong>die</strong>ses Mechanismus hängt<br />

jedoch vom verwendeten Dateiformat ab.<br />

Die Namen von Variablen <strong>für</strong> Richtungsangaben werden <strong>in</strong> Anlehnung an das Avatar lokale<br />

Koord<strong>in</strong>atensystem aus Abb. 4 aus Abschnitt 5.1.2 gewählt. Beschreibt z.B. e<strong>in</strong>e<br />

<strong>die</strong>ser Variablen horizontale und vertikale Richtungsangaben, wird sie XY genannt, da<br />

horizontale Bewegungen entlang der x-Achse und vertikale Bewegungen entlang der y-<br />

Achse wirken. Vorwärts- Rückwärtsbewegungen s<strong>in</strong>d demgemäß dem Buchstaben Z zugeordnet.<br />

Seite 79


Kapitel 7, Steuerung der <strong>Navigation</strong><br />

Welt e<strong>in</strong>e solche, <strong>in</strong> der dem Lot-Vektor ke<strong>in</strong>e besondere Bedeutung zukommt, dann wird<br />

<strong>die</strong>s durch e<strong>in</strong> gesetztes Flag free der <strong>Navigation</strong>Info2 ausgedrückt. In <strong>die</strong>sem Fall müssen<br />

unabhängig von den Flags free an den Navigator Knoten alle Bewegungen unabhängig<br />

vom Lot-Vektor verarbeitet werden. Dies wird durch e<strong>in</strong> Verschieben der Bewegungsdaten<br />

von stepYPR nach stepFreeYPR gewährleistet.<br />

// Aktiven <strong>Navigation</strong>Info Knoten beachten:<br />

stepXYZ*= CurrentBound_<strong>Navigation</strong>Info.speed;<br />

if CurrentBound_<strong>Navigation</strong>Info.free then<br />

stepFreeYPR+= stepYPR;<br />

stepYPR= (0, 0, 0);<br />

end if<br />

Nun s<strong>in</strong>d <strong>die</strong> Bewegungen <strong>in</strong> <strong>e<strong>in</strong>er</strong> Weise spezifiziert, <strong>in</strong> der sie direkt ausgeführt werden<br />

können. Dieser Vorgang ist extrem Browser abhängig und soll hier nur schematisch dargestellt<br />

werden. Die Variable AvatarMatrix sei e<strong>in</strong>e Variable, welche <strong>die</strong> Position und<br />

Orientierung des Avatars enthält. Manche Browser könnten hier e<strong>in</strong>e Transformationsmatrix<br />

verwenden, andere e<strong>in</strong>e parametrisierte Darstellung, welche <strong>in</strong> Anlehnung an<br />

Abschnitt 5.1.2 <strong>die</strong> Orientierung <strong>in</strong> Form e<strong>in</strong>es Richtungsvektors v →<br />

und der W<strong>in</strong>kel α und<br />

β beschreibt. Letztere könnten e<strong>in</strong>e ähnliche parametrisierte Darstellung <strong>für</strong> das Exam<strong>in</strong>e<br />

Richtungssystem def<strong>in</strong>ieren und abhängig davon, welches Richtungssystem aktiv ist, e<strong>in</strong>e<br />

der beiden Darstellungen verwenden. S<strong>in</strong>d jedoch beide Richtungssysteme aktiv, muß e<strong>in</strong><br />

solcher Browser laufend zwischen beiden Darstellungen umrechnen. Dieser Fall ist jedoch<br />

sehr unwahrsche<strong>in</strong>lich.<br />

// Richtungswerte <strong>in</strong> echte Bewegungen umwandeln:<br />

SupplySixDof (AvatarMatrix, stepXYZ, stepYPR, stepFreeYPR);<br />

SupplyExam<strong>in</strong>e(AvatarMatrix, stepOPR, stepABR, CurrentExam<strong>in</strong>eCenter);<br />

Die Variable AvatarMatrix enthält nun <strong>die</strong> aufgrund der von den Navigator Knoten und<br />

der im Browser e<strong>in</strong>gebauten <strong>Navigation</strong>smechanismen erzeugte neue Position des<br />

Avatars. Diese muß nun noch <strong>in</strong> e<strong>in</strong>em letzten Schritt mit der Geometrie der Szene verglichen<br />

werden, wodurch eventuell e<strong>in</strong> Teil der berechneten Bewegung zurückgenommen<br />

werden muß. Dieser Schritt der Kollisionserkennung ist extrem browserabhängig und<br />

wird hier nicht dargestellt. Die daraus resultierende Position <strong>in</strong> AvatarMatrix kann zur<br />

Darstellung der Szene aus der neuen Position verwendet werden.<br />

Seite 76


8.1.2 Aufbau des ursprüng lichen MIVIS Systems<br />

Kapitel 8, Multimodale Interaktion<br />

Dieser Abschnitt stellt <strong>die</strong> Funktionsweise des unveränderten <strong>multimodale</strong>n Be<strong>die</strong>nsystems<br />

MIVIS dar, auf welche <strong>die</strong>se Arbeit aufbaut.<br />

Struktur der Systemkomponenten<br />

E<strong>in</strong>e Reihe Erkennermodule <strong>für</strong> semantisch höherwertige Modalitäten analysiert <strong>die</strong> Signale<br />

der angeschlossenen Sensoren und extrahiert daraus diskrete Kommandos an <strong>die</strong><br />

Anwendung. Das System enthält e<strong>in</strong>en Spracherkenner, der sowohl natürlichsprachliche<br />

Äußerungen als auch e<strong>in</strong>e Kommandosprache versteht. E<strong>in</strong> Erkennermodul <strong>für</strong> dynamische<br />

Handgesten erhält das Videosignal <strong>e<strong>in</strong>er</strong> Kamera, <strong>die</strong> von oben auf <strong>die</strong> Hand des<br />

Benutzers gerichtet ist, und extrahiert daraus mit der Hand durchgeführte Gesten. E<strong>in</strong>e<br />

zweite Kamera betrachtet von vorne den Kopf des Benutzers und speist mit se<strong>in</strong>em Videosignal<br />

e<strong>in</strong> Erkennermodul <strong>für</strong> Kopfgesten. In [6][7][8] können <strong>die</strong> Details zu den Erkennermodulen<br />

nachgelesen werden. Abb. 16 zeigt den Versuchsaufbau im Usability Labor<br />

des MIVIS Projekts. Die Konzeption des Systems erlaubt, weitere Erkennermodule<br />

anzuschließen. So existiert e<strong>in</strong> sogenanntes Button GUI, welches <strong>in</strong> e<strong>in</strong>em auf dem Bildschirm<br />

dargestellten 2D Fenster <strong>für</strong> jeden der möglichen Befehle e<strong>in</strong>en Druckknopf darstellt<br />

und mit der Maus be<strong>die</strong>nt werden kann.<br />

Abb. 16: Usability Labor des MIVIS Projekts<br />

In Abb. 17 ist der Aufbau des MIVIS Systems schematisch dargestellt. Da <strong>die</strong> Kommandos,<br />

<strong>die</strong> über <strong>die</strong> verschiedenen Modalitäten abgesetzt werden, mite<strong>in</strong>ander <strong>in</strong> Beziehung<br />

stehen und nicht notwendigerweise e<strong>in</strong>deutig s<strong>in</strong>d, existiert e<strong>in</strong> Integrator Modul, das <strong>die</strong><br />

Intention des Benutzers modelliert. Der Integrator verwendet dazu unter anderem kontextsensitive<br />

Zeitfenster und e<strong>in</strong>en Speicher, der <strong>die</strong> zuletzt erhaltenen Kommandos enthält.<br />

Genaueres über se<strong>in</strong>en Aufbau ist <strong>in</strong> [9] und [6] beschrieben.<br />

Spracherkenner<br />

Handgestenerkenner<br />

Kopfgestenerkenner<br />

Integrator<br />

VRML Browser<br />

FreeWRL<br />

Maus Tastatur<br />

3D Szene<br />

Abb. 17: Struktur des Multimodalen Be<strong>die</strong>nsystems MIVIS<br />

Seite 80


Kapitel 8, Multimodale Interaktion<br />

Die Darstellung der 3D Szene übernimmt der als freie Software verfügbare VRML Browser<br />

FreeWRL[26]. Dieser wurde um e<strong>in</strong>ige <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> mit semantisch höherwertigen<br />

Modalitäten zweckmäßigen Funktionen erweitert. Aufgrund der bei den Erkennermodulen<br />

noch langen Latenzzeit kann noch ke<strong>in</strong>e direkte Rückkopplung über ausgeführte Kommandos<br />

gegeben werden. Deshalb wurde FreeWRL um <strong>die</strong> Funktion, Bewegungen <strong>in</strong> e<strong>in</strong>zelnen<br />

Schrittweiten auszuführen, erweitert, wobei <strong>die</strong> Schrittweite vom Benutzer gesteuert<br />

werden kann. E<strong>in</strong>e ‚Wiederhole’ Funktion und e<strong>in</strong> Puffer, der es erlaubt, <strong>die</strong> letzten<br />

n Befehle rückgängig zu machen, erhöhen <strong>die</strong> Benutzbarkeit des Systems weiter.<br />

Damit der Browser vom Integrator gesteuert werden kann, wurde e<strong>in</strong>e Schnittstelle auf<br />

der Basis von TCP Sockets e<strong>in</strong>geführt. Die ursprünglich <strong>in</strong> FreeWRL enthaltenen Funktionalität<br />

zur <strong>Navigation</strong> mit Maus und Tastatur wurde nicht verändert, so daß <strong>die</strong>se <strong>Navigation</strong>smöglichkeit<br />

weiterh<strong>in</strong> direkt auf <strong>die</strong> Position des Avatars <strong>in</strong> der Szene wirkt, jedoch<br />

wurde e<strong>in</strong> Rückkanal an den Integrator geschaffen, so daß <strong>die</strong>ser über derartige<br />

Ereignisse <strong>in</strong>formiert wird.<br />

Die Module laufen auf verschiedenen Plattformen: Der Spracherkenner ist e<strong>in</strong> kommerzielles<br />

Produkt von Lernout & Hauspie[30], das auf der W<strong>in</strong>dows Plattform läuft. Die<br />

Handgesten werden auf SGI Rechnern klassifiziert, und <strong>die</strong> Kopfgesten auf mit L<strong>in</strong>ux betriebenen<br />

Rechnern. FreeWRL und der Integrator laufen ebenfalls unter L<strong>in</strong>ux. Die Kommunikation<br />

der Module basiert auf den Netzwerkprotokollen TCP/IP.<br />

Kommunikationsformalismus<br />

Zur Repräsentation der Äußerungen des Benutzers und s<strong>e<strong>in</strong>er</strong> Intentionen wird e<strong>in</strong> auf<br />

<strong>e<strong>in</strong>er</strong> kontextfreien Grammatik basierender Formalismus verwendet. Diese Grammatik<br />

wird hier kurz vorgestellt. Im Anhang C ist <strong>die</strong> vollständige Grammatik angegeben.<br />

Die Serie an Kommandos, <strong>die</strong> der Benutzer erzeugen kann setzt sich aus der Gruppe der<br />

Kommandos zur diskreten <strong>Navigation</strong> und <strong>die</strong> der Steuerkommandos zusammen. Die<br />

diskreten <strong>Navigation</strong>skommandos können <strong>in</strong> vollständiger oder unvollständiger Form vorliegen.<br />

S ::= <br />

::= |<br />

::= | | <br />

Die vollständigen <strong>Navigation</strong>skommandos s<strong>in</strong>d <strong>in</strong> der Form <br />

angegeben. Die Komponente gibt den <strong>Navigation</strong>smodus (WALK,<br />

FLY oder EXAMINE) an. Die zweite Komponente nennt <strong>die</strong> Bewegungsart (translatorisch,<br />

rotatorisch, roll) und <strong>die</strong> dritte Komponente nennt <strong>die</strong> Bewegungsrichtung, z.B. forward.<br />

E<strong>in</strong>e rotatorische Bewegungsart ist e<strong>in</strong>e solche, welche <strong>die</strong> Blickrichtung verändert, während<br />

roll Drehungen um <strong>die</strong> optische Achse, d.h. seitliches Neigen des Körpers nach<br />

l<strong>in</strong>ks oder rechts bezeichnet.<br />

::= walk | fly | exam<strong>in</strong>e <br />

::= trans | rot <br />

::= trans | rot | roll <br />

::= trans | rot | roll <br />

: ::= | <br />

: ::= | <br />

:<br />

: ::= lfwd | rfwd | lbwd | rbwd<br />

:<br />

: ::= | | <br />

: ::= | <br />

: ::= | <br />

:<br />

: ::= left | right<br />

: ::= up | down<br />

: ::= forward | backward<br />

Seite 81


Kapitel 8, Multimodale Interaktion<br />

Die mit <strong>die</strong>sen Regeln erzeugbaren Kommandos können direkt <strong>in</strong> Bewegungen der <strong>in</strong><br />

Abschnitt 5.1.3 def<strong>in</strong>ierten Richtungssysteme umgesetzt werden. Diese Zuordnung ist <strong>in</strong><br />

Anhang C angegeben.<br />

Es wurde auf e<strong>in</strong>e konsistente Interpretation der Richtungsangaben geachtet. Denn <strong>die</strong><br />

Angabe <strong>e<strong>in</strong>er</strong> Bewegung kann zum e<strong>in</strong>en so <strong>in</strong>terpretiert werden, daß sich der Avatar <strong>in</strong><br />

<strong>die</strong> angegebene Richtung bewegt, und zum anderen so, daß <strong>die</strong> Szene <strong>in</strong> <strong>die</strong> angegebene<br />

Richtung bewegt wird. Interpretiert man e<strong>in</strong>e Richtungsangabe als avatarbezogen, entsteht<br />

<strong>für</strong> <strong>die</strong> Szene der E<strong>in</strong>druck der Bewegung <strong>in</strong> <strong>die</strong> entgegengesetzte Richtung. Da im<br />

WALK und FLY Modus <strong>die</strong> Bewegung des Benutzers das zentrale Element der <strong>Navigation</strong><br />

ist, werden Richtungsangaben <strong>in</strong> <strong>die</strong>sen Modi avatarbezogen <strong>in</strong>terpretiert. Im EXAMINE<br />

Modus steht das zu rotierende Objekt im Mittelpunkt, so daß hier <strong>die</strong> Szene <strong>in</strong> <strong>die</strong> angegebene<br />

Richtung gedreht bzw. verschoben wird. Untersuchungen haben gezeigt, daß<br />

Benutzer Angaben meistens nach <strong>die</strong>sem Schema machen. Aber <strong>in</strong>sbesondere beim Kippen<br />

des Avatars nach l<strong>in</strong>ks oder rechts, was e<strong>in</strong>e unnatürliche Bewegung darstellt, wird<br />

<strong>die</strong>ses Schema von fast der Hälfte der Benutzer verletzt[19].<br />

Die unvollständige Form der <strong>Navigation</strong>skommandos wird durch e<strong>in</strong>en Präfix ks gekennzeichnet,<br />

der <strong>für</strong> kontextsensitiv (im S<strong>in</strong>ne der Funktionalität) steht. Kontextsensitive<br />

Kommandos basieren ebenfalls auf der Form , hier können<br />

jedoch e<strong>in</strong>e oder zwei der drei Komponenten weggelassen werden. Es ist <strong>die</strong> Aufgabe des<br />

Integrators, <strong>die</strong>se Kommandos zu elim<strong>in</strong>ieren und durch vollständige Kommandos zu<br />

ersetzen.<br />

| ::= ks <br />

| ::= | | | <br />

|<br />

| ::= walk | fly | exam<strong>in</strong>e<br />

|<br />

| ::= trans | trans<br />

| ::= rot | rot<br />

| ::= roll | roll<br />

|<br />

| ::= <br />

Die Gruppe der Steuerkommandos enthält Befehle zum Aktivieren der Standardbeleuchtung<br />

15 , zum Durchwandern der <strong>in</strong> der Szene def<strong>in</strong>ierten Aussichtspunkte, e<strong>in</strong>e „Wiederhole”<br />

und e<strong>in</strong>e „Rückgängig” Funktion, sowie e<strong>in</strong> Kommando zum Beenden der Anwendung.<br />

::= control <br />

::= stepsize <br />

::= light <br />

::= viewpo<strong>in</strong>t <br />

| ::= repeat<br />

::= undo<br />

::= quit<br />

: ::= <strong>in</strong>c | dec<br />

: ::= on | off<br />

: ::= prev | next<br />

Das MIVIS System wird ausführlich <strong>in</strong> [12] beschrieben.<br />

15 Das Headlight ist e<strong>in</strong> Konzept <strong>in</strong> VRML, das im Browser e<strong>in</strong>e standardmäßige Beleuchtung <strong>für</strong><br />

Welten def<strong>in</strong>iert, <strong>die</strong> ke<strong>in</strong>e besonderen Anforderungen an <strong>die</strong> Ausleuchtung der Szene stellen. Das<br />

Headlight leuchtet immer <strong>in</strong> Blickrichtung des Benutzers, ähnlich der Stirnlampe e<strong>in</strong>es Bergarbeiters.<br />

Seite 82


8.2 <strong>Design</strong>entscheidun gen<br />

Kapitel 8, Multimodale Interaktion<br />

Dieser Abschnitt diskutiert <strong>die</strong> wesentlichen Entscheidungen, worauf <strong>die</strong> Erweiterung des<br />

MIVIS System beruht.<br />

8.2.1 Kommunikationskana l <strong>für</strong> zeitkont<strong>in</strong>uierliche Werte<br />

Semantisch höherwertige Modalitäten erzeugen Befehle, <strong>die</strong> als separate Ereignisse mittels<br />

<strong>e<strong>in</strong>er</strong> kontextfreien Grammatik dargestellt werden können. Im Gegensatz dazu erzeugen<br />

haptische E<strong>in</strong>gabegeräte hauptsächlich e<strong>in</strong>en Strom von Werten e<strong>in</strong>es kont<strong>in</strong>uierlichen<br />

Wertebereichs, der sich schnell <strong>in</strong> Reaktion auf <strong>die</strong> Darstellung der Szene ändern<br />

kann. Es entsteht e<strong>in</strong> rückgekoppelter Regelkreis, wenn der Benutzer mit e<strong>in</strong>em haptischen<br />

E<strong>in</strong>gabegerät <strong>in</strong> der Szene navigiert oder e<strong>in</strong> Objekt bewegt:<br />

• Der Benutzer drückt das E<strong>in</strong>gabegerät <strong>in</strong> e<strong>in</strong>e bestimmte Richtung.<br />

• Die Darstellung der Szene ändert sich entsprechend.<br />

• Der Benutzer sieht <strong>die</strong> Änderung der Szene, vergleicht sie mit dem Zustand,<br />

den er erreichen will und korrigiert se<strong>in</strong>e Manipulation am E<strong>in</strong>gabegerät entsprechend.<br />

Daher muß <strong>für</strong> haptische E<strong>in</strong>gabegeräte e<strong>in</strong> eigener Kanal geschaffen werden, der anders<br />

als der Kanal <strong>für</strong> <strong>die</strong> kontextfreie Grammatik numerische Werte hoher Änderungsrate<br />

weiterleitet, damit sie ohne wahrnehmbarer Verzögerung auf <strong>die</strong> Szene e<strong>in</strong>wirken können.<br />

8.2.2 <strong>Navigation</strong>smodi<br />

Im ursprünglichen MIVIS System liegen der <strong>Navigation</strong> <strong>die</strong> drei Modi WALK/FLY/EXAMINE<br />

zu Grunde. In Verb<strong>in</strong>dung mit haptischen E<strong>in</strong>gabegeräten sche<strong>in</strong>t zunächst e<strong>in</strong>e f<strong>e<strong>in</strong>er</strong>e<br />

Unterteilung naheliegend, da viele E<strong>in</strong>gabegeräte weit weniger Freiheitsgrade zur Verfügung<br />

stellen, als zur vollständigen Unterstützung <strong>die</strong>ser drei Modi notwendig wären. E<strong>in</strong>e<br />

Aufgliederung <strong>die</strong>ser drei Modi <strong>in</strong> Untermodi mit weniger Freiheitsgraden kann jedoch<br />

nicht vorgenommen werden, da <strong>die</strong>se Aufteilung vom E<strong>in</strong>gabegerät abhängt. E<strong>in</strong> Gerät<br />

mit drei Freiheitsgraden bräuchte z.B. e<strong>in</strong>en SLIDE Modus <strong>für</strong> translatorische Bewegungen<br />

<strong>in</strong> den Richtungen x, y und z, während <strong>für</strong> e<strong>in</strong> E<strong>in</strong>gabegerät mit nur zwei Freiheitsgraden<br />

zwei SLIDE Modi notwendig wären: E<strong>in</strong>er <strong>für</strong> horizontale Bewegungen <strong>in</strong> x und z<br />

Richtung, und <strong>e<strong>in</strong>er</strong> <strong>für</strong> vertikale Bewegungen <strong>in</strong> x und y Richtung. Zudem würde <strong>die</strong>s<br />

bedeuten, daß <strong>die</strong>se Untermodi separat <strong>für</strong> jedes E<strong>in</strong>gabegerät e<strong>in</strong>gestellt werden müßten.<br />

Das würde <strong>die</strong> Komplexität des Benutzungs<strong>in</strong>terfaces sowohl <strong>in</strong> der Implementierung,<br />

als auch <strong>für</strong> den Benutzer unzulässig erhöhen.<br />

Es wird deshalb das MIVIS System nicht um weitere <strong>Navigation</strong>smodi ergänzt, sondern<br />

<strong>die</strong> Module, welche <strong>die</strong> Signale e<strong>in</strong>es E<strong>in</strong>gabegerätes <strong>in</strong>terpretieren (siehe nächster Abschnitt)<br />

müssen e<strong>in</strong>e Methode implementieren, welche <strong>die</strong> Freiheitsgrade des E<strong>in</strong>gabegerätes<br />

auf <strong>die</strong> Freiheitsgrade des aktiven <strong>Navigation</strong>smodus abbilden. Für e<strong>in</strong>en Joystick<br />

bedeutet das, daß <strong>die</strong> verfügbaren Freiheitsgrade grundsätzlich auf <strong>die</strong> am meisten benutzten<br />

Bewegungsrichtungen abgebildet werden, wobei sich <strong>die</strong>se Abbildung zugunsten<br />

weniger häufig benutzter Bewegungsrichtungen ändert, wenn <strong>e<strong>in</strong>er</strong> der Feuerknöpfe am<br />

Joystick gedrückt wird. Gemäß des Usability Grundsatzes, e<strong>in</strong> Benutzungs<strong>in</strong>terface möglichst<br />

modusfrei zu halten, erfolgt <strong>die</strong>se Umschaltung nur so lange, wie <strong>die</strong> entsprechende<br />

Taste gedrückt ist. Für e<strong>in</strong> E<strong>in</strong>gabegerät, das ke<strong>in</strong>e solche Umschaltung ermöglicht,<br />

bedeutet das, daß mit <strong>die</strong>sem E<strong>in</strong>gabegerät nicht alle Freiheitsgrade der <strong>Navigation</strong> erreicht<br />

werden können, und daß der Benutzer gegebenenfalls auf andere Modalitäten ausweichen<br />

muß.<br />

Seite 83


Kapitel 8, Multimodale Interaktion<br />

Es kann allerd<strong>in</strong>gs vorkommen, daß man beim <strong>Design</strong> <strong>e<strong>in</strong>er</strong> Anwendung zu dem Schluß<br />

kommt, daß sich <strong>die</strong> Benutzbarkeit des Systems erhöht, wenn man bestimmte Freiheitsgrade<br />

e<strong>in</strong>schränkt. Denn dadurch kann verh<strong>in</strong>dert werden, daß der Benutzer an unvorhergesehene<br />

Orte oder <strong>in</strong> schwierig zu handhabende Situationen gerät. Beispielsweise<br />

könnte bei <strong>e<strong>in</strong>er</strong> Unterhaltungsanwendung der Benutzer von <strong>e<strong>in</strong>er</strong> Erzählerfigur durch <strong>die</strong><br />

Welt geführt werden, sich aber selbständig umsehen können. Das bedeutet technisch,<br />

daß <strong>die</strong> Position des Benutzers von der Anwendung festgelegt wird, und nur <strong>die</strong> rotatorischen<br />

Freiheitsgrade zur benutzergesteuerten <strong>Navigation</strong> zur Verfügung stehen. Hilfesysteme<br />

könnten e<strong>in</strong>e ähnliche Funktion bieten. In bestimmten Situationen möchte vielleicht<br />

der Autor verh<strong>in</strong>dern, daß im EXAMINE Modus e<strong>in</strong> auf dem Bildschirm zentriertes<br />

Objekt aus <strong>die</strong>ser Position weg bewegt wird. D.h. er möchte Bewegungen <strong>in</strong> den Richtungen<br />

A und B unterdrücken. In <strong>e<strong>in</strong>er</strong> mehrbenutzerfähigen Kunstgalerie könnte zwar das<br />

Betrachten e<strong>in</strong>zelner Objekte im EXAMINE Modus erlaubt se<strong>in</strong>, jedoch möchte man nicht,<br />

daß <strong>die</strong> Avatare über den Kunstgegenständen schweben, oder im Boden vers<strong>in</strong>ken. E<strong>in</strong>e<br />

E<strong>in</strong>schränkung der Bewegung <strong>in</strong> ω, ρ und yaw Richtung würde das verh<strong>in</strong>dern.<br />

Um <strong>die</strong>se Art von Anwendungen zu unterstützen, wird <strong>die</strong> Funktion, e<strong>in</strong>zelne Freiheitsgrade<br />

zu unterdrücken e<strong>in</strong>gebaut. Diese Funktion wird primär von der Anwendung selbst<br />

ausgelöst, sie steht aber auch <strong>für</strong> Module, <strong>die</strong> Benutzere<strong>in</strong>gaben signalisieren, zur Verfügung.<br />

Dadurch können Szenarien geschaffen werden, <strong>in</strong> denen der Benutzer durch den<br />

Satz „Ich will mich nur drehen können.” Unterstützung beim Halten <strong>e<strong>in</strong>er</strong> Position anfordert.<br />

8.2.3 Haptische Interprete r<br />

Abschnitt 3.4 verdeutlicht, wie vielfältig haptische E<strong>in</strong>gabegeräte se<strong>in</strong> können. Zusätzlich<br />

muß <strong>in</strong> Betracht gezogen werden, daß <strong>die</strong> genaue physikalische Ausprägung e<strong>in</strong>es E<strong>in</strong>gabegerätes<br />

e<strong>in</strong>en wesentlichen E<strong>in</strong>fluß auf <strong>die</strong> Interpretation der vom E<strong>in</strong>gabegerät gelieferten<br />

Werte hat. E<strong>in</strong> e<strong>in</strong>facher Joystick mit zwei Achsen und e<strong>in</strong>e Spacemouse unterscheiden<br />

sich auf den ersten Blick nur <strong>in</strong> der Anzahl an Freiheitsgraden. Jedoch ist es bei<br />

<strong>e<strong>in</strong>er</strong> Spacemouse nicht möglich, e<strong>in</strong>e Auslenkung <strong>in</strong> nur <strong>e<strong>in</strong>er</strong> Richtung zu erzeugen ohne<br />

e<strong>in</strong>e ger<strong>in</strong>ge Auslenkung <strong>in</strong> den anderen Richtungen zu bewirken. Bei e<strong>in</strong>em Joystick<br />

ist das mühelos möglich und <strong>die</strong> Software kann e<strong>in</strong> entsprechendes <strong>Navigation</strong>sparadigma<br />

implementieren. E<strong>in</strong>e 2D Maus und e<strong>in</strong> Touchscreen s<strong>in</strong>d beides bildschirmorientierte<br />

Zeigegeräte. Doch ist bei der Maus e<strong>in</strong>e Positions<strong>in</strong>formation immer vorhanden, während<br />

der Touchscreen <strong>die</strong>se nur liefert, wenn er berührt, d. h. aktiviert ist.<br />

Es ist nicht möglich, e<strong>in</strong> Modul zu erzeugen, das alle möglichen E<strong>in</strong>gabegeräte <strong>in</strong> generischer<br />

Weise unterstützt und daraus Bewegungen des Avatars erzeugt. Das erweiterte<br />

Framework enthält daher <strong>für</strong> jeden Typ von E<strong>in</strong>gabegeräten e<strong>in</strong> Modul, das <strong>die</strong> Signale<br />

<strong>die</strong>ses Gerätes <strong>in</strong>terpretiert und daraus Geschw<strong>in</strong>digkeiten und Positionsdifferenzen <strong>in</strong><br />

den beiden Richtungssystemen erzeugt.<br />

Da haptische E<strong>in</strong>gabegeräte zusätzlich zu Bewegungs<strong>in</strong>formation <strong>in</strong> begrenztem Umfang<br />

auch diskrete Kommandos absetzen können, z.B. mittels e<strong>in</strong>es Druckknopfes, s<strong>in</strong>d haptische<br />

Interpreter mit dem Integrator <strong>für</strong> semantisch höherwertige Modalitäten verbunden<br />

und können <strong>die</strong>sem den selben Umfang an Kommandos senden, wie <strong>die</strong> Erkennermodule<br />

<strong>für</strong> semantisch höherwertige Modalitäten.<br />

Die Interpretation der Signale e<strong>in</strong>es E<strong>in</strong>gabegerätes und Umsetzung <strong>in</strong> Bewegungs<strong>in</strong>formation<br />

muß abhängig vom e<strong>in</strong>gestellten <strong>Navigation</strong>smodus und der aktuellen nom<strong>in</strong>ellen<br />

<strong>Navigation</strong>sgeschw<strong>in</strong>digkeit geschehen. Deshalb hat e<strong>in</strong> haptischer Interpreter e<strong>in</strong>en E<strong>in</strong>gang,<br />

über den es den Zustand von solchen Parametern erfährt, welche <strong>die</strong> <strong>Navigation</strong><br />

bestimmen.<br />

Seite 84


8.2.4 Kont<strong>in</strong>uierlicher Inte grator<br />

Kapitel 8, Multimodale Interaktion<br />

Ähnlich dem Integrator bei semantisch höherwertigen Modalitäten müssen <strong>die</strong> Ströme<br />

von Geschw<strong>in</strong>digkeitswerten und Positionsdifferenzen, <strong>die</strong> jeder haptische Interpreter<br />

emittiert, auf e<strong>in</strong>e bestimmte Weise vere<strong>in</strong>igt werden. Beim diskreten Integrator geschieht<br />

das, <strong>in</strong>dem <strong>die</strong> Befehle der verschiedenen Modalitäten mite<strong>in</strong>ander <strong>in</strong> Beziehung<br />

gebracht werden und <strong>die</strong> Intention des Benutzers daraus abgeleitet wird. Bei den kont<strong>in</strong>uierlichen<br />

Bewegungs<strong>in</strong>formationen haptischer E<strong>in</strong>gabegeräte ist es nicht ratsam, <strong>die</strong>se<br />

mite<strong>in</strong>ander <strong>in</strong> Beziehung zu setzen, da <strong>die</strong>se viel enger mit der Bewegung des Avatars<br />

verknüpft s<strong>in</strong>d. Außerdem würde <strong>die</strong>s <strong>die</strong> Komplexität sowohl der Implementierung als<br />

auch der Sicht des Benutzers auf das System stark erhöhen. Daher wurde als kont<strong>in</strong>uierlicher<br />

Integrator e<strong>in</strong> Ad<strong>die</strong>rglied gewählt, das alle Geschw<strong>in</strong>digkeiten und Positionsdifferenzen<br />

<strong>für</strong> jede Richtung aufsummiert.<br />

8.2.5 Feedback an Benutze r<br />

E<strong>in</strong> wichtiger Bestandteil e<strong>in</strong>es Benutzungs<strong>in</strong>terfaces ist <strong>die</strong> Rückkopplung an den Benutzer.<br />

Der Kanal, der <strong>die</strong> Parameter der <strong>Navigation</strong> (hauptsächlich Modus und Geschw<strong>in</strong>digkeit)<br />

an <strong>die</strong> haptischen Interpreter sendet, transportiert daher auch Information über<br />

solche Ereignisse, <strong>die</strong> den Benutzer <strong>in</strong>teressieren könnten. Haptische Interpreter können<br />

<strong>die</strong>se Informationen je nach Fähigkeit des zugehörigen E<strong>in</strong>gabegerätes an den Benutzer<br />

weitergeben.<br />

Es besteht zudem <strong>die</strong> Möglichkeit, dedizierte Feedback-Module an <strong>die</strong>sen Kanal anzuschließen.<br />

Diese geben ausschließlich Information an den Benutzer weiter. E<strong>in</strong> solches<br />

Feedback-Modul ist das im MIVIS Projekt verwendete Fenster, das als konventionelles 2D<br />

GUI <strong>in</strong> Textfeldern den aktuellen <strong>Navigation</strong>smodus, <strong>die</strong> e<strong>in</strong>gestellte Schrittweite und<br />

aufgetretene Ereignisse anzeigt.<br />

Der Kanal <strong>für</strong> solche Ereignisse überträgt <strong>die</strong> Information ebenfalls mittels <strong>e<strong>in</strong>er</strong> kontextfreien<br />

Grammatik. Das ist ausreichend <strong>für</strong> semantisch höherwertiges Feedback, jedoch<br />

können damit ke<strong>in</strong>e Materialeigenschaften wie z.B. <strong>die</strong> Oberflächenstruktur simuliert<br />

werden.<br />

Seite 85


8.3 Systemarchitektur<br />

Kapitel 8, Multimodale Interaktion<br />

Gemäß den im letzten Abschnitt diskutierten <strong>Design</strong>entscheidungen wird sowohl <strong>die</strong> Infrastruktur<br />

als auch <strong>die</strong> Funktionalität des <strong>multimodale</strong>n Be<strong>die</strong>nsystems erweitert. Dieser<br />

Abschnitt gibt e<strong>in</strong>en kurzen Überblick über das erweiterte System und diskutiert anschließend<br />

detailliert <strong>die</strong> e<strong>in</strong>zelnen Komponenten. Teilweise läßt es sich nicht vermeiden,<br />

daß auf Kommandos des erweiterten Funktionsumfangs Bezug genommen werden muß,<br />

<strong>die</strong> erst im nächsten Abschnitt erläutert werden. Um solche Situationen möglichst zu<br />

vermeiden, werden kommandospezifische Funktionen der e<strong>in</strong>zelnen Module im nächsten<br />

Abschnitt bei den entsprechenden Kommandos erläutert.<br />

8.3.1 Systemüberblick<br />

Aufgrund der im Abschnitt 8.2 getroffenen <strong>Design</strong>entscheidungen ergibt sich <strong>die</strong> <strong>in</strong> Abb.<br />

18 dargestellte Infrastruktur <strong>für</strong> das auf haptische Modalitäten erweiterte <strong>multimodale</strong><br />

Be<strong>die</strong>nsystem MIVIS.<br />

Semantisch höherwertige<br />

Modalitäten<br />

Haptische<br />

Modalitäten<br />

status<br />

display<br />

Spracherkenner<br />

Handgestenerkenner<br />

Kopfgestenerkenner<br />

Maus<br />

Interpreter<br />

Joy Stick<br />

Interpreter<br />

Space Maus<br />

Interpreter<br />

Benutzer<br />

Feedback<br />

Diskreter<br />

Integrator<br />

Geschw<strong>in</strong>digkeitswerte und<br />

Positionsdifferenzen<br />

Kont<strong>in</strong>uierlicher Integrator<br />

Benutzer E<strong>in</strong>gaben<br />

Status Änderungen<br />

kontextfreie <strong>Navigation</strong>skommandos<br />

Navigator<br />

Begrenzer<br />

(Kollisionserkennung<br />

&<br />

Gravitation)<br />

Abb. 18: Auf haptische Modalitäten erweiterte Struktur des <strong>multimodale</strong>n<br />

Be<strong>die</strong>nsystems MIVIS<br />

Modifikation<br />

der Szene<br />

Zustand der<br />

Szene<br />

Bewegungen<br />

des Avatars<br />

Seite 86


Kapitel 8, Multimodale Interaktion<br />

Die Infrastruktur des erweiterten Be<strong>die</strong>nsystems besteht aus den folgenden Systemkomponenten:<br />

• E<strong>in</strong>e Reihe von Erkennermodulen <strong>für</strong> semantisch höherwertige Modalitäten senden<br />

Kommandos an den Diskreten Integrator. Diese Module werden im Folgenden kurz<br />

SHM Erkenner genannt.<br />

• E<strong>in</strong>e Reihe von haptischen Interpretern setzen <strong>die</strong> Manipulationen des Benutzers an<br />

den haptischen E<strong>in</strong>gabegeräten <strong>in</strong> Bewegungs<strong>in</strong>formationen um. Sie erhalten den<br />

aktuellen <strong>Navigation</strong>smodus und andere wichtige Informationen vom Navigator mitgeteilt.<br />

• Der Integrator des unveränderten Systems wurde <strong>in</strong> ‚Diskreter Integrator’ umbenannt.<br />

Er modelliert <strong>die</strong> Intention des Benutzers und löst kontextsensitive Kommandos<br />

<strong>in</strong> kontextfreie Kommandos auf.<br />

• Das Navigator Modul erhält <strong>die</strong> kontextfreien Kommandos des diskreten Integrators<br />

und führt sie aus. Treten dabei Ereignisse auf, <strong>die</strong> <strong>für</strong> andere Module oder den Benutzer<br />

<strong>in</strong>teressant s<strong>in</strong>d, signalisiert er <strong>die</strong>se. Wenn der Navigator Kommandos der diskreten<br />

oder quasikont<strong>in</strong>uierlichen <strong>Navigation</strong> erhält, erzeugt er entsprechende Bewegungs<strong>in</strong>formationen<br />

und sendet sie an den kont<strong>in</strong>uierlichen Integrator.<br />

• Der kont<strong>in</strong>uierliche Integrator komb<strong>in</strong>iert <strong>die</strong> von den verschiedenen haptischen Interpretern<br />

und vom Navigator erhaltenen Bewegungs<strong>in</strong>formationen und setzt sie <strong>in</strong><br />

Bewegungen des Avatars um.<br />

• Drei Kommunikationskanäle transportieren Kommandos von den SHM Erkennern und<br />

den haptischen Interpretern zum Diskreten Integrator (grün), Statusaktualisierungen<br />

vom Navigator Modul zu den haptischen Interpretern (rot) und kont<strong>in</strong>uierliche Bewegungs<strong>in</strong>formationen<br />

von den haptischen Interpretern zum kont<strong>in</strong>uierlichen Integrator<br />

(blau).<br />

8.3.2 E<strong>in</strong>gabemodule<br />

Die E<strong>in</strong>gabemodule s<strong>in</strong>d <strong>in</strong> Abb. 18 auf der l<strong>in</strong>ken Seite dargestellt. Sie unterteilen sich <strong>in</strong><br />

SHM Erkenner und <strong>in</strong> haptische Interpreter. Die SHM Erkenner s<strong>in</strong>d <strong>in</strong> der Regel Mustererkenner,<br />

welche <strong>die</strong> Äußerungen des Benutzers klassifizieren und kontextfreie oder<br />

kontextsensitive Kommandos an den Integrator senden.<br />

Haptische Interpreter h<strong>in</strong>gegen <strong>in</strong>terpretieren <strong>die</strong> an ihrem zugeordneten E<strong>in</strong>gabegerät<br />

durchgeführten Manipulationen vollständig. Sie erzeugen <strong>in</strong> erster L<strong>in</strong>ie Bewegungs<strong>in</strong>formationen,<br />

<strong>die</strong> sie an den kont<strong>in</strong>uierlichen Integrator senden, und <strong>in</strong> manchen Fällen<br />

Kommandos, <strong>die</strong> an den diskreten Integrator gerichtet s<strong>in</strong>d. Um <strong>die</strong> Signale der E<strong>in</strong>gabegeräte<br />

<strong>in</strong> e<strong>in</strong>e Bewegung umwandeln zu können, müssen sie wissen, welcher <strong>Navigation</strong>smodus<br />

und welche <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit gerade aktiv s<strong>in</strong>d. Diese Information<br />

erhalten haptische Interpreter vom Navigator.<br />

E<strong>in</strong> haptischer Interpreter kann über e<strong>in</strong> entsprechendes E<strong>in</strong>gabegerät Feedback-<br />

Information an den Benutzer geben. Das kann e<strong>in</strong> Ereignis se<strong>in</strong>, das am E<strong>in</strong>gabegerät<br />

ausgelöst wird, wenn der Benutzer mit Geometrie der Szene kolli<strong>die</strong>rt – e<strong>in</strong> Vorgang, der<br />

<strong>in</strong> virtuellen Welten viel häufiger vorkommt als <strong>in</strong> realen Umgebungen. Diese Information<br />

hilft <strong>in</strong>sbesondere dem unerfahrenen Benutzer zu verstehen, warum er sich nicht bewegen<br />

kann. Denn durch das ger<strong>in</strong>gere Gesichtsfeldes bei <strong>e<strong>in</strong>er</strong> bildschirmorientierten 3D<br />

Anwendung können kl<strong>e<strong>in</strong>er</strong>e Objekte, <strong>die</strong> dem Benutzer im Weg stehen, oft nicht gesehen<br />

werden. Aber auch alle anderen Signale, <strong>die</strong> der Navigator aussendet, kann e<strong>in</strong> E<strong>in</strong>gabemodul<br />

an den Benutzer weitergeben.<br />

Seite 87


Kapitel 8, Multimodale Interaktion<br />

Wenn e<strong>in</strong> E<strong>in</strong>gabegerät <strong>die</strong> Information e<strong>in</strong>es Zeigegerätes <strong>in</strong>terpretiert, benötigt es Zugriff<br />

auf den Szenengraphen um Zeigegesten mit Objekten <strong>in</strong> der Szene <strong>in</strong> Beziehung zu<br />

br<strong>in</strong>gen. So kann man mit <strong>e<strong>in</strong>er</strong> Maus auf e<strong>in</strong> Objekt klicken. Die bildschirmbezogene 2D<br />

Position des Mauscursors könnten <strong>in</strong> e<strong>in</strong>e Ebene des Weltkoord<strong>in</strong>atensystems und den<br />

dazugehörigen Projektionsstrahl abgebildet werden. Dieser Strahl kann mit der <strong>in</strong> der<br />

Szene vorhandenen Geometrie verglichen werden, um e<strong>in</strong>en Schnittpunkt zu erhalten.<br />

8.3.3 Kommunikationskanä le<br />

Für <strong>die</strong> verschiedenen Informationsarten und -richtungen existieren drei Kommunikationskanäle.<br />

Die von den SHM Dekodern erkannten Gesten und sprachlichen Äußerungen<br />

werden als kontextfreie Grammatik über e<strong>in</strong>en Kanal zum diskreten Integrator transportiert,<br />

der <strong>in</strong> <strong>e<strong>in</strong>er</strong> Bus-Struktur aufgebaut ist. Alle E<strong>in</strong>gabemodule s<strong>in</strong>d gleichberechtigt<br />

angeschlossen und können <strong>in</strong> den Kanal senden. Der diskrete Integrator ist der e<strong>in</strong>zige<br />

Empfänger. Da <strong>die</strong> genaue Bedeutung von mite<strong>in</strong>ander <strong>in</strong> Verb<strong>in</strong>dung stehenden Kommandos<br />

davon abhängen kann, von welchen Modalitäten <strong>die</strong> Teile gesendet werden, wird<br />

jedem auf dem Kanal übertragenen Kommando e<strong>in</strong> Identifikationscode der Modalität vorangestellt.<br />

Dieser Kanal ist <strong>in</strong> Abb. 18 bei Farbdarstellung grün dargestellt.<br />

Die Verteilung der Statusänderungen und Ereignisse, <strong>die</strong> im Navigator Modul auftreten,<br />

werden mit e<strong>in</strong>em zweiten Kanal vom Navigator zu allen haptischen Interpreter und dem<br />

diskreten Integrator transportiert. Dieser Kanal ist ebenfalls als Bus aufgebaut, jedoch<br />

hat er nur e<strong>in</strong>en Sender und e<strong>in</strong>e Vielzahl von Empfängern. Er ist <strong>in</strong> Abb. 18 rot dargestellt.<br />

Der dritte, <strong>in</strong> Abb. 18 blau dargestellte, Kommunikationskanal überträgt Bewegungs<strong>in</strong>formationen<br />

von den haptischen Interpreter und vom Navigator zum diskreten Integrator.<br />

Dieser Kanal ist sternförmig aufgebaut, da <strong>die</strong> Bewegungen der e<strong>in</strong>zelnen Modalitäten<br />

im diskreten Integrator additiv überlagert werden. In Anlehnung an <strong>die</strong> E<strong>in</strong>teilung<br />

von haptischen E<strong>in</strong>gabegeräten <strong>in</strong> relative E<strong>in</strong>gabegeräte, positionale E<strong>in</strong>gabegeräte und<br />

Zeigegeräte wird <strong>die</strong>ser Kanal sowohl Geschw<strong>in</strong>digkeitswerte als auch Positionsdifferenzen<br />

der beiden <strong>in</strong> Abschnitt 5.1.3 def<strong>in</strong>ierten Richtungssysteme transportieren. Zeigegeräte<br />

werden im wesentlichen durch e<strong>in</strong>e Position im Raum repräsentiert. Sie können zur<br />

<strong>Navigation</strong> nur dann verwendet werden, wenn <strong>die</strong>se Position <strong>in</strong> Geschw<strong>in</strong>digkeitswerte,<br />

Positionsdifferenzen oder Kommandos übersetzt werden.<br />

E<strong>in</strong>e weitere Verb<strong>in</strong>dung besteht vom diskreten Integrator zum Navigator. Diese transportiert<br />

<strong>die</strong> vom diskreten Integrator aufgelösten Kommandos. Diese s<strong>in</strong>d e<strong>in</strong>e Teilmenge<br />

der Kommandos, <strong>die</strong> der diskrete Integrator von den SHG Erkennern und den haptischen<br />

Interpretern erhält.<br />

Die SHG Erkenner können ihre Erkennungsleistung erhöhen, wenn sie Wissen über <strong>die</strong><br />

Wahrsche<strong>in</strong>lichkeit auftretender Äußerungen des Benutzers zur Verfügung haben. Deshalb<br />

lesen auch sie den Kanal <strong>für</strong> Statusaktualisierungen mit, und der Diskrete Integrator<br />

sendet Information über <strong>in</strong>nere Zustände <strong>in</strong> <strong>die</strong>sen Kanal. Diese Kommunikation ist <strong>in</strong><br />

Abb. 17 jedoch nicht e<strong>in</strong>gezeichnet, da sie <strong>die</strong> pr<strong>in</strong>zipielle Funktionsweise des Systems<br />

nicht bee<strong>in</strong>flußt.<br />

Seite 88


8.3.4 Diskreter Integrator<br />

Kapitel 8, Multimodale Interaktion<br />

Das im ursprünglichen Be<strong>die</strong>nsystem Integrator genannte Modul wurde zu diskreter Integrator<br />

umbenannt, da noch e<strong>in</strong> kont<strong>in</strong>uierlicher Integrator <strong>für</strong> <strong>die</strong> haptischen Modalitäten<br />

h<strong>in</strong>zukommt. Der diskrete Integrator erhält alle Kommandos der semantisch höherwertigen<br />

und der haptischen Interpreter. Diese Kommandos beschreiben häufig nicht<br />

e<strong>in</strong>-e<strong>in</strong>deutig e<strong>in</strong>e auszuführende Aktion, sondern können mit Kommandos der selben<br />

oder <strong>e<strong>in</strong>er</strong> anderen Modalität <strong>in</strong> konkurrierender, komplementärer oder redundanter Weise<br />

<strong>in</strong> Beziehung stehen. Aufgabe des Integrators ist es, <strong>die</strong>se Mehrdeutigkeiten aufzulösen<br />

und im e<strong>in</strong>deutige und vollständige Kommandos an den Navigator zu senden. Damit<br />

er dasselbe Modell der Anwendung wie der Benutzer aufbauen kann, liest er <strong>die</strong> Statusänderungen<br />

und <strong>Navigation</strong>sereignisse, <strong>die</strong> der Navigator signalisiert, mit.<br />

8.3.5 Navigator<br />

Der Navigator führt <strong>die</strong> Befehle, <strong>die</strong> der Benutzer der Anwendung erteilt, aus. Zu se<strong>in</strong>em<br />

Funktionsumfang gehört das Ausführen der Befehle zur diskreten <strong>Navigation</strong>, das Verwalten<br />

des <strong>Navigation</strong>smodus, der <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit, des Drehzentrums, der<br />

Viewpo<strong>in</strong>tliste, und das Ausführen <strong>e<strong>in</strong>er</strong> Viewpo<strong>in</strong>t-Animation wenn e<strong>in</strong> Viewpo<strong>in</strong>t angesprungen<br />

wird. Zudem analysiert er <strong>die</strong> Bewegungen des Benutzers und gibt relevante<br />

Ereignisse an <strong>die</strong> E<strong>in</strong>gabemodule und den diskreten Integrator weiter. Um den Befehl<br />

‚Rückgängig’ implementieren zu können verwaltet der Navigator e<strong>in</strong>en Speicher, der <strong>die</strong><br />

letzten Werte von Parametern vor <strong>e<strong>in</strong>er</strong> Veränderung speichert.<br />

Änderungen von <strong>Navigation</strong>sparametern wie z.B. des <strong>Navigation</strong>smodus können durch<br />

vom diskreten Integrator empfangene Kommandos oder durch Ereignisse aus der Szene<br />

oder der Applikationslogik ausgelöst werden. Diese Änderungen werden vom Navigator<br />

an <strong>die</strong> haptischen Interpreter und den diskreten Integrator gesandt. Dadurch können<br />

<strong>die</strong>se Module auf den tatsächlichen Zustand e<strong>in</strong>es solchen Parameters reagieren, unabhängig<br />

davon ob der Parameter von demselben E<strong>in</strong>gabemodul, e<strong>in</strong>em anderen E<strong>in</strong>gabemodul<br />

oder der Anwendung verändert wurde. Erhält der Navigator e<strong>in</strong> Kommando zur<br />

diskreten <strong>Navigation</strong>, erzeugt er <strong>für</strong> kurze Zeit entsprechende Bewegungs<strong>in</strong>formationen<br />

und sendet <strong>die</strong>se zum kont<strong>in</strong>uierlichen Integrator.<br />

Das Navigator Modul kann <strong>in</strong> drei Submodule aufgeteilt werden, <strong>die</strong> <strong>in</strong> Abb. 19 dargestellt<br />

s<strong>in</strong>d. Neben dem eigentlichen Navigator, der <strong>die</strong> Kernfunktionen des Navigators enthält,<br />

existiert e<strong>in</strong> Undo Puffer und e<strong>in</strong> diskreter Navigator.<br />

Kommandos vom Integrator<br />

Status Änderungen<br />

undo<br />

Puffer<br />

eigentlicher<br />

Navigator<br />

Diskrete<br />

<strong>Navigation</strong><br />

world modification<br />

world state<br />

Abb. 19: Interner Aufbau des Navigator Moduls<br />

velocities to discrete <strong>in</strong>tegrator<br />

Das control undo Kommando sche<strong>in</strong>t auf den ersten Blick e<strong>in</strong> kontextsensitives Kommando<br />

zu se<strong>in</strong>. Da es zu s<strong>e<strong>in</strong>er</strong> Ausführung auf Information zurückgreift, <strong>die</strong> der diskrete<br />

Integrator zu se<strong>in</strong>em sonstigen Betrieb nicht benötigt, und da das Rückgängig Machen<br />

e<strong>in</strong>es Kommandos <strong>in</strong> s<strong>e<strong>in</strong>er</strong> Natur verschieden von gewöhnlichen Kommandos ist, wird<br />

<strong>die</strong>ses Kommando vom diskreten Integrator nicht aufgelöst sondern direkt an den Navigator<br />

gesandt.<br />

Seite 89


Kapitel 8, Multimodale Interaktion<br />

Der Undo Puffer ist als LIFO Speicher organisiert. In <strong>die</strong>sen legt der eigentliche Navigator<br />

vor der Ausführung e<strong>in</strong>es Kommandos den Zustand der Werte ab, <strong>die</strong> das Kommando<br />

verändert. Bei e<strong>in</strong>em Kommando zur diskreten <strong>Navigation</strong> (z.B. walk trans forward) wird<br />

<strong>die</strong> aktuelle Position und Orientierung des Avatars abgespeichert. Bei e<strong>in</strong>em control<br />

viewpo<strong>in</strong>t * Kommando legt der Navigator e<strong>in</strong>e Referenz auf den momentan gebundenen<br />

Viewpo<strong>in</strong>t Knoten und <strong>die</strong> Position und Orientierung des Avatars ab. Die Referenz auf den<br />

Viewpo<strong>in</strong>t Knoten ist wichtig, weil der Viewpo<strong>in</strong>t das Koord<strong>in</strong>atensystem def<strong>in</strong>iert, bezüglich<br />

dessen <strong>die</strong> <strong>Navigation</strong> durchgeführt wird. Die Position und Orientierung des<br />

Avatars ist nötig, da der Benutzer von dem Viewpo<strong>in</strong>t weg navigiert haben könnte, bevor<br />

er das control viewpo<strong>in</strong>t * Kommando abgesetzt hat.<br />

Wenn der Navigator e<strong>in</strong> control undo Kommando erhält, liest er den als letztes im Undo<br />

Puffer abgelegten Zustand und stellt ihn wieder her. Damit Feedback-Module den Benutzer<br />

über <strong>die</strong> rückgängig gemachte Aktion oder über e<strong>in</strong> aufgrund e<strong>in</strong>es leeren Undo Puffers<br />

fehlgeschlagenes control undo Kommando unterrichten können, signalisiert der Navigator<br />

<strong>die</strong>se Ereignisse am Status Kanal.<br />

Kommandos zur diskreten <strong>Navigation</strong> werden vom Submodul diskreter Navigator ausgeführt.<br />

Nachdem der Navigator <strong>die</strong> aktuelle Position des Avatars im Undo Puffer abgespeichert<br />

hat, übergibt er das Kommando an den diskreten Navigator. Dieser erzeugt daraufh<strong>in</strong><br />

<strong>für</strong> kurze Zeit Bewegungs<strong>in</strong>formationen, <strong>die</strong> der angegebenen Richtung und der e<strong>in</strong>gestellten<br />

Schrittweite entsprechen, und sendet sie an den kont<strong>in</strong>uierlichen Integrator.<br />

8.3.6 Kont<strong>in</strong>uierlicher Inte grator<br />

Der kont<strong>in</strong>uierliche Integrator ist das haptische Pendant zum diskreten Integrator. Jedoch<br />

ist se<strong>in</strong>e Funktionsweise völlig unterschiedlich. Die Bewegungs<strong>in</strong>formationen von den<br />

haptischen Interpreter und dem Navigator werden komponentenweise ad<strong>die</strong>rt und entsprechend<br />

des aktuell gültigen control mode restrict Kommandos unterdrückt. Obwohl <strong>in</strong><br />

Abb. 18 aus Gründen der Übersichtlichkeit nicht e<strong>in</strong>gezeichnet, erhält der kont<strong>in</strong>uierliche<br />

Integrator vom Navigator entsprechende Steuer<strong>in</strong>formation, damit er das control mode<br />

restrict Kommando korrekt anwenden kann. Die resultierenden Bewegungs<strong>in</strong>formationen,<br />

<strong>die</strong> <strong>in</strong> den zwölf Richtungen des SIXDOF und EXAMINE Richtungssystems dargestellt<br />

werden, werden <strong>in</strong> <strong>die</strong> sechs Freiheitsgrade des dreidimensionalen Raumes umgerechnet<br />

und der Kollisionserkennung und Gravitationssimulation zugeführt.<br />

8.3.7 Feedback-Modul<br />

In Abb. 18 ist e<strong>in</strong> dediziertes Feedback-Modul angedeutet. Derartige Module geben <strong>für</strong><br />

den Benutzer wichtige Information an <strong>die</strong>sen weiter. Läuft <strong>die</strong> Anwendung auf e<strong>in</strong>em<br />

Bildschirmarbeitsplatz, könnte <strong>die</strong>ses Feedback-Modul durch e<strong>in</strong>e konventionelle graphische<br />

Benutzungsoberfläche realisiert werden, <strong>die</strong> außerhalb des 3D Fensters den <strong>Navigation</strong>smodus,<br />

<strong>die</strong> aktuelle Schrittweite, den Namen des aktiven Aussichtspunktes, usw.<br />

anzeigt. Tritt e<strong>in</strong>e Kollision auf, kann e<strong>in</strong> akustisches Signal ausgegeben werden. E<strong>in</strong><br />

Sprachausgabemodul wäre e<strong>in</strong>e andere Möglichkeit, <strong>die</strong> Information, <strong>die</strong> der Navigator<br />

aussendet an den Benutzer weiterzugeben.<br />

8.4 Erweiterung des Fu nktionsumfangs<br />

Ausgehend von der <strong>in</strong> Abschnitt 8.1.2 vorgestellten Grammatik wird untersucht, um welche<br />

Funktionen der Befehlsumfang erweitert werden muß, damit <strong>die</strong> h<strong>in</strong>zugekommenen<br />

haptischen Modalitäten <strong>in</strong> den <strong>multimodale</strong>n Be<strong>die</strong>nprozeß mit e<strong>in</strong>bezogen werden können.<br />

Zudem wird e<strong>in</strong>e Grammatik beschrieben, mit der <strong>die</strong> Statusänderungen ausgedrückt<br />

werden können, <strong>die</strong> der Navigator den haptischen E<strong>in</strong>gabegeräten und dem dis-<br />

Seite 90


Kapitel 8, Multimodale Interaktion<br />

kreten Integrator mitteilt. Die verwendeten Grammatiken werden <strong>in</strong> <strong>die</strong>sem Kapitel<br />

Schritt <strong>für</strong> Schritt entwickelt. Im Anhang C werden <strong>die</strong>se noch e<strong>in</strong>mal <strong>in</strong> zusammenhängender<br />

Form angegeben.<br />

Die Abschnitte 8.4.1 bis 8.4.3 beschreiben wie <strong>die</strong> Module auf <strong>die</strong> neuen Befehle reagieren.<br />

Dazu müssen auch Konstrukte aus dem Formalismus <strong>für</strong> Statusänderungen genannt<br />

werden, <strong>die</strong> erst <strong>in</strong> Abschnitt 8.4.4 erläutert werden. Dies sei als allgeme<strong>in</strong>e Vorwärtsreferenz<br />

auf <strong>die</strong>sen Abschnitt verstanden.<br />

Der Grundsätzliche Aufbau der Grammatik als e<strong>in</strong>e Folge von Kommandos bleibt gleich.<br />

S ::= <br />

::= |<br />

8.4.1 Quasikont<strong>in</strong>uierlichen <strong>Navigation</strong><br />

Wegen der hohen Verzögerungszeiten und der ungenauen Ausdrucksmöglichkeit bei<br />

Richtungs- und Positionsangaben über <strong>die</strong> natürliche Sprache oder über andere semantisch<br />

höherwertige Modalitäten wurde im ursprünglichen MIVIS System <strong>die</strong> diskrete <strong>Navigation</strong><br />

e<strong>in</strong>geführt, da mit ihr <strong>die</strong>se Schwierigkeiten überwunden werden können[12].<br />

Haptische E<strong>in</strong>gabegeräte bieten pr<strong>in</strong>zipiell <strong>die</strong> Möglichkeit, Richtungsangaben genau anzugeben<br />

und <strong>die</strong>se schnell zu ändern.<br />

In Komb<strong>in</strong>ation mit semantisch höherwertigen Modalitäten könnte das Szenario etwa so<br />

aussehen, daß der Benutzer, wenn er größere Distanzen zurücklegen möchte, e<strong>in</strong>e Geste<br />

macht, <strong>die</strong> „Ich will fliegen.” bedeutet. Danach beg<strong>in</strong>nt sich der Avatar zu bewegen, und<br />

der Benutzer kann <strong>die</strong> Richtung der Bewegung während des Fluges mit e<strong>in</strong>em haptischen<br />

E<strong>in</strong>gabegerät bestimmen. Die Fluggeschw<strong>in</strong>digkeit kann der Benutzer mit Hilfe der Kommandos<br />

„Schneller!” und „Langsamer!” steuern. Der Flug dauert solange an, bis der Benutzer<br />

„Stop!” sagt, oder e<strong>in</strong> anderes, dem Fliegen widersprechendes Kommando absetzt.<br />

E<strong>in</strong> Vorteil gegenüber dem re<strong>in</strong> über das haptische E<strong>in</strong>gabegerät <strong>in</strong>itiierten Flug ist,<br />

daß alle Freiheitsgrade des E<strong>in</strong>gabegerätes zur Richtungsangabe zur Verfügung stehen.<br />

Bei e<strong>in</strong>em E<strong>in</strong>gabegerät mit nur zwei Freiheitsgraden wie der Maus ist der Flugmodus<br />

sonst schwer zu realisieren. E<strong>in</strong> anderes Szenario ergibt sich im EXAMINE Modus: Der<br />

Benutzer könnte das Objekt mit e<strong>in</strong>em Sprachkommando <strong>in</strong> langsame Drehung versetzen,<br />

und <strong>die</strong> Drehrichtung mit dem E<strong>in</strong>gabegerät bestimmen.<br />

Erweiterte Grammatik<br />

Diese Vorgänge werden im Folgenden quasikont<strong>in</strong>uierliche <strong>Navigation</strong> genannt. Für <strong>die</strong><br />

kontextfreie Grammatik bedeutet quasikont<strong>in</strong>uierliche <strong>Navigation</strong>, daß den Kommandos<br />

zur diskreten <strong>Navigation</strong> das Symbol start vorangestellt werden kann, und daß e<strong>in</strong><br />

Kommando stop e<strong>in</strong>geführt wird.<br />

::= | | <br />

::= start <br />

::= stop<br />

Ausführung der Funktion<br />

Erhält der Navigator e<strong>in</strong> Kommando mit vorangestelltem start, erzeugt er <strong>die</strong>selbe Bewegung,<br />

<strong>die</strong> er ohne <strong>die</strong>sen Präfix erzeugen würde, hält sie aber bis auf weiteres aufrecht.<br />

Da <strong>die</strong>se Bewegung mit den Bewegungen anderer E<strong>in</strong>gabegeräte additiv überlagert<br />

wird, können <strong>die</strong>se durch Erzeugen von Drehbewegungen <strong>die</strong> Bewegungsrichtung bee<strong>in</strong>flussen.<br />

S<strong>in</strong>d auf e<strong>in</strong>em E<strong>in</strong>gabegerät genügend Freiheitsgrade vorhanden, können e<strong>in</strong>ige<br />

davon translatorische Bewegungen erzeugen, wodurch Objekten leichter ausgewichen<br />

werden kann. Damit <strong>die</strong> haptischen Interpreter <strong>in</strong> e<strong>in</strong>en entsprechenden Modus umschalten<br />

können, sendet der Navigator das Signal mode cont<strong>in</strong>ous on an <strong>die</strong> E<strong>in</strong>gabemodu-<br />

Seite 91


Kapitel 8, Multimodale Interaktion<br />

le. Die quasikont<strong>in</strong>uierliche Bewegung wird beendet, wenn der Navigator e<strong>in</strong> stop Kommando<br />

oder e<strong>in</strong>e Kommando aus der Gruppe erhält.<br />

8.4.2 Referenzierende Nav igation<br />

E<strong>in</strong>e ganz besonders natürliche Art der Kommunikation zwischen Mensch und Masch<strong>in</strong>e<br />

ergibt sich, wenn man <strong>die</strong> besonderen Fähigkeiten e<strong>in</strong>zelner Modalitäten mite<strong>in</strong>ander<br />

komb<strong>in</strong>iert. Auch im Alltagsleben werden mehrere Modalitäten komb<strong>in</strong>iert, z.B. wenn<br />

jemand mit der Hand <strong>in</strong> e<strong>in</strong>e Richtung zeigt und sagt: „Gehen sie <strong>die</strong>se Straße runter, an<br />

der nächsten Kreuzung rechts, ...”. Mit Zeigegeräten, z.B. e<strong>in</strong>em Touchscreen läßt sich<br />

sehr e<strong>in</strong>fach auf Objekte zeigen, und mit der natürlichen Sprache kann angegeben werden,<br />

was damit passieren soll. Für das Paradigma der <strong>Navigation</strong> <strong>in</strong> 3D Welten können<br />

folgende Szenarien identifiziert werden:<br />

Der Benutzer zeigt mit dem Touchscreen auf e<strong>in</strong> Objekt und sagt...<br />

• ... „Ich will dort h<strong>in</strong> gehen.”<br />

Das löst e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation aus, <strong>die</strong> den Avatar an e<strong>in</strong>e Position <strong>in</strong> <strong>die</strong> Nähe<br />

des Objekts br<strong>in</strong>gt.<br />

• ... „Ich will das näher anschauen.”<br />

Das schaltet <strong>in</strong> den EXAMINE Modus und def<strong>in</strong>iert das Objekt als Drehzentrum. Diese<br />

Art der <strong>Navigation</strong> wäre <strong>in</strong> <strong>e<strong>in</strong>er</strong> virtuellen Kunstgalerie, oder <strong>in</strong> e<strong>in</strong>em Kaufhaus sehr<br />

nützlich.<br />

• ... „Ich will dem folgen.”<br />

Das verb<strong>in</strong>det den Avatar mit dem angegebenen Objekt, und immer wenn sich das<br />

Objekt bewegt, folgt der Avatar <strong>die</strong>ser Bewegung, und bleibt dadurch immer <strong>in</strong> der<br />

Nähe <strong>die</strong>ses Objektes. Weitere Bewegungen über haptische E<strong>in</strong>gabegeräte oder durch<br />

diskrete <strong>Navigation</strong> werden relativ zum Objekt ausgeführt. In mehrbenutzerfähigen<br />

Anwendungen könnte <strong>die</strong>se Funktion den Benutzern helfen, <strong>die</strong> Welt geme<strong>in</strong>sam zu<br />

durchwandern, wenn e<strong>in</strong> Benutzer den Avatar des anderen als zu folgendes Objekt<br />

benutzt. Wenn <strong>die</strong>se Funktion von der Anwendung selbst ausgelöst wird, können vom<br />

Computer gesteuerte Agenten Führungen durch <strong>die</strong> Welt veranstalten.<br />

Erweiterte Grammatik<br />

Die Erweiterung der Grammatik auf referenzierende <strong>Navigation</strong> bedeutet, daß e<strong>in</strong>e neue<br />

Gruppe von Kommandos, <strong>die</strong> Gruppe e<strong>in</strong>geführt wird. Diese unterteilt sich <strong>in</strong><br />

drei Untergruppen: Die Gruppe modelliert, was mit e<strong>in</strong>em Objekt, <strong>e<strong>in</strong>er</strong> Position<br />

oder <strong>e<strong>in</strong>er</strong> Richtung passieren soll, und modelliert alle Möglichkeiten<br />

<strong>in</strong> der e<strong>in</strong>e Zeigegeste vorkommen kann. Beide Gruppen enthalten kontextabhängige<br />

Kommandos. In der Gruppe s<strong>in</strong>d <strong>die</strong> möglichen Komb<strong>in</strong>ationen der Kommandos<br />

aus <strong>die</strong>sen beiden Gruppen zu kontextfreien Kommandos zusammengefaßt.<br />

::= | | | | <br />

::= | | <br />

Gemäß den obigen drei Beispielen ergibt sich zu:<br />

| ::= gothere<br />

| ::= lookat<br />

| ::= setexacenter<br />

| ::= follow<br />

Mit gothere und lookat wird ausgedrückt, daß der Benutzer an e<strong>in</strong>e bestimmte Position<br />

bewegt werden will, bzw. daß er <strong>in</strong> e<strong>in</strong>e bestimmte Richtung schauen will. Das Kommando<br />

setexacenter drückt aus, daß <strong>die</strong> angegebene Position zum neuen Drehzentrum werden<br />

soll, und follow beschreibt den Wunsch, e<strong>in</strong>em anderen Objekt zu folgen.<br />

Seite 92


Kapitel 8, Multimodale Interaktion<br />

Wenn der Benutzer auf Objekte zeigen kann, und <strong>die</strong>se Objekte beweglich se<strong>in</strong> können,<br />

dann wird es erforderlich, daß der Browser und <strong>die</strong> Anwendung das Konzept def<strong>in</strong>ierbarer<br />

Objekte unterstützen muß. Die VRML Technologie unterstützt z.B. ke<strong>in</strong> solches Konzept.<br />

Es können zwar Teile der Szene bewegt werden, <strong>die</strong>se unterscheiden sich aber technisch<br />

nicht von anderen Teilen der Szene und s<strong>in</strong>d dadurch nicht vom Browser als Objekte erkennbar.<br />

Deshalb wird <strong>in</strong> <strong>die</strong>sem Absatz e<strong>in</strong>e Grammatik <strong>für</strong> <strong>die</strong> Gruppen <br />

und vorgestellt, <strong>die</strong> ohne <strong>die</strong> Unterstützung e<strong>in</strong>es Objekt Konzeptes auskommt.<br />

Die Funktion, e<strong>in</strong>em Objekt zu folgen, kann deshalb nicht unterstützt werden. In<br />

Abschnitt 9.3.2 wird e<strong>in</strong> Ansatz <strong>für</strong> e<strong>in</strong>e Erweiterung <strong>die</strong>ser Grammatik vorgeschlagen,<br />

der das Referenzieren beweglicher Objekte unterstützt.<br />

Die Gruppe setzt sich aus Kommandos, <strong>die</strong> e<strong>in</strong> Objekt referenzieren, und<br />

aus solchen, <strong>die</strong> e<strong>in</strong>e re<strong>in</strong>e Position oder Orientierung im Raum ohne Bezug auf e<strong>in</strong> Objekt<br />

bezeichnen, zusammen.<br />

| ::= <strong>in</strong>dicated <br />

| ::= <strong>in</strong>dicated geometry <br />

: ::= pos <br />

: ::= ori <br />

: ::= posori <br />

: ::= posdir <br />

: ::= dir <br />

:<br />

: ::= <br />

: ::= <br />

: ::= <br />

Die Kommandos <strong>in</strong>dicated bezeichnen Gesten, mit denen der Benutzer e<strong>in</strong>e<br />

Position im Raum, e<strong>in</strong>e Richtung oder beides angibt. Mit wird e<strong>in</strong> Punkt im<br />

Raum bezeichnet, beschreibt <strong>die</strong> Ausrichtung e<strong>in</strong>es Zeigegerätes <strong>in</strong> Achse-<br />

W<strong>in</strong>kel Form (Richtungsvektor <strong>e<strong>in</strong>er</strong> Drehachse und Drehw<strong>in</strong>kel), und bezeichnet<br />

e<strong>in</strong>en Richtungsvektor. Die Position wird nicht mit e<strong>in</strong>em Objekt der Szene <strong>in</strong><br />

Beziehung gebracht. Die Grammatikvariable ist formal gleichbedeutend mit<br />

, denn beide werden durch drei float Zahlen dargestellt. Sie wurde aber e<strong>in</strong>geführt,<br />

um dem Leser Klarheit über <strong>die</strong> unterschiedliche Bedeutung zu schaffen. Bezugskoord<strong>in</strong>atensystem<br />

<strong>für</strong> alle Angaben ist das Weltkoord<strong>in</strong>atensystem.<br />

Der diskrete Integrator wird <strong>die</strong> Positions- und Richtungsangaben nicht auswerten, da sie<br />

Applikationswissen darstellen und <strong>die</strong> Applikationsunabhängigkeit e<strong>in</strong> Grundsatz <strong>für</strong> das<br />

MIVIS System ist. Der diskrete Integrator wird jedoch darüber entscheiden, ob er sie an<br />

den Navigator weitergibt. Insofern s<strong>in</strong>d <strong>die</strong>se Daten <strong>für</strong> den diskreten Integrator wie e<strong>in</strong><br />

opaquer Datentyp zu betrachten.<br />

Mit dem Kommando <strong>in</strong>dicated geometry wird ausgedrückt, daß der Benutzer<br />

auf e<strong>in</strong> Objekt der Szene gezeigt hat. Dieses Kommando kann beispielsweise entstehen,<br />

wenn der Benutzer mit der Maus auf e<strong>in</strong>en Punkt <strong>e<strong>in</strong>er</strong> Wand <strong>in</strong> der Szene klickt, oder<br />

wenn er mit e<strong>in</strong>em Zeigestab auf e<strong>in</strong> Objekt zeigt. Die angegebene Position beschreibt<br />

e<strong>in</strong>en Punkt auf dem Objekt <strong>in</strong> Weltkoord<strong>in</strong>aten.<br />

Die dritte Gruppe der Kommandos zur referenzierenden <strong>Navigation</strong> ist <strong>die</strong> Gruppe<br />

. Sie enthält <strong>die</strong> kontextfreien Kommandos, <strong>die</strong> entstehen, wenn Kommandos<br />

aus den ersten beiden Gruppen komb<strong>in</strong>iert werden.<br />

Seite 93


::= orientto pos <br />

::= orientto dir <br />

::= moveto <br />

::= beamto pos <br />

::= beamto watch <br />

::= exacenter set <br />

Kapitel 8, Multimodale Interaktion<br />

Wenn der Navigator e<strong>in</strong>es <strong>die</strong>ser Kommandos erhält, startet er e<strong>in</strong>e entsprechende Viewpo<strong>in</strong>t-Animation.<br />

Alle Angaben beziehen sich auf das Weltkoord<strong>in</strong>atensystem. Die mit<br />

orientto beg<strong>in</strong>nenden Kommandos drehen den Avatar ohne se<strong>in</strong>e Position zu ändern. Bei<br />

orientto pos wird der Avatar so gedreht, daß er auf den angegebenen Punkt<br />

sieht, und bei orientto dir so, daß er <strong>in</strong> <strong>die</strong> angegebene Richtung blickt. Beide<br />

Angaben def<strong>in</strong>ieren e<strong>in</strong>e Sichtachse, geben aber ke<strong>in</strong>e Rotation um <strong>die</strong>se Achse an. Es<br />

obliegt dem Browser, <strong>die</strong>se im S<strong>in</strong>ne der Anwendung günstig zu wählen. E<strong>in</strong>e manuelle<br />

Korrektur ist mit den weiter unten erläuterten Kommandos straighten und balance oder<br />

mit den Kommandos <strong>für</strong> diskrete <strong>Navigation</strong> und mit haptischen E<strong>in</strong>gabegeräten möglich.<br />

Kommandos, <strong>die</strong> mit moveto beg<strong>in</strong>nen, beschreiben Bewegungen an e<strong>in</strong>e vollständig spezifizierte<br />

Position oder Richtung. Ist e<strong>in</strong>e Position angegeben, wird der Avatar an <strong>die</strong>se<br />

Position bewegt, ohne daß <strong>die</strong> Orientierung des Avatars geändert wird. Bei der Angabe<br />

<strong>e<strong>in</strong>er</strong> Orientierung dreht sich der Avatar <strong>in</strong> <strong>die</strong> angegebene Richtung, ohne sich zu Bewegen.<br />

Der Unterschied zu den mit orientto beg<strong>in</strong>nenden Kommandos liegt dar<strong>in</strong>, daß hier<br />

<strong>die</strong> Drehung mathematisch vollständig und e<strong>in</strong>deutig spezifiziert ist. S<strong>in</strong>d sowohl Position<br />

als auch Orientierung angegeben, bewegt sich der Avatar entsprechend an den angegebenen<br />

Ort und nimmt <strong>die</strong> angegebene Orientierung e<strong>in</strong>.<br />

Die beiden mit beamto beg<strong>in</strong>nenden Kommandos beschreiben Bewegungen, <strong>die</strong> der Navigator<br />

nicht exakt ausführen muß. Bei aktivierter Gravitation bedeutet beamto pos, daß <strong>die</strong><br />

angegebene Position so modifiziert wird, daß der Avatar nach der Viewpo<strong>in</strong>t-Animation<br />

wieder auf dem Boden steht. Ist <strong>die</strong> Gravitation deaktiviert, ist <strong>die</strong> angegebene Position<br />

das Ziel der Bewegung. Die Orientierung wird durch <strong>die</strong>ses Kommando nicht verändert.<br />

Diese Regel bezüglich der Gravitation gilt ebenso <strong>für</strong> das Kommando beamto watch, jedoch<br />

ist hier <strong>die</strong> angegebene Position e<strong>in</strong> Punkt der Szene, den der Benutzer aus der Nähe<br />

sehen will. Der Navigator f<strong>in</strong>det e<strong>in</strong>en geeigneten Punkt und e<strong>in</strong>e geeignete Blickrichtung.<br />

Kann der Navigator nicht beide Ziele gleichzeitig erfüllen, z.B. weil <strong>die</strong> angegebene Position<br />

viel zu weit oberhalb des Bodens liegt, dann hat das Ziel, den angegebenen Punkt<br />

ansehen zu können, Vorrang.<br />

Das Kommando exacenter set setzt das Drehzentrum <strong>für</strong> Bewegungen des<br />

Exam<strong>in</strong>e Richtungssystems auf den angegebenen Punkt. Die Blickrichtung wird dabei<br />

nicht geändert. Dazu muß der diskrete Integrator zusätzlich e<strong>in</strong> orientto Kommando<br />

auslösen. Für <strong>die</strong> Funktion, e<strong>in</strong>em sich bewegenden Objekt zu folgen, ist ke<strong>in</strong> Kommando<br />

<strong>in</strong> der Gruppe vorhanden, da der <strong>in</strong> <strong>die</strong>sem Abschnitt diskutierte Formalismus<br />

bewegliche Objekte nicht unterstützt. E<strong>in</strong>e mögliche Erweiterung des Formalismus<br />

beschreibt Abschnitt 9.3.2.<br />

Ausführung der Funktion<br />

Typischerweise werden Kommandos aus der Gruppe von SHM Erkennern<br />

und Kommandos aus von haptischen Interpretern, <strong>die</strong> mit e<strong>in</strong>em Zeigegerät<br />

verbunden s<strong>in</strong>d erzeugt. Der diskrete Integrator setzt <strong>die</strong>se mite<strong>in</strong>ander <strong>in</strong> Beziehung,<br />

z.B. wenn er Kommandos aus beiden Gruppen zu etwa der gleichen Zeit erhält, und sendet<br />

entsprechende Kommandos aus der Gruppe an den Navigator. Der Navigator<br />

erhält <strong>in</strong> ke<strong>in</strong>em Fall Kommandos aus oder .<br />

Alle Kommandos aus den Gruppen orientto, moveto und beamto geben entweder e<strong>in</strong>e Position<br />

oder e<strong>in</strong>e Orientierung oder beides an. Sie unterscheiden sich dar<strong>in</strong>, wie genau und<br />

Seite 94


Kapitel 8, Multimodale Interaktion<br />

<strong>in</strong> welcher Form <strong>die</strong>se Angaben gemacht werden. Viewpo<strong>in</strong>t-Animationen, welche <strong>die</strong><br />

Position ändern, und solche, welche <strong>die</strong> Orientierung ändern, können getrennt vone<strong>in</strong>ander<br />

betrachtet werden. Unter <strong>die</strong>sem Gesichtspunkt sollten folgende Regeln gelten, <strong>die</strong><br />

auf dem Grundsatz beruhen, daß der Wunsch des Benutzers oberstes Gebot sei:<br />

• E<strong>in</strong> Kommando, das e<strong>in</strong>e Positionsangabe erhält, ersetzt e<strong>in</strong>e evtl. noch laufende<br />

Animation der Position, wobei e<strong>in</strong>e evtl. noch andauernde Animation der Orientierung<br />

nicht berührt wird. Dies wird der Situation gerecht, daß der Benutzer zuerst e<strong>in</strong><br />

Kommando absetzt, das ihn <strong>in</strong> e<strong>in</strong>e bestimmte Richtung bewegt, und dann <strong>die</strong> Orientierung<br />

festlegt.<br />

• Entsprechend dem gegenteiligen Fall, ersetzt e<strong>in</strong> Kommando, das e<strong>in</strong>e Angabe der<br />

Orientierung enthält ggf. e<strong>in</strong>e bestehende Animation der Orientierung, läßt aber e<strong>in</strong>e<br />

Animation der Position unverändert.<br />

• Kommandos, <strong>die</strong> beide Angaben enthalten ersetzen ggf. beide Animationen.<br />

• Die nach der Animation resultierende Orientierung ist so zu wählen, daß <strong>die</strong> geforderte<br />

Bed<strong>in</strong>gung – anzusehender Punkt – bei Beendigung der Animation gelten soll.<br />

Alle durch <strong>die</strong>se Kommandos ausgelösten Viewpo<strong>in</strong>t-Animationen gelten als Typ B Animationen<br />

im S<strong>in</strong>ne der <strong>in</strong> Abschnitt 7.2.4 vorgenommenen Kategorisierung.<br />

8.4.3 Steuerkommandos<br />

Die Grammatik <strong>für</strong> Steuerbefehle werden um <strong>die</strong> nachfolgend erläuterten Kommandos<br />

erweitert. Im Unterschied zu den anderen Gruppen haben <strong>die</strong> Kommandos <strong>in</strong> der Gruppe<br />

kaum Beziehungen zue<strong>in</strong>ander. Der diskrete Integrator gibt sie meistens nur an<br />

den Navigator weiter.<br />

Die Wertebereiche <strong>für</strong> <strong>die</strong> Parameter der Kommandos waren beim ursprünglichen MIVIS<br />

System auf <strong>die</strong> absoluten Formen beschränkt. Diese werden erweitert, um <strong>die</strong> möglichen<br />

Äußerungen e<strong>in</strong>es Benutzers genauer modellieren zu können. Beispielsweise wird der<br />

Wertebereich von on | off auf on | toggle | off erweitert. Der diskrete Integrator<br />

gibt <strong>die</strong> neuen Werte an den Navigator weiter, da <strong>die</strong>ser den aktuellsten Information über<br />

e<strong>in</strong>en Wert zur Verfügung hat. Es gelten somit folgende Wertebereiche:<br />

: ::= walk | fly | exam<strong>in</strong>e<br />

: ::= <strong>in</strong>c | dec | reset<br />

: ::= on | off | toggle<br />

: ::= prev | next | reset<br />

: ::= all | stepsize | mode | light<br />

: ::= viewpo<strong>in</strong>t | collision | gravity<br />

: ::= | end_list<br />

: ::= x | y | z | yaw | pitch | roll | phi | omega | radius | rho | A | B<br />

Mit wird e<strong>in</strong> Wertebereich def<strong>in</strong>iert, der e<strong>in</strong>e beliebige Komb<strong>in</strong>ation von Richtungen<br />

der beiden Richtungssysteme beschreibt.<br />

Die Gruppe der Kontrollkommandos wird durch e<strong>in</strong>en Präfix control e<strong>in</strong>geleitet:<br />

::= control <br />

Es werden folgende Kommandos def<strong>in</strong>iert:<br />

::= mode set <br />

::= mode restrict <br />

Damit läßt sich <strong>e<strong>in</strong>er</strong> der <strong>Navigation</strong>smodi e<strong>in</strong>stellen. Wird e<strong>in</strong> <strong>Navigation</strong>smodus gesetzt,<br />

dann wird <strong>die</strong> Aktivierung der Gravitationssimulation auf den durch den Modus bestimmten<br />

Zustand (aktiv bei WALK, <strong>in</strong>aktiv bei FLY und EXAMINE) gesetzt, unabhängig von<br />

e<strong>in</strong>em vorausgehenden control gravity * Kommando. Das Kommando control mode<br />

Seite 95


Kapitel 8, Multimodale Interaktion<br />

restrict * gibt e<strong>in</strong>e Reihe von Richtungen an, <strong>die</strong> unterdrückt werden. Der Benutzer<br />

kann sich <strong>in</strong> <strong>die</strong>se Richtungen nicht bewegen. Diese Beschränkung wird aufgehoben,<br />

wenn e<strong>in</strong> neuer <strong>Navigation</strong>smodus mit dem control mode set * Kommando gesetzt wird.<br />

::= stepsize <br />

::= stepsize set <br />

Damit kann <strong>die</strong> Schrittweite <strong>für</strong> Bewegungen der diskreten <strong>Navigation</strong> kontrolliert werden.<br />

Es wird e<strong>in</strong> Faktor manipuliert, der mit der Grundschrittweite <strong>für</strong> jede der zwölf<br />

möglichen Bewegungsrichtungen multipliziert wird.<br />

::= speed <br />

::= speed set <br />

In ähnlicher Weise wie oben kann mit <strong>die</strong>sen Kommandos <strong>die</strong> nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit<br />

bei kont<strong>in</strong>uierlicher <strong>Navigation</strong> bee<strong>in</strong>flußt werden. Kann <strong>in</strong> der Applikation<br />

ebenfalls e<strong>in</strong>e nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit def<strong>in</strong>iert werden – <strong>in</strong> VRML geschieht<br />

<strong>die</strong>s mit dem type Feld des <strong>Navigation</strong>Info Knotens – dann werden <strong>die</strong> benutzerdef<strong>in</strong>ierte<br />

und anwendungsdef<strong>in</strong>ierte nom<strong>in</strong>elle <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit getrennt verwaltet<br />

und mite<strong>in</strong>ander multipliziert.<br />

::= light <br />

Das kontrolliert <strong>in</strong> e<strong>in</strong>em VRML Browser <strong>die</strong> Standardbeleuchtung der Szene durch e<strong>in</strong><br />

Headlight.<br />

::= viewpo<strong>in</strong>t <br />

::= viewpo<strong>in</strong>t tour<br />

::= viewpo<strong>in</strong>t set <br />

::= viewpo<strong>in</strong>t set <br />

Mit den Kommandos können von der Anwendung def<strong>in</strong>ierte Aussichtspunkte angesprungen<br />

werden. Dann kann mit den ersten beiden Formen <strong>die</strong>se Liste der Aussichtspunkte<br />

vorwärts und rückwärts durchwandert werden und an den Ausgangsaussichtspunkt gesprungen<br />

werden. Mit viewpo<strong>in</strong>t tour wird e<strong>in</strong>e Tour durch <strong>die</strong> Liste ausgelöst, <strong>in</strong>dem alle<br />

Aussichtspunkte der Liste nache<strong>in</strong>ander aufgerufen werden. Dieser Vorgang kann mit<br />

dem stop Kommando oder e<strong>in</strong>em anderen <strong>Navigation</strong>skommando beendet werden. Auch<br />

e<strong>in</strong>e Manipulation an e<strong>in</strong>em haptischen E<strong>in</strong>gabegerät, <strong>die</strong> e<strong>in</strong>e Bewegung des Avatars<br />

auslöst, kann <strong>die</strong> Tour abbrechen. Falls e<strong>in</strong> E<strong>in</strong>gabemodul dem Benutzer e<strong>in</strong>e Liste aller<br />

Aussichtspunkte anzeigt, können <strong>die</strong>se mit control viewpo<strong>in</strong>t set * direkt angesprungen<br />

werden.<br />

::= collision <br />

::= gravity <br />

Diese beiden Parameter erlauben es, <strong>die</strong> Gravitationssimulation und <strong>die</strong> Kollisionserkennung<br />

zu aktivieren oder deaktivieren. Da über den <strong>Navigation</strong>smodus <strong>die</strong> Aktivierung der<br />

Gravitationssimulation implizit mitbestimmt wird, kann mit control gravity * <strong>die</strong>s überschrieben<br />

werden. Die E<strong>in</strong>gabemodule sollen ihr Verhalten dadurch aber nicht ändern,<br />

d.h. sie sollen nach e<strong>in</strong>em control gravity off Kommando im WALK Modus auf E<strong>in</strong>gaben<br />

genauso reagieren, wie bei aktivierter Gravitation. Wird der <strong>Navigation</strong>smodus mit dem<br />

Kommando control mode set * gesetzt, wird <strong>die</strong> Simulation der Gravitation wieder <strong>in</strong> den<br />

durch den <strong>Navigation</strong>smodus def<strong>in</strong>ierten Zustand gebracht.<br />

::= straighten<br />

::= balance<br />

Das s<strong>in</strong>d zwei Befehle, <strong>die</strong> den Avatar wieder <strong>in</strong> e<strong>in</strong>e senkrechte Lage br<strong>in</strong>gen. Mit control<br />

straighten wird der Avatar entlang des Lot-Vektors ausgerichtet. Mit control balance wird<br />

er nur soweit ausgerichtet, daß er weder nach l<strong>in</strong>ks noch nach rechts geneigt ist. Die<br />

Neigung nach oben oder unten wird dadurch nicht bee<strong>in</strong>flußt. Gemäß der Kategorisierung<br />

<strong>in</strong> Abschnitt 7.2.4 gelten <strong>die</strong>se Bewegungen als Typ C Animationen.<br />

Seite 96


| ::= repeat<br />

::= undo<br />

Kapitel 8, Multimodale Interaktion<br />

Durch <strong>die</strong>se Kommandos können Befehle wiederholt oder rückgängig gemacht werden.<br />

Da control repeat vom diskreten Integrator aufgelöst werden kann, ist es als kontextsensitives<br />

Kommando e<strong>in</strong>gestuft. Das control undo Kommando muß vom Navigator aufgelöst<br />

werden, da <strong>die</strong>ser den Undo Puffer mit den <strong>in</strong> der letzten Zeit veränderten Werten verwaltet.<br />

::= sendstatus <br />

::= quit<br />

Das control sendstatus * Kommando erlaubt e<strong>in</strong>em Modul explizit e<strong>in</strong>e Statusmeldung<br />

vom Navigator anzufordern. Der Navigator signalisiert zwar alle Parameter bei Veränderung<br />

sofort, aber <strong>in</strong> der Initialisierungsphase oder wenn e<strong>in</strong> E<strong>in</strong>gabemodul während des<br />

Betriebes <strong>in</strong> das System <strong>in</strong>tegriert werden kann, haben nicht alle Module alle Status<strong>in</strong>formationen<br />

zur Verfügung.<br />

Mit dem control quit Kommando kann <strong>die</strong> Anwendung beendet werden. Dieses Kommando<br />

sollte der Navigator idealerweise an <strong>die</strong> Anwendung weitergeben, damit <strong>die</strong>se<br />

e<strong>in</strong>e Rückfrage beim Benutzer durchführen, nicht gespeicherte Daten speichern und sich<br />

dann beenden kann.<br />

8.4.4 Formalismus <strong>für</strong> Stat us Anzeigen<br />

Damit <strong>die</strong> haptischen Interpreter und der diskrete Integrator korrekt funktionieren können,<br />

müssen sie über e<strong>in</strong>e Reihe von Zuständen <strong>in</strong>formiert werden, <strong>die</strong> im Navigator<br />

auftreten. Außerdem sollte der Benutzer über e<strong>in</strong>ige Ereignisse Rückkopplung erhalten,<br />

<strong>die</strong> auftreten während er durch <strong>die</strong> Szene navigiert. Auch <strong>die</strong>se Information steht im Navigator<br />

zur Verfügung. Beide Arten von Information werden über den <strong>in</strong> Abb. 18 rot dargestellten<br />

Kommunikationskanal übertragen. Sie werden durch folgende Grammatik beschrieben:<br />

S ::= <br />

::= |<br />

Ebenso wie <strong>die</strong> Grammatik <strong>für</strong> Benutzerkommandos besteht <strong>die</strong> Grammatik <strong>für</strong> Status<strong>in</strong>formationen<br />

aus <strong>e<strong>in</strong>er</strong> Folge von Informationse<strong>in</strong>heiten.<br />

::= status <br />

Jeder <strong>die</strong>ser Informationse<strong>in</strong>heiten wird durch das Symbol status e<strong>in</strong>geleitet. Dadurch<br />

kann <strong>für</strong> <strong>die</strong> Kommunikationskanäle e<strong>in</strong>e Implementierung gewählt werden, <strong>die</strong> beide<br />

Grammatiken auf nur e<strong>in</strong>em tatsächlichen Kanal transportiert.<br />

Ähnlich wie bei Benutzerkommandos werden Wertebereiche def<strong>in</strong>iert. Diese beschreiben<br />

jedoch nur den tatsächlichen Zustand und enthalten ke<strong>in</strong>e Symbole <strong>für</strong> Zustandsübergänge:<br />

: ::= walk | fly | exam<strong>in</strong>e<br />

: ::= on | off<br />

: ::= | end_list<br />

: ::= x | y | z | yaw | pitch | roll | phi | omega | radius | rho | A | B<br />

: ::= <br />

: ::= | end_list<br />

::= mode mode <br />

::= mode cont<strong>in</strong>uous <br />

::= mode restricted <br />

Seite 97


Kapitel 8, Multimodale Interaktion<br />

Diese Gruppe beschreibt <strong>die</strong> Art der <strong>Navigation</strong>. Die haptischen Interpreter müssen den<br />

<strong>Navigation</strong>smodus, der durch status mode mode beschrieben wird, <strong>in</strong> der<br />

Art, wie sie <strong>die</strong> Signale der E<strong>in</strong>gabegeräte <strong>in</strong>terpretieren, verwirklichen. Der Navigator<br />

sendet <strong>die</strong>se Status<strong>in</strong>formation immer dann, wenn e<strong>in</strong>e Modusänderung auftritt.<br />

Das mit status mode cont<strong>in</strong>uous übertragene Flag <strong>die</strong>nt als Modifizierer <strong>für</strong> den<br />

<strong>Navigation</strong>smodus. Wird on übertragen, dann hat der Navigator <strong>in</strong> den Modus der quasikont<strong>in</strong>uierlichen<br />

<strong>Navigation</strong> geschaltet und erzeugt e<strong>in</strong>e fortlaufende Bewegung. Haptische<br />

Interpreter sollten <strong>die</strong> Interpretation des E<strong>in</strong>gabegerätes an <strong>die</strong>sen Umstand anpassen<br />

und hauptsächlich Drehbewegungen erzeugen. Der mit status mode mode<br />

def<strong>in</strong>ierte <strong>Navigation</strong>smodus gilt dabei als Vorlage: Bei WALK und FLY<br />

werden hauptsächlich Bewegungen der Richtungen yaw, pitch und roll erzeugt, und bei<br />

EXAMINE hauptsächlich φ, ω und ρ. Das Signal status mode cont<strong>in</strong>uous off schaltet <strong>die</strong><br />

haptischen Interpreter wieder <strong>in</strong> den normalen <strong>Navigation</strong>smodus zurück.<br />

Das Signal status mode restricted nennt alle Richtungen, <strong>die</strong> der Kont<strong>in</strong>uierliche<br />

Integrator unterdrückt. E<strong>in</strong>gabegeräte können zwar Bewegungen <strong>in</strong> <strong>die</strong>se Richtung erzeugen,<br />

<strong>die</strong>se führen jedoch zu k<strong>e<strong>in</strong>er</strong> Bewegung des Avatars. Für manche E<strong>in</strong>gabegeräte<br />

kann es s<strong>in</strong>nvoll se<strong>in</strong>, <strong>die</strong> Umsetzung der Freiheitsgrade des E<strong>in</strong>gabegerätes <strong>in</strong> Bewegungsrichtungen<br />

entsprechend anzupassen. Für e<strong>in</strong> E<strong>in</strong>gabegerät mit nur wenigen Freiheitsgraden,<br />

das <strong>die</strong>se abhängig vom Zustand e<strong>in</strong>iger Schalter auf dem Gerät <strong>in</strong> Bewegungsrichtung<br />

umsetzt, kann das Signal status mode restricted bedeuten, daß alle<br />

Freiheitsgrade im unmodifizierten Betrieb unterdrückt werden. Dann sollte <strong>die</strong>ses E<strong>in</strong>gabegerät<br />

<strong>in</strong> e<strong>in</strong>en der modifizierten Modi umschalten.<br />

Wenn der Navigator e<strong>in</strong>en neuen <strong>Navigation</strong>smodus signalisiert, dann gelten <strong>die</strong> quasikont<strong>in</strong>uierliche<br />

<strong>Navigation</strong> automatisch als abgeschaltet, und alle Bewegungsrichtungen<br />

als erlaubt. Das bedeutet, daß nach dem Signal status mode mode implizit<br />

status mode cont<strong>in</strong>uous off und status mode restricted end_list gelten, sofern der Navigator<br />

nicht etwas Gegenteiliges signalisiert. Ebenso wird das im Folgenden beschriebene<br />

status mode gravity * Flag auf den vom e<strong>in</strong>gestellten Modus abhängigen Defaultwert gesetzt.<br />

::= stepsize <br />

::= speed <br />

::= light <br />

::= collision <br />

::= gravity <br />

::= viewpo<strong>in</strong>t activated <br />

::= viewpo<strong>in</strong>t list_changed <br />

Die Signale status stepsize * und status speed * geben den vom Benutzer e<strong>in</strong>gestellten<br />

Faktor <strong>für</strong> <strong>die</strong> Schrittweite bei diskreter <strong>Navigation</strong> bzw. <strong>für</strong> <strong>die</strong> <strong>Navigation</strong>sgeschw<strong>in</strong>digkeit<br />

bei kont<strong>in</strong>uierlicher <strong>Navigation</strong> an. Das Feedback-Modul sollte beide Werte dem Benutzer<br />

anzeigen. E<strong>in</strong>gabemodule sollten translatorische Bewegungen <strong>in</strong> den Richtungen<br />

x, y und z mit dem <strong>in</strong> status speed * angegebenen Faktor multiplizieren.<br />

Mit status light * wird der Zustand des <strong>in</strong> VRML verwendeten Headlights angezeigt, das<br />

zur standardmäßigen Ausleuchtung <strong>e<strong>in</strong>er</strong> Szene <strong>die</strong>nt.<br />

Der Aktivierungszustand der Kollisionserkennung und Gravitationssimulation wird mit<br />

status collision * und status gravity * angezeigt. E<strong>in</strong>gabemodule sollten <strong>die</strong> Übersetzung<br />

der Freiheitsgrade des E<strong>in</strong>gabegerätes <strong>in</strong> Bewegungsrichtung von <strong>die</strong>sen beiden<br />

Flags nicht abhängig machen. Das mit status gravity * signalisierte Flag wird durch e<strong>in</strong><br />

status mode mode * Signal zurückgesetzt.<br />

Wird e<strong>in</strong> Aussichtspunkt angesprungen, dann signalisiert der Navigator <strong>die</strong>s mit dem<br />

status viewpo<strong>in</strong>t activated * Signal. Der erste Parameter gibt <strong>die</strong> Nummer des Aussichtspunktes<br />

<strong>in</strong> der Liste aller Aussichtspunkte an, der zweite Parameter <strong>die</strong> Länge <strong>die</strong>ser Liste<br />

Seite 98


Kapitel 8, Multimodale Interaktion<br />

und der dritte Parameter e<strong>in</strong>e <strong>für</strong> Menschen lesbare Beschreibung des Aussichtspunktes.<br />

Im Bezug auf VMRL ist der letzte Parameter das description Feld des Viewpo<strong>in</strong>t Knotens,<br />

und das status viewpo<strong>in</strong>t activated * Signal zeigt das B<strong>in</strong>den e<strong>in</strong>es Viewpo<strong>in</strong>t Knotens<br />

an. Ändert sich <strong>in</strong> der Anwendung <strong>die</strong> Liste der Aussichtspunkte, z.B. wenn e<strong>in</strong> anderer<br />

Raum betreten wird, so wird <strong>die</strong>s mit dem status viewpo<strong>in</strong>t list_changed * Signal<br />

angezeigt. Dadurch kann e<strong>in</strong> E<strong>in</strong>gabemodul mit entsprechenden Möglichkeiten dem Benutzer<br />

e<strong>in</strong>e Liste aller Aussichtspunkte zur Auswahl anzeigen. In bildschirmorientierten<br />

Anwendungen könnte <strong>die</strong>se Liste z.B. durch e<strong>in</strong> aufklappbares Menü realisiert werden.<br />

Der erste Parameter gibt <strong>die</strong> Länge der Liste an. Darauf folgt e<strong>in</strong>e Liste der Beschreibungen<br />

aller Aussichtspunkte.<br />

::= isbeam<strong>in</strong>g <br />

::= collided <br />

::= undo<strong>in</strong>g noth<strong>in</strong>gstored<br />

::= undo<strong>in</strong>g <br />

::= light | collision | gravity | mode | position | viewpo<strong>in</strong>t<br />

Es kann vorkommen, daß e<strong>in</strong> E<strong>in</strong>gabegerät Signale erzeugt, <strong>die</strong>, nachdem sie vom Benutzer<br />

ausgelöst wurden, noch e<strong>in</strong>e kurze Zeit andauern. In Abschnitt 7.2.4 werden solche<br />

Fälle im Zusammenhang mit Typ D Animationen diskutiert. Damit solche Animationen<br />

nicht e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation überdauern und damit der Benutzer nicht versehentlich<br />

e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation wegen e<strong>in</strong>es empf<strong>in</strong>dlichen E<strong>in</strong>gabegerätes abbricht, kündigt<br />

der Navigator e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation mit dem Signal status isbeam<strong>in</strong>g on an und<br />

sendet nach deren Beendigung das Signal status isbeam<strong>in</strong>g off.<br />

Kollisionen des Avatars mit Objekten der Szene werden mit status collided * angezeigt.<br />

Die mit <strong>die</strong>sem Signal übertragene Information beschreibt <strong>die</strong> Kollision. Der Umfang <strong>die</strong>ser<br />

Information kann von Anwendung zu Anwendung verschieden se<strong>in</strong>, sollte aber m<strong>in</strong>destens<br />

e<strong>in</strong>en Vektor be<strong>in</strong>halten, der ähnlich dem collided Feld des <strong>in</strong> Abschnitt 7.2.2<br />

def<strong>in</strong>ierten <strong>Navigation</strong>Sensor Knotens e<strong>in</strong>e Richtung angibt, <strong>die</strong> der Kollision entgegen<br />

wirkt. Die <strong>in</strong> <strong>die</strong>ser Arbeit durchgeführte Implementierung überträgt <strong>die</strong> Information <strong>die</strong>ses<br />

collided Feldes.<br />

Der Navigator sendet <strong>die</strong> Signale status undo<strong>in</strong>g * als Reaktion auf e<strong>in</strong> control undo<br />

Kommando aus. Der Parameter gibt an, welche Art von Aktion rückgängig gemacht wird.<br />

Kommandos der diskreten <strong>Navigation</strong> werden mit status undo<strong>in</strong>g position rückgängig<br />

gemacht. Ist mit <strong>die</strong>sem Vorgang e<strong>in</strong>e Viewpo<strong>in</strong>t-Animation verbunden (position oder<br />

viewpo<strong>in</strong>t), dann folgt dem Signal e<strong>in</strong> status isbeam<strong>in</strong>g on und später e<strong>in</strong> status isbeam<strong>in</strong>g<br />

off Signal.<br />

8.5 Implementierung<br />

Für <strong>die</strong> Implementierung des erweiterten MIVIS Systems wird aus folgenden Gründen <strong>die</strong><br />

Sprache VRML mit der Script Sprache VrmlScript gewählt:<br />

• Für den Zugriff auf E<strong>in</strong>gabegeräte und <strong>für</strong> <strong>die</strong> Steuerung der Bewegungen des Avatars<br />

stehen <strong>die</strong> im ersten Teil <strong>die</strong>ser Arbeit entwickelten VRML Knoten zur Verfügung.<br />

Durch deren Verwendung wird das Konzept, das ihnen zugrunde liegt, vali<strong>die</strong>rt.<br />

• Zudem muß <strong>in</strong>sbesondere der kont<strong>in</strong>uierliche Integrator und der Kommunikationskanal<br />

<strong>für</strong> <strong>die</strong> Bewegungs<strong>in</strong>formationen nicht mehr implementiert werden, da mit dem<br />

Navigator Knoten <strong>die</strong> entsprechende Funktion des Browsers genutzt wird.<br />

• Dadurch, daß VRML und VrmlScript plattformunabhängige Sprachen s<strong>in</strong>d, ist e<strong>in</strong>e<br />

spätere Erweiterung leicht möglich.<br />

Seite 99


Kapitel 8, Multimodale Interaktion<br />

• Code, der den e<strong>in</strong>gesetzten Formalismus verarbeitet, läßt sich <strong>in</strong> VrmlScript gut darstellen<br />

16 .<br />

• Die Infrastruktur des erweiterten Systems besteht aus Modulen, <strong>die</strong> über ereignisbasierte<br />

Kanäle kommunizieren. Dies läßt sich gut auf <strong>die</strong> VRML Konzepte des Proto Mechanismus<br />

und des Routengraphen abbilden.<br />

8.5.1 Verwendung von VRM L/VrmlScript<br />

Jede der <strong>in</strong> Abb. 18 dargestellten Systemkomponenten wird, sofern nötig oder möglich<br />

durch e<strong>in</strong>e Proto Instanz <strong>in</strong> <strong>e<strong>in</strong>er</strong> eigenen VRML Datei nachgebildet. Ausnahmen hiervon<br />

bilden der kont<strong>in</strong>uierliche Integrator und <strong>die</strong> SHM Erkenner. Der kont<strong>in</strong>uierliche Integrator<br />

ist Teil des Browsers und muß daher nicht <strong>in</strong> VRML implementiert werden. Näheres<br />

beschreibt Abschnitt 8.5.4. Die SHM Erkenner kommunizieren über TCP Verb<strong>in</strong>dungen<br />

direkt mit dem diskreten Integrator und werden dadurch mit <strong>die</strong>sem <strong>in</strong> das System e<strong>in</strong>gebunden.<br />

E<strong>in</strong>e Hauptdatei namens NavWelder.wrl lädt alle Systemkomponenten mit dem<br />

EXTERNPROTO Statement und stellt den Informationsfluß mittels Routen her. Diese Datei<br />

kann ebenfalls als EXTERNPROTO <strong>in</strong> e<strong>in</strong>e bestehende Welt geladen werden, wodurch <strong>die</strong>se<br />

um <strong>die</strong> Fähigkeit zur Multimodalen <strong>Navigation</strong> erweitert wird.<br />

Die folgende Tabelle zeigt <strong>die</strong> Zuordnung von Systemkomponenten zu Date<strong>in</strong>amen und<br />

Name des Protos:<br />

Systemkomponente Date<strong>in</strong>ame Proto Name<br />

Hauptdatei / Kommunikationskanäle: NavWelder.wrl <strong>Navigation</strong><br />

Navigator: Navigator.wrl Navigator<br />

diskreter Integrator: Integrator.wrl Integrator<br />

kont<strong>in</strong>uierlicher Integrator: Teil der Browser Implementierung<br />

Maus und Tastatur Interpreter: Teil der Browser Implementierung<br />

Joystick Interpreter: Joystick.wrl Joystick<strong>Navigation</strong><br />

Spacemouse Interpreter: Spacemouse.wrl Spacemouse<strong>Navigation</strong><br />

SHM Erkenner: kommunizieren direkt mit dem diskreten Integrator<br />

Undo Puffer: UndoBuffer.wrl UndoBuffer<br />

Diskreter Navigator: DiscreteNavigator.wrl DiscreteNavigator<br />

Abb. 20 faßt <strong>die</strong> implementierte Struktur zusammen. Die gepunktete L<strong>in</strong>ie trennt Systemkomponenten<br />

des ursprünglichen Systems, <strong>die</strong> <strong>in</strong> mehreren Prozessen auf unterschiedlichen<br />

Plattformen laufen, von den Komponenten, <strong>die</strong> <strong>in</strong>nerhalb des VRML Browsers blaxxun<br />

Contact ausgeführt werden. Während unterhalb der gepunkteten L<strong>in</strong>ie <strong>die</strong> ohne<br />

Schatten dargestellten Blöcke Systemkomponenten des Browsers darstellen, <strong>die</strong> schon<br />

existierten oder erweitert wurden, symbolisieren <strong>die</strong> Blöcke mit Schattierung Teile des <strong>in</strong><br />

VRML implementierten Szenengraphen. Die äußeren Blöcke stellen Proto Instanzen dar,<br />

deren <strong>in</strong>nerer Szenengraph angedeutet wird.<br />

16<br />

VrmlScript ist im Wesentlichen e<strong>in</strong>e um <strong>die</strong> Datentypen von VRML erweiterte Version von<br />

JavaScript.<br />

Seite 100


Maus<br />

Interpreter<br />

Tastatur<br />

Interpreter<br />

Joystick<strong>Navigation</strong><br />

JS<br />

Maus<br />

Interpreter<br />

Maus<br />

Interpreter<br />

Maus<br />

Interpreter<br />

S<br />

N<br />

Spacemouse<strong>Navigation</strong><br />

SM<br />

S<br />

N<br />

Diskreter<br />

Integrator<br />

DiskreterIntegrator<br />

Kapitel 8, Multimodale Interaktion<br />

TCP<br />

Filter<br />

~<br />

Navigator<br />

externe Prozesse<br />

blaxxun Contact<br />

<strong>Navigation</strong><br />

Kollisionserkennung<br />

&<br />

Gravitation<br />

Abb. 20: Struktur der Implementierung des erweiterten MIVIS Systems<br />

8.5.2 Kommunikationskanä le<br />

Es existieren im System zwei Kommunikationskanäle, <strong>die</strong> zeitdiskrete Kommandos bzw.<br />

Statusaktualisierungen <strong>in</strong> den beiden <strong>in</strong> Abschnitt 8.4 def<strong>in</strong>ierten kontextfreien Grammatiken<br />

übertragen. Diese werden als Routen, <strong>die</strong> den Typ MFStr<strong>in</strong>g transportieren, <strong>in</strong> der<br />

Datei NavWelder.wrl realisiert. Der Kanal <strong>für</strong> Kommandos des Benutzers transportiert<br />

Worte (im S<strong>in</strong>ne <strong>e<strong>in</strong>er</strong> Grammatik), <strong>die</strong> der Variable genügen. Jedes Term<strong>in</strong>alsymbol<br />

wird e<strong>in</strong>em eigenen Arrayelement des Typs MFStr<strong>in</strong>g zugeordnet. Dadurch vere<strong>in</strong>facht<br />

sich das Parsen im Empfänger auf den Zugriff auf Arrayelemente. Der Kanal <strong>für</strong><br />

Statusänderungen transportiert ebenfalls Worte <strong>e<strong>in</strong>er</strong> Grammatik, jedoch genügen <strong>die</strong>se<br />

der Variablen . Auch hier wird der Typ MFStr<strong>in</strong>g verwendet, um das Parsen zu<br />

vere<strong>in</strong>fachen.<br />

Seite 101


Kapitel 8, Multimodale Interaktion<br />

Der dritte Kommunikationskanal transportiert kont<strong>in</strong>uierliche Bewegungs<strong>in</strong>formationen.<br />

Dieser ist Teil der Implementierung des Navigator Knotens und damit Teil des Browsers.<br />

Se<strong>in</strong>e Funktionsweise wurde <strong>in</strong> Abschnitt 7.3 erläutert.<br />

8.5.3 Diskreter Integrator<br />

Der diskrete Integrator ist Teil des ursprünglichen MIVIS Implementierung und kommuniziert<br />

mit dem Rest des Systems über Netzwerkverb<strong>in</strong>dungen mit dem TCP Protokoll. Es<br />

werden ASCII Texte übertragen, <strong>die</strong> <strong>in</strong> jeder Zeile genau e<strong>in</strong> der Variablen entsprechendes<br />

Kommando, bzw. e<strong>in</strong>e der Variablen entsprechende Statusaktualisierung<br />

enthalten. Jeder Zeile wird e<strong>in</strong>e <strong>in</strong> der Regel drei Zeichen lange Empfängerkennung<br />

und e<strong>in</strong>e ebenfalls meist drei Zeichen lange Senderkennung vorangestellt. Die<br />

Senderkennung hilft dem diskreten Integrator, e<strong>in</strong>zelne Modalitäten <strong>in</strong> bestimmten Fällen<br />

gesondert zu behandeln. Beide Kennungen ermöglichen e<strong>in</strong>e flexible Erweiterung des<br />

Systems.<br />

Damit der diskrete Integrator mit dem <strong>in</strong> VRML implementierten System kommunizieren<br />

kann, wurde das <strong>in</strong> Abschnitt 6.6.5 vorgestellte Gerät „TCP” <strong>für</strong> den DeviceSensor Knoten<br />

als nachladbares Erweiterungsmodul <strong>für</strong> den Browser programmiert. Dieses Gerät teilt<br />

aus der TCP Verb<strong>in</strong>dung gelesene Zeilen <strong>in</strong> durch Leerzeichen getrennte Worte auf und<br />

gibt sie als MFStr<strong>in</strong>g an <strong>die</strong> Szene weiter. Ebenso akzeptiert es Werte des Typs MFStr<strong>in</strong>g<br />

aus der Szene und fügt sie zu <strong>e<strong>in</strong>er</strong> Zeile zusammen, <strong>die</strong> es <strong>in</strong> <strong>die</strong> TCP Verb<strong>in</strong>dung<br />

schreibt. Dadurch ist <strong>die</strong> direkte Ankopplung der TCP Verb<strong>in</strong>dungen an <strong>die</strong> <strong>in</strong> VRML implementierten<br />

Kommunikationskanäle möglich.<br />

Der Proto DiskreterIntegrator, der den Diskreten Integrator <strong>in</strong>nerhalb des VRML Szenengraphen<br />

repräsentiert, besteht somit nur aus e<strong>in</strong>em DeviceSensor, der das „TCP”<br />

Gerät e<strong>in</strong>b<strong>in</strong>det. Kommandos, <strong>die</strong> <strong>die</strong>ser Proto über se<strong>in</strong> eventIn Feld <strong>für</strong> Benutzerkommandos<br />

empfängt, gibt er an den DeviceSensor weiter, und solche, <strong>die</strong> er vom Device-<br />

Sensor erhält, sendet er über se<strong>in</strong> eventOut Feld an den Navigator Proto.<br />

8.5.4 Kont<strong>in</strong>uierlicher Inte grator<br />

Der Kont<strong>in</strong>uierliche Integrator ist Teil der Implementierung. Die Kollisionserkennung und<br />

Simulation der Gravitation existierte schon <strong>in</strong> der ursprünglichen Version. Neue Komponenten<br />

s<strong>in</strong>d das Ad<strong>die</strong>rglied, das <strong>die</strong> Bewegungs<strong>in</strong>formationen von den Navigator Knoten<br />

überlagert, und e<strong>in</strong> Filter, das gleichmäßigere Bewegungen erzeugt. Beide Komponenten<br />

s<strong>in</strong>d <strong>in</strong> Abschnitt 7.3 ausführlich beschrieben.<br />

8.5.5 Navigator<br />

Der Navigator ist im gleichnamigen Proto Navigator enthalten. Dieser Proto greift auf <strong>die</strong><br />

im Browser existierenden <strong>Navigation</strong>sfunktionen zurück, und implementiert <strong>die</strong>jenigen,<br />

<strong>die</strong> typisch <strong>für</strong> <strong>multimodale</strong> <strong>Navigation</strong> s<strong>in</strong>d, als VRML Code. Funktionen, <strong>die</strong> vom Browser<br />

ausgeführt werden, s<strong>in</strong>d z.B. Viewpo<strong>in</strong>t-Animationen oder das Verwalten des <strong>Navigation</strong>smodus.<br />

Die VRML Implementierung deko<strong>die</strong>rt <strong>die</strong> Kommandos, <strong>die</strong> der Navigator<br />

vom Diskreten Integrator erhält, und gibt solche Kommandos, <strong>die</strong> diskrete oder quasikont<strong>in</strong>uierliche<br />

<strong>Navigation</strong> betreffen an das Modul Diskreter Navigator weiter. Dieses wird<br />

vom Navigator als EXTERNPROTO nachgeladen. Ferner werden <strong>die</strong> von den Kommandos<br />

veränderten Systemzustände <strong>in</strong> e<strong>in</strong>em ebenfalls als EXTERNPROTO geladenen LIFO Speicher<br />

festgehalten und bei Erhalt des control undo Kommandos wieder ausgelesen. Da <strong>in</strong><br />

VRML ke<strong>in</strong>e zusammengesetzten Typen möglich s<strong>in</strong>d, verwendet <strong>die</strong>ser Speicher dynamisch<br />

erzeugte Proto Instanzen, welche <strong>die</strong> nötige Information als Werte ihrer Felder<br />

festhalten.<br />

Seite 102


Kapitel 8, Multimodale Interaktion<br />

Das Modul Diskreter Navigator erhält vom Navigator e<strong>in</strong>e Richtungsangabe gemäß den <strong>in</strong><br />

5.1.3 def<strong>in</strong>ierten Richtungssystemen und e<strong>in</strong> Flag, das angibt, ob <strong>die</strong> Bewegung <strong>für</strong> kurze<br />

Zeit, oder bis auf weiteres ausgeführt werden soll. Es enthält e<strong>in</strong>en eigenen Navigator<br />

Knoten, an den es entsprechende Geschw<strong>in</strong>digkeitswerte sendet.<br />

Über den <strong>Navigation</strong>Sensor Knoten kann der Navigator Proto auf relevante Informationen<br />

<strong>in</strong>nerhalb des <strong>Navigation</strong>smoduls des Browser zurückgreifen. Diese sendet er über<br />

den Kommunikationskanal <strong>für</strong> Statusaktualisierungen an <strong>die</strong> haptischen Interpreter und<br />

den Diskreten Integrator. Insbesondere wird es erst durch den <strong>Navigation</strong>Sensor möglich,<br />

daß der Benutzer über das im Browser e<strong>in</strong>gebaute Rechts-Klick Menü e<strong>in</strong>en <strong>Navigation</strong>smodus<br />

auswählt, und sowohl <strong>die</strong> <strong>in</strong> VRML implementierten Systemkomponenten<br />

darauf entsprechend reagieren.<br />

8.5.6 Die haptischen Inter preter<br />

Zusätzlich zu den im Browser schon vorhandenen haptischen Interpreter <strong>für</strong> <strong>die</strong> Maus<br />

und Tastatur werden exemplarisch zwei haptische Interpreter <strong>für</strong> e<strong>in</strong>en Joystick und <strong>die</strong><br />

Spacemouse <strong>in</strong> VRML implementiert. Diese beiden Module vali<strong>die</strong>ren das <strong>in</strong> Abschnitt 5.4<br />

erarbeitete Konzept, <strong>die</strong> Signale e<strong>in</strong>es E<strong>in</strong>gabegerätes mit Hilfe des DeviceSensor Knotens<br />

vom Browser auszukoppeln, <strong>in</strong> der Anwendung zu verarbeiten und mit dem Navigator<br />

Knoten als Bewegungs<strong>in</strong>formation wieder <strong>in</strong> den Browser e<strong>in</strong>zukoppeln.<br />

E<strong>in</strong> <strong>in</strong> VRML implementierter haptischer Interpreter besteht typischerweise aus e<strong>in</strong>em<br />

DeviceSensor, e<strong>in</strong>em Script Knoten und e<strong>in</strong>em Navigator Knoten. Der DeviceSensor<br />

stellt <strong>die</strong> Signale, <strong>die</strong> der Benutzer am E<strong>in</strong>gabegerät erzeugt, als VRML Ereignisse zur<br />

Verfügung. Diese werden an den Script Knoten geroutet, das <strong>die</strong>se zu Bewegungen verarbeitet.<br />

Diese Bewegungs<strong>in</strong>formationen werden schließlich an den Navigator Knoten<br />

geroutet, der sie an den als Teil des Browsers implementierten kont<strong>in</strong>uierlichen Integrator<br />

weiterleitet. Das disableDefault Flag am DeviceSensor ist gesetzt, so daß der Browser<br />

das E<strong>in</strong>gabegerät nicht selbst verarbeiten kann. Dies ist zwar beim Joystick und bei<br />

der Spacemouse ohneh<strong>in</strong> nicht der Fall, es wäre aber denkbar, daß e<strong>in</strong>e spätere Version<br />

des Browsers <strong>die</strong>se Geräte <strong>in</strong>tern unterstützt. Am Navigator Knoten darf das disableDefault<br />

Flag h<strong>in</strong>gegen nicht gesetzt werden, damit <strong>die</strong> im Browser <strong>in</strong>terne <strong>Navigation</strong> per<br />

Maus und Tastatur aktiv bleibt. Der Szenengraph e<strong>in</strong>es haptischen Interpreters ist <strong>in</strong> Abb.<br />

21 dargestellt. Der zugehörige VRML Code ist im Anhang B angegeben.<br />

DeviceSensor<br />

device "JOYSTICK"<br />

disableDefault TRUE<br />

event<br />

Event Proto<br />

stick<br />

button1<br />

button2<br />

signalisiert Benutzere<strong>in</strong>gaben<br />

Script<br />

verarbeitet<br />

Benutzere<strong>in</strong>gaben<br />

zu Bewegungs<strong>in</strong>formation<br />

Abb. 21: Struktur e<strong>in</strong>es haptischen Interpreters<br />

Navigator<br />

disableDefault<br />

FALSE<br />

sendet Bewegungs<strong>in</strong>format<strong>in</strong><br />

zum kont<strong>in</strong>uierlichen<br />

Integrator<br />

Seite 103


9 Weiterführende Arbeiten<br />

9.1 Anwendungsbeisp iele<br />

Kapitel 9, Weiterführende Arbeiten<br />

Dieser Abschnitt stellt zwei Arbeiten vor, <strong>die</strong> auf das <strong>in</strong> <strong>die</strong>sem Kapitel um haptische Modalitäten<br />

erweiterte <strong>multimodale</strong> Be<strong>die</strong>nsystem MIVIS aufbauen.<br />

Marcus Mörtlbauer b<strong>in</strong>det das erweiterte Be<strong>die</strong>nsystem <strong>in</strong> e<strong>in</strong> von ihm erstelltes virtuelles<br />

Modell des Lehrstuhls <strong>für</strong> Mensch-Masch<strong>in</strong>e-Kommunikation e<strong>in</strong>. Darauf aufbauend untersucht<br />

er <strong>die</strong> Reaktion der Benutzer auf das System. Insbesondere soll festgestellt werden,<br />

wie oft, und unter welchen Umständen <strong>die</strong> Benutzer <strong>die</strong> Modalitäten wechseln, und<br />

wie sehr sich dabei <strong>die</strong> Effizienz des Benutzungs<strong>in</strong>terfaces steigert. Abb. 22 zeigt e<strong>in</strong>en<br />

Screenshot <strong>die</strong>ser Arbeit, mit Blick auf den Raum, <strong>in</strong> dem auch <strong>die</strong>se Arbeit entstand.<br />

Abb. 22: Das <strong>multimodale</strong> Be<strong>die</strong>nsystem bei e<strong>in</strong>em virtuellen<br />

Lehrstuhlrundgang.<br />

Jens Peters entwickelt e<strong>in</strong> VR-Interface zur Steuerung von Komfortapplikationen im Automobil.<br />

Ziel <strong>die</strong>ser Arbeit ist es, an e<strong>in</strong>em konkreten Beispiel herauszuf<strong>in</strong>den, welche<br />

Vor- und Nachteile <strong>die</strong> dritte Dimension gegenüber e<strong>in</strong>em herkömmlichen graphischen<br />

Benutzungs<strong>in</strong>terface mit sich br<strong>in</strong>gt. Auf e<strong>in</strong>em 12" Monitor, der über der Mittelkonsole<br />

e<strong>in</strong>es Autos angebracht ist, erlaubt es <strong>die</strong> Anwendung, zu telefonieren, Radio zu hören,<br />

im Internet zu surfen (WAP), und <strong>die</strong> auf CD gebrannte Musiksammlung anzuhören.<br />

Seite 104


Kapitel 9, Weiterführende Arbeiten<br />

Zur <strong>multimodale</strong>n Kommunikation mit dem System werden auf <strong>die</strong>se Anwendungsdomäne<br />

angepaßte SHM Erkenner <strong>für</strong> natürliche Sprache, sowie Hand- und Kopfgesten e<strong>in</strong>gebunden.<br />

Als haptische E<strong>in</strong>gabegeräte werden e<strong>in</strong> Touchscreen und e<strong>in</strong> da<strong>für</strong> gefertigtes<br />

Be<strong>die</strong>nteil mit Knöpfen und e<strong>in</strong>em Drehrad angeschlossen. Diese werden mit den im ersten<br />

Teil <strong>die</strong>ser Arbeit entwickelten Sprachkonstrukten und dem dort implementierten<br />

„TCP” Gerät <strong>in</strong> <strong>die</strong> VRML Szene e<strong>in</strong>gebunden. Die beiden Betriebsarten Radio und WAP<br />

s<strong>in</strong>d <strong>in</strong> Abb. 23 gezeigt.<br />

Abb. 23: VR Interface im Auto – Radio hören und WAP surfen<br />

Der VRML Games Webr<strong>in</strong>g[36] ist e<strong>in</strong>e Seite im Internet, <strong>die</strong> VRML basierte 3D Spiele<br />

zusammenfaßt. Diese können onl<strong>in</strong>e und teilweise im Multiuser Betrieb gespielt werden.<br />

E<strong>in</strong>ige benutzen <strong>die</strong> <strong>in</strong> <strong>die</strong>ser Arbeit entwickelte anpassbare <strong>Navigation</strong>. Das Spiel „Combat”<br />

implementiert e<strong>in</strong>en <strong>Navigation</strong>smodus, der sich an das kommerzielle Spiel „Quake”[35]<br />

anlehnt. Mit der Maus kann sich der Benutzer horizontal und vertikal drehen,<br />

ohne e<strong>in</strong>e Maustaste zu drücken. Er wählt so se<strong>in</strong>e Blickrichtung. Die Cursortasten <strong>die</strong>nen<br />

zum vorwärts und rückwärts Laufen, bzw. um seitlich auszuweichen. Mit der l<strong>in</strong>ken und<br />

der rechten Maustaste, oder mit den Tasten „Del” und „End” werden Waffen abgefeuert.<br />

Dem Spieler bef<strong>in</strong>det sich <strong>in</strong> e<strong>in</strong>em Gebäude. Dort kommen ihm Monster entgegen, <strong>die</strong> er<br />

besiegen muß.<br />

Bei dem Spiel „Asteroids” bedrohen Asteroiden e<strong>in</strong>e Raumstation, <strong>die</strong> der Benutzer daher<br />

zerstören muß. Ähnlich wie bei „Combat” bestimmt der Benutzer <strong>die</strong> Bewegungsrichtung<br />

mit der Maus. Hier ist jedoch <strong>die</strong> Dynamik an <strong>die</strong> Situation im Weltraum angepaßt. Mit<br />

den Cursortasten kann der Benutzer beschleunigen und bremsen. Zusätzliche Tasten<br />

schalten e<strong>in</strong>ige Zustandsanzeigen des Spiels an und aus.<br />

9.2 Ausbau der System struktur<br />

9.2.1 Rückgängig machen haptisch gesteuerter Bewegungen<br />

Die <strong>in</strong> Kapitel 8 entwickelte Systemarchitektur implementiert e<strong>in</strong>en Mechanismus zum<br />

Rücknehmen von gegebenen Befehlen. Jedoch funktioniert <strong>die</strong>ser nur <strong>für</strong> semantisch<br />

höherwertige Kommandos. Bewegungen, <strong>die</strong> der Benutzer mit e<strong>in</strong>em haptischen E<strong>in</strong>gabegerät<br />

erzeugt, werden dadurch nicht erfaßt. Dies ist e<strong>in</strong>e Inkonsistenz im Benutzungs<strong>in</strong>terface.<br />

Es muß untersucht werden, ob sie behoben werden kann, und <strong>in</strong>wieweit das<br />

s<strong>in</strong>nvoll ist.<br />

Diese Inkonsistenz kann Verwirrung stiften. Etwa wenn der Benutzer e<strong>in</strong>e kurze Bewegung<br />

mit der Maus ausführt, dann aber an den Ausgangspunkt <strong>die</strong>ser Bewegung zurück<br />

Seite 105


Kapitel 9, Weiterführende Arbeiten<br />

möchte. Löst er das ‚Rückgängig’ Kommando aus, wird er möglicherweise an e<strong>in</strong>en ganz<br />

anderen Ort transportiert. Denn es wird das letzte semantisch höherwertige Kommando<br />

rückgängig gemacht, das vielleicht e<strong>in</strong>es war, das e<strong>in</strong>en Aussichtspunkt anspr<strong>in</strong>gt.<br />

Dieses Beispiel zeigt, daß es s<strong>in</strong>nvoll wäre, wenn das Navigator Modul Signale erhalten<br />

würde, <strong>die</strong> ihm Eckdaten der Bewegungen angeben, <strong>die</strong> der kont<strong>in</strong>uierliche Integrator<br />

ausführt. Zum<strong>in</strong>dest der Anfang <strong>die</strong>ser Begegnungen könnte <strong>in</strong>teressant se<strong>in</strong>. Der Navigator<br />

könnte dann bei Erhalt e<strong>in</strong>es solchen Signals <strong>die</strong> aktuelle Position im Undo Puffer<br />

abspeichern, so daß <strong>die</strong>se wieder hergestellt wird, wenn das ‚Rückgängig’ Kommando<br />

ausgelöst wird.<br />

Doch nur den Anfang <strong>e<strong>in</strong>er</strong> haptisch ausgelösten Bewegung abzuspeichern, reicht nicht<br />

aus. Bewegt sich der Benutzer über längere Zeit durch e<strong>in</strong>e Welt, möchte er vielleicht nur<br />

den letzten Teil <strong>die</strong>ser Bewegung rückgängig gemacht haben. Ferner möchte er vielleicht<br />

an markante Stellen <strong>die</strong>ser Bewegung zurück spr<strong>in</strong>gen. E<strong>in</strong>e Analyse der erzeugten Bewegungen<br />

ersche<strong>in</strong>t daher als s<strong>in</strong>nvoll.<br />

E<strong>in</strong>e naheliegende Lösung wäre, daß <strong>die</strong> haptischen Interpreter <strong>die</strong>se Analyse durchführen.<br />

Das würde jedoch den Implementierungsaufwand <strong>für</strong> jedes solche Modul erhöhen,<br />

und <strong>die</strong> Ergebnisse <strong>die</strong>ser Analyse wären unkorelliert zu anderen haptischen und semantisch<br />

höherwertigen Modalitäten. Die Analyse der Bewegungen sollte daher zentral im<br />

haptischen Integrator stattf<strong>in</strong>den. Drückt man <strong>die</strong> Bewegungen, <strong>die</strong> nach dem Ad<strong>die</strong>rglied<br />

auftreten, als Geschw<strong>in</strong>digkeiten aus, ergibt sich gemäß den <strong>in</strong> 5.1.3 e<strong>in</strong>geführten<br />

Richtungssystemen e<strong>in</strong> zwölfdimensionaler, zeitabhängiger Vektor. Dieser kann mit Methoden<br />

der Signaldarstellung analysiert werden, so daß markante Stellen dem Navigator<br />

signalisiert werden. Es muß auch festgestellt werden, ob <strong>die</strong> vom Navigator erzeugten<br />

Bewegungen der diskreten oder quasikont<strong>in</strong>uierlichen <strong>Navigation</strong> <strong>in</strong> <strong>die</strong>se Analyse e<strong>in</strong>bezogen<br />

werden sollen.<br />

9.2.2 Kont<strong>in</strong>uierliche Zeige gesten<br />

Zeigegesten werden von dem <strong>in</strong> Kapitel 8 entwickelten <strong>multimodale</strong>n Be<strong>die</strong>nsystem nur<br />

<strong>in</strong> <strong>e<strong>in</strong>er</strong> diskreten Form unterstützt. Der Benutzer muß durch e<strong>in</strong>e Aktion zum Ausdruck<br />

br<strong>in</strong>gen, daß er auf etwas zeigt. Bei der Maus tut er <strong>die</strong>s durch Drücken <strong>e<strong>in</strong>er</strong> Taste,<br />

wenn er auf e<strong>in</strong> Objekt klickt. Der Benutzer kennzeichnet so den exakten Zeitpunkt,<br />

wann e<strong>in</strong>e Zeigegeste wirksam wird. Es existiert jedoch e<strong>in</strong>e andere Form des Zeigens,<br />

<strong>die</strong> kont<strong>in</strong>uierliches Zeigen genannt werden kann. Bei der Maus entspricht das dem Bewegen<br />

der Maus, ohne e<strong>in</strong>e Maustaste zu drücken. E<strong>in</strong> Datenhandschuh wird zu e<strong>in</strong>em<br />

kont<strong>in</strong>uierlichen Zeigegerät, wenn der Benutzer den Zeigef<strong>in</strong>ge ausstreckt.<br />

Für <strong>die</strong> kont<strong>in</strong>uierliche <strong>Navigation</strong> muß solches kont<strong>in</strong>uierliches Zeigen von den haptischen<br />

Interpretern <strong>in</strong> Bewegungs<strong>in</strong>formation aus e<strong>in</strong>em der beiden Richtungssysteme<br />

umgewandelt werden. Im Bezug auf <strong>die</strong> Gruppe , <strong>die</strong> semantisch höherwertige<br />

Äußerungen mit Zeigegesten komb<strong>in</strong>iert, würde <strong>die</strong> Unterstützung kont<strong>in</strong>uierlichen Zeigens<br />

jedoch höhere Anforderungen an <strong>die</strong> Implementierung des Be<strong>die</strong>nsystems stellen.<br />

Menschen zeigen gewöhnlich auf Objekte, während sie sagen, was sie im Zusammenhang<br />

mit dem Objekt ausdrücken wollen. Oft gilt <strong>die</strong> Zeigegeste zu dem Zeitpunkt, während<br />

e<strong>in</strong> bestimmtes Wort ausgesprochen wird. Beispeilsweise sagt jemand “Stell das da<br />

weg!”. Während er “das” spricht, zeigt er auf e<strong>in</strong>en Gegenstand. Bezogen auf e<strong>in</strong> System<br />

zur Interaktion mit 3D Umgebungen bedeutet das, daß das System vom Zeigegerät e<strong>in</strong>en<br />

kont<strong>in</strong>uierlichen Strom von Positions- oder Richtungsangaben erhält. Wenn es e<strong>in</strong> Kommando<br />

über den Sprachkanal oder e<strong>in</strong>e andere Modalität erhält, muß es aus dem Strom<br />

<strong>die</strong>jenige Position bzw. Richtung entnehmen, <strong>die</strong> zeitlich zum erhaltenen Kommando<br />

paßt.<br />

Seite 106


Kapitel 9, Weiterführende Arbeiten<br />

E<strong>in</strong> solches System könnte etwa folgendermaßen aufgebaut se<strong>in</strong>: Die SHG Erkenner geben<br />

zusätzlich zu der erkannten Äußerung e<strong>in</strong>en Zeitstempel an, wann <strong>die</strong>se Äußerung<br />

gemacht wurde. Der Zeitpunkt zu dem der SHG Erkenner das Kommando ausgibt, ist<br />

da<strong>für</strong> nicht geeignet, da der Erkenner e<strong>in</strong>ige Zeit zur Analyse des E<strong>in</strong>gangssignals benötigt.<br />

Idealerweise gibt e<strong>in</strong> Spracherkenner den Zeitpunkt an, zu dem das <strong>für</strong> <strong>die</strong> Zeigegeste<br />

kritische Wort – z.B. „das” oder „dorth<strong>in</strong>” – ausgesprochen wird. Die Gruppe<br />

müßte dann folgendermaßen geändert werden:<br />

| ::= gothere <br />

| ::= lookat <br />

| ::= setexacenter <br />

| ::= follow <br />

Der diskrete Integrator erhält von jedem angeschlossenen Zeigegerät e<strong>in</strong>en Strom<br />

kont<strong>in</strong>uierlicher Zeigegesten, <strong>die</strong> ebenfalls mit Zeitstempeln versehen s<strong>in</strong>d. Diese<br />

speichert er jeweils <strong>in</strong> e<strong>in</strong>em Puffer, der <strong>die</strong> <strong>in</strong> den letzten Sekunden empfangenen<br />

Positionen bzw. Richtungen vorhält. Wenn der diskrete Integrator e<strong>in</strong> Kommando aus der<br />

Gruppe erhält, stellt er zuerst fest, ob er <strong>die</strong>sem e<strong>in</strong> Kommando aus<br />

zuordnen kann. Ist <strong>die</strong>s nicht der Fall, sucht er sich aus den <strong>in</strong> der letzten<br />

Zeit empfangenen kont<strong>in</strong>uierlichen Zeigegesten e<strong>in</strong>e heraus, <strong>die</strong> im zeitlichen Umfeld des<br />

Zeitstempels im Kommando vom SHG Erkenner liegt. Dabei sollte er vermutlich e<strong>in</strong>e<br />

Geste, <strong>die</strong> auf e<strong>in</strong> Objekt zeigt, gegenüber <strong>e<strong>in</strong>er</strong> solchen bevorzugen, <strong>die</strong> nicht auf e<strong>in</strong><br />

Objekt zeigt aber zeitlich näher am Zeitstempel des Kommandos liegt. Um<br />

<strong>die</strong> Entscheidung zu treffen, ob e<strong>in</strong>e Zeigegeste auf e<strong>in</strong> Objekt zielt, muß er <strong>die</strong><br />

Zeigegeste mit der Szene vergleichen. Da aber <strong>die</strong> Szene sich mit der Zeit verändern<br />

kann, ist das im Nachh<strong>in</strong>e<strong>in</strong> schwierig. Deshalb müssen <strong>die</strong> Positionen oder Richtungen,<br />

<strong>die</strong> Zeigegeräte aussenden sofort bei ihrem Aussenden mit der Szene verglichen werden.<br />

Wenn tatsächlich mehr als e<strong>in</strong> Zeigegerät angeschlossen ist, muß der diskrete Integrator<br />

entscheiden können, welches Zeigegerät der Benutzer me<strong>in</strong>t.<br />

9.3 Ausbau der Funkti onalität<br />

9.3.1 Zugriff der Anwendu ng<br />

Mit dem Navigator Knoten und dem <strong>Navigation</strong>Sensor kann <strong>die</strong> Anwendung mit dem<br />

Navigator und dem kont<strong>in</strong>uierlichen Integrator Kommunizieren. Diese Kommunikation ist<br />

jedoch auf <strong>die</strong> Ausdrucksmöglichkeiten von VRML begrenzt. Die Begrenzung rührt daher,<br />

daß pro Ereignis nur e<strong>in</strong> Wert e<strong>in</strong>es der VRML Datentypen übertragen werden kann.<br />

Deshalb können am Navigator Knoten mit den Feldern moveTo, orientTo und beamTo nur<br />

drei Arten von referenzierter <strong>Navigation</strong> durchgeführt werden. Die<br />

Ausdrucksmöglichkeiten der <strong>in</strong> Abschnitt 8.4 e<strong>in</strong>geführten s<strong>in</strong>d wesentlich mächtiger.<br />

Würde man <strong>die</strong> <strong>in</strong> <strong>die</strong>ser Arbeit entwickelte Grammatik, oder e<strong>in</strong>e ähnliche Form davon,<br />

standardisieren, könnte der Anwendung direkter Zugriff auf <strong>die</strong> volle Funktionalität des<br />

Navigator Moduls, oder gar auf den diskreten Integrator gegeben werden. Der Navigator<br />

würde e<strong>in</strong> Feld<br />

eventIn MFStr<strong>in</strong>g command<br />

erhalten, über das <strong>die</strong> Anwendung Kommandos an den Navigator oder den diskreten Integrator<br />

senden kann. E<strong>in</strong> entsprechendes Feld<br />

eventOut MFStr<strong>in</strong>g status<br />

am <strong>Navigation</strong>Sensor würde Statusänderungen des Navigators direkt an <strong>die</strong> Anwendung<br />

weiterleiten. E<strong>in</strong> VRML Browser, der nicht über <strong>die</strong> Fähigkeit zur <strong>multimodale</strong>n Be<strong>die</strong>nung<br />

über e<strong>in</strong>en diskreten Integrator verfügt, würde nur kontextfreie Kommandos verstehen.<br />

Das Konzept der Profiles, welche den Funktionsumfang von VRML Browsern def<strong>in</strong>ieren,<br />

könnte bei <strong>die</strong>ser Unterscheidung helfen.<br />

Seite 107


9.3.2 Referenzieren beweg licher Objekte<br />

Kapitel 9, Weiterführende Arbeiten<br />

Im Abschnitt 8.4.2 wurde e<strong>in</strong>e Grammatik vorgestellt, <strong>die</strong> <strong>für</strong> Anwendungen geeignet ist,<br />

welche Zeigegesten auf sich bewegende Objekte nicht unterstützen, bzw. bei denen ke<strong>in</strong>e<br />

zeitliche Verzögerung zwischen der Zeigegeste und der Ausführung des zugehörigen<br />

Kommandos auftritt. In <strong>die</strong>sem Abschnitt wird <strong>die</strong>ser Teil der Grammatik durch e<strong>in</strong>e solche<br />

ersetzt, welche <strong>die</strong>se Beschränkungen nicht aufweist.<br />

Im Vergleich zum implementierten Ansatz bleibt <strong>die</strong> Aufteilung der Gruppe <strong>in</strong><br />

drei Untergruppen und <strong>die</strong> erste <strong>die</strong>ser drei Gruppen gleich:<br />

Referral> ::= | | <br />

| ::= gothere<br />

| ::= lookat<br />

| ::= setexacenter<br />

| ::= follow<br />

Das Kommando gothere drückt aus, daß der Benutzer an e<strong>in</strong>e bestimmte Position bewegt<br />

werden will, lookat, daß er sich zu e<strong>in</strong>em Objekt h<strong>in</strong>drehen will, setexacenter, daß <strong>die</strong><br />

angegebene Position zum neuen Drehzentrum werden soll, und follow beschreibt den<br />

Wunsch, e<strong>in</strong>em Anderen Objekt zu folgen.<br />

Die Möglichkeit auf e<strong>in</strong> Objekt zu zeigen, das sich möglicherweise bewegt, und zu etwa<br />

der gleichen Zeit e<strong>in</strong> Kommando über e<strong>in</strong>e andere Modalität zu äußern, das mit <strong>die</strong>ser<br />

Zeigegeste <strong>in</strong> Verb<strong>in</strong>dung steht, macht es erforderlich, daß dem Kommando, das <strong>die</strong> Zeigegeste<br />

repräsentiert neben der angezeigten Position <strong>in</strong> Weltkoord<strong>in</strong>aten auch e<strong>in</strong>e Referenz<br />

auf das Objekt mitgegeben wird. Denn beide Äußerungen des Benutzers werden<br />

nicht zu exakt der selben Zeit gemacht, und gerade bei semantisch höherwertigen Modalitäten<br />

macht <strong>die</strong> endliche Rechenzeit e<strong>in</strong>es Computersystems e<strong>in</strong> Kommando erst kurze<br />

Zeit nach dem der Benutzer se<strong>in</strong>e Äußerung gemacht hat verfügbar. Während <strong>die</strong>ser Zeit<br />

kann sich das Objekt schon weiterbewegt haben, und <strong>die</strong> <strong>in</strong> Weltkoord<strong>in</strong>aten angegebene<br />

Position ist nicht mehr gültig.<br />

Deshalb werden <strong>die</strong> Kommandos, <strong>die</strong> e<strong>in</strong>e Zeigegeste repräsentieren, um e<strong>in</strong> weiteres<br />

Kommando erweitert, das <strong>in</strong> zwei zusätzlichen Parametern e<strong>in</strong>e Referenz auf das Objekt<br />

und <strong>die</strong> referenzierte Position <strong>in</strong> e<strong>in</strong>em objektlokalen Koord<strong>in</strong>atensystem angibt. Das objektlokale<br />

Koord<strong>in</strong>atensystem ist das Koord<strong>in</strong>atensystem, <strong>in</strong> dem das Objekt modelliert<br />

wurde. Es bewegt sich mit dem Objekt mit. Die Repräsentation <strong>e<strong>in</strong>er</strong> Referenz auf das<br />

Objekt bleibt dem Browser überlassen. Mögliche Formen s<strong>in</strong>d e<strong>in</strong> Index <strong>in</strong> e<strong>in</strong>e Liste aller<br />

Objekte oder e<strong>in</strong>e Objekt ID <strong>in</strong> Str<strong>in</strong>gform. Wenn das Kommando schließlich im Navigator<br />

ausgeführt wird, müssen <strong>die</strong> Weltkoord<strong>in</strong>aten aus der Objektreferenz und den objektlokalen<br />

Koord<strong>in</strong>aten neu berechnet werden. Das follow Kommando wird erst durch <strong>die</strong>sen<br />

Mechanismus möglich. Für den diskreten Integrator ist <strong>die</strong> Objektreferenz genauso wie<br />

<strong>die</strong> Positionsangaben e<strong>in</strong> opaquer Datentyp, den er nur durchreicht.<br />

| ::= <strong>in</strong>dicated <br />

| ::= <strong>in</strong>dicated geometry <br />

| ::= <strong>in</strong>dicated objectpos <br />

| ::= <strong>in</strong>dicated obj <br />

Das neue Kommando <strong>in</strong>dicated objectpos * drückt e<strong>in</strong> Zeigen auf e<strong>in</strong> Objekt aus, das als<br />

solches vom Autor der Anwendung ausgezeichnet wurde. Es enthält neben der absoluten<br />

Position, auf <strong>die</strong> gezeigt wurde, <strong>die</strong> Referenz auf das Objekt und <strong>die</strong> angezeigte Position<br />

im objektlokalen Koord<strong>in</strong>atensystem. Das Ursprüngliche Kommando <strong>in</strong>dicated geometry *<br />

wurde beibehalten, da nicht notwendigerweise jedes Objekt von der Anwendung als solches<br />

gekennzeichnet se<strong>in</strong> muß. Beispielsweise ist das nicht <strong>für</strong> passive Objekte, wie z.B.<br />

Wände e<strong>in</strong>es Raumes, zu erwarten. Zeigt der Benutzer auf e<strong>in</strong> solches Objekt, wird das<br />

<strong>in</strong>dicated geometry * Kommando ausgelöst.<br />

Seite 108


Kapitel 9, Weiterführende Arbeiten<br />

Zusätzlich kann mit der Referenz e<strong>in</strong>e vollständig positionslose Zeigegeste realisiert<br />

werden. Erhalten <strong>die</strong> gekennzeichneten Objekte zusätzlich e<strong>in</strong>en Namen, könnte e<strong>in</strong><br />

Spracherkenner, der nicht auf e<strong>in</strong>en konkreten Wortschatz tra<strong>in</strong>iert ist, das Kommando<br />

<strong>in</strong>dicated object auslösen, wenn der Benutzer den Namen e<strong>in</strong>es Objekts nennt.<br />

Ähnlich zu den Aussichtspunkten könnte dem Benutzer e<strong>in</strong>e Liste aller Objekte – oder der<br />

im Blickfeld des Benutzers bef<strong>in</strong>dlichen Objekte – präsentiert werden, aus welcher der<br />

Benutzer e<strong>in</strong> Objekt auswählen kann, bevor er z.B. per Sprache<strong>in</strong>gabe angibt, was mit<br />

dem Objekt passieren soll 17 . In solchen Fällen ist zwar e<strong>in</strong>e Objektreferenz verfügbar,<br />

aber ke<strong>in</strong>e Position.<br />

Die Gruppe der kontextfreien Kommandos muß gegenüber der Def<strong>in</strong>ition <strong>in</strong><br />

Abschnitt 8.4.2 an geeigneten Stellen ebenfalls um e<strong>in</strong>e Objektreferenz und e<strong>in</strong>e objektlokale<br />

Position erweitert werden. Dazu wird der neue Wertebereich e<strong>in</strong>geführt,<br />

der den Wertebereich ersetzt. Dieser Wertebereich umfaßt sowohl Positionen<br />

im globalen Koord<strong>in</strong>atensystem, als auch e<strong>in</strong>e Angabe <strong>in</strong> e<strong>in</strong>em objektlokalen Koord<strong>in</strong>atensystem<br />

mit <strong>e<strong>in</strong>er</strong> Objektreferenz als auch e<strong>in</strong>e Objektreferenz ohne Positionsangabe.<br />

Da <strong>die</strong>ser Wertebereich den Wertebereich enthält, bleiben <strong>die</strong> alten<br />

Kommandos erhalten. Diese resultieren aus dem Kommando <strong>in</strong>dicated geometry *. Das<br />

Kürzel loc <strong>in</strong> objloc deutet an, daß e<strong>in</strong>e Position <strong>in</strong> e<strong>in</strong>em objektlokalen Koord<strong>in</strong>atensystem<br />

folgt. Positionen, <strong>die</strong> mit dem Symbol abs e<strong>in</strong>geleitet werden, s<strong>in</strong>d <strong>die</strong> absoluten<br />

Positionsangaben, <strong>die</strong> <strong>in</strong> der ursprünglichen Grammatik ohne e<strong>in</strong> e<strong>in</strong>leitendes abs angegeben<br />

wurden. Der Wertebereich wird ebenfalls um objektspezifische Angaben<br />

zu aufgewertet. Hier macht e<strong>in</strong>e Angabe <strong>e<strong>in</strong>er</strong> objektspezifischen<br />

Position <strong>in</strong> Verb<strong>in</strong>dung mit <strong>e<strong>in</strong>er</strong> Orientierung oder Richtung ke<strong>in</strong>en S<strong>in</strong>n, so daß nur der<br />

mit pos gekennzeichnete Zweig von auf geändert wird.<br />

: ::= abs <br />

: ::= objloc <br />

: ::= obj <br />

: ::= pos <br />

: ::= ori <br />

: ::= posori <br />

: ::= posdir <br />

: ::= dir <br />

Die Gruppe wird <strong>in</strong> ihrer Struktur nicht geändert. Lediglich wird<br />

zu und wird zu . Zusätzlich kommt das Kommando<br />

followobject h<strong>in</strong>zu, das den Navigator anweist, den Avatar <strong>in</strong> der Nähe des angegebenen<br />

Objektes zu halten. Diese Funktion könnte so gestaltet werden, daß e<strong>in</strong>e <strong>Navigation</strong><br />

mit haptischen oder semantisch höherwertigen Modalitäten relativ zum Objekt<br />

möglich bleibt.<br />

::= orientto pos <br />

::= orientto dir <br />

::= moveto <br />

::= beamto pos <br />

::= beamto watch <br />

::= exacenter set <br />

::= followobject <br />

17 Diese Liste könnte sogar automatisch angezeigt werden, wenn der Benutzer e<strong>in</strong> Kommando aus<br />

gibt, aber ke<strong>in</strong>e zugehörige Zeigegeste durchführt. Das wäre dann e<strong>in</strong> Fall, <strong>in</strong> dem<br />

das System beim Benutzer nachfragt.<br />

Seite 109


Kapitel 9, Weiterführende Arbeiten<br />

Für den Navigator, der <strong>die</strong> Kommandos ausführen muß, bedeuten <strong>die</strong> neuen Positionsangaben<br />

<strong>in</strong> den meisten Fällen, daß er <strong>die</strong>se <strong>in</strong> Angaben der alten Form umrechnen muß.<br />

Dann kann er <strong>die</strong> Kommandos <strong>in</strong> bekannter Weise ausführen. Ist e<strong>in</strong>e Objektreferenz und<br />

e<strong>in</strong>e Positionsangabe im objektlokalen Koord<strong>in</strong>atensystem gegeben, kann er <strong>die</strong> Position<br />

anhand der Position und Orientierung des Objekts <strong>in</strong> globale Koord<strong>in</strong>aten umrechnen. Ist<br />

nur e<strong>in</strong>e Objektreferenz vorhanden, muß er sich vor der Umrechnung e<strong>in</strong>e Standardposition<br />

<strong>für</strong> das Objekt suchen. Diese Standardposition ist beispielsweise der Objektmittelpunkt,<br />

oder e<strong>in</strong>e im Objekt angegebene Position.<br />

9.3.3 Multimodale und dre idimensionale Umsetzung des Kontextmenüs<br />

Die <strong>in</strong> Abschnitt 8.4.2 e<strong>in</strong>geführte Gruppe der Kommandos zur referenzierenden<br />

<strong>Navigation</strong> def<strong>in</strong>ieren e<strong>in</strong>en <strong>in</strong> der Untergruppe zusammengefaßten<br />

Satz Kommandos <strong>für</strong> Zeigegesten, e<strong>in</strong>en <strong>in</strong> zusammengefaßten Satz Kommandos,<br />

<strong>die</strong> bestimmen, was mit der referenzierten Position oder dem referenzierten<br />

Objekt passieren soll. Die Untergruppe enthält Kommandos, <strong>die</strong> aus der<br />

Komb<strong>in</strong>ation von Kommandos der ersten beiden Gruppen resultieren. Der <strong>in</strong> <strong>die</strong>ser Arbeit<br />

def<strong>in</strong>ierte Befehlssatz <strong>in</strong> wurde anwendungsunabhängig gehalten, könnte aber<br />

ebenso anwendungsspezifische Kommandos umfassen.<br />

Beispielsweise könnte <strong>in</strong> <strong>e<strong>in</strong>er</strong> Anwendung <strong>für</strong> <strong>die</strong> virtuelle Manipulation von Molekülstrukturen<br />

e<strong>in</strong> Befehl show_mass_number ausdrücken, daß das Atomgewicht e<strong>in</strong>es referenzierten<br />

Atoms oder Moleküls angezeigt werden soll. Die Gruppe RefResolved> müßte entsprechende<br />

Kommandos be<strong>in</strong>halten, <strong>die</strong> solche anwendungsabhängige Aktionen und e<strong>in</strong>e<br />

Positionsangabe komb<strong>in</strong>ieren. Die Erweiterung der Funktionalität auf anwendungsabhängige<br />

Objektbefehle stellt e<strong>in</strong> sehr mächtiges Konzept dar, zieht aber e<strong>in</strong>en anwendungsabhängigen<br />

Teil der im diskreten Integrator enthaltenen Logik nach sich. Die Erkennermodule,<br />

<strong>die</strong> Kommandos aus erzeugen, müssen auch angepaßt werden.<br />

Da e<strong>in</strong>e Erweiterung auf anwendungsspezifische Funktionen e<strong>in</strong>e wesentliche Bereicherung<br />

der Interaktionsmöglichkeiten <strong>für</strong> e<strong>in</strong>e Anwendung darstellt, könnte es sich lohnen,<br />

den auf <strong>die</strong> Gruppe bezogenen Teil der Logik im Integrator <strong>für</strong> <strong>die</strong> Anwendung<br />

erweiterbar zu gestalten. Diese Erweiterung könnte etwa so aussehen, daß der Anwendung<br />

<strong>die</strong> Möglichkeit gegeben wird, neue Kommandos <strong>in</strong> <strong>die</strong> Gruppen und<br />

h<strong>in</strong>zuzufügen. Ferner muß sie spezifizieren können, welche Komb<strong>in</strong>ationen<br />

aus und gültig s<strong>in</strong>d, und zu welchen Kommandos aus<br />

<strong>die</strong>se aufgelöst werden. Es müßte e<strong>in</strong> Kommunikationskanal etabliert werden,<br />

über den der Integrator der Anwendungen mitteilt, wenn e<strong>in</strong>es der anwendungsspezifischen<br />

Kommandos aus ausgelöst wurde.<br />

Während <strong>die</strong> Erweiterungsarchitektur des Integrators machbar ersche<strong>in</strong>t, ist <strong>die</strong> Umkonfiguration<br />

der Erkennermodule schon problematischer. Hier wird wahrsche<strong>in</strong>lich e<strong>in</strong>e von<br />

den Eigenheiten e<strong>in</strong>zelner Modalitäten und von den Spezifika der e<strong>in</strong>gesetzten Erkennermodule<br />

unabhängige Darstellung der Kommandos, welche <strong>die</strong> Erkennermodule erzeugen<br />

können, schwer möglich se<strong>in</strong>. Möglicherweise stellt <strong>die</strong> E<strong>in</strong>schränkung auf den Spracherkenner<br />

e<strong>in</strong>en akzeptablen Kompromiß dar, denn <strong>die</strong>se Modalität ist sowieso am besten<br />

dazu geeignet, abstrakte Zusammenhänge auszudrücken.<br />

Betrachtet man das Konzept, e<strong>in</strong>e Zeigegeste mit anwendungsspezifischen Kommandos<br />

zu komb<strong>in</strong>ieren genauer und vergleicht es mit den <strong>in</strong> konventionellen grafischen Benutzungsoberflächen<br />

verwendeten Kontextmenüs, stellt man fest, daß <strong>die</strong>ses Konzept <strong>die</strong><br />

<strong>multimodale</strong> und dreidimensionale Umsetzung der Kontextmenüs darstellt. Zwei Unterschiede<br />

existieren jedoch:<br />

• Die Menge verfügbarer Kommandos hängt von dem referenzierten Objekt ab.<br />

• Bei e<strong>in</strong>em Kontextmenü werden <strong>die</strong> <strong>für</strong> e<strong>in</strong> Objekt verfügbaren Kommandos dem Benutzer<br />

visuell zur Auswahl angeboten.<br />

Seite 110


Kapitel 9, Weiterführende Arbeiten<br />

Beide Vorteile der Kontextmenüs können auf den dreidimensionalen Fall übertragen werden.<br />

Die Abhängigkeit verfügbarer Kommandos von dem vom Benutzer referenzierten<br />

Objekt kann durch den <strong>in</strong> Abschnitt 9.3.2 e<strong>in</strong>geführten Datentyp , der e<strong>in</strong>e Referenz<br />

auf e<strong>in</strong> Objekt transportiert, realisiert werden. Wenn der diskrete Integrator e<strong>in</strong> Kommando<br />

aus an <strong>die</strong> Anwendung übermittelt, enthält <strong>die</strong>se Mitteilung auch <strong>die</strong><br />

Referenz auf das Objekt und eventuell den Punkt, der auf dem Objekt referenziert wurde.<br />

Erhält <strong>die</strong> Anwendung e<strong>in</strong> solches Kommando, gibt sie es an das Objekt weiter, worauf<br />

<strong>die</strong>ses entscheidet, ob es das Kommando ausführen kann. Da Anwendungen idealerweise<br />

<strong>in</strong> Form unabhängiger Module aufgebaut s<strong>in</strong>d, kann es zu Kollisionen der Namen <strong>für</strong> <strong>die</strong><br />

Kommandos <strong>in</strong> und kommen. Diese könnten aufgelöst werden,<br />

wenn sogenannte GUIDs (Globally Unique IDentifier) als anwendungs<strong>in</strong>terner Name <strong>für</strong><br />

Kommandos zugelassen werden.<br />

Die visuelle Auswahl von Kommandos br<strong>in</strong>gt Vorteile <strong>für</strong> Neul<strong>in</strong>ge, während <strong>die</strong> direkte<br />

Nennung e<strong>in</strong>es Kommandos <strong>für</strong> Erfahrene Anwender <strong>in</strong>teressant ist. Nach Hennig[4]<br />

sollte e<strong>in</strong>e Anwendung aus <strong>die</strong>sem Grund beide Formen implementieren. E<strong>in</strong> Kommando<br />

show_menu <strong>in</strong> und e<strong>in</strong> entsprechendes Kommando <strong>in</strong> würde e<strong>in</strong>e<br />

Anwendung anweisen, e<strong>in</strong> Kontextmenü anzuzeigen. Die Auswahl e<strong>in</strong>es Menüpunktes<br />

könnte <strong>die</strong> Anwendung durch e<strong>in</strong>e weitere Zeigegeste auf das neu <strong>in</strong> <strong>die</strong> Szene e<strong>in</strong>gefügte<br />

Objekt „Menü” realisieren. Das Kommando show_menu wäre dann e<strong>in</strong> von der Anwendung<br />

unabhängiges Kommando und könnte somit von jedem Erkennermodul <strong>für</strong> semantisch<br />

höherwertige Modalitäten und von jedem haptischen E<strong>in</strong>gabegerät, das über<br />

e<strong>in</strong>e „Menütaste” verfügt, erzeugt werden.<br />

Es bleibt natürlich noch zu untersuchen, <strong>in</strong>wiefern e<strong>in</strong> Kontextmenü <strong>für</strong> VR Anwendungen<br />

<strong>die</strong> Intuitivität e<strong>in</strong>es Interaktionsparadigmas und <strong>die</strong> Immersionsfähigkeit von Anwendungen<br />

unterstützt oder beh<strong>in</strong>dert. Jedoch könnte es ähnlich nützlich se<strong>in</strong>, wie es das <strong>in</strong><br />

konventionellen grafischen Benutzungsoberflächen ist.<br />

9.4 Ausbau auf das Pa radigma Manipulation<br />

Das Interaktionsparadigma Manipulation stellt e<strong>in</strong>e entscheidende Erweiterung des <strong>multimodale</strong>n<br />

Be<strong>die</strong>nsystems dar. Das Paradigma <strong>Navigation</strong> umfaßt zwar elementare Interaktionsformen<br />

<strong>für</strong> 3D Anwendungen, doch bleibt der Benutzer e<strong>in</strong> passiver Kommunikationspartner.<br />

Er begibt sich an bestimmte Orte und betrachtet <strong>die</strong> virtuelle Welt aus verschiedenen<br />

Blickrichtungen. Erst durch <strong>die</strong> Möglichkeit, Objekte der virtuellen Welt zu<br />

manipulieren, kann der Benutzer aktiv E<strong>in</strong>fluß auf <strong>die</strong> Anwendung nehmen. In <strong>die</strong>sem<br />

Abschnitt werden e<strong>in</strong>ige Ideen vorgestellt, <strong>die</strong> e<strong>in</strong>e Erweiterung des <strong>multimodale</strong>n Be<strong>die</strong>nsystem<br />

MIVIS um das Interaktionsparadigma, <strong>in</strong>sbesondere <strong>für</strong> haptische Modalitäten,<br />

ermöglicht.<br />

Zentrale Idee <strong>die</strong>ser Erweiterung ist, daß der Benutzer e<strong>in</strong> Objekt auswählt, das er manipulieren<br />

will. Anschließend geht das System <strong>in</strong> e<strong>in</strong>en Modus, <strong>in</strong> dem alle haptischen E<strong>in</strong>gabegeräte<br />

<strong>die</strong>ses Objekt bewegen. Semantisch höherwertige Kommandos, <strong>die</strong> e<strong>in</strong>e Bewegung<br />

beschreiben und ke<strong>in</strong>en H<strong>in</strong>weis auf <strong>Navigation</strong> enthalten, werden ebenfalls <strong>in</strong><br />

Bewegungen <strong>die</strong>ses Objekts umgesetzt. E<strong>in</strong>e weitere Funktion ist das Loslassen des Objektes,<br />

worauf das System wieder <strong>in</strong> e<strong>in</strong>en der drei <strong>Navigation</strong>smodi umschaltet. Dieses<br />

Loslassen kann durch e<strong>in</strong>e explizite Äußerung des Benutzers ausgelöst werden, oder<br />

durch e<strong>in</strong> semantisch höherwertiges Kommando, das sich implizit oder explizit mit der<br />

Manipulation widerspricht. Zudem sollen auch andere Aktionen auf e<strong>in</strong> Objekt angewendet<br />

werden können.<br />

Alternativ kann mit e<strong>in</strong>em Zeigegerät auch direkt e<strong>in</strong> Objekt ausgewählt und bewegt<br />

werden, ohne daß e<strong>in</strong> semantisch höherwertiges Kommando daran beteiligt ist. In existierenden,<br />

unimodalen VRML Browsern f<strong>in</strong>det <strong>die</strong>se Form der Manipulation standardmäßig<br />

statt.<br />

Seite 111


Kapitel 9, Weiterführende Arbeiten<br />

E<strong>in</strong>e Anwendung muß <strong>die</strong> Objekte der Szene, <strong>die</strong> manipuliert werden können, als solche<br />

auszeichnen, damit sie das System von statischer Geometrie, wie z.B. <strong>die</strong> Wände <strong>in</strong> e<strong>in</strong>em<br />

Raum, unterscheiden kann. Zudem muß <strong>die</strong> Anwendung <strong>für</strong> jedes Objekt e<strong>in</strong>e Anzahl<br />

Parameter spezifizieren, <strong>die</strong> kontrollieren, auf welche Weise e<strong>in</strong> Objekt manipuliert<br />

werden kann.<br />

9.4.1 Systemarchitektur<br />

Für das Manipulationsparadigma ist vermutlich e<strong>in</strong>e ähnliche Struktur nötig, wie <strong>für</strong> <strong>die</strong><br />

<strong>Navigation</strong>. In <strong>e<strong>in</strong>er</strong> Systemarchitektur, <strong>die</strong> beide Paradigmen unterstützt, s<strong>in</strong>d geme<strong>in</strong>same<br />

Komponenten der diskrete Integrator, <strong>die</strong> SHG Erkenner und <strong>die</strong> haptischen Interpreter.<br />

Diese werden <strong>in</strong> der Funktionalität entsprechend erweitert. Parallel zum Navigator<br />

kommt e<strong>in</strong> Modul Manipulator h<strong>in</strong>zu, das <strong>die</strong> kontextfrei aufgelösten Kommandos, welche<br />

<strong>die</strong> Manipulation betreffen, vom diskreten Integrator erhält und ausführt. Ebenso bekommt<br />

der kont<strong>in</strong>uierliche Integrator e<strong>in</strong> Schwestermodul, das Bewegungs<strong>in</strong>formationen<br />

vere<strong>in</strong>igt und auf e<strong>in</strong> Objekt der Szene anwendet. Von den Richtungssystemen sche<strong>in</strong>t<br />

das Exam<strong>in</strong>e Richtungssystem besser als das SixDof Richtungssystem <strong>für</strong> <strong>die</strong> Manipulation<br />

geeignet zu se<strong>in</strong>, denn es ist schon von der Idee e<strong>in</strong>es Objekts geleitet, das bewegt<br />

wird. Das <strong>in</strong> Abschnitt 9.3.2 diskutierte Konzept, Objekte von der Anwendung als solche<br />

auszeichnen zu lassen, ist <strong>für</strong> <strong>die</strong> Manipulation sehr hilfreich, denn Manipulation bezieht<br />

sich fast immer auf bestimmte Objekte.<br />

Der diskrete Integrator im bestehenden System baut <strong>in</strong>terne Modelle der Anwendung und<br />

der Intention des Benutzers auf, damit er entscheiden kann, wie er kontextsensitive<br />

Kommandos zu kontextfreien (im S<strong>in</strong>ne der Funktionalität) komb<strong>in</strong>ieren soll. E<strong>in</strong> separater<br />

Integrator <strong>für</strong> <strong>die</strong> Manipulation würde separate Modelle aufbauen, <strong>die</strong> sich möglicherweise<br />

von denen des Integrators <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> widersprechen. Um <strong>die</strong>s zu verh<strong>in</strong>dern<br />

sollte nur e<strong>in</strong> diskreter Integrator <strong>für</strong> beide Paradigmen existieren.<br />

Die haptischen Interpreter müssen neben den drei <strong>Navigation</strong>smodi WALK, FLY und<br />

EXAMINE e<strong>in</strong>en weiteren Modus unterstützen, <strong>in</strong> dem sie Bewegungs<strong>in</strong>formationen erzeugen,<br />

<strong>die</strong> geeignet s<strong>in</strong>d, e<strong>in</strong> Objekt zu bewegen. Möglicherweise werden <strong>die</strong>se Bewegungen<br />

auf <strong>die</strong> selbe Weise erzeugt wie das im EXAMINE Modus der Fall ist. Das hätte<br />

den Vorteil <strong>für</strong> den Benutzer, daß er ke<strong>in</strong>e neue Form der Bewegungssteuerung lernen<br />

muß. Jedoch kommt es bei der Manipulation fast immer vor, daß nur bestimmte Bewegungsrichtungen<br />

erlaubt s<strong>in</strong>d. Beispielsweise können Möbel nur <strong>in</strong> der durch den Fußboden<br />

def<strong>in</strong>ierten Ebene bewegt und um <strong>die</strong> dazu senkrechte Richtung gedreht werden.<br />

Bilder an der Wand können nur verschoben werden. Es können alle Komb<strong>in</strong>ationen der<br />

sechs möglichen Freiheitsgrade vorkommen. Deshalb muß e<strong>in</strong> Weg gesucht werden, wie<br />

haptische Interpreter trotzdem geeignete Bewegungs<strong>in</strong>formationen erzeugen.<br />

Das Schwestermodul des kont<strong>in</strong>uierlichen Integrators könnte kont<strong>in</strong>uierlicher Integrator<br />

<strong>für</strong> <strong>die</strong> Manipulation genannt werden, wodurch der kont<strong>in</strong>uierliche Integrator konsequenterweise<br />

<strong>in</strong> kont<strong>in</strong>uierlicher Integrator <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> umbenannt werden muß.<br />

Der kont<strong>in</strong>uierliche Integrator <strong>für</strong> <strong>die</strong> Manipulation verarbeitet Bewegungs<strong>in</strong>formation zur<br />

Bewegung e<strong>in</strong>es Objektes. Er muß dazu vom Manipulator e<strong>in</strong>e Referenz auf das Objekt<br />

erhalten, das bewegt werden soll. Zusätzlich braucht er Information, welche Freiheitsgrade<br />

<strong>für</strong> das Objekt gelten, und <strong>in</strong> welchen Grenzen <strong>die</strong>se ausgeführt werden können.<br />

Beispielsweise könnte e<strong>in</strong>e Drehung nur <strong>in</strong>nerhalb e<strong>in</strong>es bestimmten W<strong>in</strong>kelbereiches<br />

möglich se<strong>in</strong>, oder e<strong>in</strong> Objekt, das sich auf e<strong>in</strong>em Tisch bef<strong>in</strong>det, darf sich nur <strong>in</strong> e<strong>in</strong>em<br />

Bereich bewegen, <strong>in</strong>nerhalb dessen es sich oberhalb der Tischplatte bef<strong>in</strong>det. Ebenso wie<br />

der kont<strong>in</strong>uierliche Integrator <strong>für</strong> <strong>die</strong> <strong>Navigation</strong> muß der kont<strong>in</strong>uierliche Integrator <strong>für</strong><br />

<strong>die</strong> Manipulation Kollisionserkennung betreiben können, um Bewegungen durch andere<br />

Objekte zu verh<strong>in</strong>dern. E<strong>in</strong>e Simulation der Gravitation ist möglicherweise nicht nötig.<br />

Seite 112


9.4.2 Funktionalität<br />

Kapitel 9, Weiterführende Arbeiten<br />

Die Gruppe der Kommandos <strong>für</strong> <strong>die</strong> referenzierende <strong>Navigation</strong> ist der Zentrale<br />

Punkt <strong>für</strong> <strong>die</strong> Erweiterung der Funktionalität des Systems auf <strong>die</strong> Manipulation. Da<br />

manipulierbare Objekte pr<strong>in</strong>zipiell beweglich s<strong>in</strong>d, und da sie von der Anwendung <strong>für</strong> <strong>die</strong><br />

Manipulation gekennzeichnet werden müssen, ist <strong>die</strong> <strong>in</strong> Abschnitt 9.3.2 angegebene Form<br />

der Grammatik zu verwenden. Die Gruppe besteht aus drei Untergruppen,<br />

wovon <strong>die</strong> Gruppe Zeigegesten auf Objekte beschreibt, und <strong>die</strong> Gruppe<br />

ausdrückt, was mit den Objekten passieren soll. Der Diskrete Integrator<br />

komb<strong>in</strong>iert Kommandos aus <strong>die</strong>sen beiden Gruppen zu e<strong>in</strong>em der Kommandos aus der<br />

Gruppe . Diese enthalten sowohl e<strong>in</strong>e Angabe, was passieren soll, als auch<br />

mit welchem Objekt das geschehen soll.<br />

E<strong>in</strong>e Erweiterung auf <strong>die</strong> Manipulation würde bedeuten, <strong>in</strong> <strong>die</strong> Gruppe weitere<br />

Befehle aufzunehmen, <strong>die</strong> auf e<strong>in</strong> Objekt angewendet werden können. Die Gruppe<br />

muß an <strong>die</strong> neuen Kommandos angepaßt werden. Das wichtigste Kommando<br />

<strong>für</strong> ist manipulate, mit dem der Benutzer ausdrückt, daß er das Objekt<br />

manipulieren will. E<strong>in</strong> Spracherkenner könnte <strong>die</strong>ses Kommando absetzen, wenn der Benutzer<br />

sagt: „Ich will das bewegen.” Gleichzeitig zeigt der Benutzer auf e<strong>in</strong> Objekt. Das<br />

System sendet <strong>die</strong> <strong>in</strong> dem zugehörigen Kommando aus angegebene <br />

Referenz an den kont<strong>in</strong>uierlichen Integrator <strong>für</strong> <strong>die</strong> Manipulation und schaltet <strong>die</strong> haptischen<br />

Interpreter <strong>in</strong> den Manipulationsmodus. Das gegenteilige Kommando zu manipulate<br />

ist release_object. Es drückt aus, daß der Benutzer das Objekt wieder loslassen will. Dies<br />

gehört jedoch nicht <strong>in</strong> <strong>die</strong> Gruppe , da es nicht mit <strong>e<strong>in</strong>er</strong> Zeigegeste komb<strong>in</strong>iert<br />

wird.<br />

Das Kommando activate stellt ebenfalls e<strong>in</strong>e hervorragende Funktionalität dar. Wendet<br />

der Benutzer <strong>die</strong>ses Kommando auf e<strong>in</strong> Objekt an, teilt der Manipulator <strong>die</strong>s der<br />

Anwendung mit, worauf <strong>die</strong>se <strong>die</strong> Standardaktion des Objekts auslöst. In Abschnitt 9.3.3<br />

wurde e<strong>in</strong>e weitere Kategorie Kommandos <strong>für</strong> vorgestellt. Diese stellen ebenfalls<br />

Kommandos <strong>für</strong> <strong>die</strong> Manipulation dar. Sie beschreiben anwendungsabhängige und<br />

objektspezifische Befehle, <strong>die</strong> auf e<strong>in</strong> Objekt angewendet werden können.<br />

Die Gruppe beschreibt Kommandos, <strong>die</strong> nur e<strong>in</strong> Argument <strong>in</strong> Form <strong>e<strong>in</strong>er</strong> Zeigegeste<br />

benötigen. Im Zusammenhang mit dem Manipulationsparadigma s<strong>in</strong>d jedoch<br />

auch komplexere Kommandos denkbar. Der Satz „Stelle das dort h<strong>in</strong>!” resultiert beispielsweise<br />

<strong>in</strong> e<strong>in</strong>em Kommando, das sowohl e<strong>in</strong> <strong>in</strong>dicated obj * als auch e<strong>in</strong> <strong>in</strong>dicated<br />

Kommando als Argument benötigt.<br />

Die neuen Kommandos bewirken jeweils neue Signale, <strong>die</strong> der Manipulator <strong>in</strong> den Kommunikationskanal<br />

<strong>für</strong> Statusänderungen schreibt. Insbesondere muß der Manipulator <strong>die</strong><br />

haptischen Interpreter <strong>in</strong> den Manipulationsmodus setzen. Dabei muß er <strong>die</strong>sen mitteilen,<br />

welche Freiheitsgrade <strong>für</strong> das Objekt verfügbar s<strong>in</strong>d. Das Loslassen e<strong>in</strong>es Objektes<br />

könnte dadurch realisiert werden, daß <strong>die</strong> haptischen Interpreter e<strong>in</strong> status mode mode *<br />

Kommando erhalten, das ihnen den nach dem Loslassen gültigen <strong>Navigation</strong>smodus<br />

mitteilt. Auch der kont<strong>in</strong>uierliche Integrator <strong>für</strong> Manipulation könnte Kommandos <strong>in</strong> den<br />

Kanal <strong>für</strong> Statusänderungen schreiben. Beispielsweise wenn e<strong>in</strong> Freiheitsgrad am Ende<br />

e<strong>in</strong>es Bewegungsbereiches angelangt ist, oder wenn e<strong>in</strong>e Kollision auftritt. Ähnlich wie im<br />

Signal status collided könnte <strong>in</strong> beiden Fällen e<strong>in</strong>e Richtungsangabe<br />

enthalten se<strong>in</strong>, <strong>die</strong> der versuchten Bewegung entgegenwirkt.<br />

Seite 113


9.4.3 Anwendungen<br />

Kapitel 9, Weiterführende Arbeiten<br />

E<strong>in</strong>e Anwendung, welche <strong>die</strong> Vorteile des Paradigma Manipulation nutzen will, muß das<br />

explizit unterstützten. Zum E<strong>in</strong>en muß sie Objekte als manipulierbar auszeichnen und <strong>die</strong><br />

Parameter der Manipulierbarkeit angeben. Zum Anderen muß sie den Objekten e<strong>in</strong>e Bedeutung<br />

zuordnen. Das Auszeichnen von Objekten kann über <strong>die</strong> Szenenbeschreibung<br />

geschehen. Für das Zuordnen von Bedeutungen zu den Objekten muß e<strong>in</strong> Kommunikaitonskanal<br />

vom Be<strong>die</strong>nsystem zur Anwendung etabliert werden.<br />

In der VRML Technologie s<strong>in</strong>d beide Konzepte schon <strong>in</strong> Form der Sensor Knoten vorhanden.<br />

Die Szenenbeschreibung verknüpft e<strong>in</strong> Objekt mit e<strong>in</strong>em Sensor Knoten und drückt<br />

dadurch aus, daß <strong>die</strong>ses vom Benutzer manipulierbar ist. Der Typ des Sensor Knotens<br />

und <strong>die</strong> Parameter, <strong>die</strong> dabei angegeben werden können, spezifizieren <strong>die</strong> genaue Art,<br />

wie das Objekt manipuliert werden kann. Wenn der Benutzer e<strong>in</strong> solches Objekt manipuliert,<br />

sendet der zugeordnete Sensor Knoten entsprechende Signale an se<strong>in</strong>en eventOut<br />

Feldern an <strong>die</strong> Anwendung, <strong>die</strong> <strong>die</strong>se dann verarbeitet.<br />

Der TouchSensor ist e<strong>in</strong> Sensor Knoten, der vom Benutzer ähnlich wie e<strong>in</strong> Schalter<br />

aktiviert werden kann. Tritt <strong>die</strong>ser Fall e<strong>in</strong>, sendet der TouchSensor an se<strong>in</strong>em touchTime<br />

Feld e<strong>in</strong> Ereignis. Diese Funktionalität sollte durch das activate Kommando ausgelöst<br />

werden können. Zusätzlich enthält der TouchSensor Felder <strong>die</strong> kont<strong>in</strong>uierliches Zeigen<br />

(siehe Abschnitt 9.2.2) unterstützen. Deren Bedeutung im Zusammenhang mit<br />

semantisch höherwertigen Modalitäten und <strong>multimodale</strong>r Be<strong>die</strong>nung muß untersucht<br />

werden.<br />

Die Sensor Knoten PlaneSensor, Cyl<strong>in</strong>derSensor und SphereSensor def<strong>in</strong>ieren den<br />

Bewegungsbereich, den e<strong>in</strong> Objekt durchführen kann. Sie <strong>in</strong>terpretieren <strong>die</strong> E<strong>in</strong>gaben des<br />

Benutzers als e<strong>in</strong>- oder zweidimensionale translatorische Bewegungen (PlaneSensor), als<br />

e<strong>in</strong>dimensionale translatorische und Rotation um e<strong>in</strong>e Achse (Cyl<strong>in</strong>derSensor) oder als<br />

Rotation um e<strong>in</strong>en Punkt (SphereSensor). Weitere Freiheitsgrade s<strong>in</strong>d nicht vorgesehen.<br />

Da immer nur e<strong>in</strong> Sensor Knoten zur gleichen Zeit aktiv se<strong>in</strong> kann, können <strong>die</strong>se nicht<br />

komb<strong>in</strong>iert werden. Im Zusammenhang mit echten 3D E<strong>in</strong>gabegeräten müssen mehrere<br />

Freiheitsgrade gleichzeitig zugelassen werden. Beispielsweise wäre e<strong>in</strong>e translatorische<br />

Bewegung <strong>in</strong> allen drei Richtungen wünschenswert. Mit der Spacemouse können<br />

beispielsweise Objekte <strong>in</strong> allen sechs Freiheitsgraden bewegt werden.<br />

Aber nicht nur <strong>die</strong> Angabe e<strong>in</strong>es Bewegungsbereichs ist <strong>für</strong> e<strong>in</strong>e reichhaltige Be<strong>die</strong>nung<br />

<strong>e<strong>in</strong>er</strong> Anwendung notwendig. Die <strong>in</strong> den anderen Abschnitten <strong>die</strong>ses Kapitels vorgestellten<br />

Konzepte sollten durch e<strong>in</strong>en Knoten <strong>in</strong> <strong>die</strong> Sprache VRML abgebildet werden. Er<br />

könnte folgende Angaben ermöglichen:<br />

• <strong>die</strong> darzustellende Geometrie des Objekts<br />

• das objektlokale Koord<strong>in</strong>atensystem<br />

• das Zentrum des Objekts als Punktkoord<strong>in</strong>aten im objektlokalen Koord<strong>in</strong>atensystem<br />

• <strong>die</strong> objektspezifischen Kommandos, welche das Objekt ausführen kann<br />

• Felder, <strong>die</strong> kont<strong>in</strong>uierliches Zeigen erlauben<br />

Das kont<strong>in</strong>uierliche Zeigen könnte dadurch realisiert werden, daß der Knoten e<strong>in</strong>en<br />

TouchSensor Referenziert, da <strong>die</strong>ser <strong>die</strong> entsprechenden Felder schon enthält.<br />

Seite 114


10 Zusammenfassu ng<br />

Kapitel 10, Zusammenfassung<br />

In <strong>die</strong>ser Arbeit wurde e<strong>in</strong>e Software-Architektur <strong>für</strong> <strong>die</strong> <strong>multimodale</strong> <strong>Navigation</strong> <strong>in</strong> virtuellen<br />

3D Umgebungen entwickelt. Das System b<strong>in</strong>det auf generische Weise sowohl haptische<br />

E<strong>in</strong>gabegeräte als auch semantisch höherwertige Modalitäten <strong>in</strong> den Be<strong>die</strong>nprozeß<br />

e<strong>in</strong>. Dadurch wird der Benutzer <strong>in</strong> <strong>die</strong> Lage versetzt, <strong>die</strong>se zur Erledigung von <strong>Navigation</strong>saufgaben<br />

frei zu wählen und <strong>in</strong> beliebiger Komb<strong>in</strong>ation e<strong>in</strong>zusetzen.<br />

Durch <strong>die</strong> Möglichkeit, Interaktionsstile an <strong>die</strong> Profile von speziellen Benutzergruppen<br />

anzupassen, eröffnet sich e<strong>in</strong> breiteres Anwendungsspektrum <strong>für</strong> VRML basierte VR Anwendungen.<br />

Aufgrund der Verknüpfung möglichst vieler, sowohl haptischer als auch semantisch<br />

höherwertiger Modalitäten werden <strong>die</strong> Kommunikationsfähigkeiten an <strong>die</strong> natürlichen<br />

Kommunikationsformen des Menschen angepaßt. Dadurch entsteht e<strong>in</strong>e ausgesprochen<br />

effiziente Form der Mensch-Masch<strong>in</strong>e-Interaktion.<br />

Ferner wurde <strong>die</strong> VRML Technologie, mit der Internet basierte VR Anwendungen realisiert<br />

werden, so erweitert, daß das Interaktionsparadigma <strong>Navigation</strong> <strong>in</strong> virtuellen 3D Umgebungen<br />

sowohl an <strong>die</strong> Bedürfnisse der Anwendung, als auch an <strong>die</strong> Bedürfnisse der Zielgruppe<br />

der Anwendung angepaßt werden kann.<br />

Die <strong>in</strong> VRML Browsern übliche starre Verb<strong>in</strong>dung von E<strong>in</strong>gabegerät zu den Bewegungen<br />

des Avatars wurde aufgebrochen und durch <strong>die</strong> Anwendung geroutet. Das Sprachkonstrukt<br />

‚DeviceSensor’ macht <strong>die</strong> im System vorhandenen E<strong>in</strong>gabegeräte <strong>für</strong> <strong>die</strong> Anwendung<br />

sichtbar, so daß <strong>die</strong>se Benutzere<strong>in</strong>gaben von den E<strong>in</strong>gabegeräten auslesen kann.<br />

Typischerweise <strong>in</strong>terpretiert <strong>die</strong> Anwendung <strong>die</strong>se Signale und formt sie <strong>in</strong> Steuersignale<br />

um, <strong>die</strong> Bewegungen des Avatars beschreiben. Das Sprachkonstrukt ‚Navigator’ empfängt<br />

<strong>die</strong>se Steuer<strong>in</strong>formationen und leitet sie an den Browser weiter. Ferner wurden <strong>die</strong><br />

Konstrukte ‚<strong>Navigation</strong>Sensor’ und ‚<strong>Navigation</strong>Info2’ def<strong>in</strong>iert, <strong>die</strong> e<strong>in</strong>e erweiterte Kommunikation<br />

zwischen Anwendung und Browser ermöglichen.<br />

Diese Erweiterungen <strong>die</strong>nen als technische Basis <strong>für</strong> <strong>die</strong> Implementierung e<strong>in</strong>es Prototyps<br />

des <strong>multimodale</strong>n Be<strong>die</strong>nsystems. Basierend auf dem am Lehrstuhl entwickelten Be<strong>die</strong>nsystem<br />

<strong>für</strong> semantisch höherwertige Modalitäten (MIVIS) wurden drei Kommunikationskanäle<br />

e<strong>in</strong>geführt. E<strong>in</strong> Kanal transportiert teilweise vone<strong>in</strong>ander abhängige Kommandos<br />

von den haptischen und den semantisch höherwertigen Modalitäten zum Integrator des<br />

bestehenden Systems, der <strong>die</strong>se zu e<strong>in</strong>deutigen Kommandos komb<strong>in</strong>iert. E<strong>in</strong> weiterer<br />

Kanal transportiert Statusmeldungen aus dem <strong>Navigation</strong>smodul zu den Komponenten,<br />

welche <strong>die</strong> Signale der haptischen E<strong>in</strong>gabegeräte <strong>in</strong>terpretieren. Diese können dadurch<br />

<strong>die</strong> Signale der E<strong>in</strong>gabegeräte entsprechend dem e<strong>in</strong>gestellten Modus <strong>in</strong>terpretieren und<br />

dem Benutzer mittels Feedback-Geräten Rückkopplung über auftretende Ereignisse geben.<br />

Die Bewegungen, <strong>die</strong> von den haptischen E<strong>in</strong>gabegeräten erzeugt werden, überträgt<br />

e<strong>in</strong> dritter Kanal zu e<strong>in</strong>em kont<strong>in</strong>uierlichen Integrator, der <strong>die</strong>se filtert, begrenzt und<br />

überlagert.<br />

Mit <strong>die</strong>ser Arbeit wurden e<strong>in</strong>ige technische Voraussetzungen geschaffen, <strong>die</strong> neben der<br />

Anpassung des Interaktionsparadigmas <strong>Navigation</strong> auch das Interaktionsparadigma Manipulation<br />

<strong>in</strong> virtuellen 3D Umgebungen erlauben. So kann das entwickelte Sprachkonstrukt<br />

‚DeviceSensor’ auch E<strong>in</strong>gabegeräte repräsentieren, <strong>die</strong> dazu benutzt werden, Objekte<br />

<strong>in</strong> der virtuellen Welt zu manipulieren. Die im <strong>multimodale</strong>n Be<strong>die</strong>nsystem realisierte<br />

Funktionalität, mit welcher der Benutzer auf e<strong>in</strong> Objekt zeigen kann und mit <strong>e<strong>in</strong>er</strong><br />

anderen Modalität angeben kann, <strong>in</strong> welcher Form er sich bezüglich des Objekts bewegen<br />

will, kann um Befehle erweitert werden, mit denen der Benutzer angibt, was mit dem<br />

Objekt geschehen soll.<br />

Seite 115


Kapitel 10, Zusammenfassung<br />

Abschließend wurden e<strong>in</strong>ige potentielle Erweiterungsmöglichkeiten identifiziert, <strong>die</strong> das<br />

System <strong>für</strong> das Interaktionsparadigma <strong>Navigation</strong> <strong>in</strong> virtuellen 3D Umgebungen komplettieren.<br />

Außerdem wurden e<strong>in</strong>ige Vorschläge diskutiert, <strong>die</strong> das Be<strong>die</strong>nsystem auf das<br />

Interaktionsparadigma Manipulation <strong>in</strong> virtuellen 3D Umgebungen erweitern.<br />

Seite 116


Verzeichnisse<br />

Abbildungsverzeichnis<br />

Verzeichnisse<br />

Abb. 1: Sicht auf <strong>die</strong> Szene im First Person Modus (l<strong>in</strong>ks) und im Third Person Modus (rechts).... 12<br />

Abb. 2: Szenengraph (schwarz) und Routengraph (rot) <strong>in</strong> VRML ............................ 22<br />

Abb. 3: Ausführungsmodell von VRML ................................................................. 23<br />

Abb. 4: Avatar lokales und Welt lokales Koord<strong>in</strong>atensystem .................................. 29<br />

Abb. 5: Problem bezogene Parametrisierung des Avatar lokalen Koord<strong>in</strong>atensystems .... 30<br />

Abb. 6: Das SixDof und das Exam<strong>in</strong>e Richtungssystem ......................................... 31<br />

Abb. 7: Addition von nicht äquidistanten Positionsdifferenzen ................................ 33<br />

Abb. 8: Sanfte Bewegungen durch Tiefpaßfilter .................................................... 34<br />

Abb. 9: Typische Struktur e<strong>in</strong>es VRML Browsers ................................................... 35<br />

Abb. 10: Struktur e<strong>in</strong>es VRML Browsers, der anpassbare <strong>Navigation</strong> unterstützt .......... 39<br />

Abb. 11: Typische Struktur e<strong>in</strong>es DeviceSensor Knoten ............................................ 42<br />

Abb. 12: Zugriff a) auf e<strong>in</strong>zelne Felder, oder b) auf den Event Knoten als Ganzes ........ 47<br />

Abb. 13: Spacemouse ......................................................................................... 50<br />

Abb. 14: Informationsfluß <strong>in</strong> der Navigator Implementierung von Contact ................ 71<br />

Abb. 15: Filterung von Positionsdifferenzen ........................................................... 73<br />

Abb. 16: Usability Labor des MIVIS Projekts .......................................................... 80<br />

Abb. 17: Struktur des Multimodalen Be<strong>die</strong>nsystems MIVIS ...................................... 80<br />

Abb. 18: Auf haptische Modalitäten erweiterte Struktur des <strong>multimodale</strong>n Be<strong>die</strong>nsystems MIVIS... 86<br />

Abb. 19: Interner Aufbau des Navigator Moduls .................................................... 89<br />

Abb. 20: Struktur der Implementierung des erweiterten MIVIS Systems ................ 101<br />

Abb. 21: Struktur e<strong>in</strong>es haptischen Interpreters .................................................. 103<br />

Abb. 22: Das <strong>multimodale</strong> Be<strong>die</strong>nsystem bei e<strong>in</strong>em virtuellen Lehrstuhlrundgang ..... 104<br />

Abb. 23: VR Interface im Auto – Radio hören und WAP surfen ............................... 105<br />

Seite 117


Referenzen<br />

Verzeichnisse<br />

[1] Rikk Carey, Gav<strong>in</strong> Bell: The Annotated VRML 97 Reference Manual<br />

http://www.best.com/~rikk/Book/, 2001<br />

[2] International Standardization Organization http://www.iso.org, 2002<br />

[3] J. Nielsen: Usability Eng<strong>in</strong>eer<strong>in</strong>g. Morgan Kaufmann Publishers Inc., 1993<br />

[4] A. Hennig: Die andere Wirklichkeit, Addison Wesley, 1.Auflage, 1997<br />

[5] Dipl.-Inform. Frank Althoff. Internet-Publikation,<br />

http://www.mmk.e-technik.tu-muenchen.de/~alt/, 2001. MIVIS.<br />

[6] F. Althoff, G. McGlaun, and M. Lang: Us<strong>in</strong>g Multimodal Interaction to Navigate <strong>in</strong><br />

Arbitrary Virtual VRML worlds. In Workshop on Perceptual User Interfaces (PUI),<br />

Nov. 2001, Orlando, USA<br />

[7] B. Schuller, F. Althoff, G. McGlaun, and M. Lang. Navigat<strong>in</strong>g <strong>in</strong> virtual worlds via<br />

natural speech. In 9 th Int. Conf. on HCI, New Orleans, August 2001.<br />

[8] P. Morguet et al. Comparison of approaches to cont<strong>in</strong>uous hand gesture recognition<br />

for a visual dialog system. Proc. of ICASSP 99, pages 3549–3552, 1999.<br />

[9] F. Althoff, H. Stocker, G. McGlaun und Manfred K. Lang: A Generic Approach for<br />

Interfac<strong>in</strong>g VRML Browsers to Various Input Devices and Creat<strong>in</strong>g Customizable 3D<br />

Applications.<br />

[10] Prof. Uwe Schön<strong>in</strong>g. Theoretische Informatik kurz gefasst. BI-Wissenschaftsverlag,<br />

1993.<br />

[11] Prof. Ipke Wachsmuth. Informatik IV (Theoretische Informatik). Skript zur Vorlesung<br />

im Sommersemester 1994, Universität Bielefeld, 1994.<br />

[12] Gunter Spahn. Natürlichsprachliche <strong>Navigation</strong> <strong>in</strong> virtuellen Welten. Diplomarbeit,<br />

Technische Universität München, 2000.<br />

[13] Noam Chomsky. Internet-Publikation,<br />

http://web.mit.edu/afs/athena.mit.edu/org/l/l<strong>in</strong>guistics/www/chomsky.home.html,<br />

2000. MIT L<strong>in</strong>guistics Faculty.<br />

[14] K.-H. Engelmeier et al: “Virtual reality and multimedia human-computer <strong>in</strong>teraction<br />

<strong>in</strong> medic<strong>in</strong>e”, IEEE Workshop on Multimedia Signal Process<strong>in</strong>g, Los Angeles, Dec.<br />

1998<br />

[15] V. Pavlovic, G. Berry, T. Huang: BattleView: A Multimodal HCI Research Application.<br />

In Workshop on Perceptual User Interfaces (PUI 98), Nov. 1998, San Francisco, USA<br />

[16] F. Althoff, T. Volk et. al: A Generic User Interface Framework for VR Applications. In<br />

Proceed<strong>in</strong>gs of Human Computer Interaction (HCI 2001), New Orleans, USA, Aug.<br />

2001<br />

[17] A. Cheyer, L. Julia et al: <strong>Design</strong><strong>in</strong>g and Develop<strong>in</strong>g Multimodal applications. In WS<br />

on Pen/Voice Interfaces (CHI 99), Pittsburgh (USA), 1999<br />

[18] Marc Brelot, Jean-Claude Dufourd: Ideas for new BIFS sensors and applications. At<br />

50 th MPEG meet<strong>in</strong>g, Dec 99<br />

[19] F. Althoff, Gregor McGlaun et. al: Comb<strong>in</strong><strong>in</strong>g Multiple Input Modalities for Virtual<br />

Reality <strong>Navigation</strong> – a User Study. In 9 th Int. Conf. on HCI, August 2001.<br />

[20] B. Shneiderman, “Direct manipulation: A step beyond programm<strong>in</strong>g languages”,<br />

IEEE Computer, 16(8):57-69, August 1983<br />

[21] Document Object Model (DOM) Level 2 Specification,<br />

http://www.w3.org/TR/1999/WD-DOM-Level-2-19990304/events.html, 2002<br />

[22] Human Markup Initiative http://www.humanmarkup.org, 2002<br />

Seite 118


Internet Seiten<br />

Verzeichnisse<br />

[23] Firma blaxxun <strong>in</strong>teractive AG. http://www.blaxxun.com, 2002<br />

[24] DeviceSensor SDK der Firma blaxxxun <strong>in</strong>teractive AG.<br />

http://www.blaxxun.com/developer/contact/3d/vrml/ui/devicesensorSDK/<strong>in</strong>dex.html,<br />

Januar 2002<br />

[25] Firma 3Dconnexion GmbH. http://www.3Dconnexion.com, 2002<br />

[26] J. Stewart. FreeWRL Homepage. http://www-ext.crc.ca/FreeWRL, 2001.<br />

[27] Firma SGI. http://www.sgi.com, 2002<br />

[28] Firma Parallel Graphics. http://www.parallelgraphics.com, 2002<br />

[29] Firma Nexternet. http://www.nexternet.com, 2002<br />

[30] Firma Lernout &Hauspie. http://www.lhs.com, 2002<br />

[31] Blendo Homepage. http://www.blendomedia.com, 2002<br />

[32] Firma Microsoft Corporation. http://www.microsoft.com, 2002<br />

[33] Firma Gravis. http://www.gravis.com, 2002<br />

[34] Firma Logitech. http://www.logitech.com, 2002<br />

[35] Firma id Software http://www.idsoft.com, 2002<br />

[36] Der VRML Games Webr<strong>in</strong>g. http://www.farzone.net, 2002<br />

[41] Ref. auf den USB HID Standard.<br />

Seite 119


Anhang A Konventionen<br />

Anhang A, Konventionen<br />

Es werden <strong>in</strong> <strong>die</strong>ser Diplomarbeit e<strong>in</strong>ige Begriffe e<strong>in</strong>geführt, <strong>die</strong> abstrakte Zusammenhänge<br />

beschreiben oder Systemkomponenten bezeichnen. Zur Kenntlichmachung werden<br />

<strong>die</strong>se bei ihrem ersten Auftreten <strong>in</strong> e<strong>in</strong>em Absatz <strong>in</strong> kursiver Schrift formatiert. An der<br />

Stelle, an der <strong>die</strong>se Begriffe def<strong>in</strong>iert werden, erhalten sie zusätzlich e<strong>in</strong>e Unterstreichung.<br />

Mathematische Formeln und Formelzeichen erhalten ebenfalls kursive Schrift.<br />

Dieser Text enthält sowohl Auszüge aus VRML-Code, Pseudo-Code und kontextfreier<br />

Grammatik. Um <strong>die</strong>se zu kennzeichnen werden verschiedene Formatierungen verwendet:<br />

VRML Code wird <strong>in</strong> Courier New formatiert. Pseudo-Code tritt nur an <strong>e<strong>in</strong>er</strong> Stelle <strong>in</strong> Kapitel<br />

7 auf und wird deshalb ebenfalls <strong>in</strong> Courier New formatiert. Auszüge aus kontextfreier<br />

Grammatik erhalten <strong>die</strong> Schriftart Lucida Console. Innerhalb des Fließtextes werden<br />

<strong>die</strong>se zur besseren Unterscheidung punktiert unterstrichen. An e<strong>in</strong>igen Stellen werden<br />

VRML Knoten def<strong>in</strong>iert. Obwohl <strong>die</strong>se def<strong>in</strong>ierenden Charakter haben, werden sie entgegen<br />

der Konvention, Def<strong>in</strong>itionen zu unterstreichen, <strong>die</strong>se fett formatiert, da sonst<br />

mehrzeilige Abschnitte unterstrichen werden müßten.<br />

In den Graphiken werden häufig Teile e<strong>in</strong>es Szenengraphen von VMRL dargestellt. Diese<br />

bestehen aus Knoten und Routen, <strong>die</strong> <strong>die</strong>se verb<strong>in</strong>den. (Näheres beschreibt Kapitel 4.)<br />

Zudem werden Systemkomponenten <strong>e<strong>in</strong>er</strong> Softwarearchitektur dargestellt. Sowohl Knoten<br />

als auch Systemkomponenten werden als Rechtecke symbolisiert. Um beide vone<strong>in</strong>ander<br />

zu unterscheiden, erhalten Knoten e<strong>in</strong>en Schatten. Der Typ e<strong>in</strong>es Knoten steht <strong>in</strong><br />

der l<strong>in</strong>ken oberen Ecke.<br />

VRML Knoten:<br />

Shape<br />

Systemkomponente:<br />

Interpeter<br />

Pfeile symbolisieren Informationsfluß zwischen Systemkomponenten bzw. Routen zwischen<br />

VRML Knoten. Zur Unterscheidung werden unterschiedliche Strichstärken und Farben<br />

benutzt.<br />

Informationsfluß zwischen Systemkomponenten<br />

Routen zwischen VRML Knoten<br />

Seite 120


Anhang B, Beispielszenarios <strong>für</strong> angepaßte <strong>Navigation</strong><br />

Anhang B Beispielszenario s <strong>für</strong> angepaßte <strong>Navigation</strong><br />

Die typische Verwendung des DeviceSensor Knotens und des Navigator Knotens soll anhand<br />

zweier Beispiele verdeutlicht werden. Das erste Beispiel demonstriert <strong>die</strong> Verwendung<br />

der Geschw<strong>in</strong>digkeitsfelder des Navigator Knotens um den WALK Modus <strong>für</strong> e<strong>in</strong> re<strong>in</strong><br />

geschw<strong>in</strong>digkeitsorientiertes E<strong>in</strong>gabegerät, den Joystick zu implementiert. Das zweit Beispiel<br />

zeigt, wie <strong>die</strong> positionsorientierten Felder des Navigator Knotens <strong>in</strong> Verb<strong>in</strong>dung mit<br />

e<strong>in</strong>em positionalen E<strong>in</strong>gabegerät verwendet werden.<br />

WALK Modus <strong>für</strong> Joystick<br />

Der folgende VRML Code implementiert den WALK Modus <strong>für</strong> den Joystick nach den <strong>in</strong><br />

Abschnitt 6.6.3 vorgeschlagenen Proto Feldern.<br />

PROTO JOY_STICK<br />

[<br />

eventOut SFVec2f stick<br />

]<br />

{}<br />

DEF DS DeviceSensor<br />

{<br />

device "JOYSTICK"<br />

event DEF JoyStick JOY_STICK {}<br />

}<br />

DEF JoyNav Script<br />

{<br />

eventIn SFVec2f stick<br />

eventOut SFVec2f speedXYZ<br />

eventOut SFVec2f speedYPR<br />

field SFFloat MaxSpeed 5 # m/s<br />

field SFFloat MaxAngularSpeed 1 # rad/s<br />

url "vrmlscript:<br />

function stick(s)<br />

{<br />

speedYPR= new SFVec3f(s.x * MaxAngularSpeed, 0, 0);<br />

speedXYZ= new SFVec3f(0, 0, s.y * MaxSpeed);<br />

}<br />

"<br />

}<br />

DEF Cam Navigator<br />

{<br />

gravity TRUE<br />

}<br />

ROUTE JoyStick.stick TO JoyNav.stick<br />

ROUTE JoyNav.speedXYZ TO Cam.speedXYZ<br />

ROUTE JoyNav.speedXYZ TO Cam.speedYPR<br />

Dieses VRML Code Fragment entspricht der Struktur DeviceSensor � Script � Navigator<br />

aus Abb. 10. Kernstück ist <strong>die</strong> Funktion stick(�) des Script Knotens JoyNav, welche <strong>die</strong><br />

beiden Freiheitsgrade des Joysticks <strong>in</strong> e<strong>in</strong>e Vorwärtsbewegung und e<strong>in</strong>e horizontale Drehung<br />

umwandelt. Die x Komponente, von stick, welche <strong>die</strong> horizontale Auslenkung des<br />

Knüppels angibt, wird mit e<strong>in</strong>em Umrechnungsfaktor multipliziert und der yaw Komponente<br />

des speedYPR Feldes des Navigator Knoten zugewiesen, während <strong>die</strong> beiden anderen<br />

Komponenten von speedYPR auf 0 gesetzt werden. Die y Komponente von stick wird<br />

ebenso mit e<strong>in</strong>em Umrechnungsfaktor multipliziert und der z Komponente des speedXYZ<br />

Vektors zugewiesen. E<strong>in</strong>e Vorzeichenumkehr ist nicht notwendig, da bei Joysticks positive<br />

y Werte beim Ziehen am Knüppel üblich s<strong>in</strong>d.<br />

Seite 121


Quake ähnlicher PAN Modus mit der Maus<br />

Anhang B, Beispielszenarios <strong>für</strong> angepaßte <strong>Navigation</strong><br />

Die Maus ist e<strong>in</strong> positionales E<strong>in</strong>gabegerät, da sie <strong>die</strong> Position des Maus Cursors repräsentiert.<br />

Doch anders als <strong>in</strong> Spielen wird sie <strong>in</strong> VRML Browsern häufig als Geschw<strong>in</strong>digkeitsorientiertes<br />

Gerät verwendet. Bei e<strong>in</strong>em Mausklick wird e<strong>in</strong> Ausgangspunkt def<strong>in</strong>iert.<br />

Wird anschließend <strong>die</strong> Maus bei gedrückter Maustaste bewegt, wird der Differenzvektor<br />

vom Ausgangspunkt zur aktuellen Position des Mauszeigers gebildet und <strong>für</strong> <strong>die</strong> Steuerung<br />

der <strong>Navigation</strong> verwendet. Das folgende Beispiel soll verdeutlichen, wie dem positionalen<br />

Charakter der Maus Rechnung getragen wird, <strong>in</strong>dem der <strong>in</strong> Spielen häufig vorkommende<br />

Mausnavigation <strong>in</strong> VRML implementiert wird. Es demonstriert <strong>die</strong> Verwendung<br />

des Navigator Knoten mit e<strong>in</strong>em positionalen E<strong>in</strong>gabegerät und demonstriert <strong>die</strong> Methode,<br />

auf den Event Knoten als ganzes zuzugreifen (siehe Abschnitt 6.5.3).<br />

PROTO Event<br />

[<br />

field SFStr<strong>in</strong>g type ""<br />

field SFVec2f pixelPos 0 0<br />

field SFInt32 button 0<br />

] {}<br />

DEF DS DeviceSensor<br />

{<br />

device "STANDARD"<br />

parameter "mousedown mouseup mousemove"<br />

}<br />

DEF MausNav Script<br />

{<br />

eventIn SFNode event<br />

eventOut SFVec3f stepYPR<br />

field SFVec2f lastPos 0 0 # Position des letzten Ereignisses<br />

field SFBool active FALSE # S<strong>in</strong>d wir aktiv?<br />

url "vrmlscript:<br />

function event(e)<br />

{<br />

if(e.type == 'mousedown')<br />

{<br />

if(button == 1)<br />

{<br />

lastPos= e.pixelPos;<br />

active= true;<br />

}<br />

}else if(e.type == 'mouseup')<br />

{<br />

if(button == 1)<br />

{<br />

active= false;<br />

}<br />

}else if(e.type == 'mousemove')<br />

{<br />

if(active)<br />

{<br />

var deltaX= e.pixelPos.x - lastPos.x;<br />

var deltaY= e.pixelPos.y - lastPos.y;<br />

lastPos= e.pixelPos;<br />

stepYPR= new SFVec3f( deltaX * RadPerPixel<br />

, deltaY * RadPerPixel<br />

, 0<br />

);<br />

}<br />

Seite 122


}<br />

}<br />

"<br />

}<br />

DEF Cam Navigator<br />

{<br />

gravity TRUE<br />

}<br />

Anhang B, Beispielszenarios <strong>für</strong> angepaßte <strong>Navigation</strong><br />

ROUTE DS.event TO MausNav.event<br />

ROUTE MausNav.speedXYZ TO Cam.stepXYZ<br />

ROUTE MausNav.speedXYZ TO Cam.speedXYZ<br />

Der DeviceSensor verwendet das <strong>in</strong> Abschnitt 6.6.4 vorgestellte Gerät „STANDARD”, um<br />

an Mause<strong>in</strong>gaben zu gelangen. Diese werden als Ereignisse mit Hilfe e<strong>in</strong>es Event Knoten<br />

repräsentiert, der an den Script Knoten MausNav gesendet wird. Der Event Knoten enthält<br />

e<strong>in</strong> type Feld, das den Typ des Ereignisses anzeigt, und e<strong>in</strong>ige Felder, <strong>die</strong> abhängig<br />

davon <strong>die</strong> Parameter des Ereignisses widerspiegeln. Die Funktion event(�) wertet <strong>die</strong>se<br />

Ereignisse aus, <strong>in</strong>dem sie mit e<strong>in</strong>em großen if - else if Ausdruck je nach Typ des Ereignis<br />

<strong>in</strong> e<strong>in</strong>en anderen Ausführungszweig verzweigt. Dies ist typisch <strong>für</strong> Geräte, welche <strong>die</strong><br />

Methode, auf den Event Knoten als Ganzes zuzugreifen, verwenden.<br />

Die Maus soll zur <strong>Navigation</strong> <strong>die</strong>nen, solange <strong>die</strong> l<strong>in</strong>ke Maustaste gedrückt ist. Deshalb<br />

wird bei Ereignissen vom Typ "mousedown" und "mouseup" das Flag active gesetzt bzw.<br />

gelöscht, wenn das Ereignis von der ersten Maustaste stammt. active zeigt somit den<br />

Zustand der l<strong>in</strong>ken Maustaste an.<br />

An dem Zweig, der "mousemove" Ereignisse behandelt, wird <strong>die</strong> typische Behandlung positionaler<br />

E<strong>in</strong>gabegeräte deutlich: Die Variable lastPos enthält <strong>die</strong> Mauszeigerposition<br />

des dem aktuellen Ereignis vorausgehenden Ereignisses. Bei jedem Ereignis wird Differenz<br />

der aktuellen Position zur vorherigen Position berechnet. Da bei <strong>e<strong>in</strong>er</strong> bewegten<br />

Maus sehr viele Ereignisse erzeugt werden, s<strong>in</strong>d <strong>die</strong>se Differenzen kle<strong>in</strong>. Sie werden mit<br />

e<strong>in</strong>em Umrechnungsfaktor multipliziert und als yaw bzw. pitch Wert an das positionale<br />

E<strong>in</strong>gangsfeld stepYPR des Navigator Knotens gesendet. Da der Navigator Knoten <strong>die</strong> an<br />

e<strong>in</strong>em s<strong>e<strong>in</strong>er</strong> mit step beg<strong>in</strong>nenden Felder erhaltenen Werte zur aktuellen Position bzw.<br />

Orientierung ad<strong>die</strong>rt, entsteht e<strong>in</strong>e kont<strong>in</strong>uierliche Bewegung, deren Geschw<strong>in</strong>digkeit<br />

proportional der Geschw<strong>in</strong>digkeit ist, mit der sich <strong>die</strong> Maus bewegt. Dazu mußte weder<br />

e<strong>in</strong>e Referenzposition zwischen Skript und Navigator Knoten vere<strong>in</strong>bart werden, noch<br />

mußte berücksichtigt werden, mit welcher Rate <strong>die</strong> Mausereignisse erzeugt werden. Im<br />

Pr<strong>in</strong>zip werden Mausbewegungen (der Unterschied zwischen aktueller und letzter Position)<br />

e<strong>in</strong>fach an den Navigator weitergegeben.<br />

Seite 123


Anhang C, Erweiterter Kommunikationsformalismus<br />

Anhang C Erweiterter Kom munikationsformalismus<br />

Dieser Anhang faßt <strong>die</strong> <strong>in</strong> Kapitel 8 entwickelte Grammatiken noch e<strong>in</strong>mal zusammen.<br />

Die <strong>in</strong> Abschnitt 8.1.1 erläuterten Konventionen <strong>für</strong> <strong>die</strong> Darstellung der Grammatik<br />

werden hier wiederholt.<br />

Konventionen<br />

Bei <strong>e<strong>in</strong>er</strong> kontextfreien Grammatik beschreiben <strong>die</strong> Bildungsregeln, wie e<strong>in</strong>e Variable<br />

durch andere Variablen unter Verwendung von Term<strong>in</strong>alsymbolen ersetzt werden. Diese<br />

Abhängigkeit zwischen den Variablen wird durch e<strong>in</strong>e E<strong>in</strong>rückung gekennzeichnet. E<strong>in</strong>e<br />

Regel wird wenn möglich von solchen Regeln gefolgt, welche <strong>die</strong>se Regel benötigt. Diese<br />

unterstützenden Regeln werden um e<strong>in</strong>e Ebene weiter e<strong>in</strong>gerückt, als <strong>die</strong> Regel, durch<br />

<strong>die</strong> sie benutzt werden.<br />

E<strong>in</strong> Teil der Regeln <strong>die</strong>nt dazu, <strong>die</strong> term<strong>in</strong>alen Symbole zu Wertebereichen zu gruppieren.<br />

So def<strong>in</strong>iert <strong>die</strong> Regel ::= on | off | toggle e<strong>in</strong>e Variable, welche <strong>die</strong> term<strong>in</strong>alen<br />

Symbole on, off und toggle zu e<strong>in</strong>em Wertebereich komb<strong>in</strong>iert, der zur Kontrolle boolscher<br />

Parameter benutzt werden kann. Solche Variablen und <strong>die</strong> Regeln, durch <strong>die</strong> sie<br />

def<strong>in</strong>iert werden, s<strong>in</strong>d <strong>in</strong> grüner Farbe dargestellt. Damit <strong>die</strong>se Kennzeichnung auch auf<br />

Schwarzweiß Ausdrucken erkennbar ist, werden Wertebereich def<strong>in</strong>ierende Regeln am<br />

l<strong>in</strong>ken Rand mit Punkten markiert.<br />

E<strong>in</strong>e spezielle Art von Variablen umfaßt e<strong>in</strong>en allgeme<strong>in</strong>gültigen Wertebereich oder Datentyp.<br />

Da <strong>die</strong>se als allgeme<strong>in</strong> bekannt vorausgesetzt werden können, und deren exakte<br />

Def<strong>in</strong>ition von sekundärer Bedeutung <strong>für</strong> <strong>die</strong> Funktionsmodellierung ist, werden sie mit<br />

kursiver Schrift notiert und nicht näher durch Produktionen def<strong>in</strong>iert. Folgende Variablen<br />

werden verwendet:<br />

• : bezeichnet Ganzzahlen der Form 1234 oder -5678<br />

• : bezeichnet Fließkomma-Zahlen der Form 10.23 oder –5.2e+20<br />

• : bezeichnet beliebige Zeichenketten, <strong>die</strong> <strong>in</strong> Anführungszeichen stehen<br />

Da <strong>in</strong> <strong>die</strong>sem Kapitel e<strong>in</strong>e Grammatik entwickelt wird, <strong>die</strong> im S<strong>in</strong>ne der Funktionalität<br />

sowohl kontextsensitive als auch kontextfreie Kommandos beschreibt, und da an bestimmten<br />

Stellen nur kontextfreie Kommandos erlaubt s<strong>in</strong>d, werden kontextsensitive<br />

Kommandos mit dunkelroter Farbe gekennzeichnet. Zusätzlich werden <strong>die</strong>se durch e<strong>in</strong>en<br />

Strich am l<strong>in</strong>ken Rand, beziehungsweise mit <strong>e<strong>in</strong>er</strong> punktierten Unterstreichung markiert.<br />

Um <strong>die</strong> Lesbarkeit der Grammatik zu erhöhen, s<strong>in</strong>d <strong>in</strong> der elektronischen Form <strong>die</strong>ser<br />

Arbeit alle Variablen sensitiv gegenüber Mausklicks. Wird e<strong>in</strong>e Variable angeklickt, spr<strong>in</strong>gt<br />

der Cursor an <strong>die</strong> Def<strong>in</strong>ition der Variable. Die Brauchbarkeit <strong>die</strong>ses Mechanismus hängt<br />

jedoch vom verwendeten Dateiformat ab.<br />

Die Namen von Variablen <strong>für</strong> Richtungsangaben werden <strong>in</strong> Anlehnung an das Avatar lokale<br />

Koord<strong>in</strong>atensystem aus Abb. 4 aus Abschnitt 5.1.2 gewählt. Beschreibt z.B. e<strong>in</strong>e<br />

<strong>die</strong>ser Variablen horizontale und vertikale Richtungsangaben, wird sie XY genannt, da<br />

horizontale Bewegungen entlang der x-Achse und vertikale Bewegungen entlang der y-<br />

Achse wirken. Vorwärts- Rückwärtsbewegungen s<strong>in</strong>d demgemäß dem Buchstaben Z zugeordnet.<br />

Seite 124


Grammatik <strong>für</strong> Benutzere<strong>in</strong>gaben<br />

Anhang C, Erweiterter Kommunikationsformalismus<br />

S ::= <br />

::= |<br />

::= | | | | <br />

::= start <br />

::= stop<br />

::= walk | fly | exam<strong>in</strong>e <br />

::= trans | rot <br />

::= trans | rot | roll <br />

::= trans | rot | roll <br />

: ::= | <br />

: ::= | <br />

:<br />

: ::= lfwd | rfwd | lbwd | rbwd<br />

:<br />

: ::= | | <br />

: ::= | <br />

: ::= | <br />

:<br />

: ::= left | right<br />

: ::= up | down<br />

: ::= forward | backward<br />

| ::= ks <br />

| ::= | | | <br />

|<br />

| ::= trans | trans<br />

| ::= rot | rot<br />

| ::= roll | roll<br />

|<br />

| ::= <br />

::= | | <br />

| ::= gothere<br />

| ::= lookat<br />

| ::= setexacenter<br />

| ::= follow<br />

| ::= <strong>in</strong>dicated <br />

| ::= <strong>in</strong>dicated geometry <br />

::= orientto pos <br />

::= orientto dir <br />

::= moveto <br />

::= beamto pos <br />

::= beamto watch <br />

::= exacenter set <br />

: ::= pos <br />

: ::= ori <br />

: ::= posori <br />

: ::= posdir <br />

: ::= dir <br />

:<br />

: ::= <br />

: ::= <br />

: ::= <br />

Seite 125


::= mode set <br />

::= mode restrict <br />

::= stepsize <br />

::= stepsize set <br />

::= speed <br />

::= speed set <br />

::= light <br />

::= viewpo<strong>in</strong>t <br />

::= viewpo<strong>in</strong>t tour<br />

::= viewpo<strong>in</strong>t set <br />

::= viewpo<strong>in</strong>t set <br />

::= collision <br />

::= gravity <br />

::= straighten<br />

::= balance<br />

| ::= repeat<br />

::= undo<br />

::= sendstatus <br />

::= quit<br />

Anhang C, Erweiterter Kommunikationsformalismus<br />

: ::= walk | fly | exam<strong>in</strong>e<br />

: ::= <strong>in</strong>c | dec | reset<br />

: ::= on | off | toggle<br />

: ::= prev | next | reset<br />

: ::= all | stepsize | mode | light<br />

: ::= viewpo<strong>in</strong>t | collision | gravity<br />

: ::= | end_list<br />

: ::= x | y | z | yaw | pitch | roll | phi | omega | radius | rho<br />

| A | B<br />

Grammatik <strong>für</strong> Statusänderungen<br />

S ::= <br />

::= |<br />

::= status <br />

::= mode mode <br />

::= mode cont<strong>in</strong>ous <br />

::= mode restricted <br />

::= stepsize <br />

::= speed <br />

::= light <br />

::= collision <br />

::= gravity <br />

::= viewpo<strong>in</strong>t activated <br />

::= viewpo<strong>in</strong>t list_changed <br />

::= isbeam<strong>in</strong>g <br />

::= collided <br />

::= undo<strong>in</strong>g noth<strong>in</strong>gstored<br />

::= undo<strong>in</strong>g <br />

::= light | collision | gravity | mode | position | viewpo<strong>in</strong>t<br />

: := walk | fly | exam<strong>in</strong>e<br />

: ::= on | off<br />

: ::= | end_list<br />

: ::= x | y | z | yaw | pitch | roll | phi | omega | radius | rho | A | B<br />

: ::= <br />

: ::= | end_list<br />

Seite 126


Anhang D, DeviceSensor SDK <strong>für</strong> blaxxun Contact<br />

Anhang D DeviceSensor SD K <strong>für</strong> blaxxun Contact<br />

In <strong>die</strong>sem Abschnitt ist <strong>die</strong> Programmierschnittstelle beschrieben, mit welcher der VRML<br />

Browser blaxxun Contact um <strong>die</strong> Unterstützung <strong>für</strong> neue E<strong>in</strong>gabegeräte im DeviceSensor<br />

Knoten erweitert werden kann. Die aktuellste Version <strong>die</strong>ses Software Development Kits<br />

(SDK) ist unter http://www.blaxxxun.de/ zu f<strong>in</strong>den. Es ist von dort unverändert übernommen,<br />

und daher <strong>in</strong> Englischer Sprache.<br />

To orig<strong>in</strong>al file on the web.<br />

Blaxxun DeviceSensor SDK<br />

Blaxxun Contact provides a plug-<strong>in</strong> <strong>in</strong>terface that allows to support further human <strong>in</strong>put and output<br />

devices. Devices like a space mouse or a game pad provide their <strong>in</strong>put data to the VRML Scene us<strong>in</strong>g<br />

the DeviceSensor node. See UI customiz<strong>in</strong>g documentation to learn more about that node.<br />

A DeviceSensor plug-<strong>in</strong> is an <strong>in</strong> process COM object that supports one or more device types. It uses<br />

EAI functions to access the event node and provide <strong>in</strong>put data to its fields or reads output data from<br />

them.<br />

Please see the <strong>in</strong>terface def<strong>in</strong>ition files<br />

- blaxxunHID.idl for the <strong>in</strong>terface to implement,<br />

- blaxxunVRML.idl for the COM EAI.<br />

Test.wrl shows how the DeviceSensor works with this sample plug-<strong>in</strong>. To register the prebuilt plug-<strong>in</strong><br />

doubleclick register.bat .<br />

View the README.txt for an <strong>in</strong>troduction about the sample plug-<strong>in</strong> source.<br />

Table of Contents:<br />

• Overview<br />

• Reference<br />

• IbxxHID::Init(�)<br />

• IbxxHID::AddDeviceSensor(�)<br />

• IbxxHID::RemoveDeviceSensor(�)<br />

• IbxxHID::Tick(�)<br />

• IbxxHID::EnabledChanged(�)<br />

• IbxxHID::FocusChanged(�)<br />

• Registration<br />

Seite 127


Overview<br />

Registration<br />

Anhang D, DeviceSensor SDK <strong>für</strong> blaxxun Contact<br />

The plug-<strong>in</strong> must register with Contact by writ<strong>in</strong>g its class id and the type of device(s) supported <strong>in</strong>to<br />

the registry.<br />

Functionality<br />

When Contact encounters one or more DeviceSensors that access the device supported by the plug<strong>in</strong><br />

Contact loads the plug-<strong>in</strong> and notifies it of the DeviceSensors. If several DeviceSensors access<br />

different hardware devices of the same type, Contact loads one <strong>in</strong>stance of the plug-<strong>in</strong> (which is a<br />

COM object) for each hardware device.<br />

When notify<strong>in</strong>g a plug-<strong>in</strong> of a DeviceSensor Contact provides a po<strong>in</strong>ter to the event Node, a po<strong>in</strong>ter to<br />

the isActive field and an id. The id allows Contact to refer to the DeviceSensor <strong>in</strong> subsequent calls.<br />

On every simulation tick Contact calls the method Tick(�). The plug-<strong>in</strong> must use COM EAI to update<br />

the fields on all of the DeviceSensors event nodes. In case of a feedback or output device the plug-<strong>in</strong><br />

must use COM EAI to read the event nodes field values.<br />

When the enabled field of the DeviceSensor changes, or when the w<strong>in</strong>dow that conta<strong>in</strong>s Contact<br />

switches between foreground and background Contact notifies the plug-<strong>in</strong>.<br />

Contact uses an id to refer to a DeviceSensor. This id is a small <strong>in</strong>teger unique for a plug-<strong>in</strong> <strong>in</strong>stance.<br />

It is always the smallest unused <strong>in</strong>teger value, so you can use this id directly as an array <strong>in</strong>dex.The id<br />

0 is reserved for future use.<br />

Semantics<br />

If a DeviceSensor is disabled the plug-<strong>in</strong> should stop chang<strong>in</strong>g fields, not even reset the fields to their<br />

default values. Fields read for output devices must be ignored.<br />

When Contact has no <strong>in</strong>put focus the plug-<strong>in</strong> must set the fields to their default values, as if there was<br />

no user <strong>in</strong>put dur<strong>in</strong>g that period.<br />

Fields read for output devices must be ignored.<br />

If the plug-<strong>in</strong> does not support hot plugg<strong>in</strong>g of devices it does not need to set the isActive field of the<br />

DeviceSensor explicitly. Suitable return values <strong>in</strong> the AddDeviceSensor(�) and EnabledChanged(�)<br />

methods make Contact set the isActive field properly.<br />

If the plug-<strong>in</strong> does support hot plugg<strong>in</strong>g of devices, it must treat an unplugged device the same way as<br />

if the DeviceSensor was disabled, i.e. not change any fields and set isActive to FALSE.<br />

Misc<br />

Field Inversion:<br />

In order to update the event node fields the plug-<strong>in</strong> must convert eventOuts to eventIns. The reason is<br />

a logical one: To provide data to the world the event node must conta<strong>in</strong> eventOut fields. But EAI def<strong>in</strong>es<br />

methods to set a field value only on eventIns or exposed fields.<br />

Therefore Contact supports the conversion of an eventOut to an eventIn and vice versa through the<br />

QueryInterface(�) mechanism.<br />

Focus Logic:<br />

Contact traces whether it runs <strong>in</strong> the foreground or background w<strong>in</strong>dow and notifies the plug-<strong>in</strong> about<br />

changes. This allows a plug-<strong>in</strong> that doesn't use DirectX to easily do focus logic, and for DirectX plug<strong>in</strong>s<br />

it ensures that data cont<strong>in</strong>ues to be supplied to the world if the chat <strong>in</strong>put l<strong>in</strong>e has keyboard focus<br />

or a dialog box like the console is open. DirectX plug-<strong>in</strong>s must set a background cooperative level.<br />

When they need to supply a w<strong>in</strong>dow handle to SetCooperativeLevel(�) they can opta<strong>in</strong> one from Get-<br />

DesktopW<strong>in</strong>dow().<br />

Seite 128


Reference<br />

Anhang D, DeviceSensor SDK <strong>für</strong> blaxxun Contact<br />

The plug-<strong>in</strong> is a COM object that supports the<br />

<strong>in</strong>terface IbxxHID with <strong>in</strong>terface id 4256A70F-7DD7-478F-BC2E-1A84D1B68FAC.<br />

IbxxHID::Init(����)<br />

HRESULT Init( [<strong>in</strong>] BSTR Device<br />

, [<strong>in</strong>] <strong>in</strong>t DeviceNo<br />

, [<strong>in</strong>] Browser* pBrowser<br />

, [out, retval] <strong>in</strong>t *pDeviceNoUsed<br />

);<br />

Device: The name of the device that should be supported by the plug-<strong>in</strong> object. If the<br />

plug-<strong>in</strong> supports multiply device types it can decide on this parameter which<br />

device is requested.<br />

DeviceNo: The device number that should be supported, or 0 if no devicenumber was given<br />

<strong>in</strong> the VRML content.<br />

pIBrowser: This is a COM EAI po<strong>in</strong>ter to the browser object. It is not really needed, but may<br />

be useful for special cases. See the file blaxxunVRML.idl for its methods.<br />

pDeviceNoUsed: On success this must be set to the device number the plug-<strong>in</strong> will use. On failure<br />

this must be set to 0.<br />

If DeviceNo is not 0 and the <strong>in</strong>itialization succeeds, pDeviceNoUsed must not<br />

differ from DeviceNo.<br />

IbxxHID::AddDeviceSensor(����)<br />

Contact calls AddDeviceSensor(�) to notify the plug-<strong>in</strong> of a DeviceSensor and its event node.<br />

Please note that DeviceSensors can be added and removed at any time, as <strong>in</strong>l<strong>in</strong>es are loaded or<br />

nodes are deleted through scripts.<br />

HRESULT AddDeviceSensor( [<strong>in</strong>] BSTR eventType<br />

, [<strong>in</strong>] Node* pEventNode<br />

, [<strong>in</strong>] EventInSFBool* pIsActive<br />

, [<strong>in</strong>] BOOL Enabled<br />

, [<strong>in</strong>] <strong>in</strong>t ID<br />

, [out, retval] <strong>in</strong>t *pRetVal<br />

);<br />

eventType: The value of the eventType field. It can be used to def<strong>in</strong>e device specific parameters.<br />

pEventNode: A COM EAI po<strong>in</strong>ter to the event node. The plug-<strong>in</strong> object must use COM EAI to<br />

set the fields of this node <strong>in</strong> order to provide user <strong>in</strong>put or read their values for<br />

output devices.<br />

pIsActive: A COM EAI po<strong>in</strong>ter to the isActive field of the DeviceSensor. If the plug-<strong>in</strong> doesn't<br />

support hot swapp<strong>in</strong>g, it can ignore this po<strong>in</strong>ter. But if it does, it must set it to<br />

TRUE only if the DeviceSensor is enabled and the device is plugged <strong>in</strong>.<br />

Enabled: The current value of the DeviceSensors enabled field. The plug-<strong>in</strong> is notified of<br />

future changes to the enabled field through the EnabledChanged(�) method.<br />

ID: An identifier Contact uses to refer to this DeviceSensor <strong>in</strong> subsequent method<br />

calls. It is always the smallest unused <strong>in</strong>teger value, so the plug-<strong>in</strong> can use it as<br />

an array <strong>in</strong>dex. The number 0 is reserved for future use.<br />

pRetVal: On failure this should be set to -1. On success this should be set to 0 or 1. On 0<br />

Contact sets the isActive field to FALSE, on 1 to TRUE.<br />

If Enabled is FALSE, Contact sets isActive to FALSE regardless of the returned<br />

value.<br />

Seite 129


IbxxHID::RemoveDeviceSensor(����)<br />

HRESULT RemoveDeviceSensor( [<strong>in</strong>] <strong>in</strong>t ID );<br />

IbxxHID::Tick(����)<br />

Anhang D, DeviceSensor SDK <strong>für</strong> blaxxun Contact<br />

ID: The number of the DeviceSensor that should be removed.<br />

Contact calls the Tick(�) method to allow the plug-<strong>in</strong> object to do some computations. Typically the<br />

plug-<strong>in</strong> queries the state of the device and updates the fields of all connected event nodes.<br />

HRESULT Tick( [<strong>in</strong>] double SimTime<br />

, [<strong>in</strong>] double FrameRate<br />

);<br />

SimTime: This is the time stamp that is currently simulated. Fields that are changed from<br />

<strong>in</strong>side Tick(�) will get this time stamp.<br />

FrameRate: This is an estimation of the current frame rate. Tick(�) will be called about FrameRate<br />

times per second.<br />

IbxxHID::EnabledChanged(����)<br />

HRESULT EnabledChanged( <strong>in</strong>t ID<br />

, BOOL Enabled<br />

, [out, retval] BOOL* pSetIsActive<br />

);<br />

ID: The identifier for the DeviceSensor whose enabled field has changed.<br />

Enabled: The new value of the enabled field.<br />

pSetIsActive: If Enabled is TRUE, this must be set to what Contact should set the isActive field<br />

to. If Enabled is FALSE, this is ignored.<br />

If the plug-<strong>in</strong> does not support hot plugg<strong>in</strong>g, *pSetIsActive can always be set to<br />

TRUE.<br />

IbxxHID::FocusChanged(����)<br />

Contact tracks whether it runs <strong>in</strong> the foreground or background application and notifies the plug-<strong>in</strong><br />

about changes. (The foreground application is the one the user works with). If the application is <strong>in</strong> the<br />

background, the plug-<strong>in</strong> should set the fields of the event node to values that correspond to the home<br />

position of all <strong>in</strong>put elements on the device.<br />

HRESULT FocusChanged( [<strong>in</strong>] BOOL HasFocusNow<br />

, [out, retval] BOOL *pNeedTickCalls<br />

);<br />

HasFocusNow: TRUE if Contact now runs <strong>in</strong> the foreground w<strong>in</strong>dow, FALSE if it runs <strong>in</strong> a back<br />

ground w<strong>in</strong>dow.<br />

pSetIsActive: Set this to false if it is not necessary that Contact cont<strong>in</strong>ues call<strong>in</strong>g the Tick(�)<br />

method <strong>in</strong> the future. Contact reads this only if HasFocusNow is FALSE.<br />

Seite 130


Registration<br />

Anhang D, DeviceSensor SDK <strong>für</strong> blaxxun Contact<br />

The plug-<strong>in</strong> must register with Contact <strong>in</strong> the registry. It must create a sub key that has the supported<br />

device as key name. This name is the one that the DeviceSensors device field must conta<strong>in</strong> to load<br />

the plug-<strong>in</strong>. Lookup of this key is done case sensitive.<br />

In the sub key a str<strong>in</strong>g value (REG_SZ) named 'CLSID' must conta<strong>in</strong> the class id of the plug-<strong>in</strong>s COM<br />

object <strong>in</strong> curly braces.<br />

The place to create this key is<br />

Software\blaxxun <strong>in</strong>teractive\blaxxunCC3D\plug<strong>in</strong>s\device. Contact first looks up this<br />

path below HKEY_CURRENT_USER, then below HKEY_LOCAL_MACHINE.<br />

If the plug-<strong>in</strong> needs to store some private data <strong>in</strong> the registry that can be deleted when Contact is<br />

un<strong>in</strong>stalled, it should create a sub key named 'data' <strong>in</strong> its key (the one that conta<strong>in</strong>s CLSID). Other<br />

names are reserved for future use by Contact.<br />

Example:<br />

A plug-<strong>in</strong> for a space mouse that needs to store some calibration data would create the key<br />

HKEY_CURRENT_USER\Software\blaxxun <strong>in</strong>teractive\blaxxunCC3D\plug<strong>in</strong>s\device .<br />

Here it creates a REG_SZ value named 'CLSID' that and conta<strong>in</strong>s the str<strong>in</strong>g “{FB4B5F65-0962-4374-<br />

B223-5CAA21C61317}”. A sub key named 'data' stores the calibration data.<br />

Seite 131

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!