Dokument 1
Transcription
Dokument 1
Interaktionsmöglichkeiten an einem Multitouch-Table durch die Analyse von Bewegungsgrößen der Benutzereingaben Fachbereich IEM der Fachhochschule Gießen-Friedberg Diplomarbeit vorgelegt von Kai Neumann geb. in Lich Referent der Arbeit: Korreferentin der Arbeit: Dr. Cornelius Malerczyk Dipl.-Math. (FH) Sabine Langkamm Fachbereich Informationstechnik,Elektrotechnik,Mechatronik IEM Friedberg, 2010 Eidesstattliche Erklärung Hiermit versichere ich, die vorliegende Diplomarbeit selbstständig und nur mit den angegebenen Hilfsmitteln und Literaturquellen verfasst zu haben. Friedberg, den 01.03.2010 Kai Neumann i Danksagung Ich möchte mich zuallererst bei Herrn Dr. Cornelius Malerczyk dafür bedanken, dass er mich auf dieses spannenden Thema aufmerksam machte. Auch für die Betreuung zu meiner vollsten Zufriedenheit möchte ich mich bei ihm und Frau Dipl.-Ing. Sabine Langkamm bedanken. Mein ganz persönlicher Dank geht an meine liebenswerte Lebenspartnerin Annalena Köhler für ihre Unterstützung und ihr Verständnis während meiner Diplomarbeit. Auch bei meinen Eltern, die mir das Studium erst ermöglichten und mich die gesamte Zeit unterstützten, möchte ich mich herzlich bedanken. Diese Diplomarbeit widme ich all meinen Freunden die ich durch das Studium gewonnen habe. ii Inhaltsverzeichnis Eidesstattliche Erklärung i Danksagung ii Inhaltsverzeichnis iii Abbildungsverzeichnis vi 1 Einleitung 1.1 Motivation . . . . . . . . . . . . . . . . . . . 1.2 Problemstellung und Zielsetzung . . . . . . . 1.3 Organisation der Arbeit . . . . . . . . . . . . 1.4 Zusammenfassung der wichtigsten Ergebnisse . . . . . . . . . . . . . . . . 2 Stand der Technik 2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . 2.2 Multitouch-Table Technologien . . . . . . . . . . . . 2.2.1 Resistive Technologie . . . . . . . . . . . . . 2.2.2 Kapazitive Technologie . . . . . . . . . . . . 2.2.3 Despersive signal Technologie (DST) . . . . . 2.2.4 Surface acoustic wave (SAW) . . . . . . . . . 2.2.5 Diffused illumination (DI) . . . . . . . . . . . 2.2.6 Frustrated total internal reflection (FTIR) . . 2.2.7 Diffused surface illumination (DSI) . . . . . . 2.2.8 Laser light plane (LLP) . . . . . . . . . . . . 2.2.9 IR-Lichtvorhang . . . . . . . . . . . . . . . . 2.2.10 IR-light plane (IRLP) . . . . . . . . . . . . . 2.3 Multitouch-Table Software . . . . . . . . . . . . . . 2.3.1 Betriebssysteme . . . . . . . . . . . . . . . . 2.3.2 Technologie-Demonstrationen . . . . . . . . . 2.3.3 Informations-Visualisierung und -Bearbeitung 2.3.4 Virtuelle Musikinstrumente . . . . . . . . . . 2.3.5 Grafik-Erstellung und -Bearbeitung . . . . . . 2.3.6 Spiele . . . . . . . . . . . . . . . . . . . . . iii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 4 . . . . . . . . . . . . . . . . . . . 5 5 5 6 6 7 8 8 9 10 11 12 12 13 13 14 14 15 16 17 Inhaltsverzeichnis 2.4 iv 2.3.7 Terminal-Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Schlussfolgerung und Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . 18 3 Konzepte zur Interaktion an einem Multitouch-Table 3.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . 3.2 Finger . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Drücken . . . . . . . . . . . . . . . . . . . . 3.2.2 Ziehen und Fallenlassen (Drag & Drop) . . . 3.2.3 Rotation . . . . . . . . . . . . . . . . . . . . 3.2.4 Skalieren . . . . . . . . . . . . . . . . . . . . 3.2.5 Bildlauf (Scrolling) . . . . . . . . . . . . . . 3.2.6 Stoßen . . . . . . . . . . . . . . . . . . . . . 3.2.7 3D Navigation . . . . . . . . . . . . . . . . . 3.3 Fiducials (Objekte) . . . . . . . . . . . . . . . . . . 3.3.1 Auflegen . . . . . . . . . . . . . . . . . . . . 3.3.2 Rotationsausrichtung . . . . . . . . . . . . . 3.4 Schlussfolgerung und Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 21 21 22 23 23 24 25 25 26 27 27 28 4 Konzeptentwicklung 4.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Konzepte mit Nutzung der Bewegungsgrößen . . . . . . . . . . . . . 4.2.1 Geschwindigkeit einer Objektrotation . . . . . . . . . . . . . . 4.2.2 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung . . 4.2.3 Geschwindigkeit einer Bewegung zur physikalischen Interaktion 4.2.4 Beschleunigung der Benutzereingaben . . . . . . . . . . . . . 4.3 Konzepte zur Steigerung der Benutzerfreundlichkeit . . . . . . . . . . 4.3.1 Bewegungsdifferenzierung . . . . . . . . . . . . . . . . . . . . 4.3.2 Geschwindigkeitsvisualisierung . . . . . . . . . . . . . . . . . 4.4 Wahl der Anwendungsbeispiele . . . . . . . . . . . . . . . . . . . . . 4.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 30 31 31 33 33 35 35 35 36 37 38 . . . . . . . . . . 40 40 40 42 42 44 44 46 47 48 54 5 Technische Umsetzung 5.1 Einleitung . . . . . . . . . . . . . . . . . 5.2 Reactivision . . . . . . . . . . . . . . . . 5.3 TUIO-Protokoll . . . . . . . . . . . . . . 5.4 Kommunikation mit Flash . . . . . . . . . 5.5 Verarbeiten der TUIO-Protokoll Daten . . 5.5.1 Blobs . . . . . . . . . . . . . . . . 5.5.2 Fiducials . . . . . . . . . . . . . . 5.5.3 Touch Events . . . . . . . . . . . 5.5.4 Verarbeiten der Reactivision-Daten 5.6 Zusammenfassung . . . . . . . . . . . . . 6 Konzeptumsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Inhaltsverzeichnis 6.1 6.2 6.3 6.4 6.5 6.6 6.7 v Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bewegungsdifferenzierung . . . . . . . . . . . . . . . . . . . . . . . . Geschwindigkeitsvisualisierung . . . . . . . . . . . . . . . . . . . . . Curling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5.1 Geschwindigkeit einer Bewegung zur physikalischen Interaktion 6.5.2 Bildschirmbegrenzung . . . . . . . . . . . . . . . . . . . . . . 6.5.3 Wischen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Foto-Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6.1 Rahmendbedingungen . . . . . . . . . . . . . . . . . . . . . . 6.6.2 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung . . 6.6.3 Nutzung der Geschwindigkeit einer Objektrotation . . . . . . . Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Konzeptbewertung 7.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Geschwindigkeit einer Bewegung zur physikalischen Interaktion 7.3 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung . . 7.4 Geschwindigkeit einer Objektrotation . . . . . . . . . . . . . . 7.5 Bewegungsdifferenzierung . . . . . . . . . . . . . . . . . . . . 7.6 Geschwindigkeitsvisualisierung . . . . . . . . . . . . . . . . . 7.7 Probleme bei der Geschwindigkeitsmessung einer Bewegung . . 7.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 56 56 56 57 59 60 62 63 64 66 66 67 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 69 71 71 72 73 73 74 8 Zusammenfassung und Ausblick 75 8.1 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Glossar 78 Literaturverzeichnis 80 Abbildungsverzeichnis 1.1 Interaktion mit einem Multitouch-Table . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 Funktionsweise von resistiven Touchscreens . . . . . . . . . . . . . . . . Funktionsweise von kapazitiven Touchscreens . . . . . . . . . . . . . . . Funktionsweise der dispersive signal Technologie . . . . . . . . . . . . . . Funktionsweise eines surface acoustic wave Touchscreens . . . . . . . . . Funktionsweise eines diffused illumination Touchscreens . . . . . . . . . . Funktionsweise eines frustrated total internal reflection Touchscreens . . . Funktionsweise eines diffused surface illumination Touchscreens . . . . . . Funktionsweise eines laser light plane Touchscreens . . . . . . . . . . . . Funktionsweise eines IR-Lichtvorhang Touchscreens . . . . . . . . . . . . Funktionsweise eines IR-light plane Touchscreens . . . . . . . . . . . . . Verschieben von Objekten in Microsoft Windows 7 auf einem Touchscreen Bilder des Jefferson Han Technologie-Demonstrations-Videos . . . . . . . Microsoft Surface bei der Präsidentenwahl auf NBC . . . . . . . . . . . . Interaktionen mit dem reacTable . . . . . . . . . . . . . . . . . . . . . . Bedienung von Photoshop MT durch langes Drücken . . . . . . . . . . . Das Strategie-Spiel RUSE auf einem Multitouch-Table . . . . . . . . . . Microsoft Surface Terminal-Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 8 8 9 10 11 11 12 13 14 14 15 16 16 17 18 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 Bedienung der Bildschirmtastatur durch Drücken . . . . . . . . . . . . Verschieben von Fotos mit dem Finger durch Drag & Drop . . . . . . . Atan2 Funktion bei der Rotation mit einem Finger. . . . . . . . . . . . Skalierung eines Bildes mit zwei Fingern . . . . . . . . . . . . . . . . . Seitliches Scrollen bei einer Microsoft Surface Anwendung . . . . . . . UI Centrics Air Hocky auf einem Multitouch-Table . . . . . . . . . . . Nasa World Wind auf einem Multitouch-Table . . . . . . . . . . . . . . Von Reactivision verwendete Markierungen für Objekte . . . . . . . . . Farbauswahl beim BMW-Product-Navigator durch Auflegen des Musters Farbauswahl beim Audi Car Configurator durch Objektrotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 22 23 24 24 25 26 26 27 28 4.1 4.2 4.3 Lautstärkeregler ohne Skala an einem Verstärker . . . . . . . . . . . . . . . . . . . . . . 32 Unterschiedliche Skalen bei einem Mischpult . . . . . . . . . . . . . . . . . . . . . . . . 32 Screenshot aus dem Spiel Tiger Woods PGA Tour 08 . . . . . . . . . . . . . . . . . . . 34 vi . . . . . . . . . . 2 Abbildungsverzeichnis vii 4.4 Entstehung eines falschen Geschwindigkeitsvektors . . . . . . . . . . . . . . . . . . . . 36 5.1 5.2 Fünf Berührungspunkte aufgenommen von Reactivision . . . . . . . . . . . . . . . . . . 41 Screenshot des TUIO-Simulators mit Finger und Objekt . . . . . . . . . . . . . . . . . . 41 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 Curling Zielkreis mit gespielten Steinen . . . . . . . . . . . . . . . . . . . . Wischen mit dem Besen vor einem gespielten Curlingstein . . . . . . . . . Konzept der Geschwindigkeitsvisualisierung beim Curling . . . . . . . . . . Screenshot des Curling-Spiels bei der Begrenzung auf den Bildschirm. . . . Vergleich der Koordinaten des Sprites mit der Eisbahn und des Bildschirms Screenshot des Curling-Spiels mit Eisfläche über den Bildschirm hinaus . . Korrekte Ausführung der Wischbewegung vor dem Stein . . . . . . . . . . Screenshot der Foto-Applikation mit aufgerufener Bildschirmtastatur. . . . Rotation eines Fotos beim Verschieben . . . . . . . . . . . . . . . . . . . . Problematik des Grad-Sprungs von 0 auf 360 Grad und umgekehrt. . . . . . 7.1 7.2 Vergleich der zwei Curling-Spiel-Umsetzungen . . . . . . . . . . . . . . . . . . . . . . . 70 Verdeckung eines Fotos durch das Objekt beim Skalieren . . . . . . . . . . . . . . . . . 72 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 58 59 61 61 62 62 64 65 67 Kapitel 1 Einleitung 1.1 Motivation Die berührungssensitive Interaktion zwischen Anwender und Computer ohne die Verwendung von Standard-Eingabegeräten, wie Tastatur oder Computermaus, gewinnt immer mehr an Popularität. Durch Produkte wie das iPhone oder die Touchscreen-Unterstützung von Windows 7 wurde die Touchscreen-Technologie auch kommerziell bekannt. Gegenwärtig nutzen bereits vielfältige Geräte, wie zum Beispiel Navigationsgeräte, PDAs, Smartphones, Tablet-PCs, Spielekonsolen wie Nintendo DS und ebenfalls der Multitouch-Table die Technologie der intuitiven Eingabe, um eine neue Art der einfachen Interaktion mit einem Computersystem und dessen Anwendungen zu ermöglichen. Viele Anwendungen lassen sich intuitiv bedienen, selbst Benutzer ohne Vorwissen oder technische Einweisung sind in der Lage, mit Touchsystemen zu arbeiten. Aufgrund dessen wird die Technologie des Touchscreens auch bei vielen öffentlich zugänglichen Systemen, wie Fahrkartenautomaten oder Informationsschaltern, verwendet. Im Fokus der Forschung und Entwicklung steht zur Zeit die Innovation Multitouch-Table, ein Eingabegerät in Form eines Tisches mit eigener Projektionsfläche, auf dem sowohl die Fingerkuppen eines oder mehrerer Anwender, als auch Objekte mit speziellen Markierungen vom Gerät erkannt werden können. Große Popularität erlangte der Multitouch-Table unter anderem durch die Präsentation von Microsoft Surface im Jahr 2007, einem Multitouch-Table mit Hard- und Software von Microsoft. Mittlerweile gibt es eine Vielzahl von Herstellern, die sich auf die Entwicklung von MultitouchTables und deren Software spezialisieren und ebenso mehrere Verfahren zur Realisierung eines multitouchfähigen Systems. Durch die Veröffentlichung von Open Source Frameworks zur Erkennung von Berührungsdaten sowie Anleitungen zum Eigenbau eines Multitouch-Tables im Internet, können diese immer günstiger hergestellt werden. Durch die damit verbundene Verbreitung der Hardware des Multitouch-Tables entstanden weitere Anwendungen aufgrund von Forschungsprojekten an Fachhochschulen und Universitäten, sowie durch Entwicklungen von Privatpersonen. Eine häufig umgesetzte Anwendung ist zum Beispiel eine Art Fotoalbum, der Benutzer kann durch Bewegungen seiner Finger Fotos verschieben, skalieren und sie rotieren lassen. 1 1.2. Problemstellung und Zielsetzung c Abbildung 1.1: Interaktion mit einem Multitouch-Table. GestureTek Bisher wurden die Optionen, welche die Interaktion mit einem Multitouch-Table ermöglicht, noch nicht ausgeschöpft. Gleiche Konzepte werden nur immer wieder verwendet und wiederholt. Vor allem Geschwindigkeit und Beschleunigung von Fingern und Objekten auf der Oberfläche des Tisches wurden bislang nur selten angewandt, obwohl sie mannigfaltige neue Möglichkeiten zur Interaktion bieten. Im Rahmen dieser Diplomarbeit wird zunächst die für einen Multitouch-Table verfügbare Hard- und Software analysiert. Anschließend werden schon umgesetzten Konzepte zur Interaktion an einem Multitouch-Table geprüft, im besonderen Hinblick auf die Nutzung von Geschwindigkeit und Beschleunigung einer Bewegung zur Bedienung von Multitouch-Anwendungen. Darauf folgend werden neue Konzepte zur Interaktion entwickelt, die insbesondere die Möglichkeiten durch Geschwindigkeit und Beschleunigung einer Bewegung nutzen. Die entwickelten Konzepte werden exemplarisch anhand von Beispielanwendungen überprüft und bewertet. Für die Entwicklung der Beispielanwendungen wird als technische Basis das durch Reactivision1 bereitgestellte TUIO-Protokoll2 und auf Anwendungsseite die Entwicklungsumgebung Flash verwendet. 1.2 Problemstellung und Zielsetzung Die berührungssensitive Interaktion zwischen Anwender und Computer bietet völlig neue Möglichkeiten zur Anwendungssteuerung, welche bisher jedoch noch nicht ausgeschöpft wurden. Trotz der vielen Forschungsprojekte an Fachhochschulen und Universitäten, sowie Anwendungen von Unternehmen oder Privatpersonen, werden stets die gleichen Konzepte zur Interaktion in den Anwendungen genutzt. Vor allem Konzepte zur Interaktion durch Geschwindigkeit und Beschleunigung der Benutzereingaben werden selten umgesetzt und das Potential der Möglichkeiten kaum genutzt. Da meist die Intuitivität bei der Bedienung von Touchscreen- Anwendungen im Vordergrund steht, 1 2 http://reactivision.sourceforge.net/ http://tuio.org/ 2 1.3. Organisation der Arbeit bietet sich bei vielen Anwendungsfeldern von Multitouch-Table-Software die Nutzung der Bewegungsgrößen an. Bei einem Großteil der Spiele bietet eine intuitive Steuerung durch Geschwindigkeit oder Beschleunigung Möglichkeiten für ein völlig neues Spielerlebnis. Bisher werden vor allem die Koordinaten einer oder mehrerer Berührungen ausgelesen und zur Bedienung einer Anwendung genutzt. Dies hat für den Benutzer den Vorteil der leichteren Kontrolle dieser Werte, da er den Touchscreen an exakt dieser Position berührt. Ein Problem bei der Bedienung einer Anwendung durch Geschwindigkeit und Beschleunigung einer Bewegung stellt die Präzision der Steuerung dar. Der Benutzer kann nur ungenügend abschätzen oder während der Eingabe erkennen, wie stark die Auswirkung der Geschwindigkeit oder Beschleunigung der aktuellen Bewegung ist. Zudem nehmen Menschen Geschwindigkeiten unterschiedlich wahr. Bei manchen Anwendungen ist eine physikalische Interaktion von Objekten von großer Bedeutung. Ein vom Benutzer beschleunigtes Objekt muss die übergebene Geschwindigkeit auch wieder abbauen, da es sonst unendlich lange in Bewegung bleiben würde. Dies erfordert die Simulation einer Reibung. Des Weiteren ist eine Simulation der physikalischen Gesetzte für die Kollision von Objekten erforderlich. Das beinhaltet eine Steuerung der Objekte durch Benutzereingabe, sowie eine Beeinflussung des Verhaltens der Objekte durch eine Physik-Engine. Eine Überprüfung der bereits vorhandenen Konzepte zur Interaktion an einem Multitouch-Table soll erfolgen, um festzustellen, inwiefern die Bewegungsgrößen der Benutzereingaben zur Interaktion genutzt werden. Ziel dieser Arbeit ist es, für das bisher nicht genutzte Potential dieser Eingabemöglichkeiten neue Konzepte zur Interaktion zu entwickeln. Anschließend werden die entwickelten Konzepte in Flash mithilfe des TUIO-Protokolls in Beispielanwendungen exemplarisch umgesetzt und bewertet. 1.3 Organisation der Arbeit In Kapitel 2 wird zunächst der Stand der Technik von Hard- und Software des Multitouch-Tables analysiert. Der technische Ansatz der verschiedenen Technologien zur Umsetzung eines MultitouchTables wird vorgestellt und auf Stärken und Schwächen geprüft. Um eine Übersicht über die umfangreich vorhandene Software zu schaffen, erfolgt eine Kategorisierung und Erläuterung der Anwendungsfelder von Multitouch-Table Software. In Kapitel 3 erfolgt die Überprüfung der bereits umgesetzten Konzepte zur Interaktion in der vorhandenen Software. Hierbei wird der FoKus auf die Interaktion durch die Nutzung der Bewegungsgrößen von Benutzereingaben gelegt. Kapitel 4 befasst sich mit der Entwicklung neuer Konzepte zur Benutzung der Bewegungsgrößen von Benutzereingaben zur Anwendungssteuerung. Zur exemplarischen Umsetzung der Konzepte wird in Kapitel 5 das Auslesen und Verarbeiten der Berührungsdaten des TUIO-Protokolls dokumentiert. Mithilfe dieser Daten folgt in Kapitel 6 die exemplarische Umsetzung der Konzepte in Beispielanwendungen. Die Konzepte werden in Kapitel 7 bewertet, bevor eine abschließend Zusammenfassung der wichtigsten Ergebnisse erfolgt. 3 1.4. Zusammenfassung der wichtigsten Ergebnisse 1.4 Zusammenfassung der wichtigsten Ergebnisse Bei der Überprüfung der Hard- und Software des Multitouch-Tables wurde deutlich, wie vielseitig einsetzbar diese Technologie ist. Die Anzahl unterschiedlicher Softwarelösungen ist jedoch aufgrund der noch eingeschränkten Verbreitung des Systems begrenzt. Bei der Prüfung der Konzepte zur Interaktion an einem Multitouch-Table wurde deutlich, dass die Intuitivität im Vordergrund steht. Die Zahl unterschiedlicher Konzepte ist jedoch sehr beschränkt. Vor allem das Potential der Möglichkeiten zur Nutzung der Bewegungsgrößen von Benutzereingaben wird dabei nur ansatzweise und unzureichend genutzt. Auf der Grundlage der Ergebnisse wurden neue Konzepte mit Nutzung der Geschwindigkeit entwickelt: • Geschwindigkeit einer Objektrotation • Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung • Geschwindigkeit einer Bewegung zur physikalischen Interaktion Die Nutzung der Geschwindigkeit einer Objektrotation hat gegenüber dem bisherigen Konzept der Rotationsausrichtung die Vorteile, dass keine Skala zur Orientierung um das Objekt benötigt wird und somit keine 360 Grad Beschränkung der Eingabe besteht. Das Konzept ermöglicht es, große und kleine Einstellungsschritte präzise und schneller umzusetzen. Darüber hinaus kann die Position des Objektes die auszuführende Aktion beeinflussen. Die Nutzung der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung vervielfacht die Anzahl der Interaktionsmöglichkeiten. Mit der gleichen Bewegung, in unterschiedlicher Geschwindigkeit ausgeführt, können so mehrere verschiedene Aktionen durchgeführt werden. Durch die Nutzung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion können Touchscreen-Anwendungen noch realer wirken, was vor allem bei der Entwicklung neuer Spielkonzepte von großer Bedeutung ist. Darüber hinaus erfolgte die Entwicklung eines Konzeptes zur Bewegungsdifferenzierung sowie ein Konzept zur Geschwindigkeitsvisualisierung. Durch die Bewegungsdifferenzierung wird zwischen fortlaufenden und gestoppten Bewegungen unterschieden. Die Geschwindigkeitsvisualisierung soll dem Benutzer ermöglichen, die Geschwindigkeit einer Bewegung besser abzuschätzen. Beide Konzepte sollen die Kontrolle der Geschwindigkeit in Anwendungen erleichtern. Die neu entwickelten Konzepte werden exemplarisch in Beispielanwendungen erprobt. Zur Umsetzung der Anwendungen in Flash wurden Bibliotheken zum Empfangen und Verarbeiten des von Reactivision gesendeten TUIO-Protokolls geschrieben. Zur Berechnung der Geschwindigkeit sowie zur Bewegungsdifferenzierung wurden die Daten ergänzt. Die Umsetzung der Konzepte in einer Foto-Applikation und einem Curling-Spiel konnte mit Hilfe dieser Bibliotheken erfolgreich umgesetzt werden. Da sich die Fertigstellung eines Multitouch-Tables an der Fachhochschule verzögerte, erfolgte die Erprobung der Konzepte in den Anwendungen mit dem TUIO-Simulator. Die neuen Konzepte funktionieren bis auf kleine Schwierigkeiten wie in der Entwicklung vorgesehen. Allerdings stellen die unterschiedlichen Touchscreengrößen ein Problem bei der Definierung fester Werte dar. 4 Kapitel 2 Stand der Technik Dieses Kapitel gibt einen Überblick über den aktuellen Stand der Technik des Multitouch-Tables. Es werden die verschiedenen Technologien zur Umsetzung eines multitouchfähigen Systems vorgestellt, um zu prüfen, welche technischen Möglichkeiten die unterschiedlichen Ansätze bieten. Anschließend wird sich mit der Software des Multitouch-Tables befasst. Die vorhandenen Softwarekonzepte werden anhand ihrer Anwendungsbereiche vorgestellt. Diese Analyse dient als Grundlage für die Prüfung der in der Software umgesetzten Konzepte zur Interaktion. 2.1 Einleitung Es erfolgt eine Analyse der vorhandenen Techniken des Multitouch-Tables. Nicht alle Technologien zur Realisierung eines Touchscreens eignen sich zur Umsetzung eines Multitouch-Tables. Der Multitouch-Table setzt die Möglichkeit mehrerer Eingaben gleichzeitig voraus. Technologien, die nicht mehr als einen Finger erkennen, werden deshalb nicht berücksichtigt. Die technischen Ansätze, die alle Anforderungen erfüllen, werden vorgestellt und Vor- und Nachteile aufgezeigt. Anschließend erfolgt eine Analyse der Multitouch-Table Software. Da es eine große Anzahl von Applikationen gibt, die sich jedoch in ihren Funktionen kaum unterscheiden, werden die verschiedenen Anwendungsbereiche der Software anhand von Beispielanwendungen exemplarisch vorgestellt. 2.2 Multitouch-Table Technologien Eine Vielzahl verschiedener Technologien, die mehrere Berührungspunkte erkennen und verarbeiten können, liegen zur Mensch-Computer-Interaktion vor. Hierbei wird zwischen folgenden technischen Ansätzen unterschieden: • Elektrische Systeme Die resistive und kapazitive Technologie basiert auf der Messung von Spannung und Strom. • Mechanische Systeme Die despersive signal Technologie basiert auf der Messung von Vibrationen. 5 2.2. Multitouch-Table Technologien • Akustische Systeme Die surface acoustic wave Technologie basiert auf der Messung von Ultraschallwellen. • Optische Systeme Die Ansätze von diffused illumination, frustrated total internal reflection, diffused surface illumination, laser light Plane, IR-Lichtvorhang und IR-light plane basieren auf der Erkennung und Messung von Infrarot-Licht. Neben dem technischen Hintergrund, werden die Vor- und Nachteile der Technologien beleuchtet. 2.2.1 Resistive Technologie Bei resistiven Touchscreens ist der Monitor mit einer flexiblen, berührungsempfindlichen Schicht versehen, die auf Druck reagiert [SS08] [Cor07]. Diese Schicht besteht aus zwei leitfähigen, transparenten ITO (Indiumzinnoxid)-Schichten, welche durch Abstandhalter (spacer dots) voneinander getrennt sind. An die untere Schicht wird eine Spannung in Richtung X und an die obere in Richtung Y angelegt. Wird durch eine Berührung Druck ausgeübt, berühren sich die Schichten und die Spannung wird an Sensoren weitergeleitet. Anhand dieser Spannung können die X- und Y-Koordinaten der Berührung errechnet werden. Die Leistungsfähigkeit des Systems hängt von der Anzahl der Sensoren zur Messung der Spannung ab. Aus diesem Grund werden resistive Systeme nach der Anzahl der Sensoren benannt. Ein 4-Wire System verfügt beispielsweise nur über vier Sensoren und ist somit nur singletouchfähig. Ein sogenanntes X-Wire System verfügt dahingegen über eine Matrix aus kleinen Sensoren und kann somit multitouchfähig sein. Nachteil dieser Technologie ist die geringe Lichtdurchlässigkeit der berührungsempfindlichen Schicht. Resistive Touchscreens sind preislich sehr günstig, sodass sie vorwiegend in mobilen Geräten wie PDAs, Navigationsgeräten, Tablet-PCs und Handys Verwendung finden. c Abbildung 2.1: Schematische Darstellung der Funktionsweise von resistiven Touchscreens. Visam 2.2.2 Kapazitive Technologie Bei der kapazitiven Technologie wird auf einer Glasscheibe vor dem Display eine leitfähige MetalloxidSchicht aufgetragen und an den vier Eckpunkten dieser Schicht eine Rechteckspannung angelegt 6 2.2. Multitouch-Table Technologien [Cor07] [UL09]. Hierdurch wird ein elektrisches Feld erzeugt, welches durch Berührung über den menschlichen Körper eine kapazitive Verbindung mit der Erde herstellt. Der hier entstehende Ladungstransport wird nun in Form von elektrischen Strom gemessen und ausgewertet. So können die X- und Y-Koordinaten der Berührung errechnet werden. Ein Nachteil dieser Technologie ist, dass sie nur Finger und dafür entwickelte Stifte erkennen kann. Von Vorteil ist, dass die MetalloxidSchicht mit einem Sicherheitsglas geschützt werden kann und diese Technologie hierdurch sehr widerstandsfähig gegenüber Beschädigungen wird. Sie wird häufig in mobilen Geräten wie dem iPhone verwendet, kann aber auch in weitaus größeren Geräten Anwendung finden. Abbildung 2.2: Schematische Darstellung der Funktionsweise von kapazitiven Touchscreens. c Visam 2.2.3 Despersive signal Technologie (DST) Bei der despersive signal Technologie werden auf der Rückseite einer Glasplatte vor dem Bildschirm Sensoren angebracht, welche Vibrationen erkennen und messen [Fas09]. Wird die Glasscheibe berührt, messen diese Sensoren die Vibration und wandeln die mechanische Energie in elektrische Energie um (siehe Abbildung 2.3). Diese Daten werden mit einer Dispersionsanalyse ausgewertet und ein Berührungspunkt errechnet. Bei dieser Technologie werden jedoch nur Berührungen und Bewegungen erkannt, stillstehende Objekte und Finger werden nicht erfasst. Diese Technik eignet sich besonders für große öffentliche Systeme, da sie sehr stabil ist. Selbst Kratzer in der Glasscheibe beeinflussen nicht die Qualität der Daten. 7 2.2. Multitouch-Table Technologien Abbildung 2.3: Schematische Darstellung der Funktionsweise der dispersive signal Technologie. [Fas09] 2.2.4 Surface acoustic wave (SAW) Bei der Oberwellen-Technologie werden Ultraschallwellen von einem Controller sowohl horizontal als auch vertikal in eine Glasplatte eingespeist [Cor07]. Auf der jeweils gegenüberliegenden Seite treffen diese Wellen auf einen Reflektorstreifen, der diese zu einem Sensor weiterleitet. Durch Berührung der Glasplatte wird ein Teil der Schallwellen absorbiert. Mittels Messung der Absorptionszeit können die X- und Y-Koordinaten der Berührung errechnet und mithilfe der Stärke der Absorption der Druck einer Berührung gemessen werden. Da die Glasplatte keinerlei Beschichtungen benötigt, bietet dieses System optimale Transparenz. Durch die kompakte Bauweise wird diese Technologie sowohl in kleinen, als auch in großen Systeme eingesetzt. Abbildung 2.4: Schematische Darstellung der Funktionsweise eines surface acoustic wave Touchsc creens. Visam 2.2.5 Diffused illumination (DI) Diffused illumination ist eine der kostengünstigsten optischen Technologien für ein multitouchfähiges System [UL09] [AT09] [Mul08]. Ein Projektor projiziert das Bild von unten auf eine matte 8 2.2. Multitouch-Table Technologien Acrylglasscheibe, die gleichmäßig von Infrarotstrahlern beleuchtet wird. Eine Infrarotkamera filmt nun die Platte und zeichnet das durch Annäherung oder Berührung der Acrylglasscheibe reflektierte Infrarotlicht auf. Die Daten der Kamera werden anschließend ausgewertet und somit die X- und YKoordinaten einer Berührung errechnet. Nicht gleichmäßige Bestrahlung durch Infrarotstrahler führt zu Fehlern in der Bilderkennung. Da es keine sensorischen Einschränkungen gibt, ist es mit dieser Technologie möglich, eine unbegrenzte Anzahl von Objekten und Fingern zu verfolgen. Beispielsweise Microsoft Surface nutzt diese Technologie. Abbildung 2.5: Schematische Darstellung der Funktionsweise eines diffused illumination Touchsc creens. Palomavillegas Die optischen Systeme diffused illumination, frustrated total internal reflection, diffused surface illumination sowie laser light plane, bei denen das Bild von einem Projektor auf eine Glasscheibe projiziert wird, müssen einen Mindestabstand zwischen Projektor und Projektionsfläche einhalten. Daher ergibt sich bei diesen Technologien die Form des Tisches (Multitouch-Table). Bei diesen optischen Systemen hängt die Qualität der Tracking-Daten außerdem stark von der Auflösung und Bildrate der Kamera ab. Die Aufzeichnung des Infrarotlichtes kann durch hohe Anteile der Infrarotstrahlung im Sonnenlicht gestört werden. Um die Störungen zu minimieren, ist eine vor Infrarotstrahlung schützende Schicht nötig. Optimal funktioniert diese Technologien in Räumen mit künstlichem Licht ohne Infrarotanteile. 2.2.6 Frustrated total internal reflection (FTIR) Die FTIR-Technologie ähnelt im Aufbau sehr der DI-Technologie, es wird jedoch keine matte, sondern eine klare Acrylglasscheibe verwendet und diese auch auf eine andere Weise beleuchtet [UL09] [AT09] [Mul08]. Die Scheibe wird nicht aus Richtung des Projektors, sondern seitlich der Acrylglasscheibe durch Infrarotlicht von LEDs bestrahlt. Dieses seitlich eingestrahlte Licht verlässt die Glasplatte nicht, bedingt durch die entstehende Totalreflexion, die beim Übergang von Licht aus einem optisch dichterem zu einem optisch dünneren Medium entsteht. Treffen die Lichtstrahlen in einem 9 2.2. Multitouch-Table Technologien bestimmten Winkel auf die Grenzfläche der Medien, werden diese vollständig reflektiert. Durch eine Berührung der Acrylglasscheibe entsteht nun Streulicht, welches wie bei der DI-Technik von einer Infrarotkamera aufgenommen wird. Der Vorteil dieser Technologie gegenüber der DI-Technologie ist, dass sich Berührungen stärker abheben und so besser erkannt und gefiltert werden können. Aufgrund der hohen Genauigkeit können Objekte präziser erkannt werden. Allerdings kann die lichtleitende klare Acrylglasscheibe nicht als Projektionsfläche dienen, weshalb sie noch mit einer Projektionsschicht versehen werden muss. Eine sensorische Einschränkung ist, wie ebenfalls bei der DI-Technologie, nicht vorhanden. Da bei der FTIR-Technologie das Bauvolumen ähnlich dem DI System ist, eignet sich diese Technik ebenfalls nur für große Displays. Abbildung 2.6: Schematische Darstellung der Funktionsweise eines frustrated total internal reflecc tion Touchscreens. Palomavillegas 2.2.7 Diffused surface illumination (DSI) Der Aufbau der DSI-Technologie ähnelt dem der DI- und FTIR-Technologie [AT09]. Es dient ebenfalls ein Rahmen aus Infrarot-LEDs als Lichtquelle, es wird in diesen Rahmen keine Acrylglasscheibe eingesetzt, sondern eine spezielle endlighten Plexiglasscheibe. Endlighten bedeutet, dass sich innerhalb der Scheibe kleine Teilchen befinden, die sich wie tausende kleine Spiegel verhalten. Dadurch wird das in die Ränder der Scheibe gestrahlte Infrarotlicht gleichmäßig innerhalb der Oberfläche verteilt (siehe Abbildung 2.7). Der Nachteil dieser Methode gegenüber der DI- und FTRI-Methode ist der schlechtere Kontrast der zu erkennenden Finger und Objekte, da in Richtung der Kamera Infrarotlicht durch die Teilchen im Glas gespiegelt wird. Dieses System kann ebenfalls eine unbegrenzte Anzahl von Fingern verfolgen und Objekte erkennen. 10 2.2. Multitouch-Table Technologien Abbildung 2.7: Schematische Darstellung der Funktionsweise eines diffused surface illumination Touchscreens. [AT09] 2.2.8 Laser light plane (LLP) LPP ist vom Aufbau dem DI-, FTIR- und DSI-System sehr ähnlich und unterscheidet sich ebenfalls nur in der Beleuchtung [UL09] [AT09]. Hier werden Lasermodule verwendet, die durch spezielle Linienlinsen eine Fläche aus Infrarotlicht über der Oberfläche des Displays aufspannen. Wird diese Infrarotfläche durch eine Berührung durchbrochen, zeichnet eine Kamera die Infrarotstrahlen zur Auswertung auf. Ein Nachteil hierbei ist das mögliche Entstehen von Abschattungseffekten, die vor allem die Objekterkennung einschränken. Aufgrund der Bauweise ist auch dieses System nur für große Displays geeignet. Abbildung 2.8: Schematische Darstellung der Funktionsweise eines laser light plane Touchscreens. c NUI-Group 11 2.2. Multitouch-Table Technologien 2.2.9 IR-Lichtvorhang Bei diesem Verfahren wird durch LEDs an den beiden nicht gegenüberliegenden Seiten eine Art Lichtvorhang über dem Display aufgespannt [UL09]. An der jeweils gegenüberliegenden Seite der LED befinden sich Infrarotlicht-Detektoren, die das gestrahlte Licht empfangen. Durch eine Berührung wird der Lichtfluss zu den Detektoren an dieser Stelle unterbrochen. Diese Detektoren ohne Lichtfluss geben die X- und Y-Koordinaten der Berührung an. Da größere Objekte mehr Dioden verdecken, kann somit auch die Größe von Objekten erkannt werden, jedoch ohne genaue Konturen. Ein gravierender Nachteil dieser Technologie ist, dass mehrere zeitgleiche und sich kreuzende Berührungen zu Fehlern des Systems führen können, da die X- und Y-Koordinaten nicht mehr eindeutig zugeordnet werden können. Durch die kompakte Bauweise kann diese Technologie sowohl bei großen als auch bei kleinen Displays verwendet werden. Ein weiterer Vorteil ist die problemlose Anbringung des IR- Lichtvorhangs an herkömmliche Flachbildschirme. Abbildung 2.9: Schematische Darstellung der Funktionsweise eines IR-Lichtvorhang Touchscreens. [UL09] 2.2.10 IR-light plane (IRLP) Das IRLP-Verfahren funktioniert technisch ähnlich wie der IR-Lichtvorhang, unterscheidet sich im Aufbau [UL09]. Zwei Sensor/Emitter-Module befinden sich in den gegenüberliegenden Seiten über dem Display. Die Emitter spannen einen Lichtvorhang über das Display und die Sensoren messen Unterbrechungen durch Berührungen (siehe Abbildung 2.10). Aufgrund der Bauweise tritt eine Verzerrung auf, welche durch komplexe Algorithmen behoben wird. Wie bei der IR-LichtvorhangTechnologie ist die Erkennung von Objekten ebenfalls nur eingeschränkt möglich. Die IR-Light Plane kann, wie bereits der IR-Lichtvorhang, an großen und kleinen Flachbildschirmen angebracht werden. 12 2.3. Multitouch-Table Software Abbildung 2.10: Schematische Darstellung der Funktionsweise eines IR-light plane Touchscreens. Zu sehen ist der Lichtvorhang von zwei Sensor/Emitter-Modulen durchbrochen von einem Finger. c Next Window 2.3 Multitouch-Table Software Nachdem die verschiedenen Technologien und deren technische Möglichkeiten aufgezeigt wurden, beschäftigt sich der folgende Abschnitt mit der bisher zur Verfügung stehenden Software. Die Technik des Multitouch-Tables wird für viele verschiedene Zwecke mit unterschiedlicher Software eingesetzt. Um neue Konzepte zu entwickeln, ist es erforderlich einen Überblick über die bisher vorhandene Software zu schaffen. Aufgrund der bereits umfangreich vorliegenden Software erfolgt eine Gliederung in die Bereiche Betriebssysteme, Technologie-Demonstrationen, Informations-Visualisierung und -Bearbeitung, virtuelle Musikinstrumente sowie Grafik-Erstellung und -Bearbeitung. Des Weiteren werden die vorhandene Software im Spielbereich und die Anwendungen im Terminalbereich untersucht. 2.3.1 Betriebssysteme Eine wesentliche Voraussetzung für die Verbreitung des Multitouch-Tables sind die Betriebssysteme [ct037] [PK55]. Sie erlauben es, Anwendungen über standardisierte Schnittstellen mit der Multitouch-Hardware zusammenzuführen, sofern die Treiber der Hardware vom Hersteller bereitgestellt werden. Dadurch können Anwendungen indirekt über das Betriebssystem auf die MultitouchHardware zugreifen. Bisher gibt es zwei Betriebssysteme für einen Multitouch-Table: MPX Linux und Windows 7. MPX Linux ist Linux mit einer Multi-Point X Server (MPX)-Modifikation. Das Programm ist in der Lage, mehrere Mauszeiger oder mehrere Bewegungsquellen, wie bei einem Multitouch-Table, zu verwalten. Somit bietet MPX Linux eine Plattform für Multitouch-Anwendungen, das Angebot an Softwareund Hardware-Unterstützung ist noch sehr begrenzt. Windows 7, das jüngste Betriebssystem von Microsoft, verfügt ebenfalls über Multitouch Unterstützung und enthält zusätzlich Programme zur Nutzung von Multitouch. Anwendungen, wie beispielsweise Wordpad, Paint oder auch der Internet Explorer, lassen sich mit Multitouch-Gesten bedienen (siehe Abbildung 2.11). 13 2.3. Multitouch-Table Software Abbildung 2.11: Verschieben von Objekten in Microsoft Windows 7 auf einem Touchscreen. c Microsoft 2.3.2 Technologie-Demonstrationen Es existierten eine Vielzahl von Anwendungen, die neben dem Demonstrieren der Interaktionsmöglichkeiten kein erkennbares Ziel verfolgen. Sie entstehen vorrangig als Ergebnis von Forschungsprojekten im Bereich Multitouch oder werden von Privatpersonen experimentell erstellt [UL09] [PK55]. Eine der bekanntesten Technologiedemonstration ist das im Jahr 2006 erschienene Video des Teams von Jefferson Han1 . Es zeigt eine Vielzahl von Anwendungen, die durch intuitive Bewegungen gesteuert werden. c Abbildung 2.12: Bilder des Jefferson Han Technologie-Demonstrations-Videos. Jefferson Han 2.3.3 Informations-Visualisierung und -Bearbeitung Ein weiterer Anwendungsbereich von Multitouch ist die Visualisierung und Bearbeitung von Datenund Informationsmengen [UL09] [WB09]. Ein häufig umgesetztes Konzept der Informations-Visualisierung und -Bearbeitung ist das eines Photo Browsers, Bilder können durch Berührungen verschoben, vergrößert und gedreht werden. Eine ebenso vielfach umgesetztes Multitouch-Konzept ist die Globusnavigation, basierend auf dem Datenbestand von beispielsweise Google Earth. Bei dieser Anwendung 1 http://cs.nyu.edu/%7Ejhan/ 14 2.3. Multitouch-Table Software kann der Benutzer mit Berührungen durch eine dreidimensionale geografische Darstellung der Erde navigieren. Darüber hinaus existieren zahlreiche Anwendungen für Präsentationszwecke. Beispielsweise nutzte der amerikanische Fernsehsender NBC bei der Präsidentenwahl 2008 Microsoft Surface, um die Wahlergebnisse für den Zuschauer zu veranschaulichen. Abbildung 2.13: Microsoft Surface bei der Präsidentenwahl auf dem Sender NBC. [WB09] Darüber hinaus gibt es zahlreiche Terminal-Anwendungen zur Informations-Visualisierung und Bearbeitung, auf die später genauer eingegangen wird. 2.3.4 Virtuelle Musikinstrumente Eine gängige Multitouch-Anwendung im Bereich der Musikinstrumente ist die Umsetzung eines Pianos [UL09]. Auf dem Bildschirm werden die Tasten eines Pianos dargestellt und können durch Berührung des Bildschirms gespielt werden. Ein neuartiges, auf der Technologie des Multitouch-Table basierendes elektronisches Musikinstrument, ist der reacTable. Durch das Platzieren und Manipulieren von fiducials markierten Objekten auf dem reacTable können verschiedene Elemente, wie Synthesizer, Effekte, Loops oder Kontrollelemente, zum Erzeugen von Musik gesteuert und miteinander verbunden werden (siehe Abbildung 2.14). 15 2.3. Multitouch-Table Software Abbildung 2.14: Interaktionen mit dem reacTable durch die Manipulation von Objekten. c reacTable 2.3.5 Grafik-Erstellung und -Bearbeitung Zahlreiche Anwendungen zur Grafikerstellung für Multitouch-Tables liegen bereits vor [UL09]. Überwiegend sind es Technik-Demos zum Malen in verschiedenen Farben durch Berührungen. Im Demonstrationsvideo von Jefferson Han ist eine Anwendung zu sehen, die zusätzlich aus verbundenen Linien Vektorgrafiken erstellte und diese an automatisch erstellten Bones durch Berührung bewegt werden konnten. Das Projekt Shared Design Space der Fachhochschule Oberösterreich ermöglicht darüber hinaus das Zeichnen mit digitalen Stiften. Die Anwendung wurde für einen überdimensionalen Multitouch-Table geschrieben und ermöglicht das gleichzeitige Arbeiten mehrere Personen an einer Zeichnung oder einem Bild. Eine weitere nennenswerte Anwendung ist Photoshop MT. Photoshop MT ist ein Bildbearbeitungsprogramm und wurde an der Hochschule für Gestaltung in Schwäbisch Gmünd entwickelt. Neben dem Zeichnen bietet es zusätzlich eine Anzahl von Funktionen, die für Bildbearbeitungssoftware typisch sind. Es steht nicht mit der gleichnamigen Software der Firma Adobe in Verbindung. c Abbildung 2.15: Bedienung von Photoshop MT durch langes Drücken. Envis-Precisely 16 2.3. Multitouch-Table Software 2.3.6 Spiele Im Bereich der Computerspiele finden sich weitere Einsatzgebiete des Multitouch-Tables [UL09] [WF09]. Ein vor allem für den Bereich der Spielerstellung genutzter Vorteil des Multitouch-Tables gegenüber anderen Eingabegeräten ist die Multi-Benutzer-Fähigkeit. Sie ermöglicht das Zusammenspielen mehrerer Personen an einem Tisch. Ein bekanntes Spiel, welches diese Möglichkeit nutzt, ist das von UI Centric auf den MultitouchTable übertragene Air Hockey. Es gewann große Popularität, da es auf einem sehr großen 103 Zoll Panasonic Plasma-TV mit U-Touch Overlay präsentiert wurde. Der Spieler schlägt mit einem virtuellen Schläger, welcher mit dem Finger gesteuert wird, einen ebenso virtuellen Puck. Ziel des Spiels ist es, den Puck in das Tor des Gegenspielers zu stoßen und Treffer im eigenen Tor abzuwehren. Einen hohen Bekanntheitsgrad erreichte das Spiel RUSE der Firma Ubisoft. Es ist ein technisch hochwertiges Strategiespiel, es kann mit Maus und Tastatur bedient werden und bietet darüber hinaus volle Multitouch-Unterstützung. Bei RUSE handelt es sich um ein Strategiespiel, welches die Touchsteuerung nutzt, um, ähnlich der Globusnavigation, durch eine 3D Karte zu steuern und militärischen Einheiten Befehle zu erteilen. c Abbildung 2.16: Das Strategie-Spiel RUSE auf einem Multitouch-Table. Ubisoft 2.3.7 Terminal-Anwendungen Terminal-Anwendungen unterscheiden sich von den bisher aufgeführten Anwendungsbereichen [UL09] [WB09]. Ungelernte Benutzer sollen die Multitouch-Anwendungen bedienen können. Das impliziert das Verstehen der Bedienung ohne Anleitung, auch Menschen, die den täglichen Umgang mit Computersystemen nicht praktizieren. Terminal-Anwendungen werden überwiegend im Bereich der Informationsstände genutzt. Diesen Anwendungsbereich dominiert Microsoft Surface. Gründe hierfür sind die führende Marktposition von Microsoft sowie der frühe Start des Systems. AT & T Mobility wendet Microsoft Surface an, um dem Kunden durch Auflegen von markierten Handys Informationen zu diesen auf dem Tisch zu präsentieren. BMW nutzte bereits Microsoft Surface zur Konfiguration seiner Fahrzeuge durch den Kunden. Im Rio All-Suite Hotel sowie in Casinos können mit Microsoft Surface Getränke gemixt und bestellt werden (siehe Abbildung 2.17). Die Einsatzmöglichkeiten von Multitouch-Terminals sind nahezu grenzenlos. 17 2.4. Schlussfolgerung und Zusammenfassung Abbildung 2.17: Microsoft Surface Terminal-Anwendung zum Bestellen von Essen und Getränken. c Microsoft 2.4 Schlussfolgerung und Zusammenfassung Im Kapitel Stand der Technik wurde ein Überblick über die vorhandene Hard- und Software des Multitouch-Tables geschaffen. Die vorhandenen Technologien zur Umsetzung eines multitouchfähigen Systems wurden vorgestellt. Die elektrischen Ansätze zur Umsetzung eines multitouchfähigen Systems basieren auf der Messung von Spannung beziehungsweise Strom. Da diese Systeme kompakt sind und günstig produziert werden können, kommen sie hauptsächlich in mobilen Geräten zur Anwendung. Die kapazitive Technologie kann nur Finger und bestimmte Stifte erkennen. Sie ist widerstandsfähig gegenüber Beschädigungen. Nachteil der resistiven Technologie ist die geringe Lichtdurchlässigkeit. Der mechanische Ansatz der despersive signal Technologie basiert auf der Messung von Vibrationen. Hierbei können nur Berührungen und Bewegungen identifiziert werden. Stillstehende Objekte und Finger werden nicht erkannt. Diese Technologie wird hauptsächlich in öffentlichen Systemen verwendet, da sie weitgehendst resistent gegenüber Beschädigungen ist. Der akustische Ansatz der surface acoustic wave Technologie basiert auf dem Messen von Schallwellen. Hierdurch wird es möglich, den Druck einer Berührung zu messen. Dieses System schafft optimale Transparenz. Eine große Auswahl an Technologien bietet der optische Ansatz zur Umsetzung eines multitouchfähigen Systems. Der Großteil dieser Systeme ist identisch aufgebaut und unterscheidet sich nur in der Art der Beleuchtung von Infrarotlicht, welches von einer Kamera aufgenommen und ausgewertet wird. Die Systeme unterscheiden sich im Kontrast der Berührungen und bei der Genauigkeit der Objekterkennung. Schwächen gegenüber Infraroteinstrahlung von außen sind bei beiden Systemen vorhanden. Alle hier vorgestellten Systemen können eine unbegrenzte Anzahl von Fingern gleichzeitig erkennen, es gibt keine sensorischen Einschränkungen. Ein weiterer optischer Ansatz ist die Messung des Infrarotlichts mit Sensoren. Systeme, die diesen Ansatz nutzen, können problemlos auf 18 2.4. Schlussfolgerung und Zusammenfassung vorhandene Bildschirmsysteme montiert werden. Die Wahl der Technologie für einen Multitouch-Table sollte unter Berücksichtigung des Einsatzbereiches und der Größe des Tisches getroffen werden. Anhand von Softwarebeispielen wurde eine Übersicht über die verschiedenen Anwendungsbereiche des Multitouch-Tables geschaffen. Trotz der vielfältigen Anwendungsmöglichkeiten ist das Angebot an unterschiedlichen Softwarekonzepten für den Multitouch Table, aufgrund der beschränkten Verbreitung des Systems, bisher noch gering. Ein wesentlicher Faktor für die Verbreitung der Technologie stellt die Verfügbarkeit von Betriebssystemen dar. Die Touchscreenunterstützung von Windows 7 könnte die Verbreitung der Technologie bei Privatanwendern fördern. Im Bereich der Spiele zum Beispiel wurde durch Windows 7 die Anwendung RUSE der Firma Ubisoft mit Touchunterstützung erst für Privatanwender möglich. Viele der Anwendungen wurden zu Forschungs- oder Testzwecken an Universitäten und Fachhochschulen entwickelt und dienen der Technologiedemonstration. Auch Photoshop MT zur GrafikErstellung und -Bearbeitung wurde an einer Hochschule entwickelt. Der reacTable, ein neuartiges Musikinstrument, entstand im Rahmen eines Forschungsprojektes an einer spanischen Universität. Ein großer Teil der Anwendungen wurde nur für gewisse Präsentationszwecke geschrieben und nicht kommerziell vertrieben. Andere Anwendungen wiederum, wie beispielsweise Microsoft Surface, werden nur in Verbindung mit der entsprechenden Hardware verkauft. Kommerziell erfolgt die Nutzung des Multitouch-Table schon heute sehr erfolgreich. Die überwiegend intuitive und beobachtbare Bedienung macht die Steuerung der Anwendungen einfach, verständlich und nachvollziehbar. Dies sind optimale Vorraussetzungen zur Informationsvisualisierung, es weckt Neugier und lädt dazu ein, selbst aktiv zu werden. Daher wird der Multitouch-Table als TerminalAnwendung häufig zur Produktwerbung oder Informationsverbreitung bereits eingesetzt. In jedem seiner vielfältigen Einsatzbereiche ermöglicht der Multitouch-Table neue Erfahrungen der einfachen Interaktion mit Computerprogrammen. In Kapitel 3 werden die in den vorgestellten Anwendungsbereichen umgesetzten Konzepte zur Interaktion an einem Multitouch-Table analysiert. Es erfolgt eine Überprüfung, welche der vorhandenen Konzepte die Beschleunigung oder Geschwindigkeit einer Bewegung nutzen. 19 Kapitel 3 Konzepte zur Interaktion an einem Multitouch-Table Im Kapitel Stand der Technik wurden die verschiedenen technischen Ansätze zur Umsetzung eines Multitouch-Tables sowie die vielseitigen Anwendungsbereiche der bereits vorhandenen Software für solch ein System vorgestellt. Auf der Grundlage dieser Ergebnisse wird überprüft, welche Konzepte zur Interaktion die Anwendungen für den Multitouch-Table nutzen. Verschiedene Konzepte werden kategorisiert und deren Anwendung und Funktionsweise untersucht. Besonderes Augenmerk wird hier auf die Nutzung der Bewegungsgrößen von Benutzereingaben gelegt, um zu prüfen, in wie weit Beschleunigung oder Geschwindigkeit einer Bewegung zur Interaktion genutzt werden. 3.1 Einleitung Die bereits umgesetzten Konzepte berührungsintensiver Interaktion zwischen Anwender und Computer werden in diesem Kapitel untersucht. Bereits vorhandene Konzepte und die dahinterstehende Aktion auf dem Touchscreen werden vorgestellt, sowie die genutzten Anwendungsmöglichkeiten der Konzepte erörtert. Soweit möglich, folgt die Erläuterung der hinter dem Konzept stehenden Funktionsweise. Die Eingabemöglichkeiten werden in zwei Kategorien unterteilt. Die Interaktion durch Berührung des Touchscreens mit einem oder mehrerer Finger und die Interaktion durch reale, mit fiducials markierten Objekten. Die bisher genutzten Konzepte zur Interaktion an einem Multitouch-Table werden anhand von kostenlosen Anwendungen und Demonstrationsvideos analysiert. Die Funktionsweisen der Interaktionsmöglichkeiten werden anhand des Quellcodes der touchlib Beispielanwendungen überprüft. Touchlib ist eine von NUI-Group bereitgestellte Bibliothek zur Multitouch-Interaktion. Diese Bibliothek enthält mehrere beispielhafte Anwendungen, wie zum Beispiel eine Foto-Applikation. 20 3.2. Finger 3.2 Finger Das folgende Unterkapitel befasst sich mit den vorhandenen Interaktionskonzepten an einem MultitouchTable durch Berührung mit einem oder mehreren Fingern. Vorweg ist anzumerken, dass in der Studie Touch it, move it, scale it - Multitouch festgestellt wurde, dass die Interaktion mit mehreren Fingern Benutzern schwerer fällt als die Interaktion mit nur einem Finger [MB09]. Nachfolgende Interaktionskonzepte zur Finger-Interaktion an einem Multitouch-Table wurden bereits in Anwendungen umgesetzt: • Drücken Das Drücken von Schaltflächen durch eine Berührung des Touchscreens, gefolgt vom Anheben des oder der Finger. • Ziehen und Fallenlassen (Drag & Drop) Die Bewegung von dargestellten Inhalten durch die Bewegung eines oder mehrerer Finger über den Touchscreen. • Rotation Die Rotation eines dargestellten Objektes mit einem oder zwei Fingern. Bei der Rotation mit einem Finger wird durch eine Kreisbewegung um eine, in der Mitte des Objektes festgelegte, Achse rotiert. Bei der Rotation mit zwei Fingern kann diese Achse mit dem anderen Finger festgelegt werden. • Skalieren Das Skalieren von dargestellten Inhalten durch Zusammenführen oder Auseinanderführen zweier Finger auf dem Touchscreen. • Bildlauf (Scrolling) Die Bewegung innerhalb eines Bildschirminhaltes durch eine Bewegung entgegen der Scrollrichtung. • Stoßen Das Wegstoßen von dargestellten Objekten durch eine stoßartige Bewegung in eine Richtung. • 3D Navigation Die Navigation durch dreidimensionale Welten durch leichte Abwandlung der Konzepte des Bildlaufs, der Rotation und der Skalierung. 3.2.1 Drücken Eine der einfachsten und am häufigsten genutzten Interaktionsmöglichkeiten ist das Drücken [WF09]. Hierbei handelt es sich um eine Berührung des Touchscreens durch einen oder mehrere Finger, gefolgt vom Anheben des Fingers, beziehungsweise der Finger. Hierbei gibt es verschiede Konzepte und Abstufungen. Häufig werden nur die X- und Y-Koordinaten der Berührung des Bildschirms ausgelesen und das auf diesen Koordinaten liegende Element beim Berühren oder Loslassen aktiviert. Manche Systeme lesen zusätzlich die Dauer der Berührung aus, um langen Berührungen der selben X- und Y-Koordinaten eine andere Funktion zuzuteilen. Dies wird 21 3.2. Finger beispielsweise bei Microsoft Windows 7 genutzt, um den schon durch andere Microsoft Produkte bekannten Rechts-Klick zu ersetzen, welcher weitere Bedienungsmöglichkeiten einblendet. Kaum eine Anwendung kommt ohne das Drücken von auf dem Touchscreen dargestellten Schaltflächen aus. Vor allem einfach aufgebaute System wie Navigationsgeräte, Informationsterminals oder Fahrkartenautomaten arbeiten ausschließlich mit dieser Eingabemöglichkeit. c Abbildung 3.1: Bedienung der Bildschirmtastatur durch Drücken. Mindflow 3.2.2 Ziehen und Fallenlassen (Drag & Drop) Die Multitouch Betriebssysteme Windows 7, MPX Linux und andere Anwendungen, in denen Daten, wie beispielsweise Fotos oder Videos verwaltet werden, nutzen Drag & Drop zur intuitiven Steuerung [WF09] [Mul08]. Überschneiden sich die Koordinaten einer Berührung mit einem auf dem Bildschirm dargestellten bewegbaren Objekt, folgt dieses dem Finger so lange die Berührung anhält. Jegliche Differenz der Koordinaten des Fingers wird auch auf die Koordinaten des Objektes übertragen. Wird der Finger wieder vom Touchscreen entfernt, bleibt das Objekt an der neuen Position stehen. c Abbildung 3.2: Verschieben von Fotos mit dem Finger durch Drag & Drop. Microsoft 22 3.2. Finger 3.2.3 23 Rotation Zur Rotation von Objekten werden zwei gängige Konzepte genutzt - zum Einen die Rotation eines Objektes mit einem Finger, welche auch bei manchen Anwendungen mit Drag & Drop zusammen verwendet wird und zum Anderen die Rotation mit zwei Fingern [Mos07] [Mul08] [WF09]. Bei beiden Varianten wird die atan2 Funktion genutzt, welche einen Winkel im Bogenmaß zurück gibt, dessen Tangens der Quotient zwei angegebener Zahlen ist. Bei der Rotation mit einem Finger werden die Koordinaten des Mittelpunktes des zu rotierenden Objektes von den Koordinaten des Fingers subtrahiert. Diese X- und Y-Differenzwerte werden mit Hilfe der atan2 Funktion in einen Winkel umgerechnet. Wird dieser Winkel mit Pi/180 multipliziert, erhält man den Winkel im Grad-Maß, der als Rotationswinkel verwendet werden kann. Ähnlich wie schon beim Drag & Drop-Verfahren wird jegliche Differenz dieses Winkels während der Berührung auf die Rotation des Objektes übertragen. Abbildung 3.3: Atan2 Funktion bei der Rotation mit einem Finger. Bei der Rotation eines Objektes mit zwei Fingern wird wie bei der Rotation mit einem Finger verfahren. Allerdings wird nicht mit der Distanz zum Mittelpunkt gerechnet, sondern mit der Distanz der beiden das Objekt berührenden Finger. Beide Verfahren finden Anwendungen in Applikationen zum Verwalten und Betrachten von Fotos. 3.2.4 Skalieren Das Skalieren erfolgt bei Multitouch Anwendungen mit zwei oder mehr Fingern [Mos07] [Mul08] [WF09]. Die Entfernung zweier Berührungspunkte wird mit dem aktuellen Zoomfaktor gleichgesetzt. Wird die dazwischen liegende Strecke durch Zusammenführen oder Auseinanderbewegen der Finger verändert, wirkt sich dies auf den Zoomfaktor aus. Der Zoomfaktor wird in der Regel proportional zur Differenz der Strecke zum vorherigen Messpunkt verändert. 3.2. Finger 24 Ein weiterer Anwendungsbereich für diese Technik ist die Verwendung bei Fotoverwaltungs- und Fotovisualisierungs-Programmen, um die Größe eines Bildes zu manipulieren. Hier wird die X-und Y-Differenz der Berührungspunkte auf die X- und Y-Größe des berührten Bildes übertragen. c Abbildung 3.4: Skalierung eines Bildes mit zwei Fingern. Mindflow 3.2.5 Bildlauf (Scrolling) Als Bildlauf wird das Bewegen innerhalb von Bildschirminhalten bezeichnet [WF09]. Was mit der Computermaus mithilfe eines Scrollbalkens am Rande der Anwendung gelöst wird, funktioniert bei Touchanwendungen ohne diesen. Die zu scrollende Anwendung wird berührt und entgegen der Scrollrichtung bewegt. c Abbildung 3.5: Seitliches Scrollen bei einer Microsoft Surface Anwendung. Microsoft Bewegt man den Finger von der Mitte des Bildschirms nach oben, bewegt sich der zu scrollende Inhalt ebenfalls mit nach oben und es wird nach unten gescrollt. Technisch wird hier wie beim Drag & Drop-Verfahren vorgegangen. Jegliche Differenz der Koordinaten des Fingers wird auf den zu scrollenden Inhalt übertragen. Wenige Anwendungen, wie Microsoft Surface, nutzen hier zusätzlich 3.2. Finger die Geschwindigkeit einer Scrollbewegung, was bei größeren Scrollvorgängen von großem Vorteil ist. Nach einer schnellen Bewegung scrollt der Inhalt weiter und die Scrollgeschwindigkeit wird erst langsam, von einem festgelegten Wert ausgehend verringert. Die touchlib-Beispielanwendung Tangram nutzt ebenfalls dieses Konzept, um durch Inhalte zu scrollen. 3.2.6 Stoßen Das Stoßen wurde bisher nur in einem Air-Hockey-Spiel der Firma UI Centric1 genutzt. Es wurde für den damals größten Multitouch-Table der Welt entwickelt und erlangte große Popularität. Der Tisch basiert auf einem 103 Zoll Panasonic Plasma-TV mit einem U-Touch-Overlay. Air Hockey, ein Geschicklichkeitsspiel konzipiert für zwei Spieler, wird herkömmlich auf einer billardtischgroßen, ebenen Platte gespielt. Ziel des Spiels ist es, einen Puck mit Hilfe eines Schläger in das Tor des Gegners zu spielen. Durch Löcher im Tisch wird Luft geblasen, sodass unter dem Puck ein Luftkissen entsteht. Aufgrund dieses Luftkissens gleitet der Puck beinahe ohne Reibungswiderstand und erreicht hohe Geschwindigkeiten. Das Spielprinzip wurde von UI Centric auf den Multitouch-Table übertragen. Hier schlägt der Spieler mit einem virtuellen Schläger, welcher mit dem Finger gesteuert wird, den ebenso virtuellen Puck. Das Stoßen konnte in seiner Funktionsweise als einziges Konzept nicht überprüft werden, da es bisher nur in UI Centrics Air Hockey umgesetzt wurde und der Quelltext dieser Anwendung nicht verfügbar ist. Abbildung 3.6: UI Centrics Air Hocky auf einem 103 Zoll Panasonic Plasma-TV mit U-Touchc Overlay. UI-Centric 3.2.7 3D Navigation Die 3D-Navigation findet vor allem bei der Globusnavigation Verwendung [Mul08]. Sowohl für Google-Earth als auch für Nasa-World-Wind existieren bereits Multitouch-Interfaces. Bei diesen Anwendungen wird der Globus von oben betrachtet. Durch die schon bekannte Aktion des Skalierens kann der Zoomfaktor der Kamera beeinflusst werden. Die Erdkugel kann darüber hinaus durch 1 http://www.uicentric.net/ 25 3.3. Fiducials (Objekte) eine Rotation mit zwei Fingern oder durch eine dem Scrollvorgang sehr ähnliche Bewegung rotiert werden. Zusätzlich erfolgt beim Rotieren der Erdkugel das Auslesen der Geschwindigkeit einer Bewegung, um den Globus nach einer schnellen Rotationsbewegung noch weiter schwingen zu lassen. Dies ist bei größeren Rotationsvorgängen von Vorteil, sie werden beschleunigt und vereinfacht. c Abbildung 3.7: Nasa World Wind auf einem Multitouch-Table. NASA 3.3 Fiducials (Objekte) Viele Multitouch-Tables können, neben den Bildschirm berührenden Fingern, auch Objekte erkennen. Durch bestimmte Markierungen an einem Gegenstand, sogenannte fiducials, kann dieser vom System eindeutig erkannt werden (siehe Abbildung 3.8). Zusätzlich zu den Positionsdaten können auch Daten über die Rotation des Objektes anhand der Markierungen erkannt werden. c Abbildung 3.8: Von Reactivision verwendete Markierungen für Objekte. Reactivision Folgende Konzepte zur Objekt-Interaktion werden umgesetzt und untersucht: • Auflegen Das Auslösen einer Aktion durch das Auflegen eines markierten Objektes auf den Touchscreen. 26 3.3. Fiducials (Objekte) • Rotationsausrichtung Die Manipulation von Einstellungen durch die Rotationsausrichtung eines Objektes. 3.3.1 Auflegen Durch das Auflegen eines Objektes mit einer bestimmten Markierung auf den Touchscreen wird eine Aktion ausgeführt [WB09]. Microsoft Surface nutzt dies beispielsweise, um Informationen zu einem auf den Multitouch-Table gestellten Getränk durch eine Markierung am Glas zu liefern. Beim BMW-Product-Navigator, der ebenfalls auf Microsoft Surface basiert, wird die Farbe des Autos und der Inneneinrichtung durch das Auflegen von Objekten manipuliert. Die Farbe des Objektes dient hier als Muster für die Farbänderung, die durch das Auflegen des Objektes erfolgt. c Abbildung 3.9: Farbauswahl beim BMW-Product-Navigator durch Auflegen des Musters. BMW 3.3.2 Rotationsausrichtung In vielen Anwendung werden Einstellungen durch die Rotationsausrichtung eines aufgelegten Objektes manipuliert [WB09]. Die Einstellung kann in diesem Fall Verschiedenes bedeuten. In einigen Anwendungen, wie dem Audi-Car-Configurator, werden Menüpunkte, die um das aufgelegte Objekt erscheinen, mithilfe der Rotation ausgewählt (siehe Abbildung 3.10). Auch beim reacTable werden verschiedene Komponenten zum Musikerzeugen durch Rotationsausrichtung manipuliert. Durch das Auflegen von Objekten können Komponenten zum Musikerzeugen hinzugefügt werden. Die Einstellungen der Komponenten werden durch Rotation des Objektes verändert und eine um das Objekt dargestellte Skala macht eine Orientierung möglich, sie zeigt die momentane Einstellung. 27 3.4. Schlussfolgerung und Zusammenfassung c Abbildung 3.10: Farbauswahl beim Audi Car Configurator durch Objektrotation. Audi 3.4 Schlussfolgerung und Zusammenfassung In diesem Kapitel wurden die bereits umgesetzten Konzepte zur Interaktion an einem MultitouchTable vorgestellt. Es wurde zwischen der Interaktion mit Fingern und Objekten unterschieden. Bei der Fingerinteraktion werden die Bewegungsgrößen der Benutzereingaben bisher selten genutzt. Das Konzept des Drückens verwendet die Koordinaten einer Berührung. In manchen Anwendung bestimmt zusätzlich die Dauer der Berührung die auszuführende Aktion. Bei den Konzepten des Drag & Drop, der Rotation und des Skalierens werden ebenfalls die Koordinaten der Berührung verwendet. Jegliche Veränderung der Position eines Fingers wird hier, je nach Konzept auf unterschiedliche Weise, auf den berührten Bildschirminhalt übertragen. Beim Konzept des Scrollens wird ebenfalls jegliche Veränderung der Position des Fingers auf den Bildschirminhalt übertragen. In wenigen Anwendungen erfolgt die Nutzung der Geschwindigkeit der Bewegung, um das Scrollen durch große Inhalte zu erleichtern. Nach dem Loslassen des Fingers wird die Geschwindigkeit der Bewegung an den zu scrollenden Inhalt übertragen und erst langsam wieder abgebaut. Das Konzept des Stoßens basiert als einziges Konzept auf der Nutzung der Bewegungsgrößen von Benutzereingaben. UI-Centric verwendet es, um das Spiel Air-Hockey auf den Multitouch-Table zu übertragen und schafft damit ein realistisches Spielgefühl. Zur 3D-Navigation werden die Konzepte des Skalierens, Scrollens und der Rotation in minimal abgeänderter Form verwendet. Da hier meist durch sehr große Inhalte, wie beispielsweise die Erde, navigiert wird, erfolgt das Auslesen und Nutzen der Geschwindigkeit. Das Zurücklegen von großen Strecken mit wenigen Bewegungen ist möglich. Mit Ausnahme des Konzepts des Stoßens dienen die Bewegungsgrößen bei der Fingerinteraktion bisher nur optional der Bewegung innerhalb großer Bildschirminhalte. Größere Veränderungsschritte können hier durch weniger Bewegungen erledigt werden. Bei den Interaktionsmöglichkeiten mit Objekten erfolgte bisher keine Nutzung der Bewegungsgrößen. Die Interaktionsmöglichkeiten beschränkten sich auf das Platzieren und Ausrichten der Rotation an einer um das Objekt dargestellten Skala. Bei der Untersuchung der Konzepte zeigte sich, dass trotz der bereits vielfältigen verschiedener Anwendungsbereiche des Multitouch-Tables bisher nur wenige unterschiedliche Konzepte zur Inter- 28 3.4. Schlussfolgerung und Zusammenfassung aktion vorliegen. Alle bisherigen Konzepte zur Interaktion bieten eine intuitive Bedienung. Die Konzepte der FingerInteraktion bedienen sich dem beim Anwender bereits vorhandenen Wissen über die Interaktion mit realen Objekten. Zur Interaktion werden Gesten genutzt, die häufig im Alltag mit gleichem Effekt ausgeführt werden. Schon im Kindesalter wird beispielsweise das Drücken von Knöpfen oder das Verschieben von Gegenständen erlernt. Eine Vielzahl der Touchscreen-Anwendungen simuliert gewissermaßen das Interagieren mit realen Objekten. Die Interaktion mit realen Objekten auf dem Touchscreen versucht, die reale und virtuelle Welt miteinander zu verbinden. Beispielsweise ist die Manipulation durch den Rotationswinkel eines Objektes identisch mit dem Drehen an einem Lautstärkeregler. Die Physik spielt bei der Interaktion mit realen Objekten eine große Rolle, die physikalischen Größen der Beschleunigung und Geschwindigkeit einer Bewegung werden jedoch nur selten in TouchscreenAnwendungen eingesetzt. UI-Centrics Air-Hockey für den Multitouch-Table zeigt, dass durch Nutzung der Bewegungsgrößen ein realistisches Spielgefühl geschaffen werden kann. Bei vielen Spielen könnte eine Steuerung durch Beschleunigung oder Geschwindigkeit einer Bewegung ein neues Spielgefühl unterstützen. Das Potential der Möglichkeiten zur Nutzung der Bewegungsgrößen von Benutzereingaben wird bisher nur ansatzweise genutzt. In vielen Anwendungsbereichen des Multitouch-Tables bietet sich das Auslesen der Beschleunigung oder Geschwindigkeit zur Interaktion an. Im folgenden Kapitel werden neue Konzepte zur Interaktion an einem Multitouch-Table mit Nutzung der Bewegungsgrößen von Benutzereingaben entwickelt und anschließend in Beispielanwendungen umgesetzt und bewertet. 29 Kapitel 4 Konzeptentwicklung Im vorherigen Kapitel erfolgte die Vorstellung der bereits umgesetzten Konzepte zur berührungssensitiven Interaktion an einem Multitouch-Table. Auf deren Funktionsweise und mögliche Anwendungsbereiche wurde eingegangen. Hierbei zeigte sich, dass es kaum Konzepte gibt, die Geschwindigkeit oder Beschleunigung zur Anwendungssteuerung nutzen. Dieses Kapitel befasst sich mit der Entwicklung neuer Konzepte zur Interaktion mit einem MultitouchTable, die auf der Nutzung der Bewegungsgrößen von Benutzereingaben basieren. Darüber hinaus werden Konzepte entwickelt, welche dem Benutzer die Geschwindigkeitskontrolle erleichtern sollen. Zusätzlich werden mögliche Anwendungsbeispiele zur Nutzung der neuen Konzepte benannt. 4.1 Einleitung Die Intuitivität steht bei Touchscreen-Anwendungen im Vordergrund. Auch die neuen Konzepte mit Nutzung der Bewegungsgrößen der Benutzereingaben sollen diese Anforderung erfüllen. Im besten Fall werden ähnliche Aktionen im Alltag durchgeführt und mit der Funktion in der TouchscreenAnwendung assoziiert. Die Funktionsweisen der neuen Konzepte werden erläutert und Anwendungsmöglichkeiten in Applikationen für den Multitouch-Table vorgestellt. Darüber hinaus befasst sich dieses Kapitel mit der Entwicklung von Konzepten, die den Umgang mit Geschwindigkeit erleichtern sollen. Für die Entwicklung neuer Konzepte mit Nutzung der Bewegungsgrößen von Benutzereingaben ist es erforderlich, die Bewegungsgrößen Geschwindigkeit und Beschleunigung zu definieren [EH02]. Geschwindigkeit Unter Geschwindigkeit versteht man die zurückgelegte Wegstrecke innerhalb einer bestimmten Zeitspanne. Je größer die Geschwindigkeit, umso größer ist der zurückgelegte Weg innerhalb dieses Zeitraums. Die Geschwindigkeit berechnet sich, indem der zurückgelegte Weg durch die benötigte Zeit dividiert wird. Die Geschwindigkeit einer Bewegung entspricht demnach der zurückgelegten Strecke eines Fingers, dividiert durch die Zeitspanne, in der ein Finger den Bildschirm berührt. Geschwindigkeit = X1−X2 Z1−Z2 30 4.2. Konzepte mit Nutzung der Bewegungsgrößen X1 = Anfangsposition X2 = Endposition Z1 = Anfangszeit der Berührung Z2 = Endzeit der Berührung Beschleunigung Die Beschleunigung definiert jegliche Änderung der Geschwindigkeit. Sie ist umso größer, je stärker sich die Geschwindigkeit innerhalb einer Zeitspanne ändert. Folglich kann die Beschleunigung als Differenz der Geschwindigkeit zu verschiedenen Zeitpunkten verstanden werden. Beschleunigung = G1 − G2 G1 = Geschwindigkeit zum Zeitpunkt a G2 = Geschwindigkeit zum Zeitpunkt b 4.2 Konzepte mit Nutzung der Bewegungsgrößen Nachdem die Bewegungsgrößen definiert wurden, folgt die Entwicklung neuer Konzepte mit der Nutzung dieser Bewegungsgrößen. Die Intuitivität und Funktion der Konzepte steht hierbei im Vordergrund. 4.2.1 Geschwindigkeit einer Objektrotation Ein häufig umgesetztes Konzept ist die Bedienung einer Anwendung durch die Rotationsausrichtung eines auf den Display gelegten realen Objektes. Wie bei vielen Konzepten zur Multitouch-Interaktion werden Bedienungselemente, die sich bewährt haben, nachgeahmt. Als Beispiel sind die Regler eines Mischpultes zu nennen. Die Geschwindigkeit der Rotation eines Objektes zur Manipulation von Einstellungen wird bereits real genutzt. Beispielsweise haben viele Musikverstärker zum Verstellen der Lautstärke keine Skala am Rad (siehe Abbildung 4.1). Das Rad lässt sich beliebig ohne Anschlagspunkt in beide Richtungen rotieren, da sich die Skala nicht direkt am Rad befindet. Dieses Konzept lässt sich auf den Multitouch-Table übertragen und noch erweitern. Die Manipulation von Einstellungen durch die Rotationsgeschwindigkeit eines auf den Display gestellten Objektes ermöglicht eine intuitive und effiziente Steuerung. Große Einstellungsschritte können durch eine schnelle Rotation und kleine, präzise Einstellungsschritte durch eine langsame Rotation vorgenommen werden. Die Rotation beschränkt sich dabei nicht auf eine 360 Grad-Anwendung. Der Vorteil bei besonders großen Einstellungsschritten besteht darin, dass durch die schnelle Rotation der Benutzer nicht nachfzuassen braucht. Wünscht der Benutzer besonders kleine Veränderungsschritte, ist eine in kleinsten Schritten mögliche Skalierung, ohne Berücksichtigung einer vorgegebenen Skalierung und Beschränkung auf 360 Grad, gegeben. 31 4.2. Konzepte mit Nutzung der Bewegungsgrößen c Abbildung 4.1: Lautstärkeregler ohne Skala an einem Verstärker. Antec Die Rotationsrichtung gibt an, ob es sich um eine positive oder negative Einstellungsveränderung handelt. Die Rotationsgeschwindigkeit muss in kurzen Zeitabständen gemessen werden. Die angestrebte Veränderung während der Aktion soll fortlaufend für den Benutzer sichtbar sein. Ihm wird hiermit die Möglichkeit gegeben, die erzielte Veränderung einzuschätzen, um sie gegebenenfalls korrigieren zu können. Das Berechnen der Geschwindigkeit erst am Ende der Rotation würde hingegen zu einer Reaktion führen, die einmalig am Ende der Bewegung auftritt. Die fehlende Rückmeldung während der Aktion könnte den Anwender über seine Aktion im Unklaren lassen. Ein weiterer Vorteil besteht in der Bedienung von Skalen, die immer präsent sein sollen, auch wenn das Objekt zum Bedienen sich nicht auf dem Multitouch-Table befindet. Dies ist zum Beispiel bei der Darstellung eines komplexen Mischpultes mit sehr vielen Einstellungen der Fall. c Abbildung 4.2: Unterschiedliche Skalen bei einem Mischpult. Midas Zum Verändern der Skalen müssen beim Konzept der Rotationsausrichtung die Einstellungen zwei mal dargestellt werden. Zu der festen Skala wird eine weitere Skala um das Objekt zur Ausrichtungsorientierung benötigt. Beim Konzept der Rotationsgeschwindigkeit hingegen muss mit dem Objekt nach dem Auflegen nur eine schnelle oder langsame Rotation in die entsprechende Richtung ausgeführt werden, um große oder kleine Einstellungsschritte vorzunehmen. Auch Einstellungen ohne sichtbare Skalen können durch dieses Konzept problemlos bedient werden. 32 4.2. Konzepte mit Nutzung der Bewegungsgrößen Das vorhandene Konzept des Skalierens fällt, wie bereits erwähnt, den Benutzern schwerer, als alle anderen Interaktionskonzepte. Das Skalieren könnte in vielen Anwendungen durch das Konzept der Geschwindigkeit einer Objektrotation gelöst werden. Beispielsweise wäre es möglich, bei der 3D-Navigation, durch die Geschwindigkeit der Rotation, eines auf den Display gelegten Objektes, hinein- und herauszuzoomen. Die Vorteile des schnellen oder langsamen Rotierens wären auch hier von großem Nutzen. Dieses Konzept könnte in Foto-Applikationen Anwendung finden. Da ein Objekt zusätzlich zu den Rotationsdaten auch Positionsdaten liefert, ist der Benutzer, durch entsprechendes Positionieren des Objektes in der Lage, die auszuführende Aktion zu beeinflussen. Zum Einen kann er beim Vorgang des Zoomen mit der gewählten Position des Objektes den Fokus für den Zoomvorgang bestimmen und zum Anderen wird das Skalieren von Fotos durch die Geschwindigkeit einer Objektrotation möglich. Liegt eine Überschneidung der Objektposition mit einem dargestellten Foto vor, kann durch die Rotationsgeschwindigkeit das Foto skaliert werden. 4.2.2 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung Die Anzahl der Interaktionsmöglichkeiten kann durch die Nutzung der Bewegungsgrößen von Benutzereingaben vervielfacht werden. Durch unterschiedliche Bewegungsgeschwindigkeiten ist es möglich, mit der gleichen Bewegung verschiedene Aktionen auszuführen. Hierzu muss die Geschwindigkeit am Ende einer Bewegung gemessen und anschließend kategorisiert werden. In Foto-Applikationen kann so ein Bild durch eine mit einer bestimmten Geschwindigkeit ausgeführten Bewegung auf dem Touchscreen in Richtung Bildschirmrand vom Bildschirm entfernt werden. Dies würde dem Herunterwerfen eines Bildes von einem Tisch ähneln. Ebenso ist denkbar, dass ein Foto auf einem Multitouch-Table, verbunden mit einem Beamer, durch eine schnelle Bewegung in Richtung des Beamers auf diesen projiziert wird. In bestimmten Anwendungen könnte durch eine Bewegung mit einer vorgegebenen Geschwindigkeit über eine bestimmte Strecke die Bildschirmtastatur hervorgerufen werden. Dabei ist denkbar, durch die Bewegungsrichtung den Winkel der aufgerufenen Tastatur zu bestimmen. 4.2.3 Geschwindigkeit einer Bewegung zur physikalischen Interaktion Das Bewegen von Objekten auf einem Multitouch-Table durch Drag & Drop ähnelt dem Verschieben von Gegenständen in der Realität. Hierbei wurde bisher die physikalische Komponente der Geschwindigkeit einer Bewegung vernachlässigt. Werden Gegenstände auf einer glatten Oberfläche mit hoher Geschwindigkeit bewegt, gleiten diese in der Realität so lange weiter, bis sie, bedingt durch die Reibung, zum Stillstand kommen. Dieses Verhalten könnte in Anwendungen genutzt werden, um die Interaktion an einem Multitouch-Table noch realer wirken zu lassen. Hierzu muss die Geschwindigkeit einer Bewegung am Ende der Berührung an das bewegte Objekt weitergegeben werden. Zusätzlich muss eine Simulation der Reibung erfolgen, sonst würde sich das bewegte Objekt unendlich mit dieser Geschwindigkeit weiterbewegen. Die Reibung kann dabei je nach Bedarf stark oder schwach definiert werden. Auch die physikalische Interaktion von bewegten Objekten untereinander trägt zur Echtheit der Simulation bei, wie beispielsweise beim Billard der Fall. 33 4.2. Konzepte mit Nutzung der Bewegungsgrößen In Computerspielen für den Multitouch-Table bietet das Konzept der Nutzung von Geschwindigkeit einer Bewegung eine intuitive und präzise Steuerung. Da Computerspiele gegenwärtig in jeder denkbaren Form existieren, sind die Möglichkeiten zur Nutzung des Konzeptes nahezu grenzenlos. Große Bedeutung könnte dieses Konzept in Spielen erhalten, in denen Objekte mit präzisen Geschwindigkeiten, meist unter Berücksichtigung der physikalischen Interaktion, in bestimmte Richtungen bewegt werden müssen. In einem Golfspiel könnte so beispielsweise der Abschlag eines Balles simuliert werden. Geschwindigkeit und Richtung würde hierbei auf den Schläger übertragen und somit die Flugbahn des Balls bestimmt werden. Eine ähnliche Umsetzung ist auch beim Bowling-Spiel denkbar. Durch die Geschwindigkeit und Richtung einer Bewegung auf dem Touchscreen ließe sich die Geschwindigkeit und Richtung der Kugel bestimmen. Auch bei einem Curling-Spiel könnte dieses Konzept Anwendung finden. Richtung und Geschwindigkeit der Bewegung könnten ausgelesen werden, um den Curling-Stein präzise zu spielen. Zusätzlich ist es denkbar, das Wischen mit diesem Konzept umzusetzen. Schnelles Wischen mit einem Besen kann beim Curling die Reibung des Steins verringern. Mit Hilfe der Messung der Geschwindigkeit einer Auf- und Abbewegung vor dem Stein auf dem Touchscreen wäre dies möglich. Dies bietet große Vorteile gegenüber herkömmlichen Eingabegeräten. Die Vorgänge werden bisher in Spielen meist durch zwei getrennte Aktionen behandelt - zum Einen das Bestimmen der Richtung und zum Anderen das Bestimmen der Geschwindigkeit. Die Geschwindigkeitsbestimmung wird hierbei größtenteils mit Hilfe einer Skala umgesetzt. Ein Wert auf dieser Skala, meist dargestellt in Form eines Balkens, bewegt sich auf und ab. Der Spieler soll durch Drücken einer Taste im richtigen Moment die Geschwindigkeit bestimmen (siehe Abbildung 4.3). Dies ähnelt eher einem Glücksspiel. Abbildung 4.3: Screenshot aus dem Spiel Tiger Woods PGA Tour 08. Rechts unten die Skala zum c Dosieren der Schlagkraft. Electronic Arts Das Dosieren von Geschwindigkeit und die Bestimmung der Richtung durch eine Bewegung auf dem Touchscreen kommt hier der realen Aktion viel näher und ermöglicht eine weitaus präzisere Bestimmung der Werte. 34 4.3. Konzepte zur Steigerung der Benutzerfreundlichkeit 4.2.4 Beschleunigung der Benutzereingaben Bei der Entwicklung von Konzepten mit Nutzung der Beschleunigung von Benutzereingaben trat folgendes Problem auf. Die Beschleunigung definiert jegliche Änderung der Geschwindigkeit und liefert somit nur Werte bei einer Veränderung der Geschwindigkeit, anderenfalls beträgt der Wert Null. Eine Bewegung, die vom Benutzer mit einer kontinuierlichen Geschwindigkeit ausgeführt wird, erzeugt folglich nur am Anfang beim Beschleunigen auf die gewünschte Geschwindigkeit eine Veränderung des Wertes (von dem Stillstand Null bis zur erreichten Geschwindigkeit). Führt der Benutzer die Bewegung unverändert weiter, findet, da keine neuen Werte mehr übermittelt werden, keine weitere Beschleunigung statt, die Aktion wird unterbrochen. Für den Benutzer ist dies nicht nachvollziehbar. Da diese Reaktion im Konflikt mit der Intuitivität der Multitouch-Bedienung steht, findet die Beschleunigung einer Bewegung bei der Entwicklung der Konzepte keine weitere Berücksichtigung. 4.3 Konzepte zur Steigerung der Benutzerfreundlichkeit Um die Benutzerfreundlichkeit der Konzepte von Geschwindigkeit zur physikalischen Interaktion und Geschwindigkeit zur Aktionsdifferenzierung zu erhöhen, erfolgt eine Unterscheidung zwischen fortlaufenden und durch einen kurzen Stopp gebremsten Bewegungen. Zusätzlich wird die Geschwindigkeit einer Objekt bewegenden Berührung visuell dargestellt, um dem Benutzern das Einschätzen der Geschwindigkeit zu erleichtern. 4.3.1 Bewegungsdifferenzierung Bei der Bewegungsdifferenzierung wird unterschieden, ob eine Bewegung aus einem Schwung heraus beendet oder durch Stillhalten des Fingers gestoppt wird. Beim Stoppen des Fingers werden die Anfangswerte der Geschwindigkeitsberechnung auf die aktuellen Werte zurückgesetzt, es erfolgt eine Berechnung der Geschwindigkeit von der neuen Position aus. Dies ermöglicht den Benutzern die intuitive Steuerung der durch eine Bewegung aufgebauten Geschwindigkeit. Dem Benutzer wird die Möglichkeit gegeben, beim Konzept von Geschwindigkeit zur physikalischen Interaktion, selbst zu entscheiden, ob die aufgebaute Geschwindigkeit an das bewegte Objekt weitergegeben werden soll oder nicht. Dies ermöglich sowohl das kontrollierte Verschieben und genaue Positionieren als auch das Wegstoßen von Objekten. Würde diese Unterscheidung nicht vorgenommen, hätte der Benutzer keinerlei Möglichkeiten, das Weiterbewegen eines Objektes nach dem Loslassen zu verhindern. Das Bestimmen einer neuen Abstoßposition für ein Objekt ohne Loslassen wird ebenfalls ermöglicht. Würde der Geschwindigkeitsvektor durch Stoppen an der gewünschten Position nicht zurückgesetzt werden, entstände ein verfälschter Geschwindigkeitsvektor (siehe Abbildung 4.4). 35 4.3. Konzepte zur Steigerung der Benutzerfreundlichkeit Abbildung 4.4: Entstehung eines falschen Geschwindigkeitsvektors beim Positionieren eines Objektes ohne Loslassen. Das Unterscheiden zwischen fortlaufenden und durch einen kurzen Stopp gebremsten Bewegungen ist beim Konzept von Geschwindigkeit zur Aktionsdifferenzierung ebenso von großem Vorteil. Wird eine Bewegung zu schnell ausgeführt, kann durch kurzes Stoppen vor dem Loslassen des Bildschirms die Geschwindigkeit zurückgesetzt werden. Dies verhindert das ungewollte Ausführen von geschwindigkeitsabhängigen Funktionen. 4.3.2 Geschwindigkeitsvisualisierung Da die Geschwindigkeit einer Bewegung für Benutzer schwer einzuschätzen ist, ist es sinnvoll, die Geschwindigkeit die bei der Bewegen eines Objektes aufgebaut wird, optisch darzustellen. Durch eine Verzögerung der Bewegung des Objektes beim Folgen des Fingers ist dies realisierbar. Je schneller sich der Finger bewegt, desto weiter entfernt er sich vom Objekt und umso höher wird dessen Geschwindigkeit. Somit kann der Benutzer anhand der Strecke zwischen Finger und Objekt die aufgebaute Geschwindigkeit abschätzen. Dies steht mit dem Konzept der Bewegungsentscheidung im Einklang. Beim Stoppen einer Bewegung rückt das Objekt der Position des Fingers näher. Verharrt der Finger so lange, bis die Position des Fingers mit der Position des Objektes identisch ist, entspricht die Stecke und die Geschwindigkeit durch das Zurücksetzen dem Wert Null. Anderenfalls würde der Benutzer durch Stillstand des Fingers auf dem Bildschirm nur die Strecke zwischen und Finger und bewegten Objekt auf Null verringern, aber nicht die Geschwindigkeit auf Null setzen. Zusätzlich kann durch diese Bedienung die Rotation eines Objektes während der Bewegung beeinflusst werden. Die Änderung des Winkels zwischen Finger und Objekt kann auf die Rotation des Objektes übertragen werden. Beim klassischen Drag & Drop Verfahren ist dies nicht möglich, da sich die Position des Fingers zum Objekt durch das Übertragen jeglicher Positionsänderung nicht verändert, das heißt, die Bewegung des Fingers und des Objektes werden gleichgesetzt. Beim Konzept von Geschwindigkeit zur physikalische Interaktion hilft dies dem Benutzer, die aufgebaute Geschwindigkeit sowie das Zurücksetzen der Geschwindigkeit präziser einzuschätzen. Werden beim Konzept von Geschwindigkeit zur Aktionsdifferenzierung geschwindigkeitsabhängige Funktio- 36 4.4. Wahl der Anwendungsbeispiele nen beim Bewegen von Objekten ausgeführt, kann diese Hilfe auch hier verwendet werden, um die Geschwindigkeit besser kontrollieren zu können. Das Rotieren beim Bewegen wird in den Anwendungen ebenfalls getestet. 4.4 Wahl der Anwendungsbeispiele Das Konzept der Geschwindigkeit einer Objektrotation zur Anwendungssteuerung wird in einer FotoApplikation umgesetzt und getestet. Durch die Rotationsrichtung und Rotationsgeschwindigkeit eines auf den Display gestellten Objektes soll der Benutzer die Möglichkeit erhalten, den Zoomfaktor der Anwendung zu verändern und Fotos zu skalieren. Die Position des Objektes soll hierbei angeben, welche Aktion durchgeführt wird. Steht das Objekt während der Rotation auf einem dargestellten Foto, soll dieses skaliert werden. Überdeckt es kein Foto, soll das Zoomen durch die Rotation erfolgen. Im Rahmen dieser Testentwicklung kann die Genauigkeit und Intuitivität des Konzeptes überprüft werden. Des Weiteren erfolgt die Erprobung des Konzepts von Geschwindigkeit zur Aktionsdifferenzierung in dieser Foto-Applikation. Die Bestimmung verschiedener Aktionen soll durch die Geschwindigkeit einer Bewegung erfolgen, Fotos sollen wie auch bisher gewohnt mit dem Finger bewegt werden. Findet eine Bewegung des Fotos mit einer schnellen Bewegung in Richtung des oberen Bildschirmrandes statt, soll dieses vom Touchscreen verschwinden und von einem Beamer projiziert werden. Hierbei wird überprüft, ob sich die Aktionen durch unterschiedlich schnelle Geschwindigkeiten komfortabel und intuitiv unterscheiden lassen. Des Weiteren soll das Aufrufen der Bildschirmtastatur durch die Geschwindigkeit einer Bewegung realisiert werden. Hierzu soll zusätzlich die Position und Ausrichtung der Bewegung die Position und Rotation der Tastatur bestimmen, eine weitere Überprüfung der Genauigkeit dieses Konzeptes kann hierdurch erfolgen. Das Konzept von Nutzung der Geschwindigkeit zur physikalischen Interaktion bietet in Spielen für den Multitouch-Table sehr viele Anwendungsmöglichkeiten. Das Konzept soll in der Umsetzung eines Spieles getestet werden, das bisher bereits als Computerspiel existiert und sich großer Beliebtheit erfreut. Es soll überprüft werden, ob es den Spielspaß durch eine intuitive und präzisere Steuerung noch weiter erhöhen kann. Hierfür wurde Curling ausgewählt. Je schneller sich der Finger bewegt, desto weiter entfernt er sich vom Objekt und umso höher ist dessen Geschwindigkeit. Somit kann der Benutzer anhand der Strecke zwischen Finger und Objekt die erreichte Geschwindigkeit abschätzen. Beim Curling-Spiel sollen die Steine mit dem Finger bewegt und auf die Bahn geschleudert werden. Richtung und Geschwindigkeit der Bewegung werden durch Schnelligkeit der Bewegung des Fingers ermittelt und im Moment des Loslassen an den Stein weitergegeben. Da beim Curling die Richtung und Geschwindigkeit von bewegten Objekten, den Steinen, spielentscheidend ist, kann optimal getestet werden, ob das Konzept eine intuitive und präzise Steuerung in Spielen ermöglicht. Die Konzepte der Bewegungsdifferenzierung und Geschwindigkeitsvisualisierung zur Benutzerfreundlichkeit können in beiden Applikationen angewandt und überprüft werden. Des Weiteren kann festgestellt werden, inwiefern diese zur Funktionalität und Kontrolle der auf Geschwindigkeit basierenden Konzepte der Fingerinteraktion beitragen. Beide Anwendungen eigenen sich für die Überprüfung des Anspruches der Intuitivität. 37 4.5. Zusammenfassung 4.5 Zusammenfassung Drei neue Konzepte mit Nutzung der Geschwindigkeit von Benutzereingaben wurden vorgestellt: • Geschwindigkeit einer Objektrotation • Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung • Geschwindigkeit einer Bewegung zur physikalischen Interaktion Diese neu entwickelten Konzepte können vielseitig in Multitouch-Anwendungen genutzt werden. Die Geschwindigkeit einer Objektrotation bietet eine intuitive Manipulation von Einstellungen. Benutzer werden rasch erkennen und verstehen können, dass eine schnelle Rotation große Einstellungsschritte und eine langsame Rotation kleine Einstellungsschritte auslöst. Die Rotationsrichtung gibt zusätzlich an, ob es sich um positive oder negative Einstellungsveränderung handelt. Die Position des Objektes auf dem Bildschirm kann die auszuführende Aktion beeinflussen. Die Überprüfung des Konzeptes findet in einer Foto-Applikation statt. Hier soll es dem Benutzer ermöglicht werden, durch die Rotationsgeschwindigkeit eines auf den Display gestellten Objektes den Zoomfaktor zu verändern und Bilder zu skalieren. Die Nutzung der Geschwindigkeit von Bewegungen zur Aktionsdifferenzierung vervielfacht die unterschiedlichen Eingabemöglichkeiten an einem Multitouch-Table. Es können durch die gleiche Bewegung in verschiedenen Geschwindigkeiten unterschiedliche Aktionen ausgeführt werden. Dieses Konzept wird, wie schon das der Geschwindigkeit einer Objektrotation, in einer Foto-Anwendung getestet. Durch eine schnelle Bewegung eines dargestellten Fotos in Richtung oberen Bildschirmrands soll das Bild auf einen Projektor dargestellt werden. Das Aufrufen der Bildschirmtastatur soll ebenfalls durch eine schnelle Bewegung gelöst werden. Das Konzept zur Anwendung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion kann dazu genutzt werden, Multitouch-Anwendungen noch realer wirken zu lassen. Wird eine Bewegung ausgeführt, werden beim Enden der Berührung die X- und Y- Geschwindigkeiten ausgelesen und genutzt. Vor allem im Bereich der Spiele für den Multitouch-Table ermöglicht es eine intuitive und präzise Steuerung. Dies wird in einem Curling-Spiel erprobt. Der Benutzer soll durch eine Bewegung mit dem Finger über den Touchscreen Geschwindigkeit und Richtung der Curling Steine bestimmen. Außerdem wird versucht, das Konzept des Wischens durch die Geschwindigkeit einer Bewegung zu realisieren. Darüber hinaus wurden zwei Konzept entwickelt, die es dem Benutzer erleichtern sollen, die Geschwindigkeit einer Bewegung mit dem Finger auf dem Touchscreen zu kontrollieren und einzuschätzen: • Bewegungsdifferenzierung • Geschwindigkeitsvisualisierung Bei dem Konzept der Bewegungsdifferenzierung wird zwischen einer endenden Bewegung aus einem Schwung heraus und gestoppten Bewegungen unterschieden. Das Stoppen führt zum Zurücksetzten der Geschwindigkeit der Bewegung. Hierdurch soll der Benutzer Kontrolle über die Geschwindigkeitsauswirkung seiner Aktionen erhalten. 38 4.5. Zusammenfassung Das Konzept der Geschwindigkeitsvisualisierung soll helfen, die aufgebaute Geschwindigkeit einer Bewegung, die eine Objekt bewegt, einzuschätzen. Zusätzlich soll es zum Verständnis und dadurch zur Kontrolle des Zurücksetzung der Geschwindigkeit durch die Bewegungsdifferenzierung dienen. Beide Konzepte werden in der Foto-Applikation sowie im Curling-Spiel umgesetzt, um zu prüfen, ob sie zur Benutzerfreundlichkeit beim Nutzen von Geschwindigkeit beitragen. Das Nutzen der Beschleunigung von Benutzereingaben stellte ein Problem dar. Da nur die Änderung der Geschwindigkeit gemessen wird, würde eine Bewegung mit gleich bleibender Geschwindigkeit auf dem Touchscreen nur am Anfang einen Wert liefern. Obwohl der Benutzer seine Bewegung nicht verändert, wird nach der Anfangsbeschleunigung keine Veränderung mehr ausgelöst. Dies könnte zu einer Verwirrung des Benutzers führen und steht im Gegensatz zur Intuitivität des Multitouch-Tables. Um die Konzepte zu realisieren, müssen Berührungsdaten empfangen und verarbeitet werden. Das nächste Kapitel der technischen Umsetzung befasst sich mit diesem Thema. Nachdem auf die Kommunikation zwischen Reactivision und Flash eingegangen wird, folgt die Dokumentation des Auslesens und Verarbeiten der Berührungsdaten in Flash. 39 Kapitel 5 Technische Umsetzung Im vorherigen Kapitel wurden neue Konzepte mit Nutzung der Bewegungsgrößen zur Interaktion an einem Multitouch-Table entwickelt. Dieses Kapitel befasst sich mit der technischen Umsetzung. Zuerst erfolgt die Vermittlung eines Grundwissen über das Framework zum Auslesen der Berührungsdaten und das TUIO-Protokoll zum Übermitteln der Daten. Anschließend die Erklärung des Auslesens und Verarbeitens dieser Daten in Flash. 5.1 Einleitung Die Anwendungen werden für einen Multitouch-Table, basierend auf der FTIR-Technologie geschrieben. Zum Auslesen und Verarbeiten der Infrarotkamera-Daten wird das Open Source Framework Reactivision verwendet, welches zur Datenübertragung das TUIO-Protokoll nutzt. Nach der Erläuterung des technischen Hintergrundes wird die Verarbeitung der TUIO-Daten in Flash behandelt. Das Empfangen, Auslesen und Verarbeiten der Daten wird erläutert und die dazu benötigten Klassen werden vorgestellt. 5.2 Reactivision Reactivision ist ein plattformunabhängiges Framework für die schnelle und stabile Verfolgung von mit fiducials markierten Objekten, welches darüber hinaus mehrere Finger verfolgen kann [AT09]. Ursprünglich wurde dieses Framework in Spanien an der Universität Pompeu Faba als Teil des reacTable Projektes entwickelt. Der reacTable ist ein neuartiges, elektronisches Musikinstrument, basierend auf der Technologie des Multitouch-Tables. Durch Platzieren und Manipulieren von markierten Objekten auf dem reacTable können verschiedene Elemente, wie Synthesizer, Effekte, Loops oder Kontrollelemente, gesteuert und miteinander verbunden werden, um so Musik zu erzeugen. Reactivision dient hierbei nur zur Erkennung und Verfolgung der Finger und Objekte und enthält selbst keinerlei musikalische Effekte, wie Synthesizer oder ähnliches. Reactivision ist eine eigenständige Anwendung, die eine Open Sound Control (OSC) Nachricht über User Datagram Protokoll (UDP) Port 3333 sendet. Es implementiert das TUIO-Protokoll zur Übermittlung von Informationen wie 40 5.2. Reactivision Position, Rotation oder Geschwindigkeit von markierten Objekten und Fingern. Reactivision bezieht seine Informationen zu Fingern und Objekten über den Echtzeit-Video-Stream der Infrarotkamera. Die Quellbilder werden mit Hilfe eines Algorithmus in Schwarz/Weiß-Bilder umgewandelt. Danach werden diese Schwarz/Weiß-Bilder nach von den fiducials bekannten schwarzen und weißen Regionen abgesucht. Beim Erkennen einer bekannten Schwarz/Weiß-Kombination erfolgt anhand dieser die Zuweisung einer eindeutigen ID. Zusätzlich erhält jedes erkannte Objekt eine Session ID, die von Sitzung zu Sitzung variieren kann. Wenn etwas den Touchscreen berührt und Reactivision keine bekannten Schwarz/Weiß-Kombination darin erkennen kann, erfolgt automatisch die Registrierung als Finger. Finger werden umgangssprachlich als Blobs (deutsch: Klecks) bezeichnet, da sie auf dem Video-Stream nur als weiße Punkte erscheinen. Abbildung 5.1: Fünf Berührungspunkte von Fingern aufgenommen und gefiltert von Reactivision. c Reactivision Um die Anwendungsentwicklung auf herkömmlichen Computersystemen zu ermöglichen, stellt Reactivision den TUIO-Simulator bereit. Abbildung 5.2: Screenshot des TUIO-Simulators mit einem simulierten Finger und einem simulierten Objekt auf dem Touchscreen. Der Finger und das Objekt wurden gekennzeichnet. Der TUIO-Simulator ist eine Java-Software, die es ermöglicht Berührungsdaten, wie sie Reactivision senden würde, zu simulieren. Mit der Computermaus können so in eine Java-Fenster Finger mit der 41 5.3. TUIO-Protokoll Maus simuliert werden. Auch Grafiken, welche mit Fiducials markierte Objekte darstellen, können mit der Maus bewegt und rotiert werden. 5.3 TUIO-Protokoll Das TUIO-Protokoll dient als Kommunikationsinterface für Multitouch-Table Interfaces und darunter liegende Applikationen. Es wurde entwickelt, um Informationen über Objekte und Fingern an Anwendungen zu übermitteln [MK05]. Hierzu definiert das TUIO-Protokoll zwei Hauptklassen von Nachrichten: Set- und Alive-Nachrichten. Set-Nachrichten werden verwendet, um detaillierte Informationen, wie zum Beispiel Position oder Ausrichtung über Objekte und Cursor, zu senden. Die Alive-Nachrichten identifizieren mit Hilfe von Session IDs alle auf dem Touchscreen erkannten Finger und Objekte, auch wenn die Daten unveränderten bleiben. Zusätzlich gibt es noch fseq-Nachrichten, um jeden Aktualisierungsvorgang mit einer eindeutigen Frame Sequenz (fseq) ID zu kennzeichnen. Um schlechten Latenzen vorzubeugen, bedient sich das TUIO-Protokoll an dem UDP Transport zum Senden der Daten. Da hier die Möglichkeit eines Paketverlusts besteht, sendet TUIO redundante Daten. Generelle Syntax der Open Sound Control OSC - Nachrichten von TUIO: / tu i o /[ profileName / tu i o /[ profileName / tu i o /[ profileName / tu i o /[ profileName ] source [ Addresse ] ] s e t s e s s i o n I D [ Parameter L i s t e ] ] a l i v e [ L i s t e von a k t i v e n s e s s i o n I D s ] ] fseq Am Profilnamen kann erkannt werden, ob die folgenden Informationen einen Blob oder ein mit Fiducial markiertes Objekt betreffen. /tuio/2Dobj steht für ein erkanntes Objekt. /tuio/2Dcur steht für einen Blob. Eine Set-Nachricht enthält folgende Informationen: s i x, a, X, A, m r P y, b, Y B, z c ,Z C S e s s i o n I D , t e m p o r ä r e O b j e k t ID C l a s s e n ID , F i d u c i a l ID P o s i t i o n (0 −1) Wi n k el (0−2 PI ) Bewegungsvektor ( Bewegungsgeschwindigkeit & Richtung ) R o t a t i o n s v e k t o r ( R o t a t i o n s g e s c h w i n d i g k e i t & Richtung ) Bewegungsbeschleunigung Rotationsbeschleunigung F r e i e r Pa r a m eter , Typ w i r d ü b e r den OSC Pa k et H ea d er d e f i n i e r t Da die Kamera eine andere Auflösung als die Projektionsfläche haben kann, werden die Positionsdaten vor dem Senden durch die Sensorbreite dividiert. Somit werden ausschließlich Positionswerte von Null bis Eins gesendet, die vor dem Verwenden mit der Projektionsbreite multipliziert werden müssen. 5.4 Kommunikation mit Flash Reactivision sendet Open Sound Control Nachrichten mit dem TUIO-Protokoll [MK05] [Mul08]. Dieses implementiert ein User Datagram Protokoll, welches alle Informationen der Objekte und Fin- 42 5.4. Kommunikation mit Flash ger auf dem Display enthält. Flash ist jedoch nicht befähigt UDP-Pakete zu lesen. Eine Javasoftware namens Flosc1 hilft an dieser Stelle die UDP-Pakete mit OSC Nachrichten in Transmission Control Protocol (TCP)-Pakete mit Extensible Markup Language (XML)-Nachrichten umzuwandeln. In Flash können diese Pakete anschließend über einem XML Socket empfangen werden. Der Flash XML Socket ermöglicht es, kontinuierliche TCP-Verbindungen herzustellen und XML Nachrichten über diese zu senden und zu empfangen. Von Flash über den XML Socket gesendete Paketen können mit Flosc auch wieder in UPD Pakete konvertiert werden. Mit Hilfe das DataHandler Event, der jedes mal, wenn der XML Socket Daten empfängt, ausgeführt wird, werden die eingehenden TCP-Pakete und deren XML Inhalt ausgelesen und analysiert. Generelle Syntax der von flosc in XML umgewandelten Pakete: <OSCPACKET ADDRESS= ” 1 2 7 . 0 . 0 . 1 ” PORT=”1785” TIME=” −3548345445577129984” > <MESSAGE NAME=”/ t u i o /2 Dobj”> <ARGUMENT TYPE=”s ” VALUE=” a l i v e ” /> <ARGUMENT TYPE=” i ” VALUE=”49” /> <MESSAGE NAME=”/ t u i o /2 Dcur”> <ARGUMENT TYPE=”s ” VALUE=” a l i v e ” /> <ARGUMENT TYPE=” i ” VALUE=”1” /> </MESSAGE> An den Nachrichten Namen kann hier erkannt werden, dass es sich um ein Objekt und einen Finger handelt. Alive signalisiert, dass sie vom Sensor erkannt wurden. Das zweite Argument enthält die sessionID des Objektes und des Finger und dient zur eindeutig zu identifizierung. <MESSAGE NAME=”/ t u i o /2 Dcur”> <ARGUMENT TYPE=”s ” VALUE=” s e t ” /> <ARGUMENT TYPE=” i ” VALUE=”1” /> <ARGUMENT TYPE=” f ” VALUE =”0.540625” /> <ARGUMENT TYPE=” f ” VALUE=”0.58125” /> <ARGUMENT TYPE=” f ” VALUE=”7.937674 E−13” /> <ARGUMENT TYPE=” f ” VALUE=”7.937674 E−13” /> <ARGUMENT TYPE=” f ” VALUE=”0.0” /> </MESSAGE> </OSCPACKET> Da hier der Nachrichten Name /tuio/2Dcur ist, handelt es sich um einen Blob. Set bedeutet, dass sich die Parameter dieses Blobs verändert haben. Nun können aus den Argumenten der Reihe nach die Parameter sessionID, x-Position, y-Position, x-Bewegungsvektor, y-Bewegungsvektor und Beschleunigung ausgelesen werden. Die x- und y-Werte müssen mit den Verhältnissen der Projektionsfläche multipliziert werden. Der Argument Type zeigt den Datentyp der Information an: S für String, i für Integer und f für Float. In diesem Paket wird übermittelt, dass ein Objekt mit der sID 49 sich noch unverändert auf dem Multitouch-Table befindet und ein Finger mit der sID 1 sich über den Tisch bewegt. 1 http://www.benchun.net/flosc/ 43 5.5. Verarbeiten der TUIO-Protokoll Daten 5.5 Verarbeiten der TUIO-Protokoll Daten Um eine Multitouch-Applikationen in Flash zu realisieren, müssen die von Flosc gesendeten Pakete über einen XML-Socket empfangen werden. Die erhaltenen Pakete werden auf ihren Inhalt geprüft, ausgelesen und die Informationen über den Touchscreen berührende Finger und Objekte gespeichert. Zur besseren Verarbeitung wird für jeden erkannten Finger und jedes erkanntes Objekt eine Klasse instanziert, die alle gesendeten Informationen speichert. Anhand der von Reactivision gesendeten ID, kann eine Berührung oder ein Objekt der zugehörigen Instanz zugeordnet werden. Die Eigenschaften einer instanzierten Blob- oder Fiducial-Klasse werden ständig mit den von Reactivision gesendeten Daten aktualisiert. Wird ein Finger oder ein Objekt wieder vom Touchscreen entfernt, erfolgt auch die Löschung der dazugehörigen Instanz. Zusätzlich zu den von Reactivision gesendeten Informationen können selbst erstellte Eigenschaften in den Klassen gespeichert und aktualisiert werden. Um die Kommunikation mit anderen Klassen zu vereinfachen, werden sogenannte Events definiert. Diese Events können in anderen Klassen initialisiert werden und führen eine Funktion aus, wenn der Event eintritt. Werden neue Informationen zu einem Fingern oder Objekten gesendet, wird der dazugehörige Event ausgeführt. Zusätzlich erfolgt die Definierung von Events für das Erscheinen sowie das Verschwinden von Fingern oder Objekten. 5.5.1 Blobs Eine Instanz der Blob-Klasse repräsentiert einen den Touchscreen berührenden Finger. Beim Auftreten einer neuen Blob-ID in einem der von Reactivision gesendeten Pakete wird ein neues Objekt der Blob-Klasse instanziert, in der alle von Reactivision gesendeten Informationen zu dem Finger gespeichert werden. Beim Erzeugen des Objektes werden die von Reactivision gesendeten Informationen dem Objekt als Eigenschaften übergeben. Das Objekt wird der dazugehörigen Berührung anhand seiner ID zugeordnet. So lange die Berührung anhält, werden die Informationen ständig den empfangenen Daten angeglichen. Neben den von Reactivision gesendeten Informationen enthält die Blob-Klasse eigens festgelegte Eigenschaften zur Berechnung der Geschwindigkeit einer Bewegung, die während der Berührung festgelegt und aktualisiert werden. Wobei Reactivision Bewegungsvektoren und Beschleunigungsvektoren liefert, bietet es sich an, diese Daten selbst zu errechnen, um sie besser nachzuvollziehen und kontrollieren zu können. Blob.as package { // I m p o r t d e r M o v i e C l i p −K l a s s e import f l a s h . d i s p l a y . MovieClip ; p u b l i c c l a s s Blob { p u b l i c v a r i d : Number ; // ID d e s B l o b s p u b l i c v a r x : Number ; // A k t u e l l e X−K o o r d i n a t e p u b l i c v a r y : Number ; // A k t u e l l e Y−K o o r d i n a t e p u b l i c v a r X : Number ; // X−B e w e g u n g s v e k t o r p u b l i c v a r Y : Number ; // Y−B e w e g u n g s v e k t o r p u b l i c v a r m: Number ; // B e w e g u n g s b e s c h l e u n i g u n g p u b l i c v a r i n i t X : Number ; // E r s t e X−K o o r d i n a t e p u b l i c v a r i n i t Y : Number ; // E r s t e Y−K o o r d i n a t e 44 5.5. Verarbeiten der TUIO-Protokoll Daten public public public public public var var var var var o l d X : Number ; // V o r h e r i g e X−K o o r d i n a t e o l d Y : Number ; // V o r h e r i g e Y−K o o r d i n a t e s t a r t T i m e : Number ; // Z e i t zum Anfang d e r B er ü h r u n g endTime : Number ; // Z e i t zum Ende d e r B er ü h r u n g mc : M o v i e C l i p ; // M o v i e c l i p z u r D a r s t e l l u n g d e s B l o b s p u b l i c f u n c t i o n B l o b ( i d : Number , x : Number , y : Number , X : Number , Y : Number , m: Number ) { // V a r i a b l e n beim E r z e u g e n d e s O b j e k t e s d e f i n i e r e n this . id = id ; v a r d : Date = new Date ( ) ; t h i s . startTime = d . time ; this . initX = x ; this . initY = y ; this .x = x ; this .y = y ; t h i s .X = X; t h i s .Y = Y; t h i s .m = m; t h i s . oldX = x ; t h i s . oldY = y ; t h i s . endTime = d . t i m e ; } } } Eigenschaften eines Blob-Objektes • ID Die ID entspricht der Session-ID des Blobs. An der ID kann ein Blob eindeutig erkannt werden. Die ID stimmt mit der des von Reactivision erkannten Fingers überein. Die ID wird beim Instanzieren der Klasse festgelegt und nicht mehr verändert. • x, y Die aktuellen X- und Y-Koordinaten der Berührung. Bei jeder Positionsveränderung des Fingers werden diese Eigenschaft aktualisiert. • X, Y Der X- und Y-Bewegungsvektor einer Berührung wird bei jeder Positionsveränderung aktualisiert. • m Die Bewegungsbeschleunigung des Fingers wird ständig aktualisiert. • oldX, oldY Die vorherigen X- und -Y Koordinaten werden bei jeder Änderung der X- und Y-Koordinaten aktualisiert. Diese Eigenschaft wird definiert, um Aktionen zu unterscheiden. • initX, initY Die ersten X- und Y-Koordinaten der Berührung werden beim Instanzieren des Objektes festgelegt. Diese Eigenschaften werden den Reactivision Daten angefügt. • startTime, endTime Diese definierten Kriterien geben den Zeitpunkt zum Anfang und zum Ende der Berührung an. Der Anfangszeitpunkt wird beim Instanzieren festgelegt. Der Endzeitpunkt wird beim Verschwinden des Objektes von Touchscreen festgelegt. 45 5.5. Verarbeiten der TUIO-Protokoll Daten • mc Der mc wurde als Merkmal hinzugefügt, um einfacher auf eine Grafik, die den Finger auf dem Display darstellt, zugreifen zu können. Somit kann die Grafik direkt dem Blob zugeordnet werden. Um das Konzept der Bewegungsunterscheidung zu realisieren ist es nötig, die Eigenschaften oldX, oldY sowie initX, initY, startTime und endTime hinzuzufügen. Mit dem Konzept der Bewegungsunterscheidung soll ermöglicht werden, die Geschwindigkeit durch das Stoppen der Bewegung zurückzusetzen. Um das Stoppen einer Bewegung zu erkennen, erfolgt ein Vergleich der zuletzt gesendeten Positionsdaten einer Berührung mit den aktuellen Daten. Die Eigenschaften oldX und oldY werden mit den aktuellen X- und Y-Koordinaten einer Berührung verglichen. Sind diese identisch, wurde der Finger eine kurze Zeit nicht bewegt, das Zurücksetzen der Geschwindigkeit erfolgt. Die für die Geschwindigkeitsmessung nötigen Variablen müssen eigens definiert werden. Da Informationen in Flash nur empfangen und nicht gesendet werden können, funktioniert das Nullsetzen der von Reactivision bereitgestellten Geschwindigkeitsvariablen nicht. Das Zurücksetzten der Reactivision Daten in der dazugehörigen Blob-Instanz hätte nur einen kurzweiligen Effekt. Die Daten von Reactivision bleiben unverändert und überschreiben bei der nächsten Aktualisierung die zurückgesetzten Variablen mit den unberührten Geschwindigkeitsdaten. Die Eigenschaft mc dient nur dem leichteren Zugriff auf den die Berührung darstellenden Movieclip. Über die Blob Instanz können direkt die Eigenschaften der Berührung auf den zugehörigen Movieclip übertragen werden. 5.5.2 Fiducials Die Fiducial-Klasse repräsentiert auf den Touchscreen gestellte Objekte, die anhand von Markierungen erkannt werden können. Wie schon bei der Blob-Klasse wird ein neues Objekt der Fiducial-Klasse beim Auftreten einer neuen Fiducial-ID erzeugt. In der Fiducial-Klasse werden die gleichen Daten wie in der Blob-Klasse gespeichert. Zusätzlich zu den Informationen der Blob Klasse speichert die Fiducial Klasse Informationen zur Rotation des Objektes. Außerdem verfügt ein Fiducial Objekt über zwei IDs, eine SessionID, welche die gleiche Funktion wie die ID des Blobs erfüllt und eine ID, die angibt, welches Objekt anhand der Markierung erkannt wurde. Eigene Eigenschaften werden hinzugefügt. Fiducial.as package { // I m p o r t d e r M o v i e C l i p −K l a s s e import f l a s h . d i s p l a y . MovieClip ; public class Fiducial { p u b l i c v a r s I D : Number ; // S e s s i o n I D d e s F i d u c i a l s p u b l i c v a r i d : Number ; // ID d e s F i d u c i a l s p u b l i c v a r x : Number ; // A k t u e l l e X−K o o r d i n a t e p u b l i c v a r y : Number ; // A k t u e l l e Y−K o o r d i n a t e p u b l i c v a r a : Number ; // R o t a t i o n s w i n k e l p u b l i c v a r o l d a : Number ; // V o r h e r i g e r R o t a t i o n s w i n k e l p u b l i c v a r i n i t A : Number ; // E r s t e r R o t a t i o n s w i n k e l p u b l i c v a r X : Number ; // X−B e w e g u n g s v e k t o r 46 5.5. Verarbeiten der TUIO-Protokoll Daten public public public public public public public var var var var var var var Y : Number ; // Y−B e w e g u n g s v e k t o r A : Number ; // R o t a t i o n s v e k t o r m: Number ; // B e w e g u n g s b e s c h l e u n i g u n g r : Number ; // R o t a t i o n s b e s c h l e u n i g u n g s t a r t T i m e : Number ; // Z e i t zum Anfang d e r B er ü h r u n g endTime : Number ; // Z e i t zum Ende d e r B er ü h r u n g mc : M o v i e C l i p ; // M o v i e c l i p z u r D a r s t e l l u n g d e s F i d u c i a l s p u b l i c f u n c t i o n F i d u c i a l ( s I D : Number , i d : Number , x : Number , y : Number , a : Number , X : Number , Y : Number , A : Number , m: Number , r : Number ) { // V a r i a b l e n beim E r z e u g e n d e s O b j e k t e s d e f i n i e r e n t h i s . sID = sID ; this . id = id ; this .x = x ; this .y = y ; this .a = a; t h i s . olda = a ; this . initA = a ; t h i s .X = X; t h i s .Y = Y; t h i s .A = A; t h i s .m = m; this . r = r ; v a r d : Date = new Date ( ) ; t h i s . startTime = d . time ; t h i s . endTime = 0 ; } } } Zusätzliche Eigenschaften eines Fiducial-Objektes • ID An der ID wird erkannt, welches Objekt auf den Touchscreen gestellt wurde. Diese Eigenschaft wird wie die SessionID nach dem Erzeugen nicht mehr verändert. • a Der aktuelle Rotationswinkel des Objektes. Nach jeglicher Änderung erfolgt eine Aktualisierung. • oldA Speicherung des vorherigen Rotationswinkel des Objektes, welcher bei jeder Änderung des Rotationswinkels aktualisiert wird. • A Der Rotationsvektor wird ständig den Reactivision-Daten angeglichen. • r Die Rotationsbeschleunigung wird permanent aktualisiert. Neben der Eigenschaft oldA wurden alle beim Blob zusätzlich definierten Eigenschaften auch beim Fiducial definiert. 5.5.3 Touch Events Um die Kommunikation mit anderen Klassen zu vereinfachen, werden TouchEvents definiert. Diese starten, wenn gewisse Ereignisse eintreten. Die Events können anderen Klassen hinzugefügt werden 47 5.5. Verarbeiten der TUIO-Protokoll Daten und führen dort bestimmte Funktionen aus, wenn sie eintreten. Die Events werden beim Auslesen der von Reactivision gesendeten Daten aufgerufen. Sie enthalten in den Event-Daten die ID des Fingers oder Objektes, durch das sie aufgerufen wurden. Nachdem einer Klasse diese Events hinzugefügt wurden, können alle Berührungsinformationen dort empfangen werden. TouchEvent.as package { // I m p o r t d e r Event −K l a s s e import f l a s h . even ts . ∗ ; p u b l i c c l a s s TUIOEvent e x t e n d s E ven t { // D e f i n i t i o n B l o b e v e n t s p u b l i c s t a t i c c o n s t BlobAdded : S t r i n g = ” BlobAdded ” ; p u b l i c s t a t i c c o n s t B l o b O n Scr een : S t r i n g = ” B l o b O n Scr een ” ; p u b l i c s t a t i c c o n s t BlobRemoved : S t r i n g = ” BlobRemoved ” ; // D e f i n i t i o n F i d u c i a l e v e n t s p u b l ic s t a t i c const FiducialAdded : Str i n g = ” FiducialAdded ”; p u b l ic s t a t i c const FiducialOnScreen : Str i n g = ” FiducialOnScreen ”; p u b l i c s t a t i c const FiduciaRemoved : S t r i n g = ” FiduciaRemoved ” ; // S p e i c h e r t d i e E v e n t d a t e n p u b l i c var data ; // K o n s t r u k t o r p u b l i c f u n c t i o n TUIOEvent ( t y p e : S t r i n g , d a t a ) { super ( type ) ; t h i s . data = data ; } } } Definierte TouchEvents • BlobAdded Wird ausgeführt, wenn eine neue Berührung erkannt wird. • BlobOnScreen Wird ausgeführt, wenn sich die Position eines bereits erkannten Fingers ändert. • BlobRemoved Wird ausgeführt, wenn ein Finger vom Display genommen wird. • FiducialAdded Wird ausgeführt, wenn ein neues Objekt erkannt wird. • FiducialOnScreen Wird ausgeführt, wenn sich die Position oder Rotation eines bereits bekannten Objektes ändert. • FiduciaRemoved Wird ausgeführt, wenn ein Objekt vom Display entfernt wird. 5.5.4 Verarbeiten der Reactivision-Daten Die von Flosc in XML umgewandelten Tracking-Daten werden über einen XML-Socket in Flash empfangen und anschließend ausgelesen. Aus dem Namen der Nachricht wird ersichtlich, ob es sich 48 5.5. Verarbeiten der TUIO-Protokoll Daten um einen erkannten Finger oder ein erkanntes Objekt handelt. Ist die ID neu, wird eine dazugehörige Instanz der Blob- oder Fiducial-Klasse erstellt. Die Informationen der Reactivision Daten werden in der Instanz gespeichert und ständig anhand der ID aktualisiert. Die Instanzen der Blob- oder Fiducial-Klassen werden jeweils in eine Array gespeichert. Dies dient der Übersicht über die den Bildschirm berührende Finger und Objekte. Zusätzlich wird noch jeweils ein Array mit den Blobund Fiducial-IDs, die momentan erkannt werden, erstellt. Wenn zu einer der ID im Array keine Daten mehr gesendet werden, wird das Objekt oder der Finger entfernt und die dazugehörige Instanz der Fiducial- oder Blob-Klasse gelöscht. Beim Auslesen der Tracking-Daten und dem Erstellen, Aktualisieren und Löschen der Blob- und Fiducial-Instanzen werden die dazugehörigen TUIOEvents aufgerufen. TUIO.as package { import import import import import import f l a s h . n e t . XMLSocket ; f l a s h . e v e n t s . D a ta E ven t ; f la s h . events .∗; TUIOEvent ; Blob ; Fiducial ; Die benötigten Klassen müssen importiert werden. Die XMLSocket-, DataEvent- und Event-Klasse dienen zum Empfangen und Auslesen der Pakete. Ebenso werden die schon vorgestellten Klassen Blob, Fiducial und TUIOEvent importiert. Die Blob und Fiducial Klassen dienen zum Speichern der Eigenschaften der Finger und Objekte auf dem Touchscreen. Die TUIOEvent Klasse wird benötigt, um festzulegen wann, die Events eintreten sollen. public class { private private private private private private private private private TUIO e x t e n d s E v e n t D i s p a t c h e r var var var var var var var var var T UI O s o ck et : XMLSocket ; IPaddress : String ; p o r t : Number ; blobArray : Array ; blobIDs : Array ; f i d u c i a l A r r a y : Array ; f i d u c i a l I D s : Array ; s Wi d th : Number ; s H e i g h t : Number ; Die Variablen für den XML-Socket samt IP-Adresse und Port werden für das Aufbauen der Verbindung zu Flosc deklariert. Das Blob- und Fiducial-Array dient der Speicherung aller den Bildschirm berührender Finger und Objekte. Alle Instanzen der Blob-Klasse werden im blobArray und alle Instanzen der Fiducial-Klasse im fiducialArray gespeichert. Die Arrays blobIDs und fiducialIDs dienen der Speicherung aller IDs der den Bildschirm berührenden Finger und Objekte. Die Variablen sWidth und sHeight werden für die Speicherung der Dimensionen genutzt und beim Instanzieren der Klasse übergeben. p u b l i c f u n c t i o n TUIO ( s t a g e W i d t h : Number , s t a g e H e i g h t : Number ) { s Wi d th = s t a g e W i d t h ; sHeight = stageHeight ; b l o b A r r a y = new A r r a y ( ) ; 49 5.5. Verarbeiten der TUIO-Protokoll Daten b l o b I D s = new A r r a y ( ) ; f i d u c i a l A r r a y = new A r r a y ( ) ; f i d u c i a l I D s = new A r r a y ( ) ; IPaddress = ”127.0.0.1”; port = 3000; T UI O s o ck et = new XMLSocket ( ) ; T UI O s o ck et . a d d E v e n t L i s t e n e r ( D a ta E ven t . DATA, d a t a H a n d l e r ) ; T UI O s o ck et . c o n n e c t ( I P a d d r e s s , p o r t ) ; } Die beim Instanzieren übergebenen Dimensionswerte der Anwendung werden in den Variablen sWidth und sHeight gespeichert. Die Erstellung der Arrays erfolgt und die IP-Adresse und der Port von Flosc werden in den dazugehörigen Variablen gespeichert. Nach der Erstellung des XML-Sockets muss der DataEvent zum Abfangen der Pakete hinzugefügt werden. Die Verbindung zu Flosc wird mit der festgelegten IP-Adresse und dem Port über den XML-Socket aufgebaut. p u b l i c f u n c t i o n g e t B l o b B y I d ( i d : Number ) : B l o b { f o r ( v a r i = 0 ; i <b l o b A r r a y . l e n g t h ; i ++) { i f ( b l o b A r r a y [ i ] . i d == i d ) { return blobArray [ i ] ; } } return null ; } p u b l i c f u n c t i o n g e t F i d u c i a l B y I d ( s I D : Number ) : F i d u c i a l { f o r ( v a r i = 0 ; i <f i d u c i a l A r r a y . l e n g t h ; i ++) { i f ( f i d u c i a l A r r a y [ i ] . s I D == s I D ) { return fiducialArray [ i ] ; } } return null ; } Die Funktionen getBlobByID und getFiducialByID können mit Hilfe einer ID aufgerufen werden. Sie durchsuchen das dazugehörige Array nach einem Blob, beziehungsweise Fiducial mit dieser ID. Wird der Blob oder das Fiducial gefunden, gibt die Funktion diesen zurück. Bei erfolgloser Suche wird Null zurückgegeben. Diese Funktionen kann auch in der Hauptanwendung aufgerufen werden, um durch die ID des Events die dazugehörige Instanz der Blob- oder Fiducial-Klasse mit allen Informationen zu holen. p r i v a t e f u n c t i o n d a t a H a n d l e r ( e : D a ta E ven t ) { p a r s e M e s s a g e s (XML( e . d a t a ) ) ; } p r i v a t e f u n c t i o n p a r s e M e s s a g e s ( msg : XML) { v a r node : XML; f o r ea ch ( node i n msg . MESSAGE) { Die dataHandler Funktion fängt am XML-Socket ankommende TCP-Pakete ab und ruft zum Auslesen der XML-Daten die parseMasseges Funktion auf. Dort werden die einzelnen XML-Nachrichten 50 5.5. Verarbeiten der TUIO-Protokoll Daten und deren Inhalt mit einer for-Schleife untersucht. i f ( node .@NAME == ”/ t u i o /2 Dcur ” ) { i f ( node .ARGUMENT [ 0 ] . @VALUE == ” s e t ” ) { v a r i d = node .ARGUMENT [ 1 ] . @VALUE ; v a r x = Number ( node .ARGUMENT [ 2 ] . @VALUE)∗ s Wi d th ; v a r y = Number ( node .ARGUMENT [ 3 ] . @VALUE)∗ s H e i g h t ; v a r X = Number ( node .ARGUMENT [ 4 ] . @VALUE ) ; v a r Y = Number ( node .ARGUMENT [ 5 ] . @VALUE ) ; v a r m = Number ( node .ARGUMENT [ 6 ] . @VALUE ) ; Wenn der Name der Nachricht /tuio/2Dcur entspricht, handelt es sich um eine Information zu einem Blob. Ist zusätzlich das erste Argument der Nachricht set, werden neue Daten zu dem Blob gesendet. Diese werden anschließend der Reihe nach ausgelesen und zwischengespeichert. An dieser Stelle erfolgt auch die Nutzung der Variablen sWidth und sHeight. Somit kann eine Anpassung der empfangenen X- und Y-Koordinaten der Berührung, die in einem Verhältnis zwischen Null und Eins gesendet werden, an das Verhältnis der Hauptanwendung erfolgen. va r t u i o b l o b : Blob = getBlobById ( i d ) ; i f ( t u i o b l o b == n u l l ) { t u i o b l o b = new B l o b ( i d , x , y , X , Y , m) ; b l o b Arra y . push ( t u i o b l o b ) ; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . BlobAdded , i d ) ) ; } Mit der getBlobByID Funktion wird im blobArray nach einem schon gespeicherten Blob mit der gleichen ID gesucht. Befindet sich noch kein Blob mit dieser ID in dem Array, wird ein neuer Blob mit den zwischengespeicherten Daten erstellt und dem blobArray hinzugefügt. Zusätzlich wird der BlobAdded Event mit der ID des neuen Blobs ausgeführt. else { t u i o b l o b . oldX = t u i o b l o b . x ; t u i o b l o b . oldY = t u i o b l o b . y ; tuioblob . x = x ; tuioblob . y = y ; tuiobl ob .X = X; tuiobl ob .Y = Y; t u i o b l o b .m = m; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . B l o b O n Scr een , i d ) ) ; } } Bei Vorhandensein des Blobs im blobArray, folgt eine Aktualisierung der Daten durch die zwischengespeicherten Informationen zu dem Finger. Der BlobOnScreen Event wird an dieser Stelle mit der ID des Blobs ausgeführt. else { i f ( node .ARGUMENT [ 0 ] . @VALUE == ” a l i v e ” ) v a r n e w b l o b I D s : A r r a y = new A r r a y ( ) ; var icount = 0; f o r ea ch ( v a r a l i v e I t e m : XML i n node .ARGUMENT . ( @VALUE != ” a l i v e ” ) ) { n e w b l o b I D s [ i c o u n t ] = ( a l i v e I t e m . @VALUE ) ; 51 5.5. Verarbeiten der TUIO-Protokoll Daten i c o u n t ++; } i f ( b l o b I D s != n u l l ) { f o r ( v a r n = 0 ; n < b l o b I D s . l e n g t h ; n++) { var found = f a l s e ; f o r ( v a r m = 0 ; m < i c o u n t ; m++) { i f ( b l o b I D s [ n]== n e w b l o b I D s [m] ) { found = true ; break ; } } i f ( f o u n d == f a l s e ) { va r t u i o b l o b : Blob = getBlobById ( b l o b I D s [ n ] ) ; v a r d : Date = new Date ( ) ; t u i o b l o b . endTime = d . t i m e ; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . BlobRemoved , b l o b I D s [ n ] ) ) ; f o r ( v a r i =0; i <b l o b A r r a y . l e n g t h ; i ++) { i f ( b l o b A r r a y [ i ] . i d == b l o b I D s [ n ] ) { blobArray . s p l i c e ( i , 1); } } } } } blobIDs = newblobIDs ; } } Wenn das erste Argument der Nachricht nicht set sondern alive ist, handelt es sich um einen erkannten Blob, der seine Position nicht verändert hat. Da das TUIO-Protokoll keine Information über das Entfernen von Fingern sendet, muss überprüft werden, welche IDs nicht mehr vom Sensor erkannt werden. Hierzu wird ein neues Array namens newblobIDs erstellt, in dem alle IDs der auf dem Display erkannten Finger gespeichert werden. Der Inhalt des blobIDs Array wird mit dem Inhalt des newblobIDs Array verglichen. Ist in dem blobIDs Array eine ID vorhanden, welche nicht mehr im newblobIDs Array vorhanden ist, wurde der Finger vom Display entfernt. Ist dies der Fall, erfolgt die Speicherung des Endzeitpunkts der Berührung und der BlobRemoved Event wird mit der ID des Blobs ausgeführt. Anschließend wird der Blob aus dem blobArray entfernt und das BlobIDs Array mit dem newblobIDs Array überschrieben. i f ( node .@NAME == ”/ t u i o /2 Dobj ” ) { i f ( node .ARGUMENT [ 0 ] . @VALUE == ” s e t ” ) { v a r s I D = node .ARGUMENT [ 1 ] . @VALUE ; v a r i d = node .ARGUMENT [ 2 ] . @VALUE ; v a r x = Number ( node .ARGUMENT [ 3 ] . @VALUE)∗ s Wi d th ; v a r y = Number ( node .ARGUMENT [ 4 ] . @VALUE)∗ s H e i g h t ; v a r a = Number ( node .ARGUMENT [ 5 ] . @VALUE ) ; v a r X = Number ( node .ARGUMENT [ 6 ] . @VALUE ) ; v a r Y = Number ( node .ARGUMENT [ 7 ] . @VALUE ) ; v a r A = Number ( node .ARGUMENT [ 8 ] . @VALUE ) ; v a r m = node .ARGUMENT [ 9 ] . @VALUE ; v a r r = node .ARGUMENT [ 1 0 ] . @VALUE ; va r t u i o f i d u c i a l : F i d u c i a l = g e t F i d u c i a l B y I d ( sID ) ; i f ( t u i o f i d u c i a l == n u l l ) { 52 5.5. Verarbeiten der TUIO-Protokoll Daten t u i o f i d u c i a l = new F i d u c i a l ( sID , i d , x , y , a , X , Y , A , m, r ) ; f i d u c i a l A r r a y . push ( t u i o f i d u c i a l ) ; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . F i d u c i a l A d d e d , s I D ) ) ; } else { t u i o f i d u c i a l . olda = t u i o f i d u c i a l . a ; tuiofiducial .x = x; tuiofiducial .y = y; tuiofiducial .a = a; t u i o f i d u c i a l .X = X; t u i o f i d u c i a l .Y = Y; t u i o f i d u c i a l .A = A; t u i o f i d u c i a l .m = m; tuiofiducial . r = r ; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . F i d u c i a l O n S c r e e n , s I D ) ) ; } } else { i f ( node .ARGUMENT [ 0 ] . @VALUE == ” a l i v e ” ) v a r n e w f i d u c i a l I D s : A r r a y = new A r r a y ( ) ; var icount = 0; f o r ea ch ( v a r a l i v e I t e m : XML i n node .ARGUMENT . ( @VALUE != ” a l i v e ” ) ) { n e w f i d u c i a l I D s [ i c o u n t ] = ( a l i v e I t e m . @VALUE ) ; i c o u n t ++; } i f ( f i d u c i a l I D s != n u l l ) { f o r ( v a r n = 0 ; n < f i d u c i a l I D s . l e n g t h ; n++) { var found = f a l s e ; f o r ( v a r m = 0 ; m < i c o u n t ; m++) { i f ( f i d u c i a l I D s [ n]== n e w f i d u c i a l I D s [m] ) { found = true ; break ; } } i f ( f o u n d == f a l s e ) { var t u i o f i d u c i a l : F i d u c i a l = g etFid u cia lB yI d ( f i d u c i a l I D s [ n ] ) ; v a r d : Date = new Date ( ) ; t u i o f i d u c i a l . endTime = d . t i m e ; d i s p a t c h E v e n t ( new TUIOEvent ( TUIOEvent . Fi d u ci a R em o ved , f i d u c i a l I D s [ n ] ) ) ; f o r ( v a r i =0; i <f i d u c i a l A r r a y . l e n g t h ; i ++) { i f ( f i d u c i a l A r r a y [ i ] . s I D == f i d u c i a l I D s [ n ] ) { fiducialArray . splice ( i , 1); } } } } } fid ucia lID s = newfiducialIDs ; } } } } } } Bei einem Fiducial ist der Name der Nachricht /tuio/2Dobj. Das Auslesen und Verarbeiten der Daten erfolgt wie bei den Daten des Blobs. Zusätzlich erfolgt die Speicherung und Verwaltung der Daten zur Rotation des Objektes. 53 5.6. Zusammenfassung 5.6 Zusammenfassung Die Vorgänge vom Erkennen der Finger und Objekte bis hin zum Verarbeiten der Daten in Flash wurden aufgezeigt. Eine Infrarot-Kamera zeichnet das durch Finger und Objekte reflektierte InfrarotLicht auf. Reactivision filtert die Bilder der Kamera und wertet diese aus. Jede Berührung durch ein Objekt oder Finger erhält von Reactivision eine eindeutige SessionID. Die erhaltenen Informationen zu den Berührungen werden als UDP-Pakete mit OSC-Nachrichten gesendet. Das TUIO-Protokoll dient hierbei als Kommunikationsinterface. Es wurde entwickelt, um Informationen von Objekten und Fingern an Anwendungen zu übermitteln. Da Flash nicht in der Lage ist UDP-Pakete zu empfangen, werden die von Reactivision gesendeten Pakete mit Flosc in TCP-Pakete mit XML-Nachrichten umgewandelt. Die umgewandelten Pakete können von Flash über einen XML-Socket empfangen und ausgelesen werden. Zur Speicherung und Verwaltung der Informationen wird für jeden Finger eine Instanz der BlobKlasse und für jedes Objekt eine Instanz der Fiducial-Klasse erzeugt. Die Speicherung aller von Reactivision gesendeten Informationen zu einem Display berührenden Finger oder Objekt findet in der zugehörigen Instanz statt. Die Instanz der Klasse wird anhand der ID der Berührung zugeordnet, die Informationen werden ständig mit den von Reactivision gesendeten Daten abgeglichen. Zusätzlich ist es möglich, beim Erstellen, Aktualisieren sowie vor dem Löschen der Instanzen auch selbst erstellte Eigenschaften mit Werten zu versorgen. Dies ermöglicht, Informationen zu Fingern und Objekten zu speichern, welche nicht von Reactivision mitgeliefert werden. Somit können alle benötigten Informationen zu einem Finger oder Objekt direkt in der Instanz gespeichert und durch diese auch wieder abgerufen werden. Zur Realisierung der Bewegungsdifferenzierung wurde diese Möglichkeit genutzt, um die vorherige Position eines Fingers oder Objektes zu speichern. Zusätzliche Eigenschaften zur Geschwindigkeitsberechnung werden angefügt, um die Geschwindigkeit einer Bewegung zurückzusetzen und um eigene Messintervalle festzulegen. Zusätzlich wurden Events definiert. Bei jeder neuen Berührung oder dem Ende einer Berührung wird der zugehörige Event ausgeführt. Auch für das Empfangen neuer Informationen zu einer bestehenden Berührung existiert ein Event. Werden diese Events einer andern Klasse hinzugefügt, wird immer, wenn diese Events eintreten, eine dazugehörige Funktion ausgeführt. Durch Importieren dieser Bibliotheken und das Hinzufügen der Events können die von Reactivision gesendeten Berührungsdaten in sämtlichen Flash-Klassen genutzt werden. Im folgenden Kapitel werden diese Daten genutzt, um die neu entwickelten Konzepte zur Interaktion an einem Multitouch-Table mit Nutzung der Bewegungsgrößen umzusetzen. Die Konzepte werden in einem Curling-Spiel und einer Foto-Applikation erprobt. 54 Kapitel 6 Konzeptumsetzung Im Kapitel Technische Umsetzung wurde das Empfangen und Verarbeiten von Berührungsdaten behandelt. Flash-Bibliotheken, welche die Speicherung und Aktualisierung der Informationen zu Fingern und Objekten übernehmen, wurden entwickelt. Darüber hinaus wurden Events definiert, die über jegliche Veränderung der Objekte und Finger auf dem Touchscreen informieren. Mit Hilfe dieser Bibliotheken erfolgt in diesem Kapitel die Umsetzung der neu entwickelten Konzepte. 6.1 Einleitung Die neu entwickelten Konzepte werden in Anwendungen überprüft. Hierzu wird die Implementierung der bereits vorgestellten Bibliotheken und deren Anwendung zum Empfangen der Berührungsdaten erklärt. Es folgt eine Erläuterung der Umsetzung der für die Benutzerfreundlichkeit beitragenden Konzepte von Bewegungsdifferenzierung und Geschwindigkeitsvisualisierung. Anschließend erfolgt die Dokumentation der Umsetzung der Beispielanwendungen. In einem CurlingSpiel soll das Konzept von Nutzung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion erprobt werden. Durch die Geschwindigkeit und Richtung einer Bewegung sollen die Curling-Steine bewegt werden. Zusätzlich wird versucht, die Geschwindigkeit einer Bewegung zur Umsetzung des Wischens zu nutzen. Ziel ist es, hiermit eine intuitive und präzise Steuerung des Spiels zu erreichen. Die Konzepte von Nutzung der Geschwindigkeit einer Objektrotation und Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung sollen in einer Foto-Applikation realisiert werden. Es gibt bereits eine Vielzahl von Foto-Applikationen, in denen jedoch immer nur die gleichen Konzepte zur Interaktion genutzt werden. Das Konzept der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung soll genutzt werden, um die Bildschirmtastatur aufzurufen. Dies wurde bisher vorwiegend durch das Drücken einer auf dem Bildschirm dargestellten Schaltfläche umgesetzt. Zusätzlich soll bei einer schnellen Bewegung eines Bildes in Richtung des oberen Bildschirmrandes, das Bild vom Bildschirm entfernt und von einem Beamer projiziert werden. Mithilfe der Geschwindigkeit einer Objektrotation soll das Konzept des Skalierens ersetzt werden, da dies den Benutzern schwerer fällt als alle bisher vorhandenen Interaktionskonzepte. 55 6.2. Grundgerüst 6.2 Grundgerüst Das Importieren der im Kapitel Technische Umsetzung vorgestellten Klassen TUIO, TUIOEvent, Blob und Fiducial ist zum Empfangen der Berührungsdaten nötig. Die TUIO-Klasse wird mit der Auflösung der Anwendung instanziert. Die TUIOEvents müssen der Instanz hinzugefügt werden, um alle Informationen zu den Bildschirm berührenden Finger und Objekten zu empfangen. Tritt einer der Events ein, können in der dazugehörigen Funktion durch die getBlobByID oder getFiducialByID Funktion, aufgerufen mit der im Event gelieferten ID, alle Informationen zu dem Blob oder Fiducial abgerufen werden. Die Blob- und Fiducial-Klassen dienen an dieser Stelle der Speicherung und Verwaltung der Informationen. In der BlobAdded und FiducialAdded Funktion wird ein Movieclip erstellt, der die Position des Fingers oder Objektes auf dem Bildschirm darstellt. Die Position der Grafik wird der Position des Fingers und des Objektes angepasst. Eine Speicherung der Grafik in der Eigenschaft mc des dazugehörigen Objektes erfolgt. In der BlobOnScreen und FiducialOnScreen Funktion wird die Position des Movieclips der neuen Position des Fingers oder Objektes angepasst. Beim Verschwinden des Fingers oder Objektes wird auch der Movieclip in der BlobRemoved und FiducialRemoved Funktion gelöscht. Mit dem Aufbau dieses Grundgerüstes können die in Kapitel 5 entwickelten Bibliotheken in Anwendungen genutzt werden. Das Empfangen und Verarbeiten aller Informationen zu Fingern und Objekten in den Events ist somit möglich. Auch Grafiken für Finger und Objekte werden dargestellt. 6.3 Bewegungsdifferenzierung Die Differenzierung zwischen fortlaufenden und durch einen kurzen Stopp gebremsten Bewegungen erfolgt in der BlobOnScreen Funktion. Ein Vergleich der vorherigen und aktuellen Koordinaten einer Berührung findet statt. Sind die Koordinaten identisch, wurde der Finger eine kurze Zeit nicht bewegt. Die Identifizierung einer abgebremsten Bewegung ist möglich. Die ersten Koordinaten und die Startzeit der Berührung werden auf die aktuellen Werte gesetzt. Hierdurch erfolgt ein Zurücksetzen der Geschwindigkeit. Sind die vorherigen und aktuellen Koordinaten einer Berührung unterschiedlich, ist von einer fortlaufenden Bewegung auszugehen und die Variablen zur Geschwindigkeitsberechnung bleiben unberührt. Die Bewegungsdifferenzierung wird sowohl beim Curling zum Positionieren der Steine vor dem Schleudern auf die Bahn als auch in der Foto-Applikation zum Verhindern des ungewollten Ausführens geschwindigkeitsabhängiger Funktionen eingesetzt. 6.4 Geschwindigkeitsvisualisierung Um die durch eine Bewegung ausgeübte Geschwindigkeit für den Benutzer transparent darzustellen, sollen bewegte Objekte den Finger mit einer Verzögerung folgen. Die Strecke zwischen Finger und Objekt soll mit steigender Geschwindigkeit größer werden und mit sinkender Geschwindigkeit sich verkleinern. Um dies zu realisieren erfolgt in der BlobAdded Funktion, welche beim Auftreten eines neuen Fin- 56 6.5. Curling gers aufgerufen wird, eine Abfrage, ob die Koordinaten des Fingers sich mit den Koordinaten eines Objektes überschneiden. Ist dies der Fall, wird das Folgen des Objektes jeden Frame der Anwendung berechnet. Die Differenz zwischen Finger und Objekt muss errechnet und durch den Verzögerungswert dividiert werden. Ein größerer Wert stellt eine größere Verzögerung dar. Es folgt eine Addition der dividierten X- und Y-Differenzwerte zu den X- und Y- Koordinaten des Objektes. Die Aktualisierung muss jeden Frame erfolgen, da eine Berechnung im BlobOnScreen Event, wie beim Drag & Drop Verfahren üblich, beim Stillhalten des Fingers zu Fehlern führen würde. Das Senden von neuen Positionsdaten würde in diesem Fall ausbleiben, somit der Event nicht aufgerufen und das Näherrücken des Objektes nicht mehr umgesetzt werden. Die Rotationsveränderung des Objektes kann auch berechnet werden. Es erfolgt eine Berechnung des Winkels zwischen Finger und Objekt. Die Positionsdifferenzwerte werden, vor dem Dividieren mit den Verzögerungswerten, mit der atan2 Funktion in einen Winkel umgerechnet. Durch Multiplikation dieses Winkels mit Pi/180 erfolgt eine Umrechnung in Gradmaß. Jegliche Veränderung des Winkels bei der Bewegung wird nun vom aktuellen Rotationswinkel des Objektes subtrahiert. Dies entspricht dem Konzeptes der Rotation mit einem Finger. Die Geschwindigkeitsvisualisierung sowie die Rotation beim Bewegen eines Objektes werden in beiden Konzepten angewandt. 6.5 Curling Curling ist ein Spiel auf einer Eisfläche zwischen zwei Mannschaften mit je vier Spielern [cur08]. Jeder Spieler der Mannschaften lässt zwei Granitsteine über das Eis gleiten. Beide Mannschaften wechseln sich mit ihren Spielzügen ab und versuchen mit den Steinen dem Zentrum eines zweifarbigen Zielkreises so nahe wie möglich zu kommen (siehe Abbildung 6.1). Für jeden Stein, der zum Ende des Durchgangs am Mittelpunkt des Zielkreises näher liegt als der Stein des Gegners, erhält die Mannschaft einen Punkt. c Abbildung 6.1: Curling Zielkreis mit gespielten Steinen beider Mannschaften. Deutsches Generalkonsulat Vancouver Es dürfen Steine, die von der gegnerischen Mannschaft bereits gespielt wurden, mit eigenen Steinen weggestoßen werden. Nach neun Durchgängen werden die Punkte der Mannschaften addiert und der Gewinner wird ermittelt. 57 6.5. Curling Curling ist überwiegend ein taktisches Spiel. Neben der Richtung des gespielten Steins ist die Bestimmung der Geschwindigkeit ein wesentlicher Faktor. Möchte man einen Stein des Gegners wegstoßen, muss der Stein mit hoher Geschwindigkeit auf die Bahn geschleudert werden. Um wiederum den Stein im Zielkreis zu positionieren, ist die exakte Dosierung der Geschwindigkeit wichtig, um den Stillstand des Steins am richtigen Punkt zu erreichen. Die Geschwindigkeit eines Steines kann, nach dem der Stein abgespielt wurde, nur noch durch Wischen beeinflusst werden (siehe Abbildung 6.2). Das Wischen der Eisfläche mit einem Besen bewirkt eine Erhitzung der Eisfläche, die entstehende Reibung mit dem Stein wird verringert. Durch schnelles Wischen der Fläche kann somit der Geschwindigkeitsverlust des Steines vermindert werden. c Abbildung 6.2: Wischen mit dem Besen vor einem gespielten Curlingstein. Deutsches Generalkonsulat Vancouver Da die Geschwindigkeit der gespielten Steine mit spielentscheidend ist, wurde eine Umsetzung des Curling zum Erproben des Konzeptes von Nutzung der Geschwindigkeit zur physikalischen Interaktion gewählt. Es existieren bereits Curling-Spiele für Computer und Konsolen mit herkömmlichen Eingabegeräten. Es liegt jedoch noch keine Umsetzung für den Multitouch-Table beziehungsweise für ein Touchscreen-System vor. Durch die Touchscreen-Bedienung und vor allem das Nutzen der Geschwindigkeit einer Bewegung könnte die Steuerung des Spiels um ein vielfaches intuitiver und präziser gestalten werden als mit herkömmlichen Eingabegeräten. Zur Umsetzung auf den Multitouch-Table werden die Regeln vereinfacht, damit das Spiel nicht zu komplex gestaltet wird. Die Dauer des Spieles ist mit neun Durchgängen für ein Spiel auf dem Multitouch-Table zu langatmig. Daher wird auf das Durchführen mehrerer Durchgänge verzichtet. Der Benutzer soll nicht gezwungen werden, bei jedem Spiel neun Runden spielen zu müssen. Eine so mögliche frühere Revanche erhöht den Spielspaß. Zwei Spieler dürfen je vier Steine spielen Um Spannung beim Spielen aufzubauen, erreicht jeder Stein je nach Position Punkte, unabhängig davon, 58 6.5. Curling ob er näher am Mittelpunkt des Zielkreises ist als ein Stein des Gegners. Die Curling-Steine werden mit dem Konzept der Geschwindigkeitsvisualisierung bewegt. Auch das Konzept der Bewegungsdifferenzierung wird angewendet, um das exakte Positionieren der Steine zu ermöglichen. Bei Entfernung des Fingers erfolgt die Berechnung der Geschwindigkeit aus der Dauer der Berührung und der zurückgelegten Strecke. Wenn der Stein über den vorgegebenen Bereich hinaus gespielt wird, in dem der Spieler den Stein bewegen darf, wird er so behandelt, als ob der Spieler den Stein losgelassen hätte. Die berechnete Geschwindigkeit wird an den Stein weiter gegeben und durch eine simulierte Reibung verringert. Durch eine schnelle Auf- und Abbewegung vor dem gleitendem Stein erfolgt eine Verringerung der Reibung. Schnelle Wischbewegung vermindern hierbei die Reibung stärker als langsame. Das Konzept des Wischens soll durch die Geschwindigkeit einer Bewegung umgesetzt werden. Neben der Reibung wird das Verhalten gegeneinander gestoßener Steine simuliert. Um zu verhindern, dass zu stark beschleunigte Steine aus dem Bildschirm rutschen, wird an den Seiten die Bandenkollision berücksichtigt. Am Ende der Eisfläche wird darauf verzichtet, da sonst zu schnell gespielte Steine abprallen und eventuell Punkte geben würden, obwohl sie eigentlich im Aus gelandet sind. Verlässt ein Stein die Bahn hinter dem Zielkreis, wird dieser Stein somit entfernt. Es erfolgt eine Festlegung der Reihenfolge der Spielzüge und eine Errechnung der Punkte, um das Spiel interessant zu gestalten. 6.5.1 Geschwindigkeit einer Bewegung zur physikalischen Interaktion Die Eisfläche und Curling-Steine der Spieler sind Grafiken. Die Curling-Steine werden als ObjektInstanzen erstellt, um zusätzliche Informationen zu den Steinen zu speichern. Neben dem Movieclip werden die Eigenschaften xSpeed und ySpeed definiert, welche die Geschwindigkeit eines bewegten Steins speichern. Zur besseren Abfrage der Position und Geschwindigkeit aller Steine in einer for-Schleife, werden alle Objekt-Instanzen der Steine in einem Array gespeichert. Das abwechselnde Hinzufügen der Steine von Spieler Eins und Spieler Zwei erleichtert das Abfragen der Spielzüge und der Punkte im Array. Eine Variable, deren Wert beim Start des Programms Null entspricht, wird jedes Mal, wenn ein Stein auf der Bahn gespielt wird, um den Wert Eins erhöht. Nur wenn diese Variable der Position eines Steines im Array entspricht, kann der Stein, wie im Konzept der Geschwindigkeitsvisualisierung beschrieben, bewegt werden. Abbildung 6.3: Strecke zwischen der Berührung und dem Stein dient als Geschwindigkeitsindikator, hier rot gekennzeichnet. Links langsame Bewegung. Rechts schnelle Bewegung. 59 6.5. Curling Das Konzept der Bewegungsunterscheidung hilft die Position des Steines zu bestimmen, bevor dieser gespielt wird. Die Berechnung der Geschwindigkeit erfolgt im BlobRemoved Event. Die getBlobByID Funktion verschafft alle Daten zu dem Event ausführenden Blob. Die Geschwindigkeitsberechnung erfolgt erst am Ende einer Berührung, damit die gegebenenfalls durch das Konzept der Bewegungsdifferenzierung zurückgesetzten Werte genutzt werden können. Die Differenz der im Blob gespeicherten ersten und aktuellen Koordinaten stellt die zurückgelegte Strecke dar. Die benötigte Zeit stellt die Differenz zwischen dem Anfangszeitpunkt der Messung und der aktuellen Zeit dar. Durch das Dividieren der Strecke durch Zeit wird die Geschwindigkeit berechnet. Die X- und Y-Geschwindigkeitswerte werden in der Instanz der bewegten Objekte gespeichert. Im BlobOnScreen Event erfolgt eine Überprüfung, ob die X-Position des Steins einen gewissen Wert übersteigt, da der Stein nur bis zu einem gewissen Punkt bewegt werden darf. Wird dieser Wert beim Bewegen überschritten, werden die gleichen Aktionen wie im BlobRemoved Event ausgeführt. Berührt ein Stein einen Anderen, erfolgt die Berechnung der Kollision. Mit Hilfe des Satzes des Pythagoras kann aus den X-und Y-Abständen der Steine die Strecke zwischen diesen errechnet werden. Beträgt die Strecke zwischen den Steinen weniger als der Umfang der beiden Steine dividiert durch zwei, tritt eine Kollision ein. Die neu berechneten Geschwindigkeitswerte werden in den Instanzen der Steine gespeichert. Mit einer for-Schleife werden die X- und Y-Geschwindigkeitswerte aller im Array der bewegbaren Objekte gespeicherten Instanzen jeden Frame der Anwendung überprüft. Ist der Geschwindigkeitswert ungleich Null, erfolgt die Addition der gespeicherten Geschwindigkeit zur Position des Objektes. Vor dem Addieren wird jedoch der Geschwindigkeitswert temporär durch 50 dividiert, da die Anwendung mit 50 Bildern pro Sekunde läuft. Nach dem Addieren der Geschwindigkeit werden die Geschwindigkeitswerte des Objektes um die festgelegte Reibung verringert. Für den Fall, dass ein Stein durch zu hohe Geschwindigkeit die Eisfläche verlassen würde, erfolgt die Abfrage einer Bandenkollision. Falls ein Stein in X-Richtung die Bahn verlassen würde, erfolgt eine Umkehrung der X-Geschwindigkeit der dazugehörigen Objekt-Instanz. Verlässt der Stein die Bahn in Y-Richtung hinter dem Zielkreis, wird dieser entfernt. Die Punkte der Spieler werden mit Hilfe der atan2 Funktion berechnet. Durch die atan2 Funktion kann die Entfernung zum Mittelpunkt der Zielscheibe errechnet und somit die Punkte vergeben werden. Ist die Position des Steins im Array durch zwei teilbar, handelt es sich um einen Stein von Spieler Eins. Ist dies nicht der Fall, ist es ein Stein von Spieler Zwei. Die Punkte werden jeden Frame der Anwendung aktualisiert und in Textfeldern ausgegeben. Sind alle Spielzüge ausgeführt und die Geschwindigkeit aller Steine beträgt Null, wird der Gewinner anhand der Punkte ermittelt. 6.5.2 Bildschirmbegrenzung Bei der Begrenzung des Curling-Spielfeldes auf nur den Bildschirm können bei kleinen Touchscreens Probleme auftreten. Durch wenig Platz zum Bewegen der Objekte sind die Möglichkeiten zur Dosierung der Geschwindigkeit eingeschränkt (siehe Abbildung 6.4). Je größer die Fläche zum Bewegen des Objektes ist, umso genauer kann die Geschwindigkeit im Laufe der Bewegung korrigiert werden. Ist die Fläche zur Bewegung der Objekte allerdings zu groß, bleibt kaum noch Platz für das Spielfeld und somit auch kaum Freiraum für die Bewegung des Steins durch die mitgegebene Geschwindigkeit. 60 6.5. Curling Durch eine kurze Strecke nach dem Loslassen des Steins wird auch das für Curling typische Wischen relativ unbedeutend. Abbildung 6.4: Screenshot des Curling-Spiels bei der Begrenzung auf den Bildschirm. Um diese Probleme zu beheben, muss die Eisfläche über den Bildschirm hinaus gehen. Diese wird in Flash mit Hilfe eines Sprites erledigt. Ein Sprite ist eine Art Container, in dem Movieclips gespeichert werden können. Dem Sprite werden die Movieclips einer Eisbahn, die über den Bildschirm hinaus geht, sowie die Movieclips der Curling-Steine hinzugefügt. Der Sprite mit den Elementen des Spiels kann nun über den Bildschirm bewegt werden, um den momentan interessanten Teil des Spielfeldes zu zeigen. Ein Problem tritt hierbei auf, da die Koordinaten des Bildschirms von den Koordinaten der Inhalte des Sprites abweichen. Abbildung 6.5: Vergleich der Koordinaten des Sprites mit der Eisbahn und des Bildschirms. Schwarz die Koordinaten des Sprites. Rot die Koordinaten des Bildschirms. Die von Flash gelieferten Funktionen globalToLocal und localToGlobal helfen bei diesem Problem. Mit diesen Funktionen können lokale Koordinaten eines Punktes, die des Sprites, in globale Koordinaten, die der Bühne, und umgekehrt umgerechnet werden. Dies beinhaltet, dass jedes Mal, wenn 61 6.5. Curling die Koordinaten des Blobs auf der Bühne mit den Koordinaten der Curling-Steine auf dem Sprites interagieren, diese umgerechnet werden müssen. Da bei dieser Variante das Ende der Eisbahn mit der Zielscheibe während der Spielzüge nicht zu sehen ist, wird zum Planen des nächsten Zuges eine Übersicht benötigt. Hierzu wird ein weiterer Sprite mit dem Spielfeld und den Curling-Steinen im Verhältnis 1:20 erstellt. Die Positionsdaten der Steine in der Übersicht werden ständig mit den Koordinaten der Steine auf dem Feld abgeglichen. Zur Umrechnung in das Verhältnis der Übersicht müssen diese mit dem Faktor 0,2 multipliziert werden. Abbildung 6.6: Screenshot des Curling-Spiels mit Eisfläche über den Bildschirm hinaus und hinzugefügter Übersicht. 6.5.3 Wischen Die Umsetzung des Wischens erfolgt in der BlobOnScreen Funktion. Verlässt der aktuell gespielte Stein den Bereich in dem er bewegt werden darf, kann der Benutzer durch eine schnelle Auf- und Abbewegung die Reibung des Steins verringern. Es erfolgt eine Abfrage der Position des Fingers. Bei jeder Auf- und Abbewegung des Fingers, welche die Y-Koordinate des Steins schneidet, erfolgt für einen kurzen Moment das Verringern der Reibung des Steines. Abbildung 6.7: Korrekte Ausführung der Wischbewegung vor dem Stein, hier blau gekennzeichnet. 62 6.6. Foto-Applikation Die Umsetzung des Wischens durch die Geschwindigkeit einer Bewegung konnte im Rahmen dieser Diplomarbeit jedoch nicht umgesetzt werden, da folgende Probleme deutlich wurden. Neben der Geschwindigkeit einer Bewegung ist die Position und Richtungsänderung für den Effekt des Wischens von großer Bedeutung. Würde der Effekt des Wischens durch die Geschwindigkeit einer Bewegung errechnet werden, könnte der Benutzer überall auf dem Bildschirm den Finger auf und abbewegen, um die Reibung zu verringern. Schnelle Bewegungen ohne starke Richtungsänderung würden ebenso den gleichen Effekt erzielen. 6.6 Foto-Applikation Es existieren bereits sehr viele Foto-Applikationen, jedoch werden fast ausschließlich die gleichen Konzepte zur Interaktion umgesetzt. Durch die Konzepte von Drag & Drop, der Rotation und des Skalierens erhält der Benutzer die Möglichkeit dargestellte Bilder zu manipulieren. In manchen Anwendungen kann zusätzlich durch Drücken einer dargestellten Schaltfläche die Bildschirmtastatur hervorgerufen werden. Die entwickelte Foto-Applikation unterscheidet sich von diesen Konzepten. Das den Benutzern schwer fallende Konzept des Skalierens zum Hinein- und Herauszoomen und Skalieren von Bildern wird durch das Konzept von Nutzung der Geschwindigkeit einer Objektrotation ersetzt. Durch das Plazieren und Rotieren eines auf den Display gestellten Objektes kann der Benutzer zoomen. Überschneiden sich die Koordinaten des Objektes mit einem dargestellten Foto, wird das Bild durch die Rotationsgeschwindigkeit skaliert. Die Richtung der Rotation gibt hierbei an, ob vergrößert oder verkleinert werden soll. Das Nutzen der Geschwindigkeit soll den Vorteil bieten, dass sowohl kleine als auch große Skalierungsvorgänge schnell und intuitiv erledigt werden können. Darüber hinaus wird das Konzept von Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung genutzt. Der Benutzer kann mit einer Aktion, in verschiedenen Geschwindigkeiten ausgeführt, unterschiedliche Effekte erzielen. Das Aufrufen der Bildschirmtastatur wird durch dieses Konzept gelöst. Die Tastatur erscheint, wenn eine Bewegung in einer bestimmten Geschwindigkeit über den Bildschirm ausgeführt wird. Die Anfangs- und Endkoordinaten dieser Bewegung bestimmen hierbei die Position und Rotation der Tastatur. Darüber hinaus wird eine noch nie umgesetzte Aktion mit Hilfe dieses Konzeptes realisiert. Wird ein Bild mit dem bei der Geschwindigkeitsvisualisierung beschriebenen Verfahren mit einer festgelegten Geschwindigkeit in Richtung des oberen Bildschirmrandes bewegt, wird dieses vom Bildschirm entfernt und von einem Beamer projiziert. Damit dies nicht ungewollt geschieht, kann der Benutzer durch kurzes Verharren mit dem Finger an einer Position die Geschwindigkeit der Bewegung zurücksetzen. Um die Anwendung zu vervollständigen, ist neben dem Bewegen der Fotos mit dem Finger auch die Rotation mit zwei Fingern möglich. Das Verschieben des gesamten Bildschirminhalts wird in dieser Anwendung ebenfalls realisiert. Dies nicht wie üblich mit einem Finger, da sonst beim Aufrufen der Bildschirmtastatur immer der gesamte Bildschirminhalt verschoben würde. Der Benutzer muss die Fläche zwischen den Fotos mit zwei Fingern berühren, um alle Inhalte zu verschieben. 63 6.6. Foto-Applikation Abbildung 6.8: Screenshot der Foto-Applikation mit aufgerufener Bildschirmtastatur. 6.6.1 Rahmendbedingungen Um das Zoomen in der Anwendung zu ermöglichen, müssen in Flash die Bildschirminhalte skaliert werden. Häufig wird dies in Flash-Foto-Applikationen durch Skalieren der Bühne realisiert. Alle auf dem Bildschirm dargestellten Elemente werden skaliert. Dies bringt das Problem mit sich, dass neben den Bildern auch die Bildschirmtastatur und die Grafiken zur Darstellung der Blobs und Fiducials skaliert werden. Um dies zu verhindern, wird, wie bereits bei der Umsetzung des Curling-Spieles, ein Sprite verwendet. Alle Bilder werden diesem hinzugefügt und nur der Sprite wird skaliert. Da die Koordinaten der Inhalte des Sprites von den Koordinaten des Bildschirmes abweichen, ist eine Umrechnung von lokalen zu globalen und globalen zu lokalen Koordinaten nötig, wenn die Positionsdaten der Finger mit den Positionsdaten der dargestellten Objekte interagieren. Zusätzlich ist eine Multiplizierung der lokalen Koordinaten mit dem Skalierfaktor erforderlich. Hierzu werden Variablen definiert, welche die aktuelle Skalierung des Sprites speichern. Diese werden beim Start der Anwendung auf 1 gesetzt. In der Foto-Applikation werden die bewegbaren Bilder, wie schon beim Curling, als Objekt-Instanz mit dem Movieclip und den Eigenschaften xSpeed und ySpeed zur Speicherung der Geschwindigkeit erstellt. Die Foto-Objekt-Instanzen werden auch hier zur besseren Abfrage einem Array hinzugefügt. Die Position des Objektes im Array entspricht einer eindeutigen Foto-ID. Da in der Anwendung mehrere Singletouchaktionen gleichzeitig und Multitouchaktionen möglich sein sollen, wird den Blobs eine zusätzliche Eigenschaft angefügt. Die zusätzliche Eigenschaft Objekt gibt an, welches Objekt der Blob berührt. Die Eigenschaft wird beim Erstellen des Blobs auf 100 gesetzt, da das Array der Fotos diese Länge nicht erreicht. In der BlobOnScreen Funktion, welche beim Auftreten eines neuen Fingers aufgerufen wird, erfolgt eine Überprüfung, ob die Koordinaten eines Fingers sich mit denen eines dargestellten Fotos überschneiden. Ist dies der Fall, folgt in der Objekt-Eigenschaft des Blobs eine Speicherung der Position des Bildes im dazugehörigen Array. Somit kann über die Objekt-Eigenschaft eines Blobs direkt auf das berührende Bild zugegriffen werden. Ist die Eigenschaft unverändert 100, wird keines der Bilder berührt. Da in der Foto-Applikation Single- und Multitouchaktionen möglich sein sollen, ist die Unterschei- 64 6.6. Foto-Applikation dung dieser notwendig. Hierzu werden alle Blobs beim ersten Auftreten einem Array hinzugefügt und beim Verschwinden wieder entfernt. An der Länge des Arrays kann die Anzahl der den Display berührenden Finger bestimmt werden. Wird nur eine Berührung erkannt, handelt es sich um eine Singletouch Aktion. Ist die Länge des Arrays größer Eins muss unterschieden werden, ob es sich um mehrere Singletouchaktionen oder Multitouchaktionen handelt. Hierzu erfolgt anhand der ObjektEigenschaft der Blobs eine Überprüfung, ob mehrere Finger das gleiche Objekt berühren. In diesem Fall ist von einer Multitouchaktion auszugehen. Zur Verarbeitung werden die Singletouchaktionen und Multitouchaktionen in getrennte Arrays gespeichert. Die Kategorisierung von Single- und Multitouchaktionen wird jeden Frame der Anwendung wiederholt. Ist die Länge des Arrays der Singletouchaktionen größer eins, werden die dort gespeicherten Blobs nach dem Konzept der Geschwindigkeitsvisualisierung verarbeitet um das in der Objekt-Eigenschaft gespeicherte Bild zu verschieben und zu rotieren. Abbildung 6.9: Rotation eines Fotos beim Verschieben, Position des Fingers rot gekennzeichnet. Ist die Länge des Arrays der Multitouchaktionen größer Zwei, werden die Multitouchaktionen verarbeitet. Die Rotation des in der Objekt-Eigenschaft der Blobs gespeicherten Bildes erfolgt nach dem Konzept der Rotation mit zwei Fingern. Anhand der Differenz zwischen den beiden Fingern wird mit der atan2 Funktion der Winkel zwischen den Berührungen bestimmt. Jede Veränderung dieses Winkels wird auf das berührte Bild übertragen. Ist der Wert der Objekt-Eigenschaft 100, wird kein Objekt berührt. In diesem Fall wird das Bewegen des gesamten Sprites umgesetzt, indem jegliche Veränderung der Koordinaten einer der Berührungen, wie beim Drag & Drop, auf den Sprite übertragen wird. Die Überprüfung und Kategorisierung der Berührungen wird ständig wiederholt, da aus Singletouchaktionen durch Hinzufügen eines weiteren Fingers Multitouchaktionen werden können. Umgekehrt kann durch das Entfernen eines Fingers aus einer Multitouchaktion eine Singletouchaktion werden. Die Arrays der Single- und Multitouchaktionen werden nach dem Ausführen der Aktion geleert und erst beim neuen Kategorisieren wieder gefüllt. Wurde die Bildschirmtastatur aufgerufen, erfolgt in der BlobOnScreen Funktion die Abfrage, ob eine Überschneidung der Koordinaten der Tastatur und des Fingers vorliegt. Ist dies der Fall, folgt eine 65 6.6. Foto-Applikation weitere Überschneidungsabfrage zwischen den Koordinaten des Fingers und den einzelnen Tasten. Liegt auch hier eine Überschneidung vor, wird die entsprechende Taste gedrückt. Liegt eine Überschneidung mit der Tastatur und keiner der Tasten vor, kann die Tastatur per Drag & Drop bewegt werden. Das Konzept zur Bewegungsdifferenzierung wird auch in dieser Anwendung angewendet. 6.6.2 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung In der BlobRemoved Funktion wird die X- und Y-Geschwindigkeit einer Bewegung berechnet. Es folgt eine Abfrage der Eigenschaft Objekt der Blob Instanz. Entspricht der Wert 100, berührt der Finger kein Objekt. Ist dies der Fall, werden die X- und YGeschwindigkeiten der Bewegung addiert. Negative Geschwindigkeitswerte werden vorher in positive umgewandelt, um Verfälschungen des Wertes zu verhindern. Überschreitet die Summe der X-und Y-Geschwindigkeiten einen festgelegten Wert, wird der Winkel zwischen den ersten und letzten Koordinaten der Berührung mit der atan2 Funktion berechnet. Die Rotation der Bildschirmtastatur wird diesem Winkel angepasst und die Position der Tastatur den letzen Koordinaten der Berührung angeglichen. Zuletzt wird die Grafik der Bildschirmtastatur sichtbar gestellt. Enthält die Eigenschaft objekt der Blob Instanz hingegen die Position eines Bild-Objektes im dazugehörigem Array, wird ein Bild bewegt. Zur Überprüfung, ob das Bild mit der benötigten Geschwindigkeit in Richtung des oberen Bildschirmrandes bewegt wurde, erfolgt der Abruf des Wertes der Y-Geschwindigkeit. Tritt dieser Fall ein, erfolgt eine Speicherung der Geschwindigkeitswerte in der Instanz des Bild-Objektes. Die Position des Bildes im Array wird in einer Variable gespeichert, deren Standardwert 100 entspricht, da das Bilder Array diese Länger nicht ereicht. Der Inhalt dieser Variable wird jeden Frame überprüft. Weicht der Wert vom Standardwert ab, wird ein Bild zum Beamer bewegt. Der Wert der Variable entspricht in diesem Fall der Position des zu projizierendem Bildes im Bilder-Array. Das Bild wird mit der in der Objekt Instanz gespeicherten Geschwindigkeit so lange bewegt, bis es den Bildschirm verlässt und von einem Beamer projiziert wird. Der Wert der Variable wird hiernach wieder auf den Standardwert zurückgesetzt. 6.6.3 Nutzung der Geschwindigkeit einer Objektrotation Die Skalierung durch die Geschwindigkeit einer Objektrotation findet in der FiducialOnScreen Funktion statt. Diese Funktion wird immer dann aufgerufen, wenn neue Informationen zu einem bereits erkannten Fiducial gesendet werden. Durch die getFiducialByID Funktion werden alle Informationen zu dem Event ausführendem Objekt beschafft. Um Verzögerungen zwischen der Interaktion des Benutzers und der Aktion in der Applikation zu vermeiden, erfolgt die Geschwindigkeitsmessung bei jeder Aktualisierung der Daten. Hierzu wird die Eigenschaft des Startzeitpunktes der Messung bei jedem Aufruf als letzte Handlung auf die aktuelle Zeit gesetzt. Hiervor erfolgt ein Vergleich des aktuellen und vorherigen Rotationswinkels des Objektes. Sind die Winkel unterschiedlich, wurde das Objekt bewegt und es erfolgt die Berechnung der Rotationsgeschwindigkeit. Zuerst wird die Differenz der Winkel berechnet. Da ein Sprung von 360 auf 0 Grad und umgekehrt möglich ist, folgt eine Überprüfung, ob die Rotation -300 oder 300 Grad übersteigt 66 6.7. Zusammenfassung (siehe Abbildung 6.10). Ist diesem Fall wird je nach Ergebnis 360 zum Wert addiert oder vom Wert subtrahiert. Abbildung 6.10: Problematik des Grad-Sprungs von 0 auf 360 Grad und umgekehrt. Anschließend wird der Endzeitpunkt der Messung mit der aktuellen Zeit definiert. Die Berechnung der Rotationsgeschwindigkeit erfolgt durch das Dividieren der Rotationsveränderung durch die Zeit zwischen den Messungen. Um einen neuen Skalierungsfaktor zu berechnen, wird die Rotationsgeschwindigkeit vom alten Skalierungsfaktor abgezogen. Der Wert wird subtrahiert, da eine Rotation nach links eine Vergrößerung des Skalierungsfaktors bewirken soll. Bei der Skalierung zeigt sich ein weiterer Vorteil der Nutzung des Sprites. Da der Sprite im Gegensatz zur Bühne verschoben werden kann, ist es möglich, zu einem festgelegten Punkt zu skalieren. Somit kann die Position des rotierten Objektes den Fokus für den Zoom definieren. Bevor die Skalierung stattfindet, wird hierzu die Matrix des Sprites zu den lokalen Koordinaten des Fiducials verschoben, erst danach skaliert und wieder zurück verschoben. Die Variablen des Skalierungsfaktors werden den neuen Skalierungsfaktoren angeglichen. Überschneiden sich jedoch die Koordinaten des Objektes mit den Koordinaten eines Bildes, wird der Skalierfaktor des Bildes um die Rotationsgeschwindigkeit erhöht. 6.7 Zusammenfassung In diesem Kapitel wurde die Umsetzung der entwickelten Konzepte dokumentiert. Hierzu erfolgte zuerst die Implementierung der im Kapitel der technischen Umsetzung vorgestellten Klassen zum Empfangen und Verarbeiten der Berührungsdaten. Das Grundgerüst der Anwendungen wurde vorgestellt, welches auch das Darstellen von Berührungen und Objekten, die den Bildschirm berühren, beinhaltet. Es erfolgte die Realisierung der Konzepte zur Benutzerfreundlichkeit. Die Geschwindigkeitsvisualisierung und Bewegungsdifferenzierung, mit Hilfe der eigens definierten Variablen, konnte sowohl in dem Curling-Spiel als auch in der Foto-Applikation erfolgreich umgesetzt werden. Die Umsetzung des Konzeptes von Geschwindigkeit zur physikalischen Interaktion erfolgte im CurlingSpiel. Hierzu wurde die Geschwindigkeit einer Bewegung beim Enden einer Berührung ausgelesen 67 6.7. Zusammenfassung und an das bewegte Objekt übergeben. Zusätzliche folgte die Erstellung physikalischer Rahmenbedingungen wie Reibung und Kollision von Objekten. Für den Ablauf des Spiels wurden Regeln festgelegt sowie Punkte anhand der Position gespielter Steine berechnet. Da auf kleinen Touchsystemen die Begrenzung des Spielfeldes auf nur den Bildschirm den Spielspaß beeinträchtigt und das für das Curling übliche Wischen an Bedeutung verliert, wurde eine zweite Variante des Spiels realisiert. Hierbei ragt das Spielfeld über den Bildschirmrand hinaus, es wird nur der interessante und entscheidende Teil des Spiels gezeigt. Um den Überblick zu gewähren, wurde eine Übersicht der gesamten Eisfläche hinzugefügt. Das Wischen konnte durch die Geschwindigkeit einer Bewegung nicht realisiert werden, da die Position des auf- und abbewegenden Fingers bedeutender als die Geschwindigkeit der Bewegung ist. Um die Konzepte von Geschwindigkeit zur Aktionsdifferenzierung und Geschwindigkeit einer Objektrotation in einer Foto-Applikation umzusetzen, wurden die für solch eine Anwendung vertrauten Konzepte realisiert. Die Bewegung durch den Bildschirminhalt muss durch zwei Finger erfolgen, sonst treten durch das Konzept der Aktionsdifferenzierung zum Aufrufen der Bildschirmtastatur Fehler auf. Das Auslesen der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung erfolgt, wie schon beim Curling, am Ende einer Berührung. Die Geschwindigkeit einer Objektrotation wird hingegen bei jeglicher Änderung der Rotation eines Objektes gemessen. Nachdem die neu entwickelten Konzepte erfolgreich in Beispielanwendungen realisiert wurden, erfolgt im anschließenden Kapitel dessen Bewertung. 68 Kapitel 7 Konzeptbewertung Das vorherige Kapitel dokumentierte die exemplarische Umsetzung der entwickelten Konzepte in Beispielanwendungen. Das Konzept von Nutzung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion wurde in einem Curling-Spiel getestet. Die Erprobung der Konzepte von Nutzung der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung und Geschwindigkeit einer Objektrotation fand in einer Foto-Applikation statt. Darüber hinaus wurden die Konzepte der Bewegungsunterscheidung und Geschwindigkeitsvisualisierung zur Benutzerfreundlichkeit bei der Geschwindigkeitsbestimmung von Fingerbewegungen realisiert und in den Anwendungen verwendet. Eine Bewertung der umgesetzten Konzepte erfolgt in diesem Kapitel. Im Fokus steht neben der Funktionalität die für den Multitouch-Table gängige Intuitivität der Konzepte. 7.1 Einleitung Der folgende Abschnitt bewertet die in den Anwendungen umgesetzten Konzepte. Die Fertigstellung eines Multitouch-Tables an der Fachhochschule hat sich verzögert. Aufgrund dessen musste auf eine Erprobung der Konzepte auf einem Multitouch-Table verzichtet werden, sodass die Erprobung nur in Verbindung mit dem TUIO-Simulator erfolgen konnte. Auf die Durchführung einer Evaluation mit Testpersonen zur Bewertung des Umgangs von Benutzern mit diesen Konzepten musste ebenso verzichtet werden. Als Grundlage dieser Bewertung dienen somit die Erfahrungen im Umgang mit den umgesetzten Konzepten durch Bedienung auf der Grundlage des TUIO-Simulators. 7.2 Geschwindigkeit einer Bewegung zur physikalischen Interaktion Das Konzept von Nutzung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion konnte in einem Curling-Spiel erfolgreich umgesetzt werden. Das Übertragen der Geschwindigkeit an ein bewegtes Objekt am Ende einer Berührung funktioniert einwandfrei. Es ist leicht zu erkennen und nachzuvollziehen, dass die aufgebaute Geschwindigkeit beim Bewegen des Objektes mit dem Finger 69 7.2. Geschwindigkeit einer Bewegung zur physikalischen Interaktion an das Objekt weitergegeben wird. Benutzer, die mit den Prinzipien des Curlings vertraut sind, dürften die Bedienung intuitiv und ohne Einweisung schon nach kurzem Kontakt mit der Anwendung verstehen. Auch die physikalische Interaktion dürfte positiv wahrgenommen werden. Durch die Nutzung der physikalischen Größe Geschwindigkeit scheint auch das physikalische Verhalten des Objektes nach dem Loslassen des Fingers plausibel. Eine Reibung, die das Objekt abbremst, sowie die Interaktion mit anderen Objekten erfolgt wie erfahrungsgemäß erwartet. Die Dosierung der Geschwindigkeit funktioniert zufriedenstellend. Ohne Übung fällt es schwer die Wirkung der Geschwindigkeit richtig einzuschätzen. Es bedarf einer gewissen Erfahrung, wie die Umsetzung der Geschwindigkeit erfolgt und in welchem Maße die Reibung den Stein abbremst. Nach wenigen Probeläufen mit der Anwendung fällt die richtige Einschätzung der Wirkung einer Bewegung immer leichter. In der Umsetzung von Spielen dürfte dies jedoch nicht weiter störend sein, da sowohl in realen Spielen als auch in Computersimulationen erwartet wird, dass sich die Leistung des Spielers erst nach und nach steigert. Aus diesem Grund wird bei fast allen Computerspielen mit dem Erreichen eines höheren Levels auch der Schwierigkeitsgrad gesteigert. Die Optimierung der Anwendung für Multitouch-Tables in den verschiedensten Größen erweist sich bei diesem Konzept als problematisch. Bei überdimensionalen Touchscreens, wie beispielsweise zur Umsetzung von UI Centrics Air Hockey genutzt, können Spiele problemlos auf dem Bildschirm dargestellt werden. Bei kleinen Multitouch-Tables wird dies jedoch problematisch. Die Fläche, die benötigt wird, um Geschwindigkeit durch eine Bewegung aufzubauen, darf nicht zu klein sein, da sonst die Präzision der Bedienung leidet. Außerdem erforder die Fläche zum Abbauen der Geschwindigkeit eines losgelassenen Objektes eine gewisse Größe des Spielfeldes, damit die Geschwindigkeit nicht an Bedeutung verliert und der Spielspass erhalten bleibt. Dieses Problem trat bei der Umsetzung der Curling-Anwendung auf. Beim Begrenzen der Eisfläche auf dem Bildschirm wird die Strecke, die der Stein nach dem Loslassen auf dem Eis gleiten kann, sehr kurz. Hierdurch kann das Konzept des Wischens den Spielverlauf kaum noch beeinflussen und verliert somit an Bedeutung. Um dieses Problem zu beheben, wurde folgender Lösungsweg gewählt: Die komplette Eisfläche wird nicht dargestellt und ragt virtuell über den Bildschirmrand hinaus. Der bewegte Stein wird innerhalb des möglichen Ausschnittes fokussiert. Damit dem Benutzer ein Überblick über das gesamte Spielfeld möglich ist, erfolgt eine Darstellung des gesamten Spielfeldes am rechten Rand. Abbildung 7.1: Vergleich der Länge der Eisbahnen der zwei Curling-Spiel-Umsetzungen. Links mit Begrenzung auf den Bildschirm. Rechts mit virtueller Erweiterung über den Bildschirm hinaus. 70 7.3. Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung Voraussetzung für diese Lösung ist jedoch, dass die Spieler abwechselnd ihre Spielzüge durchführen. In Spielen, in denen mehrere Benutzer gleichzeitig interagieren oder sich gegenüberstehen, ist die Nutzung nicht möglich. 7.3 Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung Das Konzept von Nutzung der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung wurde in einer Foto-Applikation getestet. Dabei erwies sich das Abfragen der Geschwindigkeit beim Enden einer Berührung am benutzerfreundlichsten. Die Differenzierung zwischen der Bewegung eines Bildes und der Aktion zum Projizieren eines Bildes auf einem Beamer funktioniert hervorragend. Dass eine hohe Geschwindigkeit, die ausschließlich in eine bestimmte Richtung ausgeführt wird, diese Aktion auslöst, hilft zusätzlich beim Differenzieren. Das Bewegen des Fotos bis zum Loslassen des Fingers trägt zur Intuitivität des Konzeptes bei und überzeugt damit, dass das Foto durch den Schwung der Bewegung auf die Projektionsfläche befördert wird. Sowohl das Aufrufen der Bildschirmtastatur als auch die Bestimmung der Rotation und Position der Tastatur durch die Position der Bewegung konnte gut umgesetzt werden. Durch den Zeitpunkt des Loslassen können diese Daten kontrolliert werden. Üblicherweise kann mit einem Finger der gesamte Bildschirminhalt in einer Foto-Applikation bewegt werden. Zur Differenzierung der Aktionen muss in dieser Anwendung mit zwei Fingern erfolgen, da sonst beim Aufrufen der Bildschirmtastatur immer eine Verschiebeaktion durchgeführt werden würde. Die geschwindigkeitsabhängige Funktion darf sich nicht mit einer anderen nicht zusammenhängenden Aktion überschneiden, da bis zum Berechnen der Geschwindigkeit immer die andere Aktion ausgeführt wird. Die Intuitivität vom Konzept der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung hängt von der geschwindigkeitsabhängigen Funktion ab. Das Projizieren des Fotos wirkt sehr intuitiv. Das Aufrufen der Bildschirmtastatur hingegen steht in keinem Zusammenhang mit der ausgeführten Bewegung. 7.4 Geschwindigkeit einer Objektrotation Des Weiteren wurde das Konzept zur Nutzung der Geschwindigkeit einer Objektrotation in der FotoApplikation erprobt. Dies ermöglicht Benutzern durch die Rotationsgeschwindigkeit eines auf den Display gelegten Objektes kleine und große Einstellungsschritte durch eine Bewegung vorzunehmen. Hierbei erweist es sich am benutzerfreundlichsten die Geschwindigkeit bei jeder Änderung auszulesen, da jegliche Veränderung der Geschwindigkeit direkt übertragen wird. Das Auslesen erst am Ende einer Rotationsbewegung würde zu Verzögerungen führen und es somit dem Benutzer erschweren, den erzielten Effekt einzuschätzen. Dass die Rotationsrichtung für die Änderung entscheidend ist, kann intuitiv wahrgenommen und umgesetzt werden, da dies auch beim Konzept der Rotationsausrichtung der Fall ist. Das Zoomen durch die Rotationsgeschwindigkeit funktioniert sehr präzise. Durch das direkte Feed- 71 7.5. Bewegungsdifferenzierung back kann die Wirkung der Manipulation gut abgeschätzt werden. Sowohl kleine als auch große Schritte können problemlos durchgeführt werden. Das Definieren des Fokus für den Zoomvorgang durch die Position des Objektes ist schnell begreifbar und kann sehr präzise erfolgen. Hierdurch ist für den Benutzer nachvollziehbar, dass die Position des Objektes für die Aktion entscheidend ist. Ebenso wird dem Benutzer ohne Schwierigkeiten klar, dass Bilder durch das selbe Objekt skaliert werden können. Bei der Skalierung eines Bildes wird jedoch ein Teil des Bildes durch das Objekt verdeckt. Dies kann beim Vergrößern eines sehr kleinen Bildes zur kompletten Verdeckung führen. Abbildung 7.2: Screenshot der Foto-Applikation. Das rote Objekt verdeckt das Foto beim Skalieren. Allgemein ist zu hinterfragen, ob die Intuitivität der Interaktion durch Objekte gegeben ist. Ohne Vorwissen wird eine Interaktion mit einer Anwendung nicht mit der Manipulation eines realen Objektes assoziiert. Um die Intuitivität des Konzeptes zu fördern könnte es sinnvoll sein auf den Objekten Symbole darzustellen, welche die Funktion der Objekte beschreiben. 7.5 Bewegungsdifferenzierung Durch die Bewegungsdifferenzierung wird zwischen fortlaufenden und gestoppten Bewegungen unterschieden. Dies geschieht durch Überprüfung und Vergleich der vorherigen und aktuellen Koordinaten einer Berührung. Stimmen diese überein, wird die Geschwindigkeit zurückgesetzt. Bei der Nutzung der Geschwindigkeit erweist sich das Konzept dieser Bewegungsdifferenzierung als essentiell. Bei der Nutzung der Geschwindigkeit zur physikalischen Interaktion wird hierdurch, neben dem Wegstoßen von Objekten, die genaue Positionierung eines bewegbaren Objektes erst möglich. Ohne dieses Konzept wäre es zum Beispiel sehr schwierig beim Curling-Spiel Steine zu positionieren, da sie sich nach dem Loslassen immer weiter bewegen würden. Außerdem würden Fehler bei der Geschwindigkeitsberechnung entstehen, falls ein Benutzer versucht, einen Stein ohne Loslassen zu positionieren. Auch beim Konzept von Geschwindigkeit zur Aktionsdifferenzierung erweist sich die Möglichkeit der 72 7.6. Geschwindigkeitsvisualisierung Bewegungsdifferenzierung als sinnvoll. Durch das Messen der Geschwindigkeit am Ende einer Aktion kann mit diesem Konzept die Geschwindigkeit von zu schnell ausgeführten Bewegungen zurückgesetzt werden, sodass das Ausführen ungewollter geschwindigkeitsabhängiger Aktionen verhindert wird. 7.6 Geschwindigkeitsvisualisierung Bei der Geschwindigkeitsvisualisierung folgt ein Objekt dem bewegendem Finger. Die Strecke zwischen Finger und Objekt dient der Einschätzung der aufgebauten Geschwindigkeit. Die Geschwindigkeitsvisualisierung erweist sich in beiden Anwendungsbeispielen als sehr vorteilhaft. Durch das Liefern eines optischen Feedbacks zur aufgebauten Geschwindigkeit wird diese schnell als ein Bestandteil der Anwendung wahrgenommen und genutzt. Bei der Foto-Anwendung wird der Benutzer hierdurch für die geschwindigkeitsabhängigen Aktionen sensibilisiert. Im Curling Spiel kann nach nur wenigen Übungen die Geschwindigkeit des Steines besser abgeschätzt werden. Aufgrund der Differenz der Strecke zwischen Stein und dem Finger des Benutzers wird dies kalkulierbar. Mit dem Konzept der Geschwindigkeitsvisualisierung ist das Konzept der Bewegungsdifferenzierung leicht nachzuvollziehen. Durch das Verharren mit dem Finger an einer Position verringert sich die Strecke zwischen Objekt und Finger bis zur Überschneidung. Somit ist die Strecke zwischen Finger und Objekt Null und die Geschwindigkeit ist durch die Bewegungsdifferenzierung ebenfalls Null. Anderenfalls würde der Benutzer durch Stillstand des Fingers auf dem Bildschirm nur die Strecke zwischen Finger und bewegtem Objekt auf Null verringern, nicht jedoch die Geschwindigkeit auf Null setzen. Daher ist es erforderlich bei Nutzung des Konzeptes der Geschwindigkeitsvisualisierung das Konzept der Bewegungsdifferenzierung einzusetzen. 7.7 Probleme bei der Geschwindigkeitsmessung einer Bewegung Da die Zeitkomponente bei der Geschwindigkeitsmessung auf verschiedenen Bildschirmgrößen variiert, stellt die Nutzung von Geschwindigkeit bei der Definition von festen Werten ein Problem dar. Wird eine Anwendung beispielsweise auf einem 103 Zoll Bildschirm ausgeführt, muss ein Finger circa 261,5 cm bewegt werden, um den Sensor vollständig diagonal zu durchlaufen. Um den Sensor auf einem 32 Zoll Bildschirm diagonal zu durchlaufen, muss der Finger nur circa 81,5 cm bewegt werden. Die Positionsdaten werden immer im Verhältnis Null bis Eins geliefert und mit der Auflösung der Anwendung multipliziert. Zur Geschwindigkeitsberechnung wird die zurückgelegte Strecke in der Anwendung durch die dafür benötigte Zeit dividiert. Der Benutzer benötigt jedoch für das Zurücklegen einer Strecke von circa 261,5 cm eine andere Zeit als für die Strecke von circa 81,5 cm. Somit werden bei zwei verschiedenen Bildschirmgrößen zwei unterschiedliche Geschwindigkeitswerte errechnet. Unterschiedliche Möglichkeiten sind denkbar, um dieses Problem zu beheben. 73 7.8. Zusammenfassung • Anwendungen, wie beispielsweise solche von Microsoft Surface, werden nur für einen bestimmten Tisch optimiert. Somit kann eine Anpassung der Werte an das verwendete System vorgenommen werden. • Eine andere Lösung wäre das Definieren unterschiedlicher Werte für verschiedene Bildschirmgrößen. Der Benutzer muss hier beim Start der Anwendung die Größe seines Touchscreens einstellen, um die Werte dem verwendeten System anzupassen. 7.8 Zusammenfassung Das Konzept von Geschwindigkeit einer Bewegung zur physikalischen Interaktion kann als Erfolg betrachtet werden. In Kombination mit den Konzepten zur Bewegungsdifferenzierung und Geschwindigkeitsvisualisierung wurde eine präzise, gut kontrollierbare und intuitive Steuerung geschaffen. Im Optimalfall wird das Konzept auf großen Touchsystemen genutzt, da auf kleinen Systemen die Möglichkeiten eingeschränkt sind und nicht voll genutzt werden können. Die Bestimmung von Aktionen durch die Geschwindigkeit einer Bewegung funktioniert gut. Das Auslesen und Abfragen der Geschwindigkeit am Ende einer Berührung erweist sich als beste Variante. Die Konzepte der Bewegungsdifferenzierung und Geschwindigkeitsvisualisierung helfen dem Benutzer die Geschwindigkeit abzuschätzen und zu kontrollieren. Das ungewollte Ausführen von geschwindigkeitsabhängigen Funktionen kann verhindert werden. Bei der Überschneidung von geschwindigkeitsunabhängigen und -abhängigen Aktionen ist zu berücksichtigen, dass diese in einem Zusammenhang stehen sollten. Die Intuitivität des Konzeptes hängt von der durch die Geschwindigkeit bestimmten Funktion ab. Das Manipulieren von Einstellungen durch die Geschwindigkeit einer Objektrotation fällt leicht. Das ständige Abfragen und Umsetzen der Geschwindigkeit erweist sich als benutzerfreundlichste Lösung. Die Realisierung von großen und kleinen Einstellungssprüngen mit nur einer Bewegung wird mit diesem Konzept ermöglicht. Das Bestimmen der Aktion durch die Position des Objektes kann zu Problemen führen, da in manchen Fällen die Verdeckung durch das Objekt suboptimal ist. Um die Intuitivität des Konzeptes zu steigern, können Symbole auf Objekten deren Funktion beschreiben. Ein Problem bei der Bestimmung von Werten bei der Geschwindigkeitsmessung stellen die unterschiedlichen Größen der Touchsysteme dar. 74 Kapitel 8 Zusammenfassung und Ausblick Im Rahmen dieser Diplomarbeit sollte untersucht werden, wo und wie Geschwindigkeit und Beschleunigung einer Bewegung zur Bedienung von Multitouch-Anwendungen gegenwärtige genutzt wird. Auf der Grundlage dieses Wissens sollten neue Konzepte zur Interaktion entwickelt werden, insbesondere unter Berücksichtigung der Auswertung und Nutzung von Bewegungsgrößen von Benutzereingaben. Diese entwickelten Konzepte sollten exemplarisch anhand von Beispielanwendungen überprüft und bewertet werden. Um sich einen Grundwissen über die technischen Möglichkeiten des Multitouch-Tables zu verschaffen, wurden die unterschiedlichen Ansätze zur Umsetzung eines multitouchfähigen System untersucht. Anschließend erfolgte die Analyse der mit dieser Technologie umgesetzten Softwarekonzepte. Es zeigte sich die Vielfältigkeit der Einsatzbereiche des Multitouch-Tables, ebenso jedoch auch die Begrenzung der Anzahl unterschiedlicher Softwarelösungen für solch ein System. Nach der Untersuchung der unterschiedlichen Anwendungsbereiche der Software folgte die Prüfung der dort umgesetzten Konzepte. Hierbei wurde unterschieden zwischen der Interaktion durch Berührung mit Fingern und der Interaktion mit realen Objekten, die den Bildschirm berühren. Trotz der vielen bereits vorhandene Einsatzmöglichkeiten des Multitouch-Tables existieren bisher nur wenige unterschiedliche Konzepte zur Interaktion. In allen vorliegenden Konzepten wurde die Umsetzung einer intuitiven Bedienung deutlich. Das Potential der Möglichkeiten zur Nutzung der Bewegungsgrößen von Benutzereingaben wurde dabei nur ansatzweise und unzureichend genutzt. Auf der Grundlage der Ergebnisse wurden neue Konzepte mit Nutzung der Geschwindigkeit entwickelt: • Geschwindigkeit einer Objektrotation • Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung • Geschwindigkeit einer Bewegung zur physikalischen Interaktion Die Nutzung der Geschwindigkeit einer Objektrotation bringt gegenüber dem bisherigen Konzept der Rotationsausrichtung Vorteile. Es wird keine Skala zur Orientierung um das Objekt benötigt und somit besteht keine 360 Grad Beschränkung der Eingabe. Große und kleine Einstellungsschritte können präzise und schneller umzusetzen. Die Position des Objektes kann die auszuführende Aktion beeinflussen. Zur exemplarischen Überprüfung soll das Zoomen und Skalieren von Fotos in einer 75 Zusammenfassung und Ausblick Foto-Applikation mit diesem Konzept realisiert werden. Die Nutzung der Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung vervielfacht die Anzahl der Interaktionsmöglichkeiten. Mit der gleichen Bewegung, in unterschiedlicher Geschwindigkeit ausgeführt, können mehrere verschiedene Aktionen durchgeführt werden. Ebenfalls in einer FotoApplikation soll das Konzept zum Aufrufen der Bildschirmtastatur sowie zum Projizieren von Bildern mit Hilfe eines Beamers erprobt werden. Durch die Nutzung der Geschwindigkeit einer Bewegung zur physikalischen Interaktion können Touchscreen-Anwendungen noch realer wirken. Dies könnte vor allem bei der Entwicklung neuer Spielkonzepte von großer Bedeutung sein, deshalb erfolgt die Überprüfung anhand eines CurlingSpiels. Darüber hinaus erfolgte die Entwicklung eines Konzeptes zur Bewegungsdifferenzierung sowie ein Konzept zur Geschwindigkeitsvisualisierung. Durch die Bewegungsdifferenzierung wird zwischen fortlaufenden und gestoppten Bewegungen unterschieden. Bei der Geschwindigkeitsvisualisierung folgt ein Objekt dem bewegenden Finger, die Strecke zwischen Finger und Objekt dient der Einschätzung der aufgebauten Geschwindigkeit. Diese beiden Konzepte ergänzen sich gegenseitig in ihrer Funktion. Daher ist es erforderlich, bei Nutzung des Konzeptes der Geschwindigkeitsvisualisierung das Konzept der Bewegungsdifferenzierung einzusetzen. Dies soll den Benutzer eine besser Kontrolle und Einschätzung der Geschwindigkeit einer Bewegung ermöglichen. Die Konzepte werden sowohl in der Foto-Applikation als auch im Curling-Spiel getestet. Da die Beschleunigung mit der Intuitivität der Touchscreen-Bedienung des Multitouch-Tables im Konflikt steht, wurde sie bei der Konzeptentwicklung nicht berücksichtigt. Die Anwendungen wurden für einen Multitouch-Table, basierend auf der FTIR-Technologie entwickelt. Zum Auslesen und Verarbeiten der Infrarotkamera-Daten wurde das Open Source Framework Reactivion verwendet, welches zur Datenübertragung das TUIO-Protokoll nutzt. Zur Umsetzung der Anwendungen in Flash wurden Bibliotheken zum Empfangen und Verarbeiten der Reaktivion-Daten geschrieben, zur Berechnung der Geschwindigkeit sowie zur Bewegungsdifferenzierung die Daten ergänzt. Die Umsetzung der Konzepte konnte mit Hilfe dieser Bibliotheken erfolgreich umgesetzt werden. Bei den Konzepten Geschwindigkeit einer Bewegung zur physikalischen Interaktion und Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung,erwies sich die Messung und Errechnung der Geschwindigkeit am Ende einer Berührung als erfolgreiche Lösung. Zur Realisierung des Konzeptes der Geschwindigkeit einer Objektrotation wurde die Geschwindigkeit bei jeder Aktualisierung gemessen und errechnet. Die Konzepte Geschwindigkeitsvisualisierung und Bewegungsdifferenzierung zur Benutzerfreundlichkeit konnten mit Hilfe der eigens definierten Variablen realisiert und in beiden Anwendungen umgesetzt werden. Da sich die Fertigstellung eines Multitouch-Tables an der Fachhochschule verzögerte, erfolgte die Erprobung der Konzepte in den Anwendungen mit dem TUIO-Simulator. Die Änderung des Zoomfaktors durch das Konzept der Geschwindigkeit einer Objektrotation in einer Foto-Applikation ermöglicht die Realisierung von großen und kleinen Einstellungssprüngen mit nur einer Bewegung. Beim Skalieren der Fotos kann jedoch in manchen Fällen das Objekt große Teile des Bildes verdecken. Das Konzept Geschwindigkeit einer Bewegung zur Aktionsdifferenzierung konnte erfolgreich in der Foto-Applikation erprobt werden. Die Differenzierung zwischen der Bewegung eines Bildes und der Aktion zum Projizieren eines Bildes auf einem Beamer funktioniert hervorragend. Vorteil hierbei 76 8.1. Ausblick ist, dass nur eine hohe Geschwindigkeit, ausschließlich in eine bestimmte Richtung ausgeführt, diese Aktion auslöst. Das Bewegen des Fotos bis zum Loslassen trägt zur Intuitivität des Konzeptes bei. Bei der Überschneidung von geschwindigkeitsunabhängigen und -abhängigen Aktionen ist zu berücksichtigen, dass diese in einem Zusammenhang stehen sollten. Sowohl das Aufrufen der Bildschirmtastatur als auch die Bestimmung der Rotation und Position der Tastatur durch die Position der Bewegung funktioniert gut. Allerdings musste hier eine sich überschneidende Aktion abgeändert werden. Das Konzept Geschwindigkeit zur physikalischen Interaktion in einem Curlingspiel bietet eine intuitive und präzise Bedienung. Auch die physikalische Interaktion dürfte positiv wahrgenommen werden. Nach wenigen Probeläufen fällt die Einschätzung der Wirkung einer Bewegung immer leichter. In Spiel-Umsetzungen ist dies jedoch nicht weiter störend, da eine Leistungssteigerung des Spielers erst nach und nach erwartet wird. Bei der Umsetzung des Konzeptes muss berücksichtigt werden, dass die Fläche, die benötigt wird, um Geschwindigkeit durch eine Bewegung aufzubauen, nicht zu klein sein darf, die Präzision der Bedienung leidet sonst. Die Fläche zum Abbauen der Geschwindigkeit eines losgelassenen Objektes erfordert eine gewisse Größe, damit die Geschwindigkeit nicht an Bedeutung verliert. Die Konzepte der Bewegungsdifferenzierung und Geschwindigkeitsvisualisierung erweisen sich in beiden Anwendungsbeispielen als sehr vorteilhaft. Durch die Kombination der Konzepte wird das intuitive, fehlerfreie und genaue Platzieren von Objekten beim Konzept von Geschwindigkeit zur physikalischen Interaktion erst möglich, da der Benutzer Kontrolle und Feedback über die Weitergabe der Geschwindigkeit erhält. Beim Konzept der Aktionsdifferenzierung kann mit diesen Konzepten das Ausführen ungewollter geschwindigkeitsabhängiger Aktionen verhindert werden. Die Zeitkomponente bei der Geschwindigkeitsmessung auf verschiedenen Bildschirmgrößen variiert. Dies stellt ein Problem bei der Nutzung von Geschwindigkeit und der Definition von festen Werten dar. 8.1 Ausblick In dieser Arbeit wurde aufgezeigt, dass die Interaktionsmöglichkeiten an einem Multitouch-Table durch Auslesen der Geschwindigkeit bisher nur unzureichend genutzt werden. Vielfältig anwendbare neue Konzepte wurden entwickelt, die im Einklang mit den vorhandenen Konzepten stehen und in vielen Fällen als Ergänzung gesehen werden können. Die bisher noch relativ eingeschränkte Anzahl unterschiedlicher Konzepte zur Interaktion an einem Multitouch-Table könnte durch die Nutzung der Geschwindigkeit um ein Vielfaches erweitert werden. Die Überprüfung konnte nur mithilfe des TUIO-Simulators erfolgen. Eine Überprüfung der angewendeten Konzepte auf einem Multitouch-Table steht zur endgültigen Bewertung noch aus. Aufgrund der vielfältigen Möglichkeiten der neuen Konzepte wird eine umfassende Evaluation empfohlen, um den Umgang der potentiellen Benutzer mit den Konzepten zu überprüfen. Hierbei sollte vor allem die Benutzerfreundlichkeit in der praktischen Anwendung getestet werden. Ebenso sollte eine Überprüfung der Intuitivität der Konzepte erfolgen. 77 Glossar Array In einem Array können mehrere Elemente, die verschiedene Dateitypen darstellen, gespeichert und einzelne Elemente durch eine Zahl, die die Position des Elements im Array angibt, aufgerufen werden. Atan2 Funktion Die Atan2 Funktion gibt einen Winkel im Bogenmaß zurück, dessen Tangens der Quotient zwei angegebener Zahlen ist. Blob Von einem Touchsystem erkannte Finger (deutsch: Klecks). Drag & Drop Das Verschieben von Objekten mit einem Zeigegerät auf einer grafischen Benutzeroberfläche. Endlighten Endlighten beschreibt den Zustand, wenn sich innerhalb einer Scheibe kleine Teilchen befinden, die sich wie tausende kleine Spiegel verhalten. Events Ereignisbehandlungsroutinen in der Programmierung. Extensible Markup Language XML ist eine Auszeichnungssprache zur Übertragung strukturierter Datensätze. Fiducials Fiducials sind Markierungen an einem Objekt, die von einem Touchsystem eindeutig erkannt werden können. Flash Flash ist eine Entwicklungsumgebung der Firma Adobe. Flosc Ein Java Server zum Umwandeln von UDP- in TCP-Pakete. Framework Ein Framework bietet Rahmenbedingungen für die Erstellung von Software. Instanz Ein Objekt, welches zur Laufzeit aus einer Klasse erzeugt wird. 78 Glossar 79 Interface Eine Schnittstelle zur Kommunikation. Microsoft Surface Ein Multitouch-Table von Microsoft. Movieclip Ein Grafikobjekt, das über eine Zeitline verfügt. Open Sound Control OSC ist ein nachrichtenbasiertes Kommunikationsprotokoll, das vor allem in der Echtzeitverarbeitung von Multimediainstallationen Anwendung findet. Open Source Software mit einem frei verfügbaren öffentlichen Quelltext. Physik Engine Teil einer Software, der zur Simulation physikalischer Prozesse dient. reacTable Ein neuartiges Musikinstrument, Multitouch-Table. Reactivision Reactivision ist ein plattformunabhängiges Framework zur Erkennung und Verarbeitung von Berührungsdaten. Scrollen Das Bewegen innerhalb von Bildschirminhalten. Socket Ein Software-Modul zum Datenaustausch. Sprite Ein Container für Grafiken. touchlib Touchlib ist eine von NUI-Group bereitgestellte Bibliothek zur Multitouch-Interaktion. Transmission Control Protocol TCP ist ein paketbasierendes Protokoll zum verbindungsorientierten Datenaustausch. TUIO-Protokoll Das TUIO-Protokoll dient als Kommunikationsinterface für Multitouch-Table Interfaces und darunter liegende Applikationen. TUIO-Simulator Eine Java-Software, die es ermöglicht Berührungsdaten, wie sie Reactivision senden würde, zu simulieren. User Datagram Protocol UDP ist ein verbindungsloses Netzwerkprotokoll zur Datenübertragung. basierend auf einem Literaturverzeichnis [AT09] C. Yanc C. Moore D. Solms G. Cetin J. Riggio N. Ramseyer L. Muller R. Khoshabeh R. Bedi M. Bintahir T. Hansen T. Roth S. Sandler A. Teiche, A. Rai. Multi-Touch Technologies. NUI Group, 2009. [Cor07] Densitron Corporation. White Paper: Introduction to Touch Solutions. 2007. [ct037] Windows 7 mit Multitouch-Oberflaeche. Heise Verlag, Ct Ausgabe 12/08, S.37. [cur08] The Rules of Curling - For General Play. Canadian Curling Association, 2008. [EH02] M. Stohrer E. Hering, R. Martin. Physik für Ingenieure. Springer Verlag, ISBN: 3-54042964-6, 2002. [Fas09] F. Fasoglio. Interaktive Displays machen Informationen anschaulich. Polyscope, Ausgabe 3, 2009. [MB09] C. Höflacher M. Burmester, F. Koller. Touch it, move it, scale it - Multitouch. Hochschule der Medien Stuttgart und User Interface Design GmbH (UID), 2009. [MK05] R. Bencina E. Costanza M. Kaltenbrunner, T. Bovermann. TUIO: A Protocol for TableTop Tangible User Interfaces. Ergebnisse des 6. Internationalen Workshops in Gesture in Human-Computer Interaction and Simulation, 2005. [Mos07] T. Moscovich. Principles and Applications of Multi-touch Interaction. New York University, 2007. [Mul08] L. Muller. Multi-touch displays: design, applications and performance evaluation. Universität Amsterdam, 2008. [PK55] Ulrike Kuhlmann Peter König. Finger-fertig? Multitouch: Wunsch und Wirklichkeit. Heise Verlag, Ct Ausgabe 14/08 S.150-155. [SS08] Inc. SiMa Systems. White Paper: X-wire resistive multi-touch screens. 2008. [UL09] J. Link A. Ardilio A. Schuller J. Bierkant U. Laufs, M. Block. Studie Multitouch: Technologie, Hard-/Software und deren Anwendungszenarien. Fraunhofer-Institut für Arbeitswirtschaft und Organisation (IAO), 2009. 80 Literaturverzeichnis [WB09] R. Witzsche W. Bollhoefer, K. Meyer. White Paper: Microsoft Surface und das Natural User Interface (NUI). Pixelpark, 2009. [WF09] P. v. d. Vet A. Nijholt W. Fikkert, M. Hakvoort. Experiences with interactive multi-touch tables. University of Twente, 2009. 81