Multi-Touch im Browser eines Tabletop-PCs - Projects

Transcrição

Multi-Touch im Browser eines Tabletop-PCs - Projects
Multi-Touch im Browser
eines Tabletop-PCs
Frameworks, Einsatzmöglichkeiten und Einschränkungen
Diplomarbeit
Ausgeführt zum Zweck der Erlangung des akademischen Grades
Dipl.-Ing. für technisch-wissenschaftliche Berufe
am Masterstudiengang Digitale Medientechnologien an der
Fachhochschule St. Pölten, Vertiefungsrichtung Angewandte Medieninformatik.
Martin Christoph Grubinger, BSc
dm101513
Erstbegutachter und Betreuer: FH-Prof. Dipl.-Ing. Markus Seidl
Zweitbegutachter: Dipl.-Ing. Dr. Peter Judmaier
St. Pölten, 08.08.2012
Ehrenwörtliche Erklärung
Ich versichere, dass
- ich diese Diplomarbeit selbständig verfasst, andere als die angegebenen Quellen und
Hilfsmittel nicht benutzt und mich auch sonst keiner unerlaubten Hilfe bedient habe.
- ich dieses Diplomarbeitsthema bisher weder im Inland noch im Ausland einem
Begutachter/einer Begutachterin zur Beurteilung oder in irgendeiner Form als
Prüfungsarbeit vorgelegt habe.
Diese Arbeit stimmt mit der vom Begutachter bzw. der Begutachterin beurteilten Arbeit überein.
.........................................
.........................................
Ort, Datum
Unterschrift
I
Kurzfassung
Die Verwendung von Multi-Touch als Eingabemethode hat in den letzten Jahren stark zugenommen. Neben Mobiltelefonen verwenden auch Tabletop-PCs Multi-Touch und Gesten für
die Interaktion der Benutzer/innen mit dem System. Die Entwicklung von Software für Tabletop-PCs wird derzeit vorwiegend mit traditionellen Softwareentwicklungswerkzeugen realisiert, woraus eine hohe Plattform- und Geräteabhängigkeit resultiert.
Die Technologien im Umkreis von HTML5 und CSS3 ermöglichen die Ausführung umfangreicher Webanwendungen und Spiele im Webbrowser ohne zusätzliche Plug-ins. Zudem unterstützen immer mehr Browser Zugriff auf Touchinformationen des Systems. Aufgrund dieser
Entwicklungen wird in dieser Arbeit untersucht, ob der Browser des Tabletop-PCs eine Plattform für ansprechende, gestenbasierte Multi-Touch-Applikationen darstellt und als Alternative zu Multi-Touch-fähiger Desktopsoftware betrachtet werden kann.
Um diese Frage zu beantworten, wurden die Fähigkeiten moderner Webbrowser zur Verarbeitung von Multi-Touch-Events untersucht und unterschiedliche Frameworks evaluiert, die bei
der Entwicklung derartiger Anwendungen und webbasierten Animationen unterstützen. Unter
Verwendung des Frameworks jQMultiTouch, das browserspezifische Touchevent-APIs vereinheitlicht und Gestenerkennung durchführt, wurde ein Prototyp eines einfachen MultiTouch-Spiels entwickelt. Anhand eines Benutzertests dieses Prototyps wurde die Verwendbarkeit von gestenbasierten Multi-Touch-Applikationen auf Basis von Webtechnologien evaluiert.
Im Test dieses Prototyps konnte die generelle Verwendbarkeit gezeigt werden, jedoch wurden
Einschränkungen hinsichtlich der Performance sowie der Anzahl der unterstützten Berührungspunkte festgestellt. Aufgrund dieser Einschränkungen sind Browser derzeit nur für die
Ausführung von einfachen gestenbasierten Multi-Touch-Anwendungen auf TabletopSystemen geeignet. Für Multi-User-Anwendungen mit hohen Grafikanforderungen und komplexen Gesten sind Webbrowser (noch) nicht geeignet.
II
Abstract
Usage of multi-touch input has seen a considerable increase in recent years. Besides mobile
phones, also tabletop PCs employ multi-touch and gestures for the interaction between users
and the system. Currently software for tabletop PCs is mainly developed using traditional software development tools resulting in high platform and device dependency.
The technologies commonly refered to as HTML5 and CSS3 allow rich Web applications and
games to run in Web browsers without using plug-ins. Additionally, more and more browsers
support access to touch information sent by the system. As a result of these developments, this
thesis seeks to answer the question, whether the browser of tabletop systems represents a platform for engaging gesture-based multi-touch applications and can be considered an alternative
to multi-touch-enabled desktop software.
In order to answer this question, the capabilities of modern Web browsers for handling multitouch events were analyzed and different frameworks for developing such applications and
Web-based animations were evaluated. Using the jQMultiTouch framework, which provides
unification of browser-specific Touch Event-APIs and gesture-recognition, a prototype for a
simple multi-touch game was developed. Based on this prototype a user test was conducted to
evaluate the applicability of gesture-based multi-touch applications built with Web technologies.
By testing this prototype, we showed the general applicability, but constraints regarding the
performance and the number of supported touch points were identified. As a result of these
limitations, currently browsers are only suitable for relatively simple gesture-based multi-touch
applications on tabletop systems. Web browsers are not (yet) suitable for graphics-intensive
multi-user applications with complex gestures.
III
Inhaltsverzeichnis
Ehrenwörtliche Erklärung .......................................................................................................... I
Kurzfassung ................................................................................................................................II
Abstract ..................................................................................................................................... III
1 Einleitung................................................................................................................................1
2 Grundlagen von Multi-Touch und Gestural Interfaces ......................................................4
2.1 Multi-Touch ............................................................................................................................... 4
2.2 Gestural Interfaces..................................................................................................................... 5
2.3 Hardware .................................................................................................................................... 9
2.3.1
Microsoft PixelSense (vormals Surface 2) ................................................................................................................... 9
2.3.2
PQLabs Overlays ........................................................................................................................................................... 10
2.3.3
Ideum Platform ............................................................................................................................................................. 11
2.3.4
Eigenbau Möglichkeiten (DIY)................................................................................................................................... 12
2.4 Protokolle und Multi-Touch-Integration in Desktop-Betriebssystemen ....................... 17
2.4.1
TUIO Protokoll ............................................................................................................................................................. 17
2.4.2
Microsoft Windows 7 Touch Events.......................................................................................................................... 18
2.4.3
Mac OS X Multi-Touch ............................................................................................................................................... 19
2.4.4
Ubuntu uTouch ............................................................................................................................................................. 19
2.5 Frameworks für die Entwicklung von nativen Multi-Touch-Applikationen ................. 20
2.5.1
MT4j (Java) .................................................................................................................................................................... 22
2.5.2
Surface 2.0 SDK (.NET) ............................................................................................................................................... 22
2.5.3
GestureWorks und OpenExhibits SDK (Flash) ....................................................................................................... 23
2.5.4
Weitere Frameworks .................................................................................................................................................... 24
3 Multi-Touch im Browser .....................................................................................................25
3.1 Relevante clientseitige Webtechnologien ............................................................................. 27
3.1.1
HTML(5) ........................................................................................................................................................................ 27
3.1.2
Audio und Video Unterstützung................................................................................................................................ 31
3.1.3
Canvas und WebGL...................................................................................................................................................... 31
3.1.4
Fullscreen API ............................................................................................................................................................... 34
3.1.5
JavaScript, jQuery und JSON ...................................................................................................................................... 34
3.1.6
CSS(3) ............................................................................................................................................................................. 37
3.2 Touchevents und deren Unterstützung in aktuellen Browserversionen......................... 42
3.2.1
Mobile Endgeräte .......................................................................................................................................................... 43
3.2.2
W3C Touch Events ....................................................................................................................................................... 44
3.2.3
Mozilla Touch Events ................................................................................................................................................... 46
3.2.4
Microsoft Pointer Events (IE10) ................................................................................................................................. 47
3.2.5
Touchevents in Google Chrome ................................................................................................................................. 49
3.3 Frameworks und Tools für die Entwicklung von webbasierten Multi-TouchApplikationen ................................................................................................................................... 50
3.3.1
Grundsätzliche Anforderungen an ein webbasiertes Multi-Touch-Framework................................................. 50
3.3.2
Hammer.js ...................................................................................................................................................................... 51
3.3.3
Hummer.js ..................................................................................................................................................................... 53
IV
3.3.4
jQMultiTouch................................................................................................................................................................ 54
3.3.5
Weitere Optionen für die Verwendung von Multi-Touch-Daten im Browser .................................................. 57
3.3.6
Simulatoren für Multi-Touch-Eingabe...................................................................................................................... 59
3.3.7
Tools und Frameworks zur Erstellung von webbasierten Animationen .............................................................. 61
4 Umsetzung eines Prototyps .................................................................................................65
4.1 Ausgangssituation ................................................................................................................... 66
4.1.1
Valcamonica .................................................................................................................................................................. 66
4.1.2
Playing Valcamonica .................................................................................................................................................... 67
4.1.3
Module............................................................................................................................................................................ 69
4.1.4
Technische Umsetzung und Zielplattform ............................................................................................................... 70
4.2 Spielbeschreibung.................................................................................................................... 70
4.3 Vorgehensweise ....................................................................................................................... 72
4.4 Umsetzung mit jQMultiTouch .............................................................................................. 74
4.4.1
Struktur und Inhalt mit HTML5 ................................................................................................................................ 74
4.4.2
Visuelle Erscheinung mit CSS ..................................................................................................................................... 76
4.4.3
Funktionalität mit JavaScript ...................................................................................................................................... 77
4.4.4
Endanimation mit JavaScript und GSAP .................................................................................................................. 82
4.5 Test des Prototyps ................................................................................................................... 83
4.5.1
Testsetup ........................................................................................................................................................................ 83
4.5.2
Testablauf ....................................................................................................................................................................... 84
5 Ergebnisse .............................................................................................................................85
5.1 Ergebnisse der allgemeinen Kriterien ................................................................................... 85
5.1.1
Fähigkeiten aktueller Browser zur Verarbeitung von Touchevents ...................................................................... 85
5.1.2
Performance aktueller Browser bei Multi-Touch- und Gesteninteraktionen .................................................... 85
5.1.3
Verfügbarkeit von Frameworks für Multi-Touch-Gestensteuerungen ................................................................ 86
5.1.4
Verfügbarkeit von Werkzeugen zur Erstellung von webbasierten Animationen .............................................. 87
5.1.5
Verfügbarkeit von unterstützenden Werkzeugen.................................................................................................... 88
5.2 Ergebnisse des Tests des Prototyps ....................................................................................... 90
5.2.1 Wie verhält sich die Webapplikation bei der Bedienung von einer Person im Vergleich mit der FlashApplikation? ................................................................................................................................................................................ 90
5.2.2 Wie verhält sich die Webapplikation bei der gleichzeitigen Bedienung von vier Personen (Multi User) im
Vergleich mit der Flash-Applikation? ..................................................................................................................................... 91
5.2.3
Ab welcher Belastung sind Performanceprobleme deutlich erkennbar?............................................................. 91
5.2.4
Tritt Fehlverhalten bei der Verwendung von Gesten auf?...................................................................................... 91
5.2.5 Welchen subjektiven Eindruck erhalten Benutzer/innen hinsichtlich der Qualität der Interaktion und der
visuellen Darstellung des Spiels? .............................................................................................................................................. 92
5.3 Use Cases .................................................................................................................................. 93
6 Conclusio ..............................................................................................................................95
7 Anhang ..................................................................................................................................97
Anhang A: Quellenverzeichnis ....................................................................................................... 97
Anhang B: Abbildungsverzeichnis ............................................................................................... 102
Anhang C: Tabellenverzeichnis .................................................................................................... 103
Anhang D: Listingverzeichnis ....................................................................................................... 103
V
1
Einleitung
Tap, Swipe, Drag. Durch die zunehmende Verbreitung von Multi-Touch-fähigen Geräten und
die Steuerung vieler Anwendungen über Gesten haben diese Begriffe in den letzten Jahren unseren Wortschatz erweitert. Im Zusammenhang mit der Interaktion eines Benutzers mit einem
Multi-Touch-System reichen die herkömmlichen Begriffe für die Beschreibung von Interaktionsmechanismen nicht mehr aus. Die Steuerung unserer Mobiltelefone und Tablet- oder Notebook-Computer mittels Gesten ist in den letzten Jahren beinahe zur Selbstverständlichkeit
geworden 1. Mit Produkten wie Microsoft’s PixelSense 2 wird diese Art der Interaktion auch für
großflächige, in Tischen integrierte Bildschirme verwendet. Eine locker durchgeführte Geste
genügt, um Inhalte zu vergrößern, das nächste Foto anzusehen oder durch lange Listen zu
scrollen.
Gleichzeitig werden immer komplexere Anwendungen für die Ausführung im Browser entwickelt. Spiele, die vor einigen Jahren die Grenzen der Leistungsfähigkeit von Computerhardware
ausreizten, werden heute direkt im Browser dargestellt. Auch Officeanwendungen oder interaktive Musikvideos werden auf Basis von Webtechnologien direkt für die Verwendung und
Darstellung im Browser entwickelt. Die Technologien hinter diesem Trend sowie die Webbrowser sind ständig im Wandel begriffen und werden mit sehr kurzen Releaseabständen weiterentwickelt. Im Umfeld der Schlagworte HTML5 und CSS3 entstehen Technologien, die es
ermöglichen, Applikationen für das Web zu entwickeln, die noch vor wenigen Jahren ohne die
Verwendung zusätzlicher Plug-ins undenkbar gewesen wären. Ein Hinweis auf diese Entwicklung ist die breite Auswahl an Applikationen, die im Chrome Web Store 3 zur Ausführung im
Browser zur Verfügung stehen.
Diese beiden Entwicklungen, die bereits jetzt die Arbeitsweise der Benutzer/innen stark beeinflusst haben, legen den Schluss nahe, dass auch immer komplexere Multi-TouchApplikationen direkt im Browser ohne zusätzliche Plug-ins oder Runtimes möglich sind. Derzeit werden Multi-Touch-Anwendungen mit Gestenunterstützung meist als Desktopapplikationen auf Basis von traditionellen Softwareentwicklungswerkzeugen und Programmiersprachen
wie C++, C# oder ActionScript umgesetzt und sind daher als eigenständige Anwendung auszuführen. Desktopapplikationen für mehrere Plattformen zu entwickeln ist mit hohem Aufwand
und hohen Abhängigkeiten zu anderen Softwarebibliotheken verbunden.
1
Laut einer Studie von Canalys waren bereits im letzten Quartal 2009 weltweit erstmals mehr als die Hälfte
der verkauften Smartphones mit einem Touch-Screen ausgestattet, wobei Apple-Produkte etwa ein Drittel
dieser Smartphones darstellen. (Canalys, 2010) Eine weitere Studie der Gartner Group zeigt, dass 2011
57,9% der verkauften Smartphones auf den auf (Multi-)Touch-Interaktionen basierenden Betriebssytemen
Apple iOS und Google Android basieren. (Pettey, 2011)
2
http://www.pixelsense.com, siehe Kapitel 2.3.1
3
https://chrome.google.com/webstore
1
Einleitung
Vor allem auf Smartphones und Tablet-PCs werden Touchinformationen bereits zur Interaktion mit dem Browser und der dargestellten Websites verwendet. Meist beschränken sich dabei
die verwendeten Gesten auf einen Finger und simulieren nur die Funktionalität der Maus
(Klick, Doppelklick, Ziehen, ...). Auch Softwarebibliotheken, die ausdrücklich für die Erstellung von webbasierten touch-optimierten Benutzerschnittstellen konzipiert sind, sind stark auf
die Bedienung mit nur einem Finger fokussiert und verwenden damit Interaktionsmechanismen, die mehr die Metaphern der klassischen PC-Maus anstatt fortgeschrittene Gestensteuerung verwenden.
Multi-Touch-Anwendungen mit Webtechnologien zu realisieren bietet einige Vorteile gegenüber Desktopanwendungen. Webapplikationen besitzen durch die zugrunde liegenden Technologien eine hohe Geräte- und Plattformunabhängigkeit sowie einfache Verbreitungsmöglichkeiten. Eine äußerst aktive, globale Entwickler/innencommunity ist an der Weiterentwicklung von Webtechnologien und moderner Browser interessiert. Browserhersteller integrieren in kurzen Releaseabständen neue Technologien im Umfeld von HTML5 und verbessern
die Leistungsfähigkeit für die Darstellung von aufwändigen Grafiken und Animationen. Eine
Reihe von Werkzeugen vereinfacht zudem die Erstellung von Ani-mationen auf Basis von
Webtechnologien.
Die vorliegende Diplomarbeit untersucht die aktuellen Möglichkeiten zur Erstellung von gestenbasierenden Multi-Touch-Applikationen auf Basis von Webtechnologien. Die Zielplattform
für diese Applikationen sind primär Multi-Touch Tabletop-PCs: interaktive, Multi-Touchfähige Oberflächen in tischähnlicher Bauweise.
Ziel dieser Arbeit ist es, festzustellen, ob und in welchem Ausmaß mit dem derzeitigen Stand
der Technik Multi-Touch-Applikationen mit Gestensteuerung unter Verwendung von clientseitigen Webtechnologien realisierbar sind.
Die leitende Forschungsfrage ist: Kann der Browser eines Tabletop-PCs eine Plattform für ansprechende, gestenbasierte Multi-Touch-Applikationen darstellen und als Alternative zu Multi-Touch-fähiger Desktopsoftware betrachtet werden?
Kriterien, die zur Beantwortung der Frage beitragen, sind:
•
die Fähigkeiten aktueller Browser zur Verarbeitung von Touchevents
•
die Verfügbarkeit von Frameworks für Multi-Touch-Gestensteuerungen
•
die Performance aktueller Browser bei Multi-Touch- und Gesteninteraktionen
•
die Verfügbarkeit von Werkzeugen zur Erstellung von webbasierten Animationen
•
die Verfügbarkeit von unterstützenden Werkzeugen
Zur Beantwortung der Forschungsfrage trägt ein praktisches Experiment bei. Ein Modul einer
bereits entwickelten Multi-Touch-fähigen Desktop-Applikation wurde im Zuge dieser Arbeit
mit clientseitigen Webtechnologien umgesetzt. Die Applikation wurde ursprünglich für eine
2
Einleitung
Museumsausstellung auf Basis der Adobe Flash/AIR Plattform programmiert und wird im
Flash Player auf einem Tabletop-PC ausgeführt. Anhand dieses praxisnahen Versuchs werden
die Möglichkeiten zur Entwicklung von Multi-Touch-Applikationen für den Browser beleuchtet und auftretende Schwierigkeiten oder Einschränkungen dargestellt. Folgende Fragen werden in einem Test der Webapplikation mit mehreren Benutzern beantwortet:
•
Wie verhält sich die Webapplikation bei der Bedienung von nur einer Person (Single
User) im Vergleich mit der Flash-Applikation?
•
Wie verhält sich die Webapplikation bei der gleichzeitigen Bedienung von vier Personen (Multi User) im Vergleich mit der Flash-Applikation?
•
Ab welcher Belastung sind Performanceprobleme deutlich erkennbar?
•
Tritt Fehlverhalten bei der Verwendung von Gesten auf?
•
Wie ist der subjektive Eindruck hinsichtlich der Qualität der Interaktion und der visuellen Darstellung des Spiels?
In Kapitel 2 werden Grundlagen von Multi-Touch und Gestural Interfaces behandelt und
Hardware, Protokolle und Frameworks zur Entwicklung von Multi-Touch-Applikationen beschrieben. Relevante clientseitige Webtechnologien, die Verfügbarkeit von Touchinformationen im Browser sowie Frameworks für web- und gestenbasierte Multi-Touch-Anwendungen
und Animationen werden in Kapitel 3 diskutiert. In Kapitel 4 werden der Prototyp sowie dessen Umsetzung und die Vorgehensweise bei der Entwicklung dargestellt. Zudem wird das Setup des Tests des Prototyps beschrieben. Kapitel 5 beinhaltet die Ergebnisse der theoretischen
Auseinandersetzung und des Tests anhand der beschriebenen Kriterien und Fragen.
3
2
Grundlagen von Multi-Touch und
Gestural Interfaces
Um einen Überblick über das Themengebiet zu verschaffen, werden in diesem Kapitel grundlegende Begriffe und Technologien sowie Interaktionskonzepte erläutert. Multi-Touch wird
aus technischer Sicht behandelt, um ein Verständnis für die aus der jeweiligen Hard- und
Software resultierenden Eigenschaften zu schaffen. Aufgrund der technologischen Möglichkeiten von Multi-Touch-Interfaces gelten auch für das Interaktionsdesign andere Paradigmen und
Überlegungen, um einfach und effizient zu bedienende Gestural Interfaces zu schaffen.
2.1 Multi-Touch
Multi-Touch (engl. mehrfach berühren) ist ein Sammelbegriff für Geräte, die die Berührung
von mehreren Fingern auf einer berührungsempfindlichen Oberfläche erkennen. Diese Technologien verarbeiten die Positionsdaten der einzelnen Berührungspunkte und ermöglichen so
die Interaktion eines Benutzers mit einem System unter Verwendung von mehr als einem Finger (Han, 2005).
Diese Form der Eingabemöglichkeit wurde mit der Einführung des Apple iPhones im Jahr
2007 erstmals in einem massentauglichen Produkt verwendet4. Auch wenn im öffentlichen
Diskurs die Interaktionsmöglichkeiten des iPhones als innovativ galten, fanden bereits 1982 die
ersten Forschungen und Experimente zum Thema Multi-Touch an der University of Toronto,
Kanada, und den Bell Laboratories statt. Auch mit der weit verbreiteten Geste Pinch (engl.
kneifen; siehe Kapitel 2.2) wurde bereits 1983 experimentiert (Buxton Bill, 2009, S. 4).
Große Aufmerksamkeit erfährt der Technologie auch im Jahr 2005, als Jefferson Han die Interaktion mit einem Multi-Touch-Screen in der Größe von etwa 40x30cm vorstellt. Han beschreibt den Aufbau seines Systems genau und ermöglicht Entwickler/innen mit relativ wenig
Kapitalaufwand große Multi-Touch-fähige Oberflächen zu bauen (Han, 2005).
Seit der erwähnten Markteinführung des iPhones stieg die Zahl der mit Multi-Touch-Screens
ausgestatteten Mobiltelefone rasant an und ist heute der de-facto Standard für sogenannte
Smartphones. Laut einer Studie von Gartner, Inc. beträgt der weltweite Anteil an verkauften
Mobiltelefonen mit den auf (Multi-)Touch basierenden Betriebsystemen iOS und Android im
Jahr 2011 57,9% (Pettey, 2011).
4
Apple patentierte die Technologie, mit mehreren Fingern den Inhalt eines Seitenausschnittes zu bewegen
und ließ den Begriff Multi-Touch als Marke eintragen (Tolmasky, 2011).
4
Grundlagen von Multi-Touch und Gestural Interfaces
Nicht nur am Mobiltelefonmarkt nimmt die Verwendung von Multi-Touch-Technologien zu.
Nach sechs Jahren Forschung zum Thema Multi-Touch veröffentlichte Microsoft im Jahr 2007
den Multi-Touch-Tisch Surface (Buxton Bill, 2009; Whorley, 2011). Surface ist ein interaktiver
Tisch mit einem 30-Zoll Multi-Touch-fähigen Display, das nicht nur mehrere Finger sondern
auch mit speziellen Markern versehene Objekte erkennt. Anfang 2012 startete Microsoft mit
dem Vertrieb der zweiten Generation des Surface. Surface 2.0 wurde gemeinsam mit Samsung
entwickelt. Der Tisch mit dem Produktnamen SUR40 besitzt ein 40-Zoll Display und kann wie
die erste Generation auch Objekte erkennen, ist aber mit etwa 10 cm Tiefe ungefähr so flach
wie ein Fernseher (siehe Kapitel 2.3.1) (Microsoft (Hg.), o. J.-a).
2.2 Gestural Interfaces
Mit Multi-Touch als neue Eingabemöglichkeit ergeben sich neue Herausforderungen für das
Interaktionsdesign einer Software. Klassische Muster der Interaktion zwischen Mensch und
Computer wie Point-and-Click funktionieren in einer Multi-Touch-Umgebung nur bedingt.
Viele Interaktionsmechanismen im Zusammenhang mit Multi-Touch-Interfaces werden im
Fachjargon als Gesten bezeichnet.
„A gesture […] is any physical movement that a digital system can sense and respond to without
the aid of a traditional pointing device such as a mouse or stylus.” (Saffer, 2009)
Benutzerschnittstellen, die primär Gesten als Eingabemöglichkeit verwenden, werden Gestural
Interfaces genannt. Seit einigen Jahren nehmen Geräte mit Gestural Interfaces einen immer
größeren Platz im Arbeitsalltag und in Freizeitaktivitäten ein. Die meisten Smartphones und
immer mehr Desktop-Betriebssysteme sind – wie in Kapitel 2.1 beschrieben – Multi-Touchfähig und werden in unterschiedlichem Ausmaß über Gesten gesteuert. Auch in der Unterhaltungsindustrie erzielte Nintendo mit der Spielekonsole Wii, die über bewegungsempfindliche
Controller gesteuert wird, einen großen Erfolg.
Microsoft geht noch einen Schritt weiter und veröffentlichte im Herbst 2010 mit Microsoft
Kinect einen Sensor für die Spielekonsole XBOX 360, der die Bewegungen des gesamten Körpers des/der Spielers/Spielerin misst und in Gesten übersetzt. Microsoft bewirbt die Kinect mit
dem Slogan „Du bist der Controller“, der Körper des Spielers wird somit zum Interface
(Microsoft (Hg.), o. J.-b).
Gestural Interfaces, die auf Touch bzw. Multi-Touch basieren, werden als Touch User Interfaces (TUIs) bezeichnet (Saffer, 2009, S. 4). Dieser Begriff kann allerdings zu Missverständnissen führen, da TUI auch als Abbreviatur für Tangible User Interfaces (greifbare
Benutzerschnittstellen) verwendet wird.
5
Grundlagen von Multi-Touch und Gestural Interfaces
Eine weitere Bezeichnung im Zusammenhang mit Gestural Interfaces ist Natural User Interface. Dieser Begriff stellt einen Hinweis auf eine vom Benutzer als sehr natürlich und authentisch empfundene User Experience 5 dar. In der Fachliteratur wird dieser Terminus allerdings
auch kritisiert, da Gesten häufig nicht intuitiv erlernbar sind und nur für wenig komplexe Aufgaben verwendet werden können. (Norman, 2010; Wigdor & Wixon, 2011, S. 14)
Verbreitete Gesten für Multi-Touch-Interfaces
Gesten für Multi-Touch-Applikationen bestehen aus bestimmten Bewegungsabläufen eines
oder mehrerer Finger auf der Oberfläche des Geräts. Diese Bewegungsabläufe weisen eine
mehr oder weniger stark ausgeprägte Komplexität auf, da einige Parameter (je nach Fähigkeiten des Hardwaresystems) kombiniert werden können um eine Geste zu definieren:
•
Anzahl der Finger auf der Oberfläche
•
Abstand der Finger zueinander
•
Winkel der Finger zueinander
•
Bewegungsmuster einzelner Finger
•
Anpress-Druck der Finger
•
unveränderte Positionen einzelner Finger
•
Dauer der Berührung
Aufgrund der vielfältigen Kombinationsmöglichkeiten, die sich aus diesen Parametern ergeben, ist es essentiell für eine gute User Experience, die richtige Geste für eine Aktion auszuwählen oder zu definieren. Bill Buxton (2009) beschreibt die Notwendigkeit, beim Design eines
Gestural Interfaces über die Bedürfnisse der Benutzer genau zu kennen ein. In nicht allen Fällen sind demnach Multi-Touch Gesten die sinnvollste Art der Interaktion.
Für den Einsatz auf Multi-Touch Screens hat sich in den letzten Jahren ein relativ kleines Repertoire (im Hinblick auf die Möglichkeiten) an intuitiv verwendbaren Gesten etabliert. Das
Ausmaß der Intuitivität der nachfolgenden Gesten ist sehr unterschiedlich. Während manche
Gesten eine logische Konsequenz bekannter Metaphern (z.B. der Bedienung einer Maus) darstellen, haben andere Gesten über eine weite Verbreitung in Consumer-Produkten unser Verständnis von Interaktion geprägt und werden deshalb als „intuitiv“ wahrgenommen. Die
weiteren Auswirkungen dieser Problematik für das Interaktionsdesign eines Systems werden in
dieser Arbeit nicht weiter behandelt.
5
Als User Experience (UX) wird das Nutzungserlebnis bei der Interaktion mit einem System bezeichnet. Eine
gute UX geht dabei über das erfolgreiche Erfüllen von Aufgaben (Usability) hinaus und betrachtet die gesamte Interaktion, die Gedanken, Gefühle und Wahrnehmungen eines Benutzers mit dem System. (Tullis &
Albert, 2008, S. 4)
6
Grundlagen von Multi-Touch und Gestural Interfaces
Folgende Gesten und die entsprechende Reaktion des Systems können als Gebrauchsmuster
für das Interaction Design einer Multi-Touch-Applikation verwendet werden:
Tap to open/activate/select
Eine Berührung auf ein bestimmtes Objekt/eine bestimmte Region
der Oberfläche löst eine der folgenden Aktionen aus: Öffnen, Aktivieren, Auswählen. Dies ist die einfachste Geste und der direkte
Ersatz für einen Mausklick. Erweiterungen dieser Geste sind Double
Tap (ein doppeltes Berühren eines Objektes in kurzem Zeitabstand)
und Tap and Hold (eine lang andauernde Berührung eines Objektes
ohne den Finger zu bewegen).
Drag to move object
Ein am Bildschirm dargestelltes Objekt wird mit einem Finger berührt und an eine neue Position verschoben.
Slide to scroll
Mit der Bewegung eines Fingers wird eine Liste oder dgl. am Bildschirm bewegt um weitere Einträge anzuzeigen.
Spin to scroll
Durch das kreisförmige Bewegen eines Fingers werden weitere
Elemente einer Liste angezeigt.
Slide and hold for continuous scroll
Bei dieser Geste wird der Bildschirminhalt nach einer Drag-Geste
so lange weiter bewegt, bis der Finger von der Oberfläche entfernt
wird.
7
Grundlagen von Multi-Touch und Gestural Interfaces
Flick to nudge
Durch eine kurze, ruckartige Bewegung eines Fingers wird der Bildschirminhalt oder ein Objekt am Bildschirm in die Richtung der
Bewegung verschoben.
Tap to stop
Ein in Bewegung befindliches Objekt wird durch eine einfache Berührung (Tap) gestoppt.
Two Fingers to Scroll
Werden zwei Finger nebeneinander in die gleiche Richtung bewegt,
so wird der Inhalt einer Liste oder ein Objekt am Bildschirm verschoben, um weiteren Inhalt anzuzeigen.
Pinch to shrink / spread to enlarge
Durch die Bewegung zweier Finger zueinander oder voneinander
weg wird das Objekt oder der unter den Fingern befindliche Bereich proportional skaliert. Wird die Distanz zwischen den Fingern
erhöht, so wird das Objekt vergrößert; wird die Distanz verringert,
verkleinert sich auch das Objekt.
Rotate
Durch eine gleichzeitige, kreisartige Bewegung zweier Finger auf
einem Objekt wird das Objekt in die Richtung rotiert, in die sich die
Finger bewegen. Diese Geste wird häufig mit Pinch to shrink /
spread to enlarge kombiniert, so dass ein Objekt gleichzeitig gedreht und verkleinert bzw. vergrößert werden kann.
Tabelle 1: Gebrauchsmuster für die Verwendung von Multi-Touch-Gesten
(Hinrichs & Carpendale, 2011; Saffer, 2009, S. 46–68). llustrationen von (GestureWorks (Hg.),
o. J.))
Wie Wu und seine Mitautoren (2006) darstellen, bestehen Gesten aus drei Phasen: Gesture
Registration, Gesture Continuation und Gesture Termination. In der ersten Phase (Registrati-
8
Grundlagen von Multi-Touch und Gestural Interfaces
on) berühren die Finger die Oberfläche und verlassen damit den Out of Range-Bereich des
Gerätes. Während der zweiten Phase (Continuation) erfolgt ein Bewegungsablauf in der dritten
Phase (Termination) endet die Berühung der Oberfläche (vgl. Abbildung 1; (Wigdor & Wixon,
2011, S. 127; Wu u. a., 2006).
Abbildung 1: Drei Phasen einer Geste: Registration, Continuation, Termination
2.3 Hardware
Aufgrund der hohen Kosten war die Hardware für Multi-Touch Tabletop-Systeme über viele
Jahre hinweg Mitarbeitern von Forschungslaboren und Universitäten vorbehalten. Seit der
Veröffentlichung von Jeff Han‘s Bauanleitung für eine kostengünstige Multi-Touch-Oberfläche
(Han, 2005) und der enormen Popularität des reacTables (Jordà, Geiger, Alonso, & Kaltenbrunner, 2007) im Jahr 2007 finden sich im World Wide Web zahlreiche Anleitungen mit
denen engagierte Bastler mit nur relativ geringen Kosten ein Multi-Touch-Tisch bauen können. Die höhere Rechenleistung von handelsüblichen PCs ermöglicht eine schnellere Verarbeitung von Videodaten, damit wird Multi-Touch-Erkennung mit herkömmlicher PC-Hardware
möglich. Die Open Source-Community stellt zusätzlich zahlreiche Trackinganwendungen und
Demoapplikationen in verschiedensten Programmierumgebungen und Anleitungen zur Verfügung.
Auch Unternehmen entdecken zunehmend das Potential von großflächigen Multi-Touch Interfaces für eine Vielzahl an Anwendungen, etwa für Point-of-Sale Settings, Events oder kollaboratives Arbeiten. Für ein besseres Verständnis wird in diesem Kapitel eine Auswahl von
kommerziellen Produkten und die wichtigsten DIY-Methoden (Do-It-Yourself) behandelt.
Aufgrund der Vielzahl an Möglichkeiten und ständigen Weiterentwicklungen wird allerdings
kein Anspruch auf Vollständigkeit erhoben.
2.3.1 Microsoft PixelSense (vormals Surface 2)
Microsoft stellte 2007 den Surface, ein 30 Zoll großes, tischähnliches Multi-Touch-Display vor.
Während diese erste Version des Surface – aufgrund des hohen Platzbedarfs der Hardware –
noch eine geschlossene Bauweise aufweist, benötigt der 2012 veröffentliche Surface 2 kaum
mehr räumliche Tiefe als ein Fernseher und kann somit auch vertikal verwendet werden.
Schon Version 1 des Surface konnte neben Fingerberührungen auch Objekte erkennen. Mit
9
Grundlagen von Multi-Touch und Gestural Interfaces
Surface 2 jedoch verwendet Microsoft eine neuartige Technologie, die es der gesamten Oberfläche durch integrierte Kamerapixel ermöglicht zu „sehen“, was sich auf der Oberfläche befindet.
Diese Technologie wurde in Kooperation mit Samsung entwickelt, trägt den Namen PixelSense
und ermöglicht (im Unterschied zu vielen anderen Technologien) das Erkennen von Objekten
trotz sehr schlanker Bauweise. Durch diese geringe physische Tiefe kann Surface 2 auch vertikal als Interaktive Wand, zum Beispiel für Präsentationssituationen, verwendet werden (siehe
Abbildung 2).
Abbildung 2: Microsoft PixelSense (vormals Surface 2) (Samsung (Hg.), o. J.)
Die 42 Zoll große, interaktive Oberfläche des Surface 2 kann mindestens 50 simultane Fingerberührungen erkennen. Im Gehäuse des Surface 2 ist außerdem ein vollwertiger PC mit dem
Betriebssystem Window 7 integriert. (Microsoft (Hg.), o. J.-c)
Microsoft stellt das Surface 2.0 SDK 6 zur Entwicklung von Multi-Touch-Applikationen für die
Surface Plattform zur Verfügung (siehe Kapitel 2.5.2). Als im Juni 2012 Microsoft neue TabletPCs mit dem Namen Surface 7 vorstellt, wird der Tabletop-PC kurzerhand auf den Namen der
verwendeten Technologie – PixelSense – umbenannt. Das SDK trägt aber weiterhin den Namen Surface 2.0 SDK, ist jedoch ins PixelSense Design and Development Center 8 integriert.
2.3.2 PQLabs Overlays
PQLabs entwickelt Rahmen (Overlays) für handelsübliche Computermonitore oder Fernseher
um diese um Multi-Touch-Fähigkeiten zu erweitern. Diese Rahmen werden direkt über dem
Display installiert und per USB an einen PC angeschlossen. PQLabs stellt Treiber für Windows
6
SDK: Software Development Kit. Ein SDK ist eine Sammlung an Werkzeugen für die Entwicklung von
Software für einen spezifischen Aufgabenbereich.
7
http://www.microsoft.com/surface
8
http://msdn.microsoft.com/en-US/windows/desktop/hh241326.aspx
10
Grundlagen von Multi-Touch und Gestural Interfaces
XP/Vista/7, Mac OS X und Ubuntu/Fedora sowie ein SDK zur Entwicklung von Multi-TouchAnwendungen zur Verfügung 9.
Die Overlays von PQLabs sind in vielen Größen von 32 bis 103 Zoll und in verschiedenen Varianten zur Erkennung von zwei bis 32 simultanen Touchpunkten (Produkt G4 Dual Touch bis
G4 Plus) erhältlich.
Abbildung 3: PQLabs G4 Multi-Touch Overlay (Quelle: multi-touch-screen.com)
Diese Geräte zeichnen sich durch schnelle Reaktionszeiten (5 bis 10ms) und gehärtetes Glas
aus und können durch die dünne Bauweise sowohl horizontal als Tabletop als auch vertikal als
Interaktive Wand verwendet werden (siehe Abbildung 3). Alternativ zur Platzierung über einem LCD-Bildschirm können diese Rahmen auch mit einer Folie für Rückprojektion ausgestattet und mit einem Projektor bespielt werden. Das erlaubt auch vertikale Setups, bei denen
Zuschauer von allen Seiten die Interaktionen auf der Oberfläche verfolgen können. Ein Anwendungsszenario ist die Performance eines Disk- oder Visual Jockeys (PQ Labs (Hg.), o. J.).
2.3.3 Ideum Platform
Der Ideum Platform ist ein Tabletopsystem mit einem Multi-Touch-Display, das bis zu 40 simultane Berührungspunkte erkennen kann. Das System weist mit 55 Zoll Bildschirmdiagonale
gegenüber Microsoft PixelSense (40 Zoll) eine deutlich größere interaktive Fläche auf. Dies
wirkt sich positiv auf Multi-User-Situationen aus, da mehrere Personen ohne Platzeinschränkungen um den Tisch stehen können.
Das System weist eine flache und stabile Konstruktion auf, in der auch ein PC mit i7-Prozessor
integriert ist. Der Platform ist durch den schmalen Standfuß auch für Rollstuhlfahrer geeignet
und ist somit für barrierefreie Ausstellungen einsetzbar (Ideum (Hg.), 2012).
9
Das SDK von PQLabs ist nur spärlich dokumentiert und wird aus diesem Grunde in Kapitel 2.5 nicht behandelt.
11
Grundlagen von Multi-Touch und Gestural Interfaces
Abbildung 4: Ideum Platform Multi-Touch-Tisch (Quelle: ideum.com)
Ideum stellt mit dem kommerziellen Framework GestureWorks auch eine Werkzeugpalette
zur Entwicklung von Multi-Touch-Applikationen für die Adobe Flash Plattform zur Verfügung (siehe Kapitel 2.5.3).
2.3.4 Eigenbau Möglichkeiten (DIY)
Seit der Veröffentlichung von Jefferson Han’s populären YouTube-Video des halbtransparenten Multi-Touch-Screens und einer detaillierten Bauanleitung, folgten engagierte Hobbybastler/innen, Studierende, Interaktionsdesigner/innen und Experimentierfreudige der Anleitung
und bauten eigene Multi-Touch-Tische aus handelsüblichen Komponenten.
Im Internet bildete sich eine Community, die Erfahrungen und Probleme hinsichtlich Konstruktion, Hardware und Software bei Do-it-Yourself (DIY) Multi-Touch Hardware-Projekten
mit anderen Interessierten teilt und diskutiert. Die zentrale Plattform dieser Community ist
aktuell das Forum der NUI Group 10 (Natural User Interface Group).
In diesem Kapitel werden vier weit verbreitete Methoden für den Bau einer Multi-TouchOberfläche behandelt: Frustrated Total Internal Reflection, Diffused Surface Illumination, Rear
Diffused Illumination und Laser Light Plane.
Diese Methoden basieren auf einem optischen System bei dem die Berührungen der Oberfläche von einer Kamera aufgezeichnet und von einer Trackingsoftware ausgewertet werden. Wie
in Abbildung 5 ersichtlich, wird das Bild auf der Oberfläche von einem Projektor dargestellt.
Aufgrund des hohen Mindestabstandes von Kamera und Projektor zur Oberfläche ist die Bauweise in einem tischähnlichen Kasten sehr verbreitet.
10
http://nuigroup.com/forums
12
Grundlagen von Multi-Touch und Gestural Interfaces
Abbildung 5: Grundsätzlicher Aufbau eines DIY-Multi-Touch-Tisches bei Diffused Surface Illumination mit
Projektor, Kamera und beleuchteter Oberfläche.
Frustrated Total Internal Reflection (FTIR)
Das von Han (2005) für seine Multi-Touch-Oberfläche aufgegriffene Prinzip der Frustrated
Total Internal Reflection (FTIR) basiert auf dem Phänomen der Total Internal Reflection.
Elektromagnetische Wellen, die sich innerhalb eines Materials ausbreiten, werden an der äußeren Grenze des Materials vollständig reflektiert, wenn dieses Material einen höheren Brechungsindex als das umgebende Material besitzt und der Brechungswinkel klein genug ist.
FTIR-Setups bestehen üblicherweise aus einer durchsichtigen Acrylglasplatte, die mit einer
dünnen Siliconschicht überzogen und an den Enden mit Infrarot-LEDs 11 bestückt ist. Diese
LEDs fluten die Platte mit Infrarotlicht. Das Licht kann erst aus dem Acrylglas entweichen,
wenn ein Benutzer die Silikonschicht der Platte mit seinem Finger berührt. Dadurch ändert
sich der Brechungsindex des umgebenden Materials. Dieses ausströmende Licht kann mit einer
Infrarotkamera erkannt und durch anschließende Filterung des Videos als Finger identifiziert
werden. Um auf der Oberfläche ein Bild darzustellen, wird üblicherweise das Acrylglas mit
einer Projektionsfolie überzogen. Auf diese Oberfläche kann ein auf der Rückseite des Glases
befindlicher Projektor das Bild darstellen (siehe Abbildung 6). (Han, 2005; Schöning u. a.,
2008)
11
LED: Light Emitting Diode. LEDs sind elektronische Bauteile, die elektromagnetische Wellen in unterschiedlicher Wellenlänge aussenden. LEDs werden häufig als visuelle Indikatoren oder für eine InfrarotÜbertragungsstrecke (Fernbedienung) in Elektrogeräte verbaut.
13
Grundlagen von Multi-Touch und Gestural Interfaces
Abbildung 6: FTIR-Setup schematisch dargestellt.
Diffused Surface Illumination (DSI)
Diffused Surface Illumination ist eine im Aufbau der FTIR-Variante sehr ähnliche Methode.
Wie bei FTIR werden Infrarot LEDs verwendet, um Infrarotlicht in das Material der Oberfläche zu bringen; DSI basiert jedoch nicht auf Totaler Interner Reflektion. Für ein DSI-Setup
wird ein spezielles Acrylglas verwendet, das winzige Partikel beinhaltet (Endlighten Acrylglas).
Diese Partikel fungieren als kleine Spiegel, die das Infrarotlicht verteilen, dadurch ergibt sich
eine gleichmäßige Verteilung des Lichts (siehe Abbildung 7). (Roth, 2008; Schöning u. a., 2008)
Tim Roth (2008) erläutert die Vor- und Nachteile dieses Systems in seinem Blog:
Vorteile:
•
Keine Probleme bei der gleichmäßigen Verteilung des Lichts, einfaches Setup
•
FTIR Setup kann einfach zu einem DI [DSI, Anm.] konvertiert werden
•
Es muss keine Kiste für das Setup gebaut werden (im Unterschied zu anderen DI Setups)
•
Fiducials können erkannt werden
Nachteile:
•
Geringerer Kontrast im Vergleich zu einem normalen DI Setup, weil das Plexiglas das
Licht auch in Richtung der Kamera ablenkt
•
Potentiell mehr Probleme mit Umgebungslicht aufgrund von geringerem Kontrast
•
Möglicherweise Einschränkungen hinsichtlich der Größe aufgrund der Weichheit des
Plexiglases
14
Grundlagen von Multi-Touch und Gestural Interfaces
Abbildung 7: DSI-Setup schematisch dargestellt.
Rear Diffused Illumination (RDI)
Ein Diffused Illumination Setup besteht aus einer beliebigen glasähnlichen Oberfläche mit einer Projektionsfolie (alternativ kann auch Weißglas, ein auf einer Seite gleichmäßig aufgerauhtes Glas, verwendet werden) und einer Reihe von Infrarot Scheinwerfern. Die Scheinwerfer
beleuchten die Oberfläche gleichmäßig von unten (siehe Abbildung 8). Ein Körper in geringer
Distanz zur Oberfläche wird von dem Licht reflektiert und wird bei einer Berührung aufgrund
der scharfen Kanten des hellen Bereichs über das Kamerabild als Objekt oder Finger erkannt.
DI ermöglicht durch diese Art der Beleuchtung auch die Verwendung von mit Fiducials versehenen Objekten. Bei dieser Methode ist eine gleichmäßige Ausleuchtung der Oberfläche entscheidend für eine stabile Erkennung. (Schöning u. a., 2008)
Abbildung 8: RDI-Setup schematisch dargestellt.
15
Grundlagen von Multi-Touch und Gestural Interfaces
Laser Light Plane (LLP)
Bei einem Laser Light Plane Setup erfolgt die Beleuchtung der Oberfläche durch einen oder
mehrere Laser mit Wellenlängen im Infrarotbereich. Durch Liniengeneratorlinsen, die vor den
Lasern platziert werden, werden die Laserstrahlen in etwa 1mm dicke Laserebenen (Laser Light
Plane) transformiert. Wie in Abbildung 9 dargestellt, werden die Laser so positioniert, dass sich
diese Ebenen in möglichst geringer Distanz über der Oberfläche befinden. Durchbricht ein
Finger diese Ebene, wird das darauf eintreffende Licht reflektiert. Diese hellen Bereiche kann
eine Infrarotkamera erkennen und entsprechende Software verarbeiten.
Abbildung 9: LLP-Setup schematisch dargestellt.
Trackingsoftware
Unabhängig vom verwendeten Setups muss eine Applikation den Videostream der Kamera
verarbeiten, um Informationen über die Position der einzelnen Finger (oder Objekte) zu erhalten. Eine von der NUI Group Community für diesen Zweck entwickelte Softwarelösung ist
Community Core Vision (CCV) 12. CCV ist open-source und cross-platform und ermöglicht
umfangreiche Einstellungsmöglichkeiten und performante Erkennung von Berührungen sowie
mit Marker versehenen Objekten. Eine integrierte Kalibrationsroutine erleichtert die Konfiguration des Setups. Die erfassten Daten werden über das in Kapitel 2.4.1 beschriebene TUIOProtokoll für Multi-Touch-Applikationen bereitgestellt.
Eine weitere quelloffene Trackingsoftware ist reacTIVision (siehe Kapitel 2.4.1). reacTIVision
wurde ursprünglich für den reacTable entwickelt und bietet wie CCV Finger- und Objekterkennung sowie Unterstützung für das TUIO-Protokoll (Kaltenbrunner, 2009).
12
http://ccv.nuigroup.com/
16
Grundlagen von Multi-Touch und Gestural Interfaces
2.4 Protokolle und Multi-Touch-Integration in
Desktop-Betriebssystemen
Durch die stetig steigende Anzahl von Multi-Touch-fähigen Eingabegeräten wird auch die
Integration dieser Eingabe- und Interaktionsmöglichkeiten in Desktop-Betriebssystemen stärker forciert. In diesem Kapitel wird das TUIO-Protokoll und die Unterstützung für MultiTouch und Gesten in den drei am weitesten verbreiteten Desktop-Betriebssystemfamilien
(Microsoft Windows, Apple Mac OS X und Ubuntu Linux) beschrieben (Net Applications
(Hg.), 2012).
2.4.1 TUIO Protokoll
Eines der erfolgreichsten Projekte für Multi-Touch und Tangible User Interfaces ist der von
Sergi Jordà und seinem Team entwickelte reacTable. Der reactTable ist ein kollaboratives Musikinstrument basierend auf einem Multi-Touch-Tisch. Die Oberfläche des Tisches erkennt
allerdings nicht nur Finger-Berührungen (pointers oder cursors) sondern auch mit Markern
(Fiducials 13) versehene Objekte (objects). (Jordà u. a., 2007; Jordà, Julià, & Gallardo, 2010; Kaltenbrunner, 2009)
Abbildung 10: Marker (Fiducial) für die Erkennung von physischen Objekten aus dem „amoeba“-Set von reacTIVision ((Jordà u. a., 2007). Bildquelle: http://reactivision.sourceforge.net)
Im Zuge der Entwicklung des reacTables wurde auch reacTIVision, eine Applikation zur Erfassung von Multi-Touch-Interaktionen und phyischen Objekten durch Verarbeitung von Videodaten, entwickelt. Zudem entwickelten Kaltenbrunner und sein Team TUIO, ein Protokoll zur
Beschreibung und Übermittlung von Multi-Touch- und Objektdaten.
TUIO basiert auf OpenSound Control, ein Netzwerkprotokoll zur Übermittlung von Steuerungsdaten zur Kommunikation und Synchronisation von Computern, Musikinstrumenten
und anderen Geräten (Kaltenbrunner, 2009; Wright, Freed, & Momeni, 2003).
13
Fiducials sind visuell eindeutig unterscheidbare Codes, die auf Objekten platziert werden können, um diese
bspw. auf einer Multi-Touch-Oberfläche erkennen zu können. Dadurch kann Funktionalität mit Objekten
aufgrund deren Position, Drehung und Größe verknüpft werden. (Constanza & Robinson, 2003)
17
Grundlagen von Multi-Touch und Gestural Interfaces
Durch eine sehr flexible, aber konsistente Struktur hat sich TUIO in den letzten Jahren zum
de-facto Standard für Multi-Touch-Anwendungen auf Tabletopsystemen entwickelt. Viele
Trackingframeworks 14 und kommerzielle Multi-Touch-Hardware stellen die gefilterten Ergebnisse als TUIO-Daten über eine Netzwerkschnittstelle bereit. Durch die Verwendung von OSC
können diese Daten mit einem Großteil der modernen Programmiersprachen ausgelesen und
verarbeitet werden. Viele Creative Coding-Frameworks wie Processing, vvvv, openFrameworks
oder Max/MSP15 bieten außerdem eigene Klassen oder Module zur Verwendung von TUIODaten.
Ein TUIO-Message Bundle besteht aus drei Teilen: Die alive Message gibt eine Liste der aktuellen Tokens (Finger oder Objekte) anhand einzigartiger Session-IDs aus. Der zweite Teil, die set
Message, kommuniziert den Status eines Tokens mit den Parametern Position, Änderung,
Ausrichtung, Beschleunigung und der Session-ID des Tokens. Im dritten Teil, der fseq Message, wird das aktuelle Bundle mit einer einzigartigen, sequentiell vergebenen ID belegt, so dass
er eindeutig identifizierbar ist.
Eine TUIO set Message für eine Statusänderung eines Cursors (Finger) ist folgendermaßen
aufgebaut 16:
/tuio/2Dcur set sid xpos ypos xvel yvel maccel
Die Parameter haben folgende Bedeutung: sid gibt die Session ID wieder, xpos und ypos die
aktuellen Koordinaten des Punktes; xvel und yvel geben die Geschwindigkeit der Änderung
als Vektor an und maccel steht für die Beschleunigung der Bewegung (Acceleration).
Bei der Verwendung von physischen Objekten beginnt eine set Message mit /tuio/2Dobj
und erhält zusätzliche Parameter wie den Winkel des Objektes und die Rotationsbeschleunigung (Kaltenbrunner, 2009).
2.4.2 Microsoft Windows 7 Touch Events
Im Betriebssystem Windows 7 von Microsoft ist die Bedienung mittels Multi-Touch-fähigen
Eingabegeräten im System verankert. Windows 7 unterstützt die Bedienung mit einem oder
mehreren Fingern. Ähnlich wie bei Mac OS X (siehe Kapitel 2.4.3) können etwa Fensterinhalte
mit zwei Fingern gescrollt oder mit mehreren Fingern zwischen Programmen gewechselt werden. Mit Windows 7 wurde auch der Einstellungsdialog „Stift- und Fingereingabe“ eingeführt,
der umfassende Einstellungsmöglichkeiten für die Verwendung von Multi-Touch-Gesten zulässt. Entwickler/innen gibt Microsoft die Möglichkeit, Unterstützung für Multi-Touch und
14
Ein Tracking-Framework analysiert Live-Videodaten einer Kamera, um zu erkennen, wo sich Berührungspunkte von Fingern auf der Oberfläche befinden (siehe auch Kapitel 2.3.4).
15
http://processing.org/, http://vvvv.org, http://www.openframeworks.cc/,
http://cycling74.com/products/max/
16
TUIO-Daten werden nicht als Klartext, sondern komprimiert im Binärcode übertragen.
18
Grundlagen von Multi-Touch und Gestural Interfaces
Gestensteuerung in Applikationen zu integrieren. Die mit Windows 7 eingeführten Windows
Messages WM_TOUCH für die Rohdaten der Berührungspunkte und WM_GESTURE für die
Erkennung der durchgeführen Geste erleichtern die Entwicklung derartiger Applikationen.
(Kiriaty, 2009)
Microsoft setzt mit Windows 8 17 und der Metro-Oberfläche 18 noch stärker als bisher auf MultiTouch, da das Betriebssystem sowohl für Tablet-PCs als auch für Desktop-PCs optimiert sein
soll. Dabei sind zwei Entwicklungen besonders bemerkenswert: Microsoft setzt für die Entwicklung von Metro-Applikationen sehr stark auf den Einsatz von Webtechnologien wie
HTML, CSS und JavaScript (siehe Kapitel 3.1) und bietet erstmals eine Schnittstelle für die
Verarbeitung von Multi-Touch-Events im Browser Microsoft Internet Explorer 10 (Rossi,
2011); siehe Kapitel 3.2.4).
2.4.3 Mac OS X Multi-Touch
Apple führte 2008 mit dem MacBook Air ein Multi-Touch-fähiges Trackpad 19 ein. Über dieses
Trackpad können Benutzer durch die Verwendung von einfachen Gesten mit mehreren Fingern mit dem System interagieren. Diese Funktionalität wurde mit Mac OS X 10.7 (Lion) um
einige Gesten erweitert und ermöglicht Scrollen und Zoomen von Fensterinhalten, Suchen von
Dateien und Aufgaben des Fenstermanagements durch die Bewegung von mehreren Fingern
auf dem Trackpad (Apple (Hg.), 2011). Seit dem ersten Mac Book Air sind alle neuen Apple
MacBook Modelle mit Multi-Touch-fähigen Trackpads ausgestattet.
Zusätzlich wurden von Apple externe Hardwareprodukte mit Multi-Touch-Unterstützung für
Mac Desktopcomputer und Notebooks entwickelt. Dazu zählt die Magic Mouse, laut Hersteller
„die erste Multi-Touch-Maus der Welt“ sowie das Magic Trackpad als Trackpad für Desktopcomputer. (Apple (Hg.), o. J.-a, o. J.-b)
Die Interaktion mit dem System mittels Gesten ist mit diesen Produkten und durch die tiefe
Integration in das Betriebssystem ein fester Bestandteil der täglichen Arbeit mit OS X.
2.4.4 Ubuntu uTouch
Die von Canonical entwickelte Linux-Distribution Ubuntu unterstützt in der Version 10.10
(Codename Maverick Meerkat, aktuelle Version: 12.04 Precise Penguin) erstmals Multi-Touch
und Gestenerkennung. In dieser Version wurde der uTouch-Stack eingeführt. uTouch ist ein in
17
Microsoft hat bereits eine Vorschau-Version von Windows 8 (Release Preview) veröffentlicht. Ein genaues
Datum der Veröffentlichung der finalen Version ist noch nicht bekannt. Es wird jedoch von einem Verkaufsstart noch im Jahr 2012 ausgegangen.
18
Metro ist die Bezeichnung für eine auf Tiles (engl. Kacheln) basierende Design-Sprache die für Windows
Phone 7 entwickelt wurde und für Windows 8 weiterentwickelt wird.
19
Als Trackpad oder Touchpad wird ein meist in Notebooks vorhandenes Gerät bezeichnet, das u.a. die Bedienung des Maus-Cursors durch den Benutzer ermöglicht.
19
Grundlagen von Multi-Touch und Gestural Interfaces
das X Window System 20 von Ubuntu integriertes Framework, das Multi-Touch-Daten verarbeitet und durchgeführte Gesten erkennt. Die ausgewerteten Informationen stehen Softwareentwickler/innen über ein API 21 zur Verfügung, um Applikationen mit Gestenunterstützung
zu entwickeln. (Carr, 2010)
In der nächsten Hauptversion 11.04 („Natty Narwhal“) von Ubuntu wurde die Unterstützung
von Multi-Touch noch ausgeweitet. So wurde beispielsweise ein stabiles Multi-Touch-API für
das Qt-Framework 22 geschaffen.
Ubuntu bietet mit dem Dienst Ginn ein konfigurierbares Werkzeug für die Verwendung von
Multi-Touch-Gesten für bestimmte Aktionen, auch wenn eine Applikation keine Gestenunterstützung bietet. Mit Hilfe einer einfachen XML-Syntax 23 können sogenannte Wishes (Wünsche) definiert werden, indem einer Geste bespielsweise eine Tastaturaktion zugewiesen wird.
(McGreggor, 2011)
2.5 Frameworks für die Entwicklung von nativen
Multi-Touch-Applikationen
Durch die rasante Verbreitung von Multi-Touch-Hardware ergiebt sich ein Bedürfnis nach
Softwareframeworks zur Entwicklung von Multi-Touch-Applikationen. In den letzten Jahren
wurde eine Vielzahl an Frameworks mit jeweils unterschiedlicher Protokollunterstützung, unterschiedlicher Funktionalität und Architektur in verschiedenen Programmiersprachen entwickelt. Kammer et al. beschreiben eine Liste von Kriterien anhand derer Multi-TouchFrameworks unterschieden werden können. Diese Liste ist in die drei aufbauenden Ebenen
Architecture, Scope (Umfang) und Features (Funktionalität) geteilt (siehe Abbildung 11).
20
X Window System ist das Protokoll und Toolkit für die Darstellung von grafischen Benutzerschnittstellen
in vielen Linux-Distributionen, u.a. auch Ubuntu.
21
API: Application Programming Interface. Als API bezeichnet man eine Programmierschnittstelle in der
Softwareentwicklung.
22
Qt ist ein plattformübergreifendes, open-source Applikations- und Benutzerschnittstellen-Framework auf
C++ Basis (Douglas, 2011).
23
XML: Extensible Markup Language. XML ist eine Auszeichnungssprache (Markup Language) zur strukturierten Darstellung von Daten.
20
Grundlagen von Multi-Touch und Gestural Interfaces
Abbildung 11: Schichtenmodell mit Kriterien zur Klassifikation von Multi-Touch-Frameworks (Kammer, Keck,
Freitag, & Wacker, 2010).
Die unterste Ebene Architecture bildet die Basis für das Framework und beschreibt die Abhängigkeiten von einer Plattform oder Hardware sowie das verwendete Eventsystem. Die nächste
Ebene Scope klassifiziert Frameworks anhand des implementieren Umfangs. Einige Frameworks unterstützen sowohl die Verwendung von physischen Objekten (Tangible Objects) als
auch Berührungspunkten (Touches). Die Mehrheit der Frameworks ist jedoch für eine der
beiden Anwendungsfälle konzipiert. In dieser Schicht wird zudem anhand der Parametrisierbarkeit der Gesten unterschieden. In der obersten Ebene Features wird die Unterstützung von
Standardgesten, deren Erweiterbarkeit sowie die Grafikunterstützung, je nach Kontext in 2D
oder 3D, bewertet. (Kammer, Keck, u. a., 2010)
Eine wichtige Unterscheidung bei der Verarbeitung von Gesten ist bezüglich des Zeitpunktes
der Gestenerkennung zu treffen. Offline-Gesten werden erst nach der Durchführung der Geste
verarbeitet und erkannt. Diese Art von Gesten kann in manchen Anwendungsszenarien sinnvoll sein – als Beispiel sei der Aufruf eines Menüs durch eine kreisförmige Geste genannt. In
den meisten Fällen ist diese Art von Interaktion wenig zufriedenstellend, da das Feedback für
den User erst nach Abschluss der Geste erfolgt. Im Gegensatz dazu werden Online-Gesten
schon während der Durchführung verarbeitet und erkannt. Diese Art von Verarbeitung ist
unter anderem bei den in Kapitel 2.2 angeführten Gesten Drag, Rotate, Scale und Scroll notwendig, da das Ergebnis abhängig von dem Ausmaß der Veränderung der Fingerpositionen
während der Durchführung ist. Alle in diesem Kapitel behandelten Frameworks unterstützen
diese Art von Gestenverarbeitung.
Da diese Arbeit auf die Plattform Tabletop-PC fokussiert ist, werden Frameworks für die Entwicklung von nativen Applikationen für mobile Endgeräte – etwa auf Basis der mobilen Betriebssysteme Android oder iOS – nicht gesondert behandelt.
21
Grundlagen von Multi-Touch und Gestural Interfaces
2.5.1 MT4j (Java)
Das open-source Framework MT4j 24 (Multi-Touch for Java) ist ein umfangreiches Framework
zur Erstellung von Multi-Touch-Applikationen. Aus der Verwendung der Programmiersprache Java resultiert eine hohe Plattformunabhängigkeit – die mit MT4j entwickelten Programme laufen in der Java Virtual Machine (VM) und sind somit auf Windows, Mac OS X und
Linux lauffähig.
MT4j kann mit einem breiten Spektrum an Multi-Touch-Hardware und den dazugehörigen
Protokollen verwendet werden. Folgende Geräte/Protokolle werden unterstützt: Windows 7
Touch Messsages, Mac OS X Trackpad und Magic Mouse, Ubuntu Linux, TUIO sowie
Android-Geräte (experimentelle Unterstützung).
Das Framework wurde auf Basis des populären Java-Frameworks Processing entwickelt. Dies
ermöglicht es, viele Funktionen und Bibliotheken für Processing auch mit MT4j zu verwenden
und resultiert in einer kürzeren Lernphase für Entwickler/innen mit Erfahrung in Processing.
Durch die Verwendung von Processing, ist es in MT4j auf einfache Art und Weise möglich,
sowohl 2D- als auch 3D-Objekte zu verwenden.
MT4j stellt eine Reihe an UI-Komponenten wie Buttons, Listen, Slider und ein Multi-Touchfähiges, virtuelles Keyboard sowie viele Grafikprimitive wie Rechtecke, Kreise, Polygone aus
der Processing-Umgebung zur Verfügung. Weiters ermöglicht MT4j die Verwendung der gängigsten Multi-Touch-Gesten (Drag, Rotate, Scale, Scroll) sowie eigene, komplexere Gesten –
etwa für die Manipulation von 3D-Objekten – zu definieren. (Laufs, Ruff, & Zibuschka, 2010)
2.5.2 Surface 2.0 SDK (.NET)
Kurz vor dem Verkaufsstart des Microsoft PixelSense (vormals: Surface 2) stellte Microsoft am
12. Juli 2011 das Surface 2 SDK für Entwickler/innen zum Download bereit. Das Surface 2 SDK
wurde hauptsächlich für die Entwicklung von PixelSense-Applikationen konzipiert. Durch die
starke Touchunterstützung in Windows 7 ist es allerdings auch für die Entwicklung von Windows 7 Applikationen, die stark auf Toucheingabe basieren, verwendbar (Cabrera, 2011).
Das Surface 2.0 SDK basiert auf der Plattform .NET 4.0 und Windows Presentation Foundation 4.0 (WPF). Aufgrund dessen ist das SDK für viele Entwickler/innen mit Erfahrung in der
Programmierung von Windows Applikationen einfach zu verwenden. Als Entwicklungsumgebung wird Visual Studio 2010 oder Visual C# 2010 Express empfohlen, wenngleich auch quelloffene Entwicklungsumgebungen (z.B. MonoDevelop oder SharpDevelop) für C#-Entwicklung
verfügbar sind. (Microsoft (Hg.), o. J.-d)
Auf der Website des PixelSense Design and Development Center 25 bietet Microsoft zusätzlich
Tutorials und eine umfangreiche Anleitung für die Konzeption von Multi-Touch-
24
http://www.mt4j.org
25
http://msdn.microsoft.com/de-de/windows/desktop/hh241326.aspx
22
Grundlagen von Multi-Touch und Gestural Interfaces
Anwendungen für PixelSense. Diese Anleitung beinhaltet Hinweise zur Verwendung von Gesten, visuelle Richtlinien, typografische Empfehlungen und Interaktionsmechanismen bei der
Verwendung von physischen Objekten als Teil der Applikation. Mit dieser Anleitung soll gewährleistet werden, dass PixelSense-Anwendungen eine einheitliche User Experience schaffen.
Das Surface 2.0 SDK fügt sich hinsichtlich des visuellen Stils in die aktuelle Designrichtlinie
von Windows 8 mit der Metro-Oberfläche ein.
Das SDK beinhaltet zudem einen Touch Input Simulator, der es ermöglicht, Multi-TouchApplikationen auch ohne die Verwendung eines Touch-fähigen Gerätes zu entwickeln. Die
Touchpunkte sowie Objekte werden durch Mausklicks simuliert. Um eine Applikation auch im
vertikalen Modus testen zu können (etwa bei der Verwendung als Interaktive Wand), kann in
diesem Simulator auch die Neigung des Gerätes konfiguriert werden (Cabrera, 2011). Kapitel
3.3.6 beinhaltet eine detailliertere Beschreibung der Funktionalität dieses Simulators.
2.5.3 GestureWorks und OpenExhibits SDK (Flash)
Die Adobe Flash Plattform erhält mit der Version 10.1 native Unterstützung für Multi-Touch
und Gestenevents. Diese Funktionalität ist jedoch nur eingeschränkt für hochqualitative MultiTouch-Applikationen verwendbar, da die Gestenunterstützung auf eine gleichzeitige Geste
limitiert ist. Das hat zur Folge, dass es beispielsweise nicht möglich ist, ein Objekt am Bildschirm mit zwei Fingern zu rotieren und gleichzeitig zu verschieben (Cantrell, 2009).
Für die Flash Plattform gibt es daher einige Multi-Touch und Gestenframeworks, die diese
Probleme lösen. Ein umfangreiches Frameworks ist das von Ideum (siehe Kapitel 2.3.3) entwickelte GestureWorks.
GestureWorks 26 bietet die Erkennung einer breiten Palette an Ein- und Mehrfingergesten. Dabei wird zwischen Multitouch Gestures und Stroke Gestures unterschieden. Stroke Gestures sind
definierte Pfade – etwa ein Kreis oder der Buchstabe M – bei deren Durchführung mit einem
Finger das Framework ein entsprechendes Event auslöst. Mit Hilfe der mit Version 3 eingeführten Gesture Markup Language (GestureML) lassen sich zusätzlich eigene Gesten definieren, um so das verwendete Gestenspektrum individuell zu erweitern. GestureWorks ermöglicht
es, durch GestureML und die große Anzahl an vordefinierten Gesten mit wenig Entwicklungsaufwand gestenbasierte Prototypen zu entwickeln.
GestureWorks unterstützt TUIO-Messages (siehe Kapitel 2.4.1) und Windows 7 Touch Messages (siehe Kapitel 2.4.2), dadurch ist das Framework auf den meisten Multi-Touch-Geräten, auf
denen die Flash Runtime oder Adobe AIR unterstützt wird, einsetzbar (Ideum (Hg.), o. J.).
GestureWorks ist nur unter einer kommerziellen Lizenz verfügbar. OpenExhibits 27 SDK, das
u.a. die Kernfunktionalität von GestureWorks beinhaltet, ist jedoch für Universitäten, Studen-
26
http://gestureworks.com
27
http://openexhibits.org/
23
Grundlagen von Multi-Touch und Gestural Interfaces
ten und Museen frei verfügbar. Die ebenfalls von Ideum gegründete Stiftung OpenExhibits, hat
es sich zur Aufgabe gemacht, durch neuartige, physischere Ausstellungskonzepte Besucher
einzuladen, mehr miteinander zu interagieren und so eine Ausstellung gemeinsam zu erleben.
Das OpenExhibits SDK beinhaltet die Gestenerkennung von GestureWorks. Zusätzlich bietet
OpenExhibits einige frei verfügbare Module für häufig benötigte Anwendungsszenarien wie
eine Bildergalerie, ein Modul für die Anzeige von hochauflösenden Bildern (Gigapixel Viewer)
sowie Player für Musik und Videos. All diese Module sind beliebig kombinierbar und werden
mittels Multi-Touch-Gesten gesteuert. (Open Exhibits (Hg.), o. J.)
2.5.4 Weitere Frameworks
Neben den drei behandelten Frameworks MT4j, Surface 2 SDK und GestureWorks existiert
eine Vielzahl weiterer Frameworks für diverse Programmiersprachen mit unterschiedlichem
Funktionsumfang. Je nach Zielplattform, gewünschter Funktionalität und Ansprüche hinsichtlich Performance und Grafik haben die Frameworks unterschiedliche Stärken und Schwächen.
In diesem Kapitel wurden nur Frameworks mit Unterstützung für Multi-Touch-Gesten behandelt. Applikationen, die diese Funktionalität nicht benötigen, können mit einer Vielzahl
von Programmierumgebungen entwickelt werden. Die populären Creative Coding Toolkits
openFrameworks und Cinder 28 sind aufgrund der Unterstützung von Grafikbibliotheken mit
Hardwarebeschleunigung für Anwendungen mit komplexer Grafik geeignet. Für diese Frameworks existieren bis dato noch keine Multi-Touch-Frameworks im Umfang der oben genannten Lösungen MT4j, Surface 2 SDK und GestureWorks.
Für Multi-Touch-Applikationen, die hohe Anforderungen an Grafik und Performance stellen,
kann das derzeit noch in Entwicklung befindliche Framework MINT eine brauchbare Alternative zu den oben genannten Frameworks darstellen. MINT wird von dem österreichischen Design Studio Strukt in Kooperation mit der Technischen Universität Wien entwickelt. Das
Framework ist in der Programmiersprache C++ entwickelt und kann daher für die Entwicklung von Multi-Touch-Applikationen zusammen mit den Toolkits openFrameworks oder Cinder verwendet werden. Zusätzlich wird das Framework als Plug-in für die visuelle
Programmiersprache vvvv verfügbar sein. Laut einer Ankündigung im vvvv Forum 29 wird
MINT allerdings erst auf dem Festival NODE13 30 im Februar 2013 in Frankfurt veröffentlicht.
(Hitthaler, 2012; Strukt (Hg.), 2012)
28
http://libcinder.org/
29
http://vvvv.org/forums
30
http://node.vvvv.org/
24
3
Multi-Touch im Browser
Das World Wide Web ist seit seiner Schaffung in den frühen 1990er Jahren ständig in Veränderung und Weiterentwicklung. Ursprünglich als System zum Austausch von wissenschaftlichen Informationen konzipiert, wurde schnell deutlich, dass das von Tim Berners-Lee am
CERN entwickelte World Wide Web mit der Strukturierungssprache HTML, dem Transferprotokoll HTTP und dem System für Adressen im Web (URI) für sehr unterschiedliche Anwendungszwecke gebraucht werden kann. (Berners-Lee, 2012)
Der Webbrowser, ein Programm zur Darstellung von Inhalten des World Wide Webs, ist inzwischen zu einer der wichtigsten Applikationen auf jedem Desktop-Computer oder mobilem
Endgerät geworden. Durch schnellere Datenverbindungen und neue technologische Entwicklungen werden neben klassischen Websites immer mehr umfangreiche Applikationen für die
Verwendung im Browser entwickelt. Als Beispiele seien hier E-Mail-Applikationen oder Fotobearbeitungssoftware erwähnt. Mit der Entwicklung der Technologien, die gemeinhin unter
dem Begriff HTML5 zusammengefasst werden, werden Möglichkeiten für Programmierer geschaffen, unterschiedliche Medien ohne zusätzliche Plug-ins in Websites einzubinden, Inhalte
editierbar zu machen und anprechende Interaktionen des Benutzers mit dem System zu gestalten.
Im Kapitel 2.5 wurden Frameworks behandelt die es ermöglichen, Multi-Touch-Anwendungen
als eigenständige Applikationen mit klassischen Programmiersprachen zu entwickeln. Diese
Frameworks haben ihre Berechtigung und spezifischen Vorteile. Durch die Möglichkeiten, die
die aktuellen Entwicklungen der Webtechnologien mit sich bringen, wird jedoch der Webbrowser als Plattform für interaktive Applikationen mit fortgeschrittener Eingabe wie MultiTouch immer attraktiver.
Ein Vorteil, der für die Verwendung von Webtechnologien für interaktive Applikationen
spricht, ist eine große, globale Entwickler/innencommunity, die mit den relevanten Technologien vertraut ist und sich intensiv mit deren Fortschritt beschäftigt. Webentwickler/innen versuchen die Möglichkeiten der Browser auszureizen und dadurch immer bessere
Nutzungserlebnisse für die Benutzer/innen einer Applikation zu schaffen. Browserhersteller
wie Mozilla, Google, Apple und Microsoft sowie die für die Entwicklung des Webs verantwortlichen Konsortien, wie das World Wide Web Consortium (W3C), reagieren auf die Vorschläge
und Kritik der Entwickler/innengemeinde, um ihre Browser zu verbessern bzw. neue Standards
zu definieren.
Wie bereits erwähnt, ist ein deutlicher Trend in der Art des Konsums von Inhalten und Verwendung von Applikationen weg von traditionellen Desktop-Anwendungen zu web-basierten
Applikationen zu erkennen. Anwendungen mit reichhaltigen Interaktionsmöglichkeiten („rich
interaction“) oder animiertem Inhalt konnten früher nur mit zusätzlich zu installierenden
Plug-ins wie Adobe Flash Player oder Silverlight realisiert werden. Die neuen Technologien um
HTML5 machen einen Großteil der Hauptaufgaben von Flash obsolet, denn dieselbe Funktio25
Multi-Touch im Browser
nalität kann häufig mit standardisierten Technologien ohne Verwendung von Plug-ins realisiert werden. Einen Hinweis auf diese Entwicklung liefert beispielsweise der Chrome Web Store 31, in dem umfangreiche Applikationen für die Ausführung in Google‘s Webbrowser
Chrome 32 zur Verwendung bereitstehen. Das breite Sortiment umfasst unter anderem Büroanwendungen, Spiele, Bildbearbeitungstools sowie Audioeditoren. All diese Programme basieren auf standardisierten Webtechnologien und zeigen das breite Spektrum an Möglichkeiten
für die Entwicklung von webbasierten Anwendungen. Dieser Trend zeichnet sich auch durch
Google’s Betriebssystem Chrome OS 33, das ausschließlich auf Webtechnologien basiert, sowie
durch die mit Microsoft Windows 8 eingeführte Möglichkeit, Desktopapplikationen mit Webtechnologien zu entwickeln, ab.
Ein weiterer Vorteil bei der Verwendung von Webtechnologien für Multi-TouchApplikationen ergibt sich für die Distribution der Software. Da Webanwendungen üblicherweise auf einem Webserver im Internet bereitgestellt sowie teilweise auch ausgeführt werden,
ist eine Webapplikation sehr einfach von verschiedenen Orten zugänglich zu machen. Soll eine
Multi-Touch-Applikation an mehreren Orten gleichzeitig verwendet werden – etwa in mehreren Filialen einer Kaufhauskette – so können Änderungen in der Software schnell und kostengünstig ausgerollt werden. Über erneutes Abrufen der Website, die die Applikation beinhaltet,
wird die aktuelle Version der Applikation ausgeführt. Ein Nachteil bei dieser Art der Distribution ergibt sich jedoch für Zugriffsbeschränkungen oder kostenpflichtige Applikationen. Für
derartige Applikationen muss zusätzlich ein Authorisierungs- oder Bezahlungssytem implementiert werden.
In diesem Kapitel werden die aktuellen Möglichkeiten untersucht, Multi-Touch-Informationen
und Gesten im Webbrowser zu verwenden. Für ein Verständnis der wichtigsten Technologien
werden aktuelle Entwicklungen im Umfeld von HTML5 und CSS3 und ihre Relevanz für Multi-Touch-Anwendungen behandelt. Um Multi-Touch-fähige Applikationen zu entwickeln, ist
zudem die derzeitige Implementierung von Touchevents in unterschiedlichen Browser ein
zentraler Punkt.
Die Unterstützung von Touchevents auf mobilen Endgeräten wie Smartphones, die standardmäßig mit einem Multi-Touch-fähigen Bildschirm ausgestattet sind, wird kurz beschrieben. Da
sich diese Arbeit aber auf den Einsatz auf Tabletop-PCs fokussiert, wird nur ein Überblick über
die aktuellen Möglichkeiten mit Smartphones gegeben. Die Unterstützung von Touchevents in
Desktop-Browser wird im Detail beleuchtet.
Frameworks, die Touchevents verwenden, um eine einheitliche Programmierung von Gesten
für mehrere Browser zu ermöglichen, werden in Kapitel 3.3 behandelt.
31
https://chrome.google.com/webstore
32
http://chrome.google.com
33
http://www.chromium.org/chromium-os/
26
Multi-Touch im Browser
3.1 Relevante clientseitige Webtechnologien
3.1.1 HTML(5)
Im Jahr 1989 schlug Tim Berners-Lee, ein Physiker an der Europäischen Organisation für
Kernforschung (CERN) ein globales System zur Verteilung von wissenschaftlichen Publikationen vor. 1990 begann Berners-Lee, die drei wesentlichen Bestandteile seines Systems zu spezifizieren und zu implementieren:
•
Hypertext Transfer Protokoll (HTTP): Spezifikation für die Kommunikation zwischen
Webservern und Webclients
•
Universal Resource Identifier (URI): Spezifikation für die Adressierung von Dateien
und Datenquellen im Internet
•
Hypertext Markup Language (HTML): Spezifikation einer Auszeichnungssprache zur
Strukturierung von Webdokumenten
(Berners-Lee, 2012; Selfhtml (Hg.), 2005)
Seit diesen frühen Tagen des Webs bildet HTML die Grundlage von Webseiten. HTML ist aber
keineswegs eine statische Spezifikation, sondern wurde und wird ständig weiterentwickelt. Eine
zentrale Funktion in diesem Prozess nimmt das Word Wide Web Consortium (W3C), das
1994 von Tim Berners-Lee ins Leben gerufen wurde. Im W3C ist die Arbeit in sogenannte Activities aufgeteilt, welche wiederum von den Arbeitsgruppen (Working Groups) und den Interessensgruppen (Interest Groups) bearbeitet werden. In diesen beiden Gruppen sind viele
Unternehmen vertreten, die so aktiv an der Weiterentwicklung des Webs mitwirken. (Selfhtml
(Hg.), 2005)
Im Dezember 1997 wurde die HTML-Version 4 und zwei Jahre später Version 4.01 vom W3C
veröffentlicht. (Raggett, Le Hors, & Jacobs, 1997, 1999) Nachdem das W3C in einem Workshop zu dem Schluss kam, dass eine Weiterentwicklung von HTML 4.01 nur schwierig zu realisieren sei, wurde nur kurze Zeit später die Arbeit der HTML Working Group eingestellt und
die Arbeit in Richtung einer neuen Spezifikation, die auf wohlgeformtes XML aufbaut, aufgenommen. Die Ergebnisse dieser Bemühungen führten zu XHTML, ein Standard der sich allerdings nie richtig durchsetzen konnte. Die XHTML Working Group wurde mit Ende 2009
aufgelöst. (Le Hegaret & Jacobs, 2009; Smith & Sivonen, 2011)
Da zu dieser Zeit das W3C HTML nicht weiterentwickelte, wurde aus Sorge um die Zukunft
von HTML im Jahr 2004 die WHAT Working Group 34, ein unabhängiger und offener Zusammenschluss aus Browserherstellern 35 und an der Weiterentwicklung von HTML interes-
34
WHAT WG: Web Hypertext Applications Technology Working Group
35
Die zentralen Gründungsmitglieder der WHAT WG waren Mitarbeitern von Apple, der Mozilla Foundation und Opera Software (WHATWG (Hg.), 2012).
27
Multi-Touch im Browser
sierten Parteien, gegründet. Die WHAT Working Group beschäftigte sich mit Aspekten wie
Abwärtskompatibilität von HTML und Funktionalitäten für Webformulare. Über zwei Jahre
hinweg ignorierten sich das W3C und die WHAT Working Group größtenteils, bis 2006 Tim
Berners-Lee verkündete, dass man beim W3C stärker mit der WHAT Working Group zusammenarbeiten werde, um die Anstrengungen der beiden Gruppen zusammenzuführen. Eine der
ersten Entscheidungen der neu entstandenen W3C HTML Working Group war es, die Spezifikation der WHAT WG mit dem Namen Web Applikations 1.0 in HTML5 umzubenennen.
(Berners-Lee, 2006; Pilgrim, 2010, S. 2)
HTML5 ist derzeit noch im Working Draft Stadium, somit ist im Grunde noch HTML 4.01 die
aktuelle Version von HTML. (Raggett u. a., 1999) Viele der neuen HTML5-Technologien und
Funktionen können jedoch bereits verwendet werden. Allerdings muss für ältere Browser, die
diese Funktionen nicht unterstützen, vor allem bei kritischen Elementen einer Webseite oder
Webapplikation eine alternative Lösung bereitgestellt werden.
Durch die vielfältigen neuen Features ist HTML5 mehr als ein Überbegriff für ein Set an fortgeschrittenen, clientseitigen Webtechnologien anstatt einer einzelnen, abgeschlossenen Spezifikation zu betrachten. Welche Neuerungen HTML5 im Allgemeinen bringt und welche davon
für die Entwicklung von Multi-Touch-Applikationen besonders relevant sind, wird nach einer
kurzen Einleitung in die Struktur von HTML-Dokumenten behandelt.
Struktur von HTML-Dokumenten
Ein einfaches HTML-Dokument könnte beispielsweise so aussehen:
<!DOCTYPE html>
<html>
<head>
<title>Beispielseite</title>
</head>
<body>
<h1>Beispielseite</h1>
<p>Das ist ein Textabsatz mit einem <a ref="beispiel2.html">
Link</a> und einem Bild.</p>
<img src="bild.png" />
</body>
</html>
Listing 1: Quellcode eines einfachen HTML-Dokuments
Ein HTML-Dokument besteht aus Elementen und Text, die in einer Baumstruktur organisiert
sind. Elemente werden durch Start- und Endtags gekennzeichnet und können weitere Elemente oder Text beinhalten. Ein Starttag (z.B. <body>) ist durch einen in Kleiner- und Größerzeichen umschlossenen Tagnamen gekennzeichnet und kann mehrere Attribute (z.B.
src="bild.png") beinhalten. Die meisten Elemente müssen durch einen Endtag (z.B.
</body>) wieder geschlossen werden, außer sogenannte Void Tags. Void Tags (z.B. img)
28
Multi-Touch im Browser
dürfen weder weitere Elemente noch Text beinhalten, daher ist kein Endtag nötig. Der Starttag
kann optional aber mit einem Schrägstrich und Größerzeichen (/>) geschlossen werden.
(Hickson, 2012a; Pilgrim, 2010)
Jedes HTML-Dokument beginnt mit einer Doctype-Definition (<!DOCTYPE html> für
HTML5-Dokumente) und besteht aus einer Anzahl von verschachtelten und benachbarten
Elementen. Durch diese Verschachtelung ergibt sich eine Baumstruktur. Das <html> Element
bildet das Root Element (die Wurzel). Benachbarte Elemente werden Siblings (Geschwister)
genannt. Ein inneres Element ist als Child (Kind) zu seinem Parent (Elternteil) zu bezeichnen.
(Pilgrim, 2010, S. 33)
Das in Listing 1 dargestellte HTML-Dokument kann als Baum folgendermaßen dargestellt
werden:
html
|
+--head
| |
| +--text node "Beispielseite"
|
+--body
|
+--h1
| |
| +--text node "Beispielseite"
|
+--p
| |
| +--text node "Das ist ein Text-Absatz mit einem "
| |
| +--a
| | |
| | +--text node "Link"
| |
| +--text node " und einem Bild."
|
+--img
Listing 2: Baum-Darstellung des HTML-Dokuments aus Listing 1
HTML5
HTML 4.01 bietet ein begrenztes Set an verfügbaren Tags, aus welchen sich jede Website zusammensetzt. Um den vielseitigen Anwendungsszenarien von HTML-Dokumenten gerecht zu
werden, führt HTML5 über 30 neue Tags ein, um Inhalt besser zu strukturieren und dem Markup mehr semantischen Sinn zu geben. Beispiele hierfür sind <nav> für die Hauptnavigation
einer Seite, <section> für einen Bereich der Seite mit thematisch zusammengehörigem Inhalt
29
Multi-Touch im Browser
oder <header> und <footer> für Kopf- oder Fußzeilen einer <section> oder der gesamten Seite. (Clark, 2011; Pilgrim, 2010, S. 41)
Neben semantischen Elementen beinhaltet HTML5 Elemente für die Darstellung von Medien
und für clientseitig generierte Grafiken, ein API für die Abfrage von Geopositionsdaten, Möglichkeiten zur clientseitigen Formularvalidierung sowie Unterstützung für die Speicherung von
Daten auf dem Computer des Benutzers. HTML5 beinhaltet als Sammelbegriff eine Vielzahl an
Technologien, die nur teilweise mit HTML-Code programmiert werden. Die Mehrheit dieser
Funktionalität wird über JavaScript-APIs programmiert (siehe Kapitel 3.1.5).
Derzeit unterstützt kein Browser alle HTML5-Features, deshalb ist es nötig bei der Verwendung dieser Funktionen auf Abwärtskompatibilität zu achten. Während semantische Elemente
mit wenigen Zeilen JavaScript-Code auch für ältere Browser verfügbar werden, muss für fortgeschrittene HTML5-Technologien je nach unterstützter Funktionalität des Zielbrowsers eine
Fallbacklösung implementiert werden. Die JavaScript-Library Modernizr 36 kann für die Erkennung, ob eine Funktion verfügbar ist (Feature Detection), hilfreich sein (Pilgrim, 2010, S. 16).
Um HTML5 stärker zu fördern und schneller zu etablieren, hat
das W3-Konsortium ein eigenes Logo für HTML5 entwickelt und
bietet Entwickler/innen an, dieses Logo auf ihren Websites zu
verwenden, wenn HTML5-Features genutzt werden (siehe Abbildung 12).
Abbildung 12: HTML5 Logo
HTML5 Boilerplate
Vor allem für umfangreichere Webapplikationen, die auf HTML5-Funktionalität aufbauen,
empfiehlt sich die Verwendung eines Toolkits, das häufige Aspekte bei der Entwicklung von
HTML5-Websites oder Applikationen gezielt behandelt. Eines dieser Projekte ist HTML5 Boilerplate 37, das unter anderem von Paul Irish und Divya Manian entwickelt wird.
HTML5 Boilerplate stellt eine Sammlung an Einstellungen, Frameworks und Best-Practices dar
und beschleunigt damit die Entwicklung einer HTML5-Applikation. Das Toolkit umfasst unter
anderem:
•
Unterstützung älterer Browser inkl. Internet Explorer 6
•
Unterstützung von HTML5-Tags in älteren Browser
•
Maßnahmen zur Steigerung der Performance
36
http://modernizr.com/
37
http://html5boilerplate.com/
30
Multi-Touch im Browser
•
Optimierung für mobile Websites
•
Modernizr 38 für Erkennung von unterstützten Fähigkeiten des Browsers
•
jQuery
•
Eigene CSS-Klassen für Internet Explorer
(Gallagher, Manian, Reinl, Chuan, & Bynens, o. J.)
Das Projekt wird aktiv weiterentwickelt und ständig verbessert. Die aktuelle Version von
HTML5 Boilerplate ist Version 3.0.
3.1.2 Audio und Video Unterstützung
Das Video-Element (<video>) ermöglicht es, Videos direkt im Browser wiederzugeben ohne
von zusätzlichen Plug-ins wie Adobe Flash oder Apple QuickTime abhängig zu sein. Derzeit
unterstützen die wichtigsten Browser jeweils unterschiedliche Videoformate, daher ist es nötig,
mehrere Videodateien in unterschiedlichen Formaten bereitzustellen. Das von Google entwickelte Videoformat WebM versucht, durch ein offenes Lizenzmodell eine Lösung für dieses
Problem zu bieten. Die Browser Mozilla Firefox 39, Google Chrome und Opera 40 unterstützen
dieses Format bereits (Pilgrim, 2010, S. 89).
Analog zum Video-Element erlaubt das Audio-Element (<audio>) die Wiedergabe und Steuerung von Audiodateien. Auch für dieses Element müssen derzeit mehrere Dateien in unterschiedlichen Formaten angegeben werden, um eine möglichst hohe Browserunterstützung zu
erreichen (Boas, 2012). Auf das umfangreiche Themengebiet der Video- und Audiokodierung
für HTML5 wird in dieser Arbeit nicht weiter eingegangen.
Für die Entwicklung von Multi-Touch-Applikationen für die Ausführung im Browser stellt die
Unterstützung von Mediendateien eine wesentliche Erleichterung und Verbesserung dar. Wird
in einer Multi-Touch-Anwendung eine Video- oder Audiodatei eingebunden, so kann die
Wiedergabe dieser Elemente mit HTML5 nativ im Browser ausgeführt und damit Ressourcen
gespart werden.
3.1.3 Canvas und WebGL
Ein weiteres neues, mit HTML5 eingeführtes Element von großer Bedeutung ist Canvas
(<canvas>). (Hickson, 2012c) beschreibt in der HTML5 Spezifikation der WHAT Working
Group das Canvas-Element folgendermaßen:
„The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be
used for rendering graphs, game graphics, or other visual images on the fly.”
38
http://modernizr.com/
39
http://www.mozilla.org/de/firefox/
40
http://de.opera.com/
31
Multi-Touch im Browser
Das Canvas-Element stellt eine grundlegende Neuerung dar. Bis einschließlich HTML 4 konnten Animationen nur über animierte GIF-Dateien oder zusätzliche Plug-ins wie Adobe Flash
oder Apple QuickTime realisiert werden. Canvas bietet eine umfangreiche JavaScript 41Programmierschnittstelle, um interaktive 2D-Grafiken clientseitig zu generieren. Elemente wie
Text, Grafikprimitive (Kreise, Linien, Rechecke, Polygone) oder Pfade werden unter Verwendung von verschiedenen Füll- und Linienfarben in einem zweidimensionalen Koordinatensystem positioniert. Die Koordinaten (0,0) beschreiben die linke obere Ecke der Zeichenfläche.
Der x-Wert wird nach rechts erhöht, der y-Wert nach unten (Hickson, 2012c; Pilgrim, 2010, S.
57); siehe Abbildung 13).
Abbildung 13: Koordinatensystem für die Positionierung von Elementen auf einem Canvas zwei Punkten (0,0)
und (4,2)
Wie bereits erwähnt, kann Canvas nicht nur statische Grafiken ausgeben. Über Maus- oder
Touchevents kann auf Benutzeraktionen reagiert werden, um komplexe, interaktive Animationen zu erstellen (Pilgrim, 2010, S. 77). Zahlreiche Bibliotheken abstrahieren die nativen Zeichenfunktionalitäten des Canvas-Elements, um die Entwicklung von interaktiven Grafiken
oder Spielen zu vereinfachen. Beispiele hierfür sind Paper.js 42 und Processing.js 43.
Paper.js basiert auf Scriptgrapher, der Scriptingsprache des vektororientierten Programms
Adobe Illustrator und bietet somit ein API um interaktive Grafiken über Vektormanipulation
für das Canvas-Element zu entwickeln (Paper.js (Hg.), o. J.).
Processing.js versucht die Syntax des Java-Frameworks Processing für Canvas zu übernehmen,
um so erfahrenen Processing-Entwickler/innen den Umstieg auf HTML5 zu erleichtern. Bereits vorhandener Processing-Code kann sehr einfach auf Processing.js übersetzt werden. Processing.js bietet (wie Processing selbst) auch die Möglichkeit, dreidimensionale Grafiken und
41
JavaScript wird im Kapitel 3.1.5 behandelt.
42
http://paperjs.org/
43
http://processingjs.org/
32
Multi-Touch im Browser
Animationen zu programmieren. Für 3D-Grafiken verwendet Processing.js nicht den 2DKontext des Canvas-Elements, sondern übersetzt den Code auf WebGL. (Processing.js (Hg.), o.
J.)
Die WebGL (Web Graphics Library) Spezifikation führt einen weiteren Grafikkontext für das
HTML5 Canvas-Element ein, der eine der OpenGL 44 ES 2.0 API weitgehend entsprechenden
Programmierschnittstelle zur Verfügung stellt. WebGL Programmcode wird direkt auf der
Grafikkarte des Computers ausgeführt und erzielt somit selbst bei komplexen Grafikoperationen eine hohe Leistung. (Marrin, 2012)
Neben Bibliotheken, die sowohl die Programmierung von 2D als auch 3D-Grafiken und Animationen ermöglichen wie Processing.js, richten andere Frameworks den Fokus auf den 3DKontext und WebGL-Rendering. Eines dieser Frameworks, dem derzeit viel Beachtung geschenkt wird, ist Three.js 45. Three.js ist eine JavaScript 3D-Engine zur Erstellung von komplexen dreidimensionalen, interaktiven Szenen. Die Bibliothek bietet unter anderem:
•
Hinzufügen und Entfernen von Objekten zur Laufzeit
•
Unterschiedliche Kameratypen (perspektivisch und orthografisch)
•
Unterstützung für Animationen über Schlüsselbilder und Morphing
•
Eine Vielzahl an Lichttypen, Materialien und geometrischen Figuren
•
Werkzeuge für die Umwandlung von verbreiteten 3D-Dateiformaten für die Verwendung in das von Three.js verwendete JSON-Format 46
(Cabello, 2012)
Durch die Möglichkeit, mit Three.js eine 3D-Szene zur Laufzeit über JavaScript-Befehle – und
somit auch mit Multi-Touch-Interaktionen – zu verändern, ergeben sich vielfältige Anwendungsfälle für grafisch anspruchsvolle, interaktive Applikationen oder Spiele, die im Browser
ausgeführt werden. Ein Beispiel hierfür ist das mit Three.js umgesetzte Spiel TriggerRally (siehe
Abbildung 14).
44
OpenGL ES ist ein freies, plattformübergreifendes API für 2D und 3D-Grafiken für Eingebettete Systeme.
OpenGL ES stellt ein Subset des OpenGL API dar und ermöglicht es, Hardware-beschleunigte Grafikoperationen auszuführen. (Khronos Group (Hg.), o. J.)
45
http://mrdoob.github.com/three.js/
46
JSON wird im Kapitel 3.1.5 behandelt.
33
Multi-Touch im Browser
Abbildung 14: Screenshot der Onlineversion des mit Three.js umgesetzten Spiels TriggerRally.
3.1.4 Fullscreen API
Eine weitere, für die Entwicklung von Webapplikationen hilfreiche Funktion ist das Fullscreen
API. Über dieses API kann mittels einer Aktion des Benutzers (z.B. ein Mausklick oder TapEvent) der gesamte Bildschirm für die Darstellung eines Elements oder einer gesamten Website
zur Verfügung gestellt werden.
Dieses Feature befindet sich derzeit noch in experimentellem Stadium und stellt daher noch
keine abgeschlossene Spezifikation dar. Das Fullscreen API wurde von Mozilla vorgeschlagen
und ist bereits seit Mozilla Firefox 10 und Google Chrome 15 verfügbar. Auch das W3C beschäftigt sich mit dem neuen API und hat eine Living Specification für das Fullscreen API veröffentlicht 47. (Kesteren & Çelik, 2012)
Um den Fullscreenmodus für ein Element zu aktivieren, wird in der von Mozilla vorgeschlagenen Syntax der Befehl element.requestFullScreen() verwendet. Die Syntaxen der Spezifikationen von Mozilla und dem W3C unterscheiden sich – wie auch die
Browserimplementierungen – geringfügig, daher sind die Methoden des API derzeit noch mit
browserspezifischen Präfixe (moz für Firefox und webkit für Chrome) zu versehen. (Doherty,
2012; Kesteren & Çelik, 2012; Schechter, 2012)
3.1.5 JavaScript, jQuery und JSON
JavaScript ist eine Programmiersprache, die entwickelt wurde, um die beschränkten Möglichkeiten von HTML-Dokumenten zu erweitern und Webseiten mit Funktionalität, die clientseitig im Browser des Benutzers ausgeführt wird, auszustatten. JavaScript ist kein Teil von HTML,
sondern eine Web Scripting Language und wird mit dem Standard ECMAScript Programming
Language definiert48. (Ecma International, 2011; Flanagan, 2006, S. 1)
47
In der Spezifikation wird betont, dass das Fullscreen API kein W3C Standard ist und sich auch nicht auf
dem Weg dorthin befindet.
48
http://ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
34
Multi-Touch im Browser
JavaScript ist eine interpretierte, schwach typisierte, objektorientierte, aber klassenlose Sprache
mit einer Syntax, die Elemente der Programmiersprachen C, C++ und Java verwendet. Die
Vererbung von Objekten geschieht in JavaScript über das sogenannte Prototypal Inheritance,
was für Programmierer/innen mit Erfahrung in anderen objektorientierten Programmiersprachen eine Umstellung darstellt. (Crockford, 2008, S. 7; Flanagan, 2006, S. 122)
Wenn von JavaScript gesprochen wird, so bezieht man sich in den meisten Fällen auf clientseitiges JavaScript, da dies die am weitesten verbreitete Verwendung ist. Die Popularität von Frameworks wie Node.js 49 zeigen aber auch Einsatzmöglichkeiten von JavaScript für serverseitig
ausgeführte Anwendungen.
Clientseitiger JavaScript-Code wird von einem in den Browser eingebetteten JavaScriptInterpreter ausgeführt. JavaScript erlaubt es, Entwickler/innen beispielsweise auf Benutzereingaben via Tastatur oder Maus zu reagieren, Daten asynchron nachzuladen oder Elemente einer
HTML-Seite zu verändern. Dafür verwendet JavaScript das Document Object Model (DOM),
ein vom W3C definierter Standard, der den Zugriff auf alle Elemente einer Seite und deren
Eigenschaften erlaubt. (Flanagan, 2006, S. 361)
Wie Douglas Crockford (2008, S. 8) beschreibt, beinhaltet JavaScript Designfehler und fehlerhafte Funktionalität sowie Konzepte, die bei vielen Programmierer/innen für Verwirrung sorgen. Diese Schwachstellen können und müssen aber umgangen werden, um die mächtige und
vielseitige Programmiersprache JavaScript sinnvoll einsetzen zu können.
Zu diesen Designfehlern zählt beispielsweise der Umstand, dass Variablen globalen Geltungsbereich besitzen. Dies kann schon bei Applikationen mit geringem Umfang zu Problemen führen und ist daher gezielt zu adressieren, um Konflikte zu vermeiden. (Crockford, 2008, S. 3)
Bei der Verwendung von JavaScript muss zudem darauf geachtet werden, dass die Browser
Unterschiede in der Implementierung des JavaScript Interpreters aufweisen. Dadurch ergeben
sich Kompatibilitätsprobleme, die hohe Kosten in der Entwicklung verursachen können. Eine
Anzahl von JavaScript-Frameworks versuchen diese Problematik durch Abstraktion von JavaScript-Funktionalität zu verringern. Ein sehr bekannter Vertreter dieser Frameworks ist
jQuery.
jQuery
Die JavaScript-Bibliothek jQuery 50 vereinfacht und vereinheitlicht den Zugriff auf HTMLDokumente, Eventhandling, Animationen und Ajax-Funktionalität. Mit der Verwendung von
jQuery entfallen viele Probleme, die durch unterschiedliche JavaScript-Implementierungen
seitens der Browserhersteller entstehen. (jQuery Foundation (Hg.), o. J.)
49
http://nodejs.org/
50
http://jquery.com/
35
Multi-Touch im Browser
jQuery ist ein sehr populäres Framework und besitzt daher eine große Entwickler/innencommunity, die den Kern und eine große Anzahl von Plug-ins entwickelt. Die Plug-in
Architektur stellt eines der wesentlichen Konzepte von jQuery dar und ist mit ein Grund für
die weite Verbreitung. Für sehr viele Probleme, denen Programmierer/innen bei der Entwicklung von JavaScript für Webseiten und -applikationen begegnen, existieren bereits Plug-ins für
jQuery. Diese Modularität erlaubt es, Quellcode einfach anderen Benutzer/innen zur Verfügung zu stellen und im Umkehrschluss, ein definiertes Set an Plug-ins für jQuery zu verwenden, ohne die Funktionalität der einzelnen Plug-ins selbst implementieren zu müssen.
Ein weiteres Konzept von jQuery ist das Chaining. Über Punktnotation können mehrere Operationen eines Element durch Aneinanderhängen (Chaining) ausgeführt werden. Dieses Konzept sorgt nicht nur für wesentlich weniger Quellcode, sondern erleichtert auch die
Manipulation von Elementen und ist ressourcensparend, da die Auswahl von DOM-Elementen
rechenintensive Operationen mit sich führen kann. (jQuery Community Experts, 2010)
$("div.name").hide().text("Grubinger").addClass("lastname").show();
Listing 3: Beispiel für Chaining in jQuery.
In dem in Listing 3 dargestellten Beispiel, werden in einer Zeile JavaScript/jQuery-Code folgende Schritte durchgeführt:
•
Alle DIV-Elemente (<div>) mit der Klasse name werden ausgewählt,
•
unsichtbar gemacht,
•
der Inhalt der selektierten Elemente mit dem Text „Grubinger“ ersetzt,
•
eine weitere Klasse lastname hinzugefügt und
•
wieder angezeigt.
JSON
JSON ist ein kompaktes Format zum Datenaustausch zwischen verschiedenen Arten von Programmen und basiert auf der Object Literal Notation 51 von JavaScript. JSON wird als Text
gespeichert und ist damit sowohl von Computern als auch Menschen lesbar. Ein JSON-Objekt
besteht aus einer ungeordneten Liste an paarweise auftretenden Name/Wert-Kombinationen.
Der Name muss ein String sein, der Wert kann sechs unterschiedliche Typen beinhalten: Objekte, Arrays, Strings, Zahlen, Boolsche Werte und den Wert null. (Crockford, 2008, S. 136)
In dem in Listing 4 ersichtlichen Beispiel werden zwei Elemente mit unterschiedlichen Wertetypen dargestellt. Der Ausdruck tea_json[1].origin liefert in diesem Beispiel den Wert
„any region with temperate climate“ als Textkette.
51
Ein Objektliteral ist eine Möglichkeit in JavaScript Objekte zu erzeugen. Sie bestehen aus einem Paar an
geschwungenen Klammern, das null oder mehr Paare aus Name und Wert umschließt. (Crockford, 2008, S.
20)
36
Multi-Touch im Browser
JSON-Objekte können ohne Einschränkungen ineinander verschachtelt werden, allerdings
empfiehlt es sich für bessere Lesbarkeit, die Struktur möglichst flach zu halten.
Eine Vielzahl an Programmiersprachen bieten Parser für JSON-Objekte, dadurch bietet sich
JSON als Format zum Austausch von Daten über verschiedene Systeme hinweg an. Viele moderne APIs von Webservices bieten daher neben dem XML-Format die Daten auch im JSON
Format an.
var tea_json = [
{
"name": "Darjeeling",
"origin": "India",
"stimulative": true,
"cups_consumed_today": 1
},
{
"name": "Peppermint",
"origin": "any region with
"stimulative": false,
"cups_consumed_today": 3
} ]
//
//
//
//
String
String
Boolean
Number
temperate climate",
Listing 4: Ein einfaches JSON-Objekt eines Arrays mit zwei Objekten mit jeweils vier Name/Wert-Paaren.
3.1.6 CSS(3)
Cascading Style Sheets (CSS) ermöglichen, das visuelle Erscheinungsbild eines Dokuments
oder einer Reihe von Dokumenten zu gestalten. Ein Dokument kann beispielsweise eine
HTML-Seite sein. CSS wird aber auch von Mozilla für die Gestaltung der Benutzerschnittstelle
von Firefox verwendet. Mittels CSS werden die in HTML strukturierten Daten und Informationen einer Website in das gewünschte Layout gebracht, Farben angepasst, Schriftarten definiert und viele weitere visuelle Aspekte konfiguriert. (Laborenz, 2011, S. 19; Meyer, 2007, S. 1)
In den Anfangszeiten des Webs (1990-1993) beschränkten sich Webseiten auf HTML-Markup,
das Informationen übersichtlich darstellte. Webseiten bestanden im Wesentlichen aus Überschriften, Absätzen, Listen und Hyperlinks zu anderen Dokumenten. Erst mit der Einführung
des ersten – im Sinne der heute aktuellen Browser – Webbrowsers Mosaic im Jahr 1993, etablierte sich das World Wide Web auch außerhalb des akademischen Kontexts. Entwickler/innen
von Webseiten begannen, HTML-Elemente mit Attributen zu versehen, die die Darstellung im
Browser beeinflussen. Das führte zu unübersichtlichen und aufwändig zu wartenden HTMLDokumenten. Bei einer Änderung beispielsweise der Farbe aller Überschriften auf einer umfangreichen Website mussten alle Links einzeln bearbeitet werden. (Laborenz, 2011; Meyer,
2007; Vetter, 1994)
Diese Entwicklung veranlasste das W3C, 1995 ein Konzept mit den Arbeitstitel CSS zu veröffentlichen und diesen Problemen entgegenzuwirken. 1996 erlangte CSS den Empfehlungsstatus
37
Multi-Touch im Browser
des W3C. Während erst 2001 die aktuelle Version von CSS (Level 2.1) im Juni 2011 vollen
Empfehlungsstatus erhielt, arbeitet die W3C CSS Working Group schon seit dem Jahr 2000 an
Level 3 von CSS. Dieses Level wird – in der Nomenklatur konsistent mit HTML5 – einfach
CSS3 genannt. (Bos, Çelik, Hickson, & Lie, 2011; Meyer, 2000, 2007, S. 4)
Die wesentliche Aufgabe von CSS ist die Trennung von Inhalt und Aussehen einer Webseite.
Während der Inhalt und die logische und semantische Beschreibung einer Webseite mit
HTML realisiert wird, ist CSS für die Zuweisung von Stilanweisungen für die Formatierung
und das Aussehen einer Website zu verwenden. (Laborenz, 2011, S. 22)
Für die Formatierung eines HTML-Dokuments mit CSS wird meist eine externe CSS-Datei
angelegt und im HTML-Quellcode referenziert. Mehrere HTML-Seiten einer Website können
so auf die gleiche CSS-Datei zugreifen, Änderungen am Style Sheet (CSS-Datei) wirken sich auf
alle referenzierenden Dokumente aus. Das erleichtert die Wartung und Weiterentwicklung von
Websites enorm. (Meyer, 2007, S. 7)
Ein weiteres Schlüsselkonzept von CSS ist die bereits im Namen enthaltene Kaskadierung. Mittels Kaskadierung können Stile, die für mehrere Elemente Geltung besitzen, auf einer Untermenge dieser Elemente erweitert oder überschrieben werden. Kaskadierung ist ein einfacher,
aber effektiver Mechanismus, um trotz Stilregeln, die für eine Vielzahl von Elementen gelten,
flexibel bei der Gestaltung von einzelnen Elementen zu bleiben. Welcher Stil für ein bestimmtes Element, dessen Stilattribut mehrfach definiert wurde, verwendet wird, folgt genau definierten Regeln und wird von mehreren Faktoren wie Nähe zum Element und Hierarchie bestimmt.
(Meyer, 2007, S. 8)
CSS3
Das noch in Entwicklung befindliche CSS Level 3 führt eine Reihe neuer Funktionen ein, die
von CSS-Autoren verwendet werden können, um HTML-Elemente zu positionieren, formatieren oder animieren. CSS3 basiert auf dem überarbeiteten Kern von CSS 2.1 und einer Reihe
von Modulen, die von eigenständigen Arbeitsgruppen entwickelt werden. Auch wenn die neuen Module noch nicht vom W3C verabschiedet wurden, implementieren moderne Browser
diese bereits teilweise. Um Kompatibilitätsproblemen bei einer in der Zukunft stattfindenden
Standardisierung mit geänderter Syntax entgegenzuwirken, sind viele der mit CSS3 verfügbaren Funktionen mit Browser-Präfixen zu versehen. Dadurch entstehten weniger übersichtliche
und aufwändiger zu wartende CSS-Anweisungen (siehe Listing 6).
Eine einfache CSS-Regel wird in Listing 5 dargestellt. Diese Regel färbt alle Überschriften der
ersten Ordnung (<h1>) eines Dokuments rot und zeigt eine graue Randlinie mit einem Pixel
Strichstärke um das gesamte Element an. Zusätzlich wird der Hintergrund mit einem vertikalen Verlauf von Gelb nach Blau eingefärbt.
38
Multi-Touch im Browser
h1 {
color: red;
border: 1px solid #ccc;
linear-gradient(yellow, blue);
/* Rote Schrift */
/* Durchgängiger Rand mit 1px
und #ccc Farbe */
/* Linearer Verlauf von Gelb
nach Blau */
}
Listing 5: Einfache CSS-Regel mit drei Attributen
Die Eigenschaft linear-gradient wurde erst mit CSS3 eingeführt. Obwohl diese Eigenschaft bereits den Candidate Recommendation des W3C besitzt, muss ein Verlauf derzeit zusätzlich noch mit den erwähnten Präfixen für die verschiedenen Browser definiert werden
(Deveria, o. J.) siehe Listing 6).
h1 {
[...]
-moz-linear-gradient(yellow, blue);
-webkit-linear-gradient(yellow, blue);
-o-linear-gradient(yellow, blue);
linear-gradient(yellow, blue);
}
/*
/*
/*
/*
/*
Zusaetzl. Attribute
Mozilla Browser
Webkit Browser
Opera
W3C Syntax
*/
*/
*/
*/
*/
Listing 6: CSS-Regel mit Browser-Präfixe für CSS3-Attribute
Eine aktuelle Auskunft über den Implementierungsstatus von CSS3 Eigenschaften in den vergangenen, derzeitigen und zukünftigen Versionen der meistgenutzten Browser gibt die Website When Can I Use? 52. Auf der Detailansicht der einzelnen Eigenschaften können sich
Entwickler/innen auch über die Notwendigkeit der Verwendung von Präfixen informieren
sowie externe Links zu den jeweiligen Spezifikationen des W3C finden.
CSS3 Transforms
Eine mit CSS3 neu eingeführte Eigenschaft ist für die Entwicklung von gestenbasierten MultiTouch-Applikationen von besonders großem Nutzen: transform. Mittels transform kann
ein HTML-Element im 2D oder 3D Kontext über eine Transformationsmatrix transformiert
werden. Über die Parameter der Eigenschaft kann ein DOM-Element verschoben (translate), skaliert (scale) oder rotiert (rotate) werden. Werden diese Transformationen im 3DKontext mit den Achsen x, y, z verwendet, so kann zusätzlich noch die Perspektive (perspective), der sogenannte Betrachtungsabstand verändert werden. Standardmäßig werden die
Transformationen ausgehend vom Zentrum des Elements (X-Achse: 50%, Y-Achse: 50%) berechnet, diese Position kann jedoch über die transform-origin Eigenschaft modifiziert
werden. (Fraser u. a., 2012)
52
http://caniuse.com
39
Multi-Touch im Browser
CSS Transforms sind ein eigenständiges CSS3-Modul und befinden sich noch im Stadium des
Editor’s Draft, daher können noch Änderungen von Seiten des W3C vorgenommen werden
(Fraser u. a., 2012). Aktuelle Browserversionen unterstützen jedoch bereits Transformationen
mit CSS 53, allerdings müssen auch bei dieser Eigenschaft aufgrund der noch nicht abgeschlossenen Spezifikation die erwähnten Browser-Präfixe -moz, -webkit, -o und zusätzlich -ms für
Internet Explorer vorangestellt werden.
Abbildung 15 zeigt ein Bild mit den in Listing 7 definierten CSS Transformationen.
img.transformed {
-moz-transform: translate(100px) rotate(20deg);
-moz-transform-origin: 60% 100%;
-webkit-transform: translate(100px) rotate(20deg);
-webkit-transform-origin: 60% 100%;
-o-transform:translate(100px) rotate(20deg);
-o-transform-origin: 60% 100%;
-ms-transform: translate(100px) rotate(20deg);
-ms-transform-origin: 60% 100%;
transform: translate(100px) rotate(20deg);
transform-origin: 60% 100%;
}
Listing 7: CSS-Regel für die Verschiebung um 100px an der X-Achse sowie Drehung um 20 Grad für Bilder der
Klasse transformed. Der Mittelpunkt der Transformation befindet sich bei X=60% und Y=100%. (Patonnier,
2012)
53
CSS Transforms sind ab Internet Explorer 9, Mozilla Firefox 3.5, Google Chrome 4, Apple Safari 3.1 und
iOS Safari 3.2, Opera 10.5 und Android Browser 2.1 unter Verwendung von Browser-Präfixen verfügbar.
(Deveria, o. J.)
40
Multi-Touch im Browser
Abbildung 15: Resultat der in Listing 7 definierten Transformationen. Das halbtransparente Bild zeigt die Ausgangsposition, der rote Punkt markiert den Ursprungspunkt (transform-origin).
CSS3 Transitions und Animations
Selbst einfache Übergänge und Animationen von DOM-Elementen konnten vor CSS3 nur
über JavaScript-Anweisungen realisiert werden. Das führt einerseits dazu, dass Benutzer die
JavaScript in ihrem Browser deaktiviert haben, diese Übergänge und Animationen nicht sehen
können und benötigt andererseits – im Vergleich zu CSS3 Funktionen – viel Prozessorleistung,
was sich negativ auf die Darstellbarkeit auf mobilen Endgeräten auswirkt.
Mit CSS Transitions können für einzelne CSS-Attribute Übergangsanimationen definiert werden. So kann beispielsweise ein gradueller Übergang zwischen der normalen Hintergrundfarbe
und einer anderen Hintergrundfarbe bei einem Maushover realisiert werden (Laborenz, 2011,
S. 365).
Komplexere Animationen können über das Attribut animation realisiert werden. Über vorher definierte Schlüsselbilder (Keyframes) kann das zu animierende Element verschiedene Zustände mitsamt Easingfunktionen 54 während einer einzelnen Animation annehmen (Laborenz,
2011, S. 366–369).
54
Easingfunktionen beschreiben den zeitlichen Ablauf einer Animation/Transformation. Sie ermöglichen
nicht-lineare Animationsabläufe und sorgen so für als natürlicher wahrgenommene Animationen. (Flanagan, 2006, S. 556; Laborenz, 2011, S. 365)
41
Multi-Touch im Browser
h1 {
animation-duration: 3s;
animation-name: moveright;
}
@keyframes moveright {
from {
margin-left: 100px;
}
to {
margin-left: 0px;
}
}
Listing 8: Beispiel-Code einer CSS-Animation mit zwei Schlüsselbilder (from, to). Ein H1-Element bewegt sich
dabei innerhalb von drei Sekunden um 100 Pixel von rechts nach links. Aus Gründen der Lesbarkeit wurde auf
Browser-Präfixe verzichtet. (Perrier, 2012)
Listing 8 zeigt ein Beispiel für die Verwendung von CSS Animationen. Die Syntax sieht zwei
getrennte Teile vor: einerseits die Deklaration der Animation mittels Schlüsselbilder und Identifikation mit einem Namen (moveright) mit der @keyframes Syntax und andererseits die
Zuweisung einer definierten Animation an ein Element über die CSS-Eigenschaft animation-name. Diese Syntax trennt die eigentliche Beschreibung der Animation vom verwendenden
Element. Dadurch ergeben sich zwei wesentliche Vorteile: Die CSS-Stile der einzelnen Elemente bleiben besser lesbar und die Animationen sind für andere Elemente wiederverwertbar.
3.2 Touchevents und deren Unterstützung in
aktuellen Browserversionen
Die wichtigste Voraussetzung für Multi-Touch-Applikationen auf Basis von HTML und
JavaScript ist die Möglichkeit, auf Touchinformationen im Browser zugreifen zu können.
Clientseitiges JavaScript verwendet ein Programmierkonzept, das auf asynchrone Eventverarbeitung baut. In diesem Konzept erzeugt der Webbrowser ein Event, wenn ein Ereignis im
Zusammenhang mit dem Browser oder dem aktuellen Dokument aufgetreten ist. Eine derartige Aktion kann etwa der Abschluss des Ladevorgangs des Dokuments, ein Tastenanschlag des
Benutzers/der Benutzerin, ein Klick mit der Maus auf ein bestimmtes Element oder auch eine
Berührung des Touchscreens sein. Zusätzlich zu den genannten Ereignissen existieren eine
Vielzahl weiterer Events; vor allem im Zusammenhang mit neuen HTML5-Features wie Video
oder Audio wurden einige neue Events eingeführt. (Flanagan, 2006, S. 447–449)
Wird eines dieser Ereignisse vom Browser registriert, so sendet dieser ein entsprechendes
Event. Bei einem Mausklick auf ein Element wird beispielsweise das Event mousedown bei
Betätigung der Maustaste und mouseup beim Loslassen gesendet. Wenn der Benutzer die
42
Multi-Touch im Browser
Maus zwischen diesen beiden Events bewegt, so werden dazwischen zusätzlich mousemove
Events gesendet, die die Bewegung der Maus repräsentieren. (Flanagan, 2006, S. 451)
Um in einer Applikation auf Events zu reagieren, muss für jedes Event ein Eventhandler (auch:
Eventlistener) definiert werden. Der Eventhandler verknüpft ein Event mit einer Funktion, die
beim Auftreten des Events ausgeführt wird. Zusätzlich zur Information, welches Event gesendet wurde, sind Events mit Attributen mit weiteren Informationen (beispielsweise welches
Element das Event ausgelöst hat, Koordinaten des Mausklicks, welche Keyboardtaste gedrückt
wurde etc.) versehen. (Flanagan, 2006, S. 446)
3.2.1 Mobile Endgeräte
Mit der hohen Verbreitung von mobilen Endgeräten mit Multi-Touch-fähigen Bildschirmen
reichen die vorhandenen Events für Interaktionen des Benutzers mit dem System nicht mehr
aus. In einigen Fällen können zwar Touchinteraktionen auf Mausinteraktionen wie Klick und
Scroll übertragen werden, aber um Benutzerschnittstellen zu realisieren, die von der Erkennung von mehreren Berührungspunkte profitieren, sind entsprechende Events notwendig.
(Flanagan, 2006, S. 456)
Aus diesem Grund entwickelte Apple für seinen auf den mobilen Geräten iPhone, iPod und
iPad verwendeten Browser Safari ein Eventsystem zur Beschreibung von Multi-Touch- und
Gestenevents (Flanagan, 2006, S. 456).
Über lange Zeit war Safari auf mobilen Endgeräten von Apple der einzige Browser, der diese
Events vollständig unterstützte. Der auf Android-Geräten standardmäßig verwendete Browser 55 sendet zwar Multi-Touch-Events bei einer Berührung des Displays an den Browser, allerdings nur für den jeweils ersten Finger einer Berührungssequenz und ist somit nicht MultiTouch-fähig. Der inzwischen für Android erhältliche Browser Chrome 56 unterstützt MultiTouch-Events auch für mehrere Finger und ist damit für Multi-Touch-Applikationen geeignet.
Zusätzlich zu Multi-Touch-Events, sendet Safari auch Gesture-Events, wenn das System eine
Rotate oder Scale Geste (siehe Kapitel 2.2) erkennt. Damit nimmt der Browser die Erkennung
von Gesten den Entwickler/innen ab und lässt gleichzeitig mittels niederschwelligen MultiTouch-Events die Erkennung von anderen Gesten zu. Derzeit ist Safari der einzige Browser,
der Gesture-Events unterstützt. (Apple (Hg.), 2010; Flanagan, 2006, S. 456)
55
Der Android-Browser basiert wie Apple Safari und Google Chrome auf der WebKit Engine.
56
https://www.google.com/intl/en/chrome/browser/mobile/android.html
43
Multi-Touch im Browser
3.2.2 W3C Touch Events
Das W3C erkannte die Notwendigkeit, diese Multi-Touch-Events zu standardisieren und veröffentlichte im Dezember 2011 eine Spezifikation für Touchevents 57 mit Candidate Recommendation Status (Brubeck, Moon, & Schepers, 2011; Flanagan, 2006, S. 456).
Diese Spezifikation ist stark an das von Apple eingeführte System angelehnt. Folgende Events
vom Objekttyp TouchEvent sind verfügbar: Das Event touchstart wird gesendet, wenn ein
Finger den Bildschirm berührt, touchmove wenn der Finger bewegt wird und touchend
wenn der Finger die Oberfläche verlässt. Zusätzlich ist das Event touchcancel vorgesehen,
welches ausgelöst wird, wenn das System die Verfolgung einer Berührung abbricht. Ein Beispiel für dieses Event ist, wenn ein Finger aus dem Multi-Touch-fähigen Bereich ohne Unterbrechung in die grafische Benutzerschnittstelle des Browsers bewegt wird. (Brubeck u. a., 2011;
Flanagan, 2006, S. 456)
Abbildung 16: Die Beziehung zwischen Berührung und den Objekttypen TouchEvent, TouchList und Touch.
Ein TouchEvent besitzt in der W3C-Spezifikation einige Attribute, die detaillierte Informationen über das Event beinhalten. Die Attribute altKey, metaKey, ctrlKey und shiftKey
geben Informationen, ob eine bestimmte Taste auf der Tastatur gedrückt wurde während das
TouchEvent ausgelöst wurde. Für die Entwicklung von Multi-Touch-Applikationen sind die
Attribute touches, targetTouches und changedTouches vom Objekttyp TouchList
von großer Relevanz (siehe Tabelle 2). (Brubeck u. a., 2011)
Attribut
Typ
touches
TouchList
targetTouches
TouchList
57
Zweck
Beinhaltet alle derzeit auf der Oberfläche befindlichen
Touches.
Beinhaltet alle derzeit auf der Oberfläche befindlichen
Touches, die auf dem Event-generierenden Objekt (target) begonnen hatten.
Anmerkung: Der Autor unterscheidet hier zwischen zwei Schreibweisen: Touchevents in der deutschen
Schreibweise und Touch Event in Eigennamen wie W3C Touch Events.
44
Multi-Touch im Browser
changedTouches
TouchList
Beinhaltet alle Touches, die zur Auslösung des Event
beigetragen haben.
Tabelle 2: TouchList-Attribute eines TouchEvent-Objekts (Brubeck u. a., 2011).
Wie in Abbildung 16 ersichtlich, beinhalten die TouchList-Attribute jeweils eine Liste von
Objekten vom Typ Touch. Ein Touch-Objekt entspricht dabei einem einzelnen Berührungspunkt auf der Oberfläche und beinhaltet einige Attribute, die den Punkt beschreiben (siehe
Tabelle 3).
Attribut
Typ
identifier
long
target
EventTarget
screenX
long
screenY
long
clientX
long
clientY
long
pageX
long
pageY
long
Zweck
Eine Identifikationsnummer, die unter allen aktiven
Berührungspunkten einzigartig ist. Alle Events, die sich
auf diesen Punkt beziehen, müssen die selbe Nummer
verwenden.
Das Element auf dem die Berührung begonnen hat,
auch wenn der Punkt sich aktuell außerhalb des Elements befindet.
Die horizontale Koordinate des Punktes relativ zum
Bildschirm.
Die vertikale Koordinate des Punktes relativ zum Bildschirm.
Die horizontale Koordinate des Punktes relativ zum
Viewport 58 des Browsers ohne Scrollversatz.
Die vertikale Koordinate des Punktes relativ zum
Viewport des Browsers ohne Scrollversatz.
Die horizontale Koordinate des Punktes relativ zum
Viewport des Browsers inklusive Scrollversatz.
Die horizontale Koordinate des Punktes relativ zum
Viewport des Browsers inklusive Scrollversatz.
Tabelle 3: Attribute eines Objekts vom Typ Touch (Brubeck et al., 2011).
Bei genauerer Betrachtung dieser Attribute fällt auf, dass keine Eigenschaft die Koordinaten
des Berühungspunkts relativ zu dem das Event auslösende Element (target) beinhaltet. Wird
dieser Punkt (beispielsweise für eine Drag-Aktion) benötigt, muss er über die Positionsattribute des Elements und den Attributen pageX und pageY des Punktes ermittelt werden.
58
Der Begriff Viewport bezieht sich im Zusammenhang mit Webbrowser auf die Größe des aktuellen Darstellungsbereichs ohne eventuell sichtbare Elemente der Benutzerschnittstelle des Browsers selbst.
45
Multi-Touch im Browser
Derzeit arbeitet die W3C Web Events Working Group an Version 2 der Touch Events Spezifikation. Zum Zeitpunkt der Erstellung dieser Arbeit befindet sich Version 2 im Status Editor’s
Draft und stellt somit eher eine Sammlung an Ideen als eine fertige Spezifikation dar. Aufgrund
der Veränderlichkeit, die dieser Status impliziert, werden die folgenden Erweiterungen noch in
keinem Browser unterstützt.
Version 2 der Touch Events erweitert Version 1 um die Events touchenter und touchleave, welche beim Eintreten bzw. Verlassen der Fläche eines DOM-Elements gesendet werden.
Die Spezifikation sieht derzeit zusätzlich für Objekte vom Typ Touch die in Tabelle 4 ersichtlichen Attribute vor. (Schepers, Moon, & Brubeck, 2011)
Attribut
Typ
radiusX
long
radiusY
long
rotationAngle
float
force
float
Zweck
Der Radius an der X-Achse einer Ellipse, die die
Kontur des Berührungspunktes am genauesten beschreibt.
Der Radius an der Y-Achse einer Ellipse, die die
Kontur des Berührungspunktes am genauesten beschreibt.
Die Rotation der mit radiusX und radiusY beschriebenen Ellipse um deren Zentrum (0 bis 90 Grad).
Der relative Anpressdruck von 0 bis 1, wobei 0 keinen Druck und 1 den maximalen vom Gerät messbaren Druck darstellt.
Tabelle 4: Zusätzliche in Version 2 der Touch Event Spezifikation (Editor’s Draft) vorgesehene Attribute eines
Objekts vom Typ Touch (Schepers u. a., 2011).
3.2.3 Mozilla Touch Events
Mozilla führte im März 2011 mit der Version 4 seines Browsers Firefox ein API für die Verwendung von Touchevents unter Windows 7 ein.(Mozilla Foundation (Hg.), 2011) Zu diesem
Zeitpunkt war die Spezifikation des W3C (Kapitel 3.2.2) noch nicht finalisiert. Aus diesem
Grund entwickelte Mozilla ein eigenes, proprietäres API zur Verwendung von (Multi-)TouchInformationen in Webdokumenten.
Das Mozilla Touch Event-API ist ähnlich konzipiert wie das vom W3C empfohlene. Es unterscheidet sich jedoch in drei wesentlichen Punkten:
•
Die von Mozilla verwendeten Events verwenden andere Namen und den Präfix Moz
anstelle der vom W3C spezifizierten Namen (siehe Tabelle 5). Für das Event touchcancel der W3C Spezifikation existiert in dem Mozilla Touch Event-API kein Pendant.
46
Multi-Touch im Browser
Mozilla
W3C-Pendant
MozTouchDown
touchstart
MozTouchMove
touchmove
MozTouchUp
touchend
Tabelle 5: Unterschiedliche Bezeichnungen der Touchevents in Mozilla Firefox und W3C Spezifikation.
•
Die in Kapitel 3.2.2 beschriebenen Attribute touches, targetTouches und changedTouches sind in den Mozilla Touch Events nicht verfügbar. Wird eine Liste der
aktuellen Berührungspunkte benötigt, muss diese zusätzlich implementiert werden.
•
Mozilla verwendet die Bezeichnung streamId für das Attribut, das die eindeutige
Identifikationsnummer des Berührungspunktes beinhaltet. Das W3C verwendet die
Bezeichnung identifier.
Mozilla hat die Arbeit an diesem API mit Firefox 6 eingestellt und den Status auf überholt
(deprecated) gesetzt. In der Android-Version von Firefox werden ab dieser Version die vom
W3C spezifizierten Touchevents unterstützt (Brubeck, 2012). Die zum Zeitpunkt der Erstellung dieser Arbeit aktuelle Firefox Version 13.0.1 sowie der aktuelle Nightly Build 59 16.0a1 für
Windows 7 unterstützen diese Events jedoch noch nicht.
3.2.4 Microsoft Pointer Events (IE10)
Microsoft setzt mit der neuen Version seines Browsers Internet Explorer 10 verstärkt auf Multi-Touch und Gestenunterstützung 60. Dafür hat Microsoft ein proprietäres API entwickelt, das
Interaktionen des Benutzers über ein Eingabegerät abstrahiert und zu sogenannten Pointer
zusammenfasst. Je nach verwendetem Eingabegerät entspricht ein Pointer entweder einer Fingerberührung, einem Eingabestift oder einfach einem Mauszeiger. (Rossi, 2011)
Abbildung 17: Pointer vereint Touch, Stift und Mauseingaben (Rossi, 2011).
59
Nightly Builds sind Entwicklungs-Versionen von Firefox, die die aktuellsten Änderungen beinhalten. Der
Begriff Nightly leitet sich von dem Umstand ab, dass diese Builds traditionell meist nachts kompiliert wurden, wenn kein/e Entwickler/in am Quellcode arbeitet. Nightly Builds sind Testversionen, die möglicherweise Instabilitäten aufweisen und sollten daher nicht in einer Produktivumgebung eingesetzt werden.
(Yeow, 2005, S. 273)
60
Derzeit ist Internet Explorer 10 nur in einer Preview-Version mit Windows 8 Release Preview erhältlich.
47
Multi-Touch im Browser
Pointer können die folgenden Events auslösen:
Event
Aktion
MSPointerDown
Beim ersten Kontakt des Pointers
MSPointerMove
Bei einer Bewegung eines aktiven Pointers
MSPointerUp
Bei Beendigung des Kontakts
MSPointerOver
Bei Eintritt eines Pointers in die Fläche eines DOM-Elements
MSPointerOut
Beim Austritt eines Pointers aus der Fläche eines DOM-Elements
MSPointerCancel
Bsp: Wenn mehr Finger als vom Gerät unterstützt auf der Oberfläche platziert werden
Tabelle 6: MSPointer Events
Wird eines dieser Events ausgelöst, so kann über das event-Objekt auf Attribute des Pointers
wie Position, ID etc. zugegriffen werden. Zusätzlich zu den herkömmlichen Attributen können
alle aktuell auf dem Bildschirm vorhandenen Kontaktpunkte (Pointer) über die Methode
event.getPointerList() abgerufen werden (Microsoft (Hg.), o. J.-e). Diese Liste ist in der
bereitgestellten Funktionalität dem Attribut touches der W3C Touch Events sehr ähnlich.
Zusätzlich zu dieser Abstraktion von Eingabemöglichkeiten führt Microsoft Unterstützung für
statische und dynamische Gesten ein. Statische Gesten sind über die Events MSGestureTap,
MSGestureDoubleTap, die den Gestenmustern Tap und Double Tap entsprechen (siehe Kapitel 2.2), sowie MSGestureHold, eine länger andauernde Berührung ohne Bewegung, verfügbar. (Microsoft (Hg.), o. J.-e; Rossi, 2011)
Bei dynamischen Gesten werden die Events MSGestureStart bei Beginn, MSGestureChange bei jeder Änderung und MSGestureEnd bei Beendigung der Geste gesendet. Diese Events
liefern die Attribute translation (Verschiebung), rotation (Drehung), scale (Skalierung) sowie velocityX und velocityY (Geschwindigkeit) um auf Veränderungen während
der Durchführung der Geste reagieren zu können. (Microsoft (Hg.), o. J.-e)
Mit diesem API soll es einfacher werden, Benutzerschnittstellen mit fortgeschrittenen Eingabemöglichkeiten wie Touch und Gesten bei gleichzeitiger Geräteunabhängigkeit zu entwickeln.
Dieser Ansatz ist grundsätzlich zu begrüßen, allerdings ist an den Reaktionen der Entwickler/innen auf den das Pointer-Konzept vorstellenden Blogeintrag zu erkennen, dass Unmut
über die Tatsache herrscht, dass Microsoft seine Touchunterstützung nicht nach den W3C
Spezifikationen ausrichtet, sondern eigene Wege beschreitet (Rossi, 2011).
48
Multi-Touch im Browser
3.2.5 Touchevents in Google Chrome
Zum Zeitpunkt der Erstellung dieser Arbeit unterstützt Google’s Browser Chrome in der aktuellsten Version 20 standardmäßig keine Touchevents vollständig. Bei gleichzeitigem Kontakt
von zwei Berührungspunkten auf dem Bildschirm wird ein touchstart Event gesendet, jedoch kein touchmove oder touchend Event. Die Unterstützung ist unvollständig und somit
unbrauchbar.
In Chrome 20 kann allerdings experimentelle Unterstützung für Touchscreens auf der internen
Konfigurationsseite für experimentelle Funktionen 61 aktiviert werden. Wird diese Funktionalität aktiviert, unterstützt Chrome die W3C Touch Events Version 1. Dieser Umstand und die
Unterstützung für Touchevents in der mobilen Version des Browsers legen die Vermutung
nahe, dass Chrome in zukünftigen Versionen Touchevents standardmäßig unterstützen wird.
Auffällig ist, dass Chrome durch Aktivierung der Touch Unterstützung neben der Verfügbarkeit der Touchevents auch die Darstellung von Elementen der Benutzerschnittstelle von
Chrome verändert. So weisen beispielsweise Einträge in einer Dropdown-Box mehr als die
doppelte Höhe (~220%) bei aktiver Touch Unterstützung auf (siehe Abbildung 18). Es kann
davon ausgegangen werden, dass diese Maßnahme die Wahrscheinlichkeit einer irrtümlichen
Auswahl bei der Bedienung per Toucheingabe zu verringern versucht.
Abbildung 18: Dropdown-Stil bei aktiver (links) und inaktiver (rechts) Touchunterstützung in Google Chrome
20. (Suchformular: smashingmagazine.com)
Google Chrome besitzt eine der performantesten JavaScript-Engines und ist daher für MultiTouch-Applikationen mit nur geringer Latenz62 sehr geeignet. (Kinglsey-Hughes, 2012)
61
Verfügbar unter Aufruf der Seite chrome://flags/ in Chrome 20.
62
Als Latenz wird die Verzögerung zwischen dem Zeitpunkt bezeichnet, an dem eine Aktion durchgeführt
wird und dem Zeitpunkt, an dem die Aktion feststellbar ist. Latenz wird üblicherweise in Millisekunden
(ms) gemessen und sollte bei Multi-Touch-Anwendungen so gering wie möglich sein um eine ansprechende User Experience zu erreichen. (Saffer, 2009, S. 127)
49
Multi-Touch im Browser
3.3 Frameworks und Tools für die Entwicklung von
webbasierten Multi-Touch-Applikationen
Die zunehmende Verbreitung von Multi-Touch-fähigen Geräten sowie die unterschiedliche
Unterstützung in verschiedenen Browser und Plattformen resultieren in hohem Entwicklungsaufwand von Multi-Touch-Applikationen (Nebeling & Norrie, 2012). Um mehrere Zielplattformen zu unterstützen, müssen Entwickler/innen die Unterschiede zwischen den einzelnen
Implementierungen im Detail kennen. Sieht ein Interaktionskonzept neben der Möglichkeit
mehrere individuelle Berührungspunkte verarbeiten zu können auch Gesten als Form der Interaktion vor, so stehen Entwickler/innen vor der Herausforderung, Muster in der Bewegung
und Position mehrerer Berührungspunkte programmatisch zuverlässlich zu erkennen. Die
Erkennung von Gesten wie Rotate und Scale (siehe Kapitel 2.2) aufgrund mehrerer Punkte
basiert auf mathematischen Operationen, die vor allem bei der Verarbeitung von mehr als zwei
Punkten und in Hinblick auf die in Kapitel 2.2 beschriebenen Faktoren eine nicht zu vernachlässigende Komplexität aufweisen können 63.
In diesem Kapitel werden Anforderungen an ein webbasiertes Multi-Touch-Framework diskutiert und bereits existierende Lösungen mitsamt deren spezifischen Eigenschaften evaluiert.
Nicht behandelt werden Frameworks wie jQTouch 64 und Sencha Touch65, die für die Erstellung von Webinterfaces auf Multi-Touch-fähigen Geräten konzipiert sind, aber nur einen Berührungspunkt unterstützen und somit die vielfältigen Möglichkeiten von Multi-Touch
vernachlässigen.
3.3.1 Grundsätzliche Anforderungen an ein webbasiertes Multi-TouchFramework
Nebeling und Norrie (2012) sehen aufgrund der großen Vielfalt an Geräten drei bedeutende
technische und gestalterische Herausforderungen für Multi-Touch-Frameworks:
Technische Unterschiede zwischen Multi-Touch-fähigen Geräten. Diese Unterschiede inkludieren die Anzahl der gleichzeitig erkennbaren Berührungspunkte, die Geschwindigkeit der
Erkennung und die Unterstützung für weitere Sensorik wie Beschleunigungssensoren oder
physische Objekte.
Unterschiedliche Softwarearchitektur und Implementierungsmethoden. Um für die Vielfalt
an Smartphones, Tablet- und Tabletop-PCs zu entwickeln, benötigen Entwickler/innen Detailwissen über die Softwareentwicklung für unterschiedliche Plattformen. Derzeitige Frame-
63
Kammer et al. (2010) entwickelten aus diesem Grund ein semantisches Modell zur formalen Beschreibung
von Multi-Touch-Gesten. In diesem Modell wird die Erkennung von Gesten anhand textuell beschriebener
Gesten durchgeführt und von der eigentlichen Applikationslogik über eine Schnittstelle getrennt.
64
http://www.jqtouch.com/
65
http://www.sencha.com/products/touch/
50
Multi-Touch im Browser
works wie MT4j versuchen in Kombination mit Protokollen wie TUIO Plattformunabhängigkeit zu erreichen, benötigen aber eine zusätzliche Abstraktionsschicht sowie plattformspezifische Treiber für die Implementierung des Protokolls.
Limitierte Erweiterbarkeit. Viele der in Kapitel 2.5 behandelten Frameworks sind nur für eine
bestimmte Art von Applikationen konzipiert. Üblicherweise unterstützen diese Frameworks
nur ein definiertes, schwierig zu erweiterndes Set an Gesten.
Ein webbasiertes Framework für Multi-Touch-Applikationen sollte diese drei Herausforderungen adressieren. Unterschiedliche Implementierungen von Touchevents müssen vereinheitlicht
werden, um eine konsistente Verwendung von diesen Events in unterschiedlichen Browser zu
gewährleisten. Nichteinhaltung von definierten Standards oder Empfehlungen sowie Entwicklungen, wie die in Kapitel 3.2.4 behandelten Pointer von Microsoft, erschweren diese Aufgabe
beträchtlich.
Die Problematik der Plattformunabhängigkeit wird von einem webbasierten Framework für
Multi-Touch-Anwendungen schon allein aufgrund der Eigenschaften von Webapplikationen
gelöst. Teilweise werden Webapplikationen in unterschiedlichen Browser und deren Versionen
nicht identisch ausgeführt oder dargestellt, grundsätzlich sind Webdokumente aber auf jeder
Plattform in ähnlicher Form zu erreichen. Diese Abhängigkeit von Fähigkeiten des Browsers
stellt allerdings ein Problem dar, dessen Lösung von Entwickler/innen nicht direkt beeinflusst
werden kann.
Die Adressierung der von Nebeling und Norrie (2012) diskutierten Herausforderung der Erweiterbarkeit obligt den Entwickler/innen des Frameworks. Eine Implementierung, die großen
Wert auf Erweiterbarkeit und Flexibilität legt, ermöglicht es Entwickler/innen von MultiTouch-Applikationen ein Framework mit geringen Modifikationen oder Erweiterungen für
verschiedenste Projekte zu verwenden.
3.3.2 Hammer.js
Hammer.js 66 ist eine kürzlich veröffentliche Bibliothek zur Entwicklung von Applikationen mit
Multi-Touch- und Gestenunterstützung in JavaScript. Hammer.js wird von der niederländischen Kreativagentur Eight Media 67 entwickelt und wurde als open-source Software freigegeben.
Auf der offiziellen Website wird Hammer.js mit folgenden Eigenschaften beschrieben:
•
Einfache Implementierung von Touchevents
•
Kleine Dateigröße
•
Einfach zu erlernen
66
http://eightmedia.github.com/hammer.js/
67
http://www.eight.nl/
51
Multi-Touch im Browser
•
Fokussiert auf Multi-Touch-Gesten
•
Eigenständige Bibliothek, auch als Plug-in für jQuery verfügbar
Hammer.js unterstützt die folgenden Gesten:
•
Tap und Double Tap
•
Swipe
•
Hold
•
Transform
•
Drag
(Eight Media (Hg.), o. J.)
Eine Erweiterbarkeit dieser Gesten ist von Hammer.js nicht explizit vorgesehen. Aufgrund von
leicht verständlichem sowie gut dokumentiertem Quellcode der Bibliothek können aber mit
entsprechenden Programmier- und Mathematikkenntnissen zusätzliche Gesten hinzugefügt
werden.
Listing 9 zeigt ein Beispiel der Verwendung von Hammer.js als jQuery-Plug-in mit Methoden
für die Gesten Drag und Transform (Rotate und Scale) sowie einer Ausgabe aller Gesten in der
Konsole des Browsers.
$(".dragable")
.hammer( {
// Initialisieren und Optionen festlegen
prevent_default: true,
drag_min_distance: 5,
rotation_treshold: 1,
scale_treshold: 0.05 })
.bind("dragstart", function(ev) {
// Beginn einer Drag-Geste
})
.bind("drag", function(ev) {
// Während einer Drag-Geste
})
.bind("transform", function(ev) {
// Während einer Transform-Geste (Rotate/Scale)
})
.bind("doubletap", function(ev) {
// Double Tap
})
.bind("hold tap doubletap transformstart transform transformend
dragstart drag dragend release", function(ev) {
console.log("event type: " + ev.type); // Ausgabe über Konsole
});
Listing 9: Beispielcode bei Verwendung von Hammer.js
52
Multi-Touch im Browser
An diesem Beispiel wird deutlich, wie Hammer.js es ermöglicht, unterschiedliche Aktionen bei
Beginn, während der Durchführung und bei Beendigung einer Geste auszuführen (zB.
dragstart). Dies erlaubt es, flexibel bei der Umsetzung einer Applikation bei Verwendung
dieser Gesten zu sein, da in vielen Fällen nicht nur während der Durchführung einer Geste eine
visuelle Veränderung von statten gehen muss, sondern auch programmatische Aktionen zu
Beginn und Ende einer Geste durchgeführt werden müssen.
Hammer.js verwendet die vom W3C spezifizierten Touchevents. In Ermangelung eines Browsers, der diese Events unterstützt, konnte die Bibliothek vor der Veröffentlichung von Chrome
20 und dessen experimenteller Touch Unterstützung in Desktopumgebungen nicht verwendet
werden. Zu Testzwecken wurde im Rahmen dieser Diplomarbeit Hammer.js um die Mozilla
Touch Events erweitert und in Hummer.js umbenannt.
3.3.3 Hummer.js
Hummer.js 68 erweitert die Library Hammer.js um die Mozilla Touch Events. Dadurch ermöglicht Hummer.js die Entwicklung von gestenbasierenden Applikationen nicht nur für mobile
Browser, sondern auch für Mozilla Firefox (ab Version 3.6) in Desktopumgebungen.
Diese Erweiterung bedingte einige wesentliche Schritte. Um auf die Mozilla Events reagieren
zu können, wurden Listener für die Events MozTouchDown, MozTouchMove und MozTouchUp registriert. Da die Attribute dieser Events sich stark von den vom W3C spezifizierten
unterscheiden, wurden in den Eventlistener für die Mozilla Events die W3C-Events konstruiert
und gesendet. Dadurch wird eine Unabhängigkeit von der Weiterverarbeitung der Touchdaten zu einzelnen Gesten erreicht und bewahrt die Gestenimplementierungen vor vielen
eventspezifischen Verzweigungen.
Wie in Kapitel 3.2.3 erwähnt, sehen die Mozilla
Touch Events kein Event für das Verlassen eines aktiven Berührungspunktes einer durch ein DOMElement definierten Fläche vor. Ferner stellen die
Mozilla Events kein Attribut zur Verfügung, das alle
soeben veränderten Punkte repräsentiert. Dadurch
entstehen Probleme, wenn eine Geste auf einem Abbildung 19: Hummer.js Logo
Element beginnt, jedoch ein Berührungspunkt die
Fläche während der Durchführung verlässt, da es keine Möglichkeit gibt, die Beendigung dieser Berührung programmatisch zu erkennen. Diese Problematik kann teilweise durch Leeren
der internen Liste bei jedem ersten Berührungspunkt einer Geste umgangen werden. Bei bestimmten Mustern in der Gestendurchführung kann es aber zu Fehlverhalten kommen.
68
https://bitbucket.org/mgrubinger/hummer
53
Multi-Touch im Browser
Diese Unzulänglichkeiten in der Implementierung der Mozilla Touch Events sind aber durch
die Entscheidung von Mozilla, dieses proprietäre API nicht mehr weiterzuentwickeln, vernachlässigbar.
Neben der Unterstützung für Mozilla Touch Events wurde Hummer.js noch mit einer Möglichkeit ausgestattet, bei Transform-Events (Rotate oder Scale) den vorherigen Zustand über
die Attribute event.previousRotate und event.previousScale auszulesen. Diese
Werte vereinfachen das mehrmalige Transformieren eines Objekts, da die Attribute
event.rotate und event.scale nur die aktuellen Änderungen wiedergeben. Die gesamten
Transformationswerte können bei Verwendung von Hummer.js durch Addition der zu Beginn
der Geste bestehenden (previousRotation bzw. previousScale) und der aktuellen Werte
(rotate bzw. scale) errechnet werden.
3.3.4 jQMultiTouch
Ein weiteres Framework zur Entwicklung von Multi-Touch-Applikationen auf Basis von Webtechnologien ist jQMultiTouch 69. Das am Institute of Information Systems der ETH Zürich
von Michael Nebeling und seinem Team entwickelte Framework trägt den Untertitel „Lightweight Toolkit and Development Framework for Multi-touch/Multi-device Web Interfaces“ –
das Framework ist also per Definition für möglichst hohe Geräteunabhängigkeit konzipiert.
(Nebeling & Norrie, 2012)
Das Design von jQMultiTouch ist inspiriert von der einfachen Erfüllung von JavaScriptAufgaben, der Verarbeitung von Events mit Callbacks und der Abstraktion von tieferliegenden
Details einer Implementierung, die jQuery (siehe Kapitel 3.1.5) bereitstellt. Um die Vorteile
von jQuery zu nutzen, ist das Framework als Plug-in für jQuery entwickelt. Nebeling und Norrie (2012) beschreiben die drei wichtigsten technischen Beträge von jQMultiTouch wie folgt:
•
Eine Methodik zur geräteunabhängigen Verarbeitung von Multi-Touch-Events in
Web-Benutzerschnittstellen.
•
Ein neuartiges, vor allem bei komplexeren Multi-Touch- und Gesteninteraktionen hilfreiches Konzept einer Touch History für die zentrale Verarbeitung von Events.
•
Ein Toolkit und Multi-Touch-Framework, das ausschließlich auf nativen Webtechnologien basiert.
jQMultiTouch stellt eine Abstraktionsschicht für tieferliegende Multi-Touch-Events und deren
je nach Browser variierenden Details zur Verfügung (Nebeling & Norrie, 2012). In Anbetracht
der in Kapitel 3.2 beschriebenen Unterschiede, vor allem zwischen den Touchevents des W3C
und Mozilla, stellt diese Abstraktion eine wesentliche Erleichterung bei der Entwicklung von
Multi-Touch-Applikationen dar. Ferner unterstützt jQMultiTouch ein Set an Standardgesten
69
http://dev.globis.ethz.ch/jqmultitouch/
54
Multi-Touch im Browser
(Default Multi-Touch Event Handlers) sowie eine einfache Möglichkeit, eigene, komplexe Gesten zu definieren (Custom Gesture Handlers).
Die Syntax für das aktivieren des Plug-ins für bestimmte DOM-Elemente ist, wie bei jQuery
üblich, sehr kompakt. In Listing 10 werden alle Bilder einer Website mit jQMultiTouch über
Multi-Touch-Gesten dreh-, skalier- und verschiebbar.
$('img').touchable({draggable:true, scalable:true, rotatable:true});
Listing 10: Verwendung von jQMultiTouch um alle Bilder einer Website über Gesten dreh-, skalier- und verschiebbar zu machen.
Nach Anwendung des Befehls touchable wird den per jQuery selektierten Elementen (im
Beispiel in Listing 10 alle <img>-Elemente) die CSS-Klasse ui-state-touchable hinzugefügt. Dies erlaubt es Entwickler/innen, den per Multi-Touch-Gesten transformierbaren Elementen per CSS ein einheitliches Erscheinungsbild zu verleihen. (Nebeling & Norrie, 2012)
Abbildung 20: Architektur mit vier Schichten einer Webapplikation basierend auf jQMultiTouch (Nebeling &
Norrie, 2012)
Eine der zentralen Eigenschaften von jQMultiTouch ist die Touch History. Die Touch History
stellt einen zentralen Speicherort für Informationen zu allen aktuell auf der Oberfläche befindlichen Berührungspunkten sowie deren Vergangenheit bereit. Diese Informationen beinhalten
neben Koordinaten und der jeweiligen Identifikationsnummer des Punktes auch einen Zeitstempel. Über die Informationen in dieser zentralen Touch History können mittels Evaluationsmethoden eigene Gesten definiert werden. (Nebeling & Norrie, 2012)
55
Multi-Touch im Browser
Um beispielweise eine Swipe-Geste (schnelle Fingerbewegung in eine Richtung, siehe Kapitel
2.2) nach rechts zu registrieren, muss überprüft werden, ob ein Finger in den letzten x Millisekunden y Pixel in eine Richtung zurückgelegt hat. Die beiden Werte x und y haben wesentlichen Einfluss auf die Durchführbarkeit der Geste und der damit verbundenen User Experience
– sie sollten daher mit Bedacht gewählt werden. Als Beispielwerte werden in Listing 11 130
Millisekunden und 100 Pixel verwendet.
function gestureHandler(e, history) {
if(history.match({
finger: 0,
deltaX: '<100',
time: '1..130' })) {
// Swipe-right wurde ausgefuehrt
}
}
Listing 11: Beispielcode für einen Eventhandler für eine Swipe-Right-Geste mit jQMultiTouch
Wie Listing 11 zeigt, können Gesten innerhalb des Eventhandlers über die Methode match des
Touch History-Objekts mit einer Reihe von Parametern definiert werden. Diese Parameter
spezifizieren die Überprüfung beispielsweise anhand des verwendeten Fingers (finger), der
zurückgelegten Distanz (deltaX/Y) in einem Zeitraum (time) bzw. über den gesamten Verlauf der Interaktion (netX/Y) oder eines definierten Bereichs der Oberfläche (clientX/Y).
Im Detail stellt die match-Methode eine Kurzversion für die kombinierte Verwendung der
Methode filter (für die Filterung der Touch History etwa nach Finger-ID, Zeit, Typ und
auslösendes Element des Events) und match für die Detektion von Bewegungen (z.B. deltaX/Y, netX/Y, clientX/Y, angle). (Nebeling & Norrie, 2012)
Die Syntax für die Beschreibung von Wertebereichen für zeitliche oder räumliche Parameter
(z.B. 1..130 für 1 bis 130) ist an die Animationssyntax von jQuery angelehnt.
Ein weiteres Konzept von jQMultiTouch wird mit Attachable Behaviours (anfügbare Verhaltensweisen, siehe Abbildung 20) bezeichnet und bietet Möglichkeiten, die standardmäßig enthaltenen Gesten (Drag, Rotate, Scale) zu parametrisieren. Über diese Parameter können etwa
Minimal- und Maximalwerte für eine Vergrößerung/Verkleinerung eines Elements (min, max)
oder Schrittweiten bei der Rotation (step) angegeben werden. Zusätzlich kann über verschiedene Callback-Funktionen, die vor, während oder nach einer Geste ausgeführt werden, in die
Gestenfunktionalität eingegriffen oder die definierten Gesten komplett überschrieben werden.
(Nebeling & Norrie, 2012)
56
Multi-Touch im Browser
Zum Zeitpunkt der Erstellung dieser Arbeit liegt jQMultiTouch in Version 0.4 70 vor. Diese
Version beinhaltet noch Fehlverhalten bei Verwendung der Drag-Geste auf bereits transformierte Elemente. Dieses Fehlverhalten verursacht eine Neupositionierung des Elements mit
einem deutlichen Versatz zum vorherigen Zustand bei Beginn der Geste. Durch eine andere
Berechnung der Translation lässt sich dieses Problem allerdings beheben (siehe Kapitel 4.2).
3.3.5 Weitere Optionen für die Verwendung von Multi-Touch-Daten
im Browser
Die beiden in den vorangegangen Kapiteln diskutierten Frameworks Hammer.js/Hummer.js
und jQMultiTouch verwenden vom Betriebssystem bereitgestellte native Events (z.B.
WM_TOUCH unter Windows 7). Diese Vorgehensweise orientiert sich an Webstandards und
nutzt vorhandene Funktionalität des Browsers.
Während diese Konzepte die logische Konsequenz aus der rapiden Verbesserung von Unterstützung von Touchevents seitens der Browserhersteller darstellt, sind alternative Möglichkeiten des Zugriffs auf Touchdaten verfügbar und in manchen Szenarien sinnvoll. Die zugrunde
liegenden Ansätze zweier alternativer Möglichkeiten werden in diesem Kapitel behandelt.
npTuioClient
npTuioClient 71 ist ein Plug-in für Browser, das TUIO-Daten (siehe Kapitel 2.4.1) in JavaScript
zur Verfügung stellt. Das Plug-in ist für Firefox und Chrome auf den Plattformen Windows,
Mac OS X und Linux verfügbar. (Rusadi, o. J.)
Nach Installation des Plug-ins können die TUIO-Daten über die Funktion tuio_callback()
verwendet werden. Der Parameter type dieser Funktion beschreibt, welches TUIO-Event ausgelöst wurde und ermöglicht es, auf die unterschiedlichen Aktionen zu reagieren (siehe Listing
12).
function tuio_callback(type, sid, fid, x, y, a) {
// type == 0: TUIO Object Add
// type == 1: TUIO Object Update
// type == 2: TUIO Object Remove
// type == 3: TUIO Cursor Add
// type == 4: TUIO Cursor Update
// type == 5: TUIO Cursor Remove
}
Listing 12: Eventhandler bei der Verwendung des Plug-in npTuioClient.
70
jQMultiTouch wurde seitens der ETH Zürich noch mit keiner Lizenz versehen. Der Hauptentwickler Michael Nebeling gestattete dem Verfasser dieser Arbeit jedoch die Verwendung des Frameworks und stellte
eine Veröffentlichung unter einer open-source-Lizenz in absehbarer Zeit in Aussicht.
71
https://github.com/fajran/npTuioClient
57
Multi-Touch im Browser
Ein Nachteil dieses Konzepts ist die Notwendigkeit, ein Plug-in zu installieren. Darüber hinaus
beschreibt die Dokumentation des Projekts Probleme in der Implementierung, etwa bei der
Verwendung in Firefox auf Mac OS X.
Als deutlichen Vorteil kann die – durch die Verwendung von TUIO-Messages bedingte –
Möglichkeit, auch physische Objekte zu verwenden, gesehen werden.
Die von Boris Smus entwickelte Library MagicTouch.js 72 verwendet die von npTuioClient bereitgestellten Daten und wandelt sie in W3C-Touch Events um. Mit dieser Kombination kann
standardkonformer Code für Multi-Touch-Events mit TUIO-fähiger Hardware verwendet
werden. (Smus, 2011)
WebSockets
WebSockets sind eine in Arbeit befindliche Spezifikation, die persistente Datenverbindungen
zwischen dem Server und Clients erlaubt. Bisher wurde asynchroner Datenaustausch in Webapplikationen über AJAX 73 realisiert. Jede Anfrage eines Clients an den Server basiert bei AJAX
auf einem HTTP-Request, damit verbunden ist eine hohe Latenz. Benötigt eine Applikation
(annähernd) Echtzeitinformationen, so sind periodische Abrufaktionen notwendig, die den
Server zusätzlich belasten. (Hickson, 2012d; Ubl & Kitamura, 2012)
Mit WebSockets kann eine persistente Verbindung zwischen Client und Server hergestellt werden, über die beide Parteien zu jeder Zeit Daten senden können. Dadurch werden Echtzeitapplikationen mit mehreren Benutzern möglich, deren Daten über den Server per WebSockets
synchronisiert werden. (Ubl & Kitamura, 2012)
Eine Serverapplikation für WebSockets kann in einer Vielzahl von Programmiersprachen –
darunter serverseitiges JavaScript, Java, Ruby, Python und C++ – entwickelt werden. Ein WebSocket-Server kann auf TUIO-Daten zugreifen und diese an eine Client-Applikation im Browser senden. Auf diese Weise werden Plug-ins wie npTuioClient obsolet.
Im Mai 2012 wurde das Projekt TUIO.js 74 auf Github76 veröffentlicht. TUIO.js ist eine für die
JavaScript-Serverumgebung Node.js 75 implementierte Serverapplikation, der TUIO-Daten per
WebSockets bereitstellt. In der Clientapplikation können die TUIO-Events mittels Eventlistener verwendet werden. (Raab, o. J.)
72
https://github.com/borismus/MagicTouch
73
AJAX: Asynchronous JavaScript and XML
74
https://github.com/fe9lix/Tuio.js
75
http://nodejs.org/
58
Multi-Touch im Browser
3.3.6 Simulatoren für Multi-Touch-Eingabe
Unabhängig von der verwendeten Zielplattform und vom eingesetzten Framework stellt sich
bei der Entwicklung von Multi-Touch-Applikationen ein Problem beim Testen der Software.
Die Entwicklung direkt am Endgerät – etwa auf einem Tabletop-PC – ist sehr mühsam und
nicht empfehlenswert. Zudem hat nicht jeder/jede Entwickler/in ständig Zugang zur Zielplattform.
Aus diesen Umständen resultiert die Notwendigkeit, Simulatoren für Multi-TouchInteraktionen während der Entwicklung zu verwenden. Zwei dieser Simulatoren werden in
diesem Kapitel behandelt.
Multi-Touch Vista
Auf der Codeplex 76-Seite von Multi-Touch Vista 77 wird das Projekt wie folgt beschrieben:
„Multi-Touch Vista is a user input management layer that handles input from various devices
(touchlib, multiple mice, TUIO etc.) and normalises it against the scale and rotation of the target
window. Now with multitouch driver for Windows 7.“ (Danilin, 2011)
Wie in dieser Beschreibung angedeutet, inkludiert Multi-Touch Vista ein Service, das als Abstraktionsschicht für verschiedene Quellen von Multi-Touch-Daten fungiert. Dieses Service
konvertiert beispielsweise TUIO-Daten in native Windows 7 Touch Events (WM_TOUCH).
Alternativ zu TUIO können über eine Einstellung in einer einfachen Konfigurationsoberfläche
(siehe Abbildung 21) mehrere an den PC angeschlossene Mäuse verwendet werden. Jede Maus
wird dabei durch einen roten Punkt auf dem Bildschirm dargestellt. Die Betätigung der linken
Maustaste entsprichten einem aktiven Berührungspunkt.
Abbildung 21: Konfigurationsoberfläche von Multi-Touch Vista
76
Github und Codeplex sind Hosting-Plattformen für open-source Software.
77
http://multitouchvista.codeplex.com/
59
Multi-Touch im Browser
Die Verwendung dieses Simulators bringt auch Einschränkungen für den/die Entwickler/in
mit sich:
•
Multi-Touch Vista unterstützt nur einen Bildschirm. Vor dem Start des Services darf
nur der Hauptmonitor aktiv sein, da sonst die Abbildung der Mauskoordination auf
Touchkoordinaten fehlerhaft ist.
•
Um mehrere Mäuse zur Simulation der Touchdaten verwenden zu können, muss die in
der Konfigurationsoberfläche unter Configure device die Option Block native windows
mouse input ausgewählt werden. Dadurch wird die native Mausinteraktion deaktiviert
und in der Folge auch der Bildlauf mittels Scrollrad.
Microsoft Surface Input Simulator
Wie in Kapitel 2.5.2 erwähnt, stellt Microsoft mit dem Surface 2.0 SDK auch einen Simulator
zur Verfügung. Im Unterschied zu Multi-Touch Vista wird dieser Simulator mit einer Maus
bedient. Über eine grafische Oberfläche kann zwischen vier Eingabemodi gewechselt werden:
Finger, Blob, Tag oder Maus. In den ersten drei Modi kann mit klicken und ziehen der rechten
Maustaste ein Pointer dieser Kategorien simuliert werden. Wird während der Simulation eines
aktiven Inputs die linke Maustaste betätigt, so wird der Punkt fixiert. Auf diese Art können
mehrere Finger, Blobs und Tags platziert werden. Das Selection-Tool erlaubt die Auswahl dieser platzierten Pointer sowie die Änderung der Attribute wie Drehung, Position oder Größe
des ausgewählten Pointers. Werden mehrere Pointer ausgewählt, so können diese mit dem
Selection-Tool gleichzeitig rotiert, vergrößert oder verschoben werden (siehe Abbildung 23).
(Cabrera, 2011; Microsoft (Hg.), o. J.-f)
Abbildung 23: Vergrößerung/Verkleinerung der
Abstände zwischen fünf Finger-Objekten mit Surface Input Simulator
Abbildung 22: Microsoft Surface Simulator
60
Multi-Touch im Browser
Da Microsoft Surface auch Neigungen der Oberfläche erkennt, kann auch diese Funktion simuliert werden (Cabrera, 2011); siehe Abbildung 22).
Der Surface Input Simulator funktioniert wie Multi-Touch Vista nur auf dem Hauptmonitor.
Im Vergleich zu Multi-Touch Vista ist die Arbeit mit dem Surface Input Simulator etwas weniger effizient. Das Werkzeug bietet aber vor allem für Interaktionen mit mehr als zwei Berührungspunkten sehr zweckdienliche Möglichkeiten zu deren simultaner Manipulation.
3.3.7 Tools und Frameworks zur Erstellung von webbasierten Animationen
Animationen stellen einen zentralen Bestandteil vieler moderner Websites und Webapplikationen dar. Vor allem für Spiele und Applikationen, die Benutzer eine ansprechende Interaktion
mit einem System erlauben, sind Animationen essentiell.
Neue Webtechnologien wie Canvas und WebGL (siehe Kapitel 3.1.3) bieten Möglichkeiten für
die Erstellung von Animationen auf einer Art Zeichenfläche. Als Alternative dazu können auch
HTML-Elemente (etwa ein Image- oder ein Div-Element) mit CSS3 und JavaScript animiert
werden (siehe Kapitel 3.1.6). Diese Art der Animation ist die zu bevorzugende Variante, wenn
Elemente der Animation bereits in dem HTML-Dokument bestehen. Allerdings ergeben sich
dabei zwei Nachteile:
1. Die Möglichkeiten hinsichtlich erweiterten Parametern der Animation (etwa Easing oder
andere Effekte) sind mit diesen Mitteln eingeschränkt.
2. Die Erstellung von komplexeren Animationen mittels CSS3 und JavaScript ist zeitaufwendig
und umständlich, da keine einheitliche Struktur dafür vorhanden ist.
Um diesen beiden Problemen entgegenzuwirken, stehen Entwickler/innen einige Werkzeuge
zur Erstellung komplexer und interaktiver Animationen zur Verfügung. Die folgenden zwei
Werkzeuge, Adobe Edge und GreenSock GSAP, stellen eine Auswahl der verfügbaren Bibliotheken und Tools dar. Diese beiden Werkzeuge werden in dieser Arbeit behandelt, da für den
in Kapitel 4 beschriebenen Prototyp eine Animation mit beiden Lösungen entwickelt wurde.
Weitere Frameworks mit ähnlicher Zielsetzung sind Tween.js78 und JSTween 79.
78
http://www.createjs.com/#!/TweenJS
79
http://www.jstween.org/
61
Multi-Touch im Browser
Adobe Edge
Adobe Edge 80 ist ein Werkzeug zur Erstellung von Animationen und interaktiven Webapplikationen auf Basis der Technologien HTML5, CSS3 und JavaScript. Edge erlaubt es – ähnlich wie
Adobe Flash – Animationen von Elementen anhand von Schlüsselbildern in einer Zeitleiste zu
erstellen. Die einzelnen Elemente einer Animation sind jedoch als HTML-Elemente in die
Animation eingebettet und werden mit JavaScript animiert (Adobe Systems (Hg.), 2012).
Abbildung 24: Adobe Edge mit Eigenschaftenfenster (links), Bibliothek (rechts) und Zeitleiste (unten).
Adobe Edge verwendet intern die JavaScript-Bibliothek jQuery (siehe Kapitel 3.1.5) und ermöglicht es Entwickler/innen, JavaScript/jQuery-Code an Schlüsselbildern und Objekten hinzuzufügen. Auf diese Art können auch interaktive Animationen erstellt werden, indem auf
Aktionen von Benutzern reagiert wird (Adobe Systems (Hg.), 2012).
Beim Export der Animation erstellt Edge den Ordner publish im Projektverzeichnis. Dieser
Ordner beinhaltet folgende Dateien und Ordner:
80
http://labs.adobe.com/technologies/edge/
62
Multi-Touch im Browser
Datei- oder Ordnername
Anmerkung
edge_includes
Beinhaltet alle JavaScript-Bibliotheken, die zur Ausführung von Edge-Animationen notwendig sind.
edge.0.1.6.min.js
Edge-Bibliothek
jquery.easing.1.3.js
jQuery Plug-in für erweiterte Easing-Effekte
jquery.1.7.1.min.js
jQuery
json2_min.js
Bei Bedarf verwendetes Skript um JSON-Unterstützung in
Browser, die JSON nicht nativ unterstützen zu aktivieren
images
Beinhaltet alle verwendeten Grafiken der Animation.
[projektname].html
HTML-Dokument, das die Animation beinhaltet.
[projektname]_edge.js
Beinhaltet die Beschreibung aller im Projekt vorhandenen
Elemente und deren Animationen.
[projektname]_edgeActions.js
Beinhaltet alle JavaScript-Anweisungen, die bei der Ausführung der Animation durchgeführt werden.
[projektname]_edgePreload.js
Preloader-Skript
Tabelle 7: Die von Adobe Edge erstellte Ordner- und Dateistruktur für exportierte Projekte. Kursive Namen
stellen Dateien dar.
Adobe Edge befindet sich noch im Entwicklungsstadium und steht derzeit als Vorschauversion
6.1 zum Download auf der Webseite der Adobe Labs zur Verfügung.
GreenSock Animation Platform (GSAP) 12
Die von Jack Doyle entwickelte GreenSock Tweening Platform 81 ist eine umfangreiche und
häufig verwendete Bibliothek zur programmatischen Erstellung von Animationen in ActionScript. Ab Version 12 wurde die Bibliothek in GreenSock Animation Platform (GSAP) umbenannt. GSAP unterstützt erstmals auch die Programmierung von Animationen in JavaScript
mit gleicher Syntax wie in ActionScript. Dieser Umstand erleichtert Entwickler/innen mit Erfahrung in ActionScript die Programmierung von JavaScript-Animationen deutlich (Doyle,
2012a).
Mit GSAP können sowohl einzelne Animationen als auch komplexe Sequenzen mit umfangreichen Timing-Möglichkeiten programmiert werden. Diese Funktionalität ist in zwei Module
mit jeweils zwei Varianten aufgeteilt:
81
http://www.greensock.com/v12/
63
Multi-Touch im Browser
TweenLite und TweenMax: Diese beiden Werkzeuge stellen die Basis der GSAP dar und ermöglichen die Programmierung von einzelnen Animationen. TweenMax erweitert dabei
TweenLite um einige Funktionen für die Programmierung fortgeschrittener Animationen
(Doyle, 2012b).
TimelineLite und TimelineMax: Über Timelines können Sequenzen aus mehreren Tweens und
Timelines erstellt und gesteuert werden. TimelineMax erweitert TimelineLite um Funktionen
zur detaillierteren Steuerung von Timelines (Doyle, 2012b).
GSAP erlaubt die Animation von allen numerischen Werten eines Elements sowie CSSWerten, sofern das Plug-in CSSPlugin verwendet wird. In Listing 13 ersichtlich ist eine Animation (ein Tween) der Höhe eines im HTML-Dokument vorhandenen Bildes (photo).
var photo = $("#photo");
TweenLite.to(photo, 1.5, {height: 200, ease: Elastic.easeOut});
Listing 13: Animation eines HTML-Elements mit der GreenSock Animation Platform in JavaScript. Das zu
animierende Element mit der ID "photo" wird per jQuery ausgewählt und die Höhe auf 200px animiert. Die
Animation dauert 1,5 Sekunden und verwendet die Easingfunktion Elastic.easeOut.
64
4
Umsetzung eines Prototyps
Im vierten Kapitel werden die in den vorangegangenen Kapiteln theoretisch behandelten Möglichkeiten zur Programmierung von Multi-Touch-Anwendungen für den Browser in einem
praktischen Beispiel angewendet. Ausgehend von einer an der Fachhochschule St. Pölten umgesetzten Flash-Applikation, wird ein Teil ebendieser unter Verwendung der in Kapitel 3 beschriebenen Technologien für Webtechnologien adaptiert. Der Prototyp stellt ein einfaches
Puzzlespiel dar, das von bis zu vier Personen gleichzeitig mit Multi-Touch-Gesten bedient
werden kann. Ist das Puzzle gelöst, wird eine kurze Animation dargestellt, um die Spieler/innen
über das erreichte Spielende zu informieren.
In Kapitel 4.1 wird die bereits entwickelte Flash-Applikation mit ihren Modulen und der verwendeten Hardware dargestellt. In den darauf folgenden Kapiteln 4.2 und 0 wird das umzusetzende Puzzlespiel sowie die Vorgehensweise bei der Umsetzung auf Basis von
Webtechnologien beschrieben. In Kapitel 4.4 wird erläutert, wie die Webtechnologien HTML,
CSS, JavaScript und Animationswerkzeuge eingesetzt wurden, um dieses Spiel für die Ausführung im Browser zu entwickeln.
Die Entwicklung dieses Prototyps unterstützt die Beantwortung der Forschungsfrage, ob der
Browser für die Ausführung von Multi-Touch-Applikationen geeignet ist, anhand der folgenden, eingangs bereits erwähnten Kriterien:
•
die Fähigkeiten aktueller Browserversionen, Touchevents zu verarbeiten
•
die Verfügbarkeit von Frameworks für Multi-Touch-Gestensteuerungen
•
Performance aktueller Browser bei Multi-Touch- und Gesteninteraktionen
•
die Verfügbarkeit von Werkzeugen zur Erstellung von webbasierten Animationen
•
die Verfügbarkeit von unterstützenden Werkzeugen
Zur Evaluierung der Verwendbarkeit des Prototyps trägt zudem ein Test der Applikation mit
vier Teilnehmer/innen bei. Im letzten Teil dieses Kapitels werden das Setup und der Ablauf
dieses Tests beschrieben. Anhand der Ergebnisse des Tests werden folgende Fragen untersucht:
•
Wie verhält sich die Webapplikation bei der Bedienung von nur einer Person (Single
User) im Vergleich mit der Flash-Applikation?
•
Wie verhält sich die Webapplikation bei der gleichzeitigen Bedienung von vier Personen (Multi User) im Vergleich mit der Flash-Applikation?
•
Ab welcher Belastung sind Performanceprobleme deutlich erkennbar?
•
Tritt Fehlverhalten bei der Verwendung von Gesten auf?
•
Wie ist der subjektive Eindruck hinsichtlich der Qualität der Interaktion und der visuellen Darstellung des Spiels?
Die Ergebnisse der Kriterien und die Antworten auf diese Fragen werden in Kapitel 5 dargestellt.
65
Umsetzung eines Prototyps
4.1 Ausgangssituation
Um ein besseres Verständnis für den Kontext des entwickelten Prototyps zu schaffen, werden
in der Folge der Hintergrund der bereits erstellten Applikation sowie deren technische Umsetzung näher beschrieben.
4.1.1 Valcamonica
In einem Tal in den Lombardischen Alpen im Norden Italiens lebte in der Eisenzeit ein Volk,
das heute den Namen Camuni trägt. Dieses Tal, das nach seinen antiken Bewohner/innen benannte Valcamonica, beherbergt eine der umfangreichsten Sammlungen von Felsbildkunst in
Europa. Auf beiden Seiten dieses Tals finden sich auf etwa 2400 Felsen eine Vielzahl an in den
Fels gemeißelte Bilder (Petroglyphen). Schätzungen gehen von circa 140.000 derartiger Bilder
aus, die in den letzten 8000 Jahren, vorwiegend aber ab etwa 3000 v. Chr., mit primitiven
Werkzeugen in die Felsen des Tals Valcamonica gemeißelt wurden. Viele Felsen lagen unter
einer über die Jahrtausende gewachsene Erdschicht und wurden von Wissenschaftlern sorgfältig freigelegt, eine unbekannte Zahl ist aber immer noch unentdeckt. Die Felsbildkunst von
Valcamonica trägt seit 1979 den Status des UNESCO Weltkulturerbe. (Nash & Chippindale,
2002; „Rock Drawings in Valcamonica - UNESCO World Heritage Centre“, o. J.)
Die Beschaffenheit des Sandsteins, der von den Gletscherbewegungen glattgeschliffen wurde,
eignet sich hervorragend als „Zeichenfläche“ und kann mit einfachen Mitteln bearbeitet werden. Die Petroglyphen umfassen eine Vielzahl an Darstellungen von Menschen, Landwirtschaft, Krieg, Magie, Werkzeuge, Tiere, geometrische Formen und Symbole. Eine Vielzahl an
Darstellungen von Menschen, sogenannte Pitotis 82, sowie Gruppen von Figuren, die miteinander in Interaktion stehen, sind in die Felsen eingraviert.
Diese Zeichnungen sind eine einzigartige Dokumentation des Lebens eines prähistorischen
Volkes in dieser Region. Die systematische Erforschung der Felsbildkunst in Valcamonica hat
einen erheblichen Beitrag zum wissenschaftlichen Diskurs der Themen prähistorische Archäologie, Soziologie und Ethnologie geleistet. („Rock Drawings in Valcamonica - UNESCO World
Heritage Centre“, o. J.)
82
Pitoti ist ein lokales Dialekt-Wort und bedeutet Püppchen. (Nash & Chippindale, 2002)
66
Umsetzung eines Prototyps
Abbildung 25: Detailaufnahme einer Pitoti-Figur
Abbildung 26: Detailaufnahme einer Rosa Camuna, eines der am häufigsten verwendeten Symbole.
4.1.2 Playing Valcamonica
In Zusammenarbeit mit Dr. Frederik Baker (Fachhochschule St. Pölten und Universität Cambridge) und Dr. Christopher Chippindale (Universität Cambridge) wurde ein Spielkonzept für
einen Multi-Touch-Tabletop-PC entwickelt und umgesetzt. Diese Installation ist Teil einer
Museumsausstellung zum Thema Felsbildkunst in Valcamonica und trägt den Namen Playing
Valcamonica.
Das Ziel dieses Projekts ist es, ein kollaboratives Lernspiel für Kinder und Erwachsene im Museumskontext zu entwickeln. Drei Faktoren sind für die Entwicklung dieses Spiel wichtig:
•
Es ermöglicht, die Felsbildkunst dem interessierten Publikum zugänglich zu machen,
obwohl die Felsen selbst nicht transportiert werden können.
•
Es ermöglicht eine Interaktion zwischen Besucher/innen und den Figuren. Die Figuren
sind nicht immer zugänglich und befinden sich teilweise auf steilen Hängen, die aus
Gründen der Erhaltung und des Schutzes nicht betreten werden dürfen.
•
Das Spiel erlaubt es Besucher/innen, durch Spielen mehrerer Spiele die Interaktion
zwischen den Figuren zu entdecken.
(Seidl u. a., 2011)
Ausgangspunkt von Playing Valcamonica ist ein hochauflösendes Gesamtbild eines etwa 12x15
Meter großen Felsen, der mit einer Neigung von bis zu 45° in unwegsamen Gelände liegt83. Um
dieses Bild zu erstellen, wurde der Felsen mit 214 Einzelfotos aus gleichbleibender Distanz abfotografiert und im Anschluss zu einem einzelnen Abbild des Felsens zusammengefügt. Das
Gesamtbild hat eine Auflösung von etwa 3,5 Gigapixel (3,5 Milliarden Pixel) und kann in Play-
83
Die Bezeichnung dieses Felsens, der sich in der Nähe des Ortes Capo di Ponte befindet, lautet Seradina 12.
67
Umsetzung eines Prototyps
ing Valcamonica von Besucher/innen über die Gesten Scale und Drag erforscht werden. Dadurch wird einerseits eine Ansicht des gesamten Felsens aus der Vogelperspektive (siehe
bildung 27) sowie ein detailreiches Erkunden dieses Felsens und der Figuren beinahe in
Originalgröße ermöglicht. Beide Ansichten sind auch vor Ort – aufgrund der Unwegsamkeit
des Geländes und der erwähnten Schutzmaßnahmen – so nicht möglich.
Abbildung 27: Gesamter Felsen (Seradina 12) mit Interfaceelementen: Spielstationen (weiße Rosa Camuna auf
Felsen), Navigator und Maßstab (links oben bzw. rechts unten), Hilfe-Button und Hintergrundinfo-Button
(rechts oben bzw. links unten).
Auf diesem Abbild des Felsens sind auf einer
eigenen, skalierungsunabhänigen Ebene stilisierte Rosa Camuna-Symbole (siehe Abbildung 28) platziert, über die eines von fünf
Minispielen gestartet werden kann. Diese
Spielstationen befinden sich jeweils in der
Nähe einer Figurengruppe, die im Spiel behandelt wird und sind über unterschiedliche
Anzahl der Punkte des Symbols subtil nummeriert.
Abbildung 28: Rosa Camuna-Symbole dienen
als Einstiegspunkt für die Minispiele.
68
Umsetzung eines Prototyps
Für eine Installation im öffentlichen Raum ist es entscheidend, dass Spieler/innen ohne Vorerfahrung schnell und möglichst ohne Hilfestellung die Funktionsweise begreifen. Um die Eintrittsschwelle für Besucher/innen des Museums so niedrig wie möglich zu halten, wird nur ein
kleines Set an einfachen Gesten wie Tap, Drag, Rotate und Scale verwendet (siehe Kapitel 2.2).
Die Minispiele sind für eine Bedienung von allen vier Seiten des Tisches und für ein bis vier
Spieler konzipiert, daher sind Interfaceelemente an beiden Längsseiten der Oberfläche platziert
(siehe Abbildung 27). Die Spielkonzepte besitzen einen Aufforderungscharakter und sollen
zusehende Personen einladen, jederzeit bei der Lösung eines Spiels aktiv mitzuhelfen. So wird
die Auseinandersetzung mit den Inhalten der Ausstellung zu einem kooperativen Erlebnis.
(Cao, Massimi, & Balakrishnan, 2008; Seidl u. a., 2011)
4.1.3 Module
Folgende Minispiele wurden in Playing Valcamonica als Module implementiert:
Puzzle Hunter, Deer und Warrier
Diese drei Spiele sind als Puzzlespiele zu begreifen, in denen Teile von Figuren wieder zusammengesetzt werden müssen. Die drei verwendeten Figuren sind ein Jäger mit Speer (Hunter),
ein Reh (Deer) und ein Krieger (Warrier).
Die Spieler müssen die zufällig platzierten, halbtransparent mit Weiß eingefärbten Teile an die
richtige Position bewegen sowie in die richtige Drehung und Größe bringen. Sind diese Attribute (Position, Drehung, Größe) nahe genug an den richtigen Werten, so rastet das Puzzleteil
ein und bekommt wieder die Originalfarbe des Steins.
Catch the oxes
Die vier Ochsen zweier Bauern sind entlaufen und müssen von den Spielern in ein durch weiße
Kreise markiertes Zielgebiet (zu den Bauern) gebracht werden. Mit der Hilfe von vier Hunden,
können die Ochsen in Richtung Zielgebiet gedrängt werden. Um die Hunde zu steuern, können die Spieler einen Pfad für jeden Hund zeichnen, dem dieser Hund folgt.
Hunting
Durch Schießen mit vier Jagdbögen müssen die Spieler gemeinsam versuchen, die auf verschiedenen Pfaden durch das Spielfeld laufende Rehe zu erlegen. Um gemeinsames Spielen zu
fördern, werden nicht die Treffer eines einzelnen Spielers sondern aller Spieler zusammen gezählt.
Da die Hauptzielgruppe von Playing Valcamonica Kinder sind, ist der visuelle Effekt bei einem
Treffer kindergerecht gestaltet: Das getroffene Reh stoppt und dreht sich um 180 Grad auf den
Rücken.
69
Umsetzung eines Prototyps
4.1.4 Technische Umsetzung und Zielplattform
Playing Valcamonica wurde in ActionScript 3 für die Adobe Flash/AIR-Runtime entwickelt.
Als Entwicklungswerkzeug kamen einerseits die Adobe Flash IDE 84 zur Erstellung von Animationen und die quelloffene IDE FlashDevelop 85 zum Einsatz. Die Applikation baut auf dem
OpenExhibit SDK (siehe Kapitel 2.5.3) als Basis-Framework für die Abstraktion von TouchDaten und Multi-Touch-Gesten auf.
Der zentrale Bestandteil von Playing Valcamonica, das hochauflösende Bild eines Felsens,
wurde mit OpenZoom 86 realisiert. OpenZoom ist ein Framework zur Darstellung von und Interaktion mit hochauflösenden Bildern und liegt auch als Modul für OpenExhibts vor. Für die
Programmierung von Animationen wurde die Animationsbibliothek TweenMax von GreenSock 87 verwendet (siehe Kapitel 3.3.7).
Um eine einfache und umkomplizierte Anpassung von Einstellungen, die die Schwierigkeit der
Spiele regeln sowie Änderungen der multilingualen Textinhalte zu gewährleisten, greift Playing
Valcamonica auf eine mySQL-Datenbank zu. Zusätzlich werden Fehlerberichte und – sofern
aktiviert – Messdaten für User Experience Tests in dieser Datenbank gespeichert 88.
Die Hardware besteht aus einem von der Wiener Firma cyWorx Interactive Systems 89 konstruiertem Tisch mit einem 46 Zoll Full-HD LCD-Monitor von Samsung sowie einem MultiTouch-Overlay G3 von PQLabs (siehe 2.3.2). Ausgeführt wird die Software in Flash Player
11.01 unter Windows 7 Enterprise. Der in den Tisch integrierte PC hat folgende Merkmale:
Intel i5-Prozessor mit 3.3 GHz, 8 GB Hauptspeicher und einer ATI Radeon HD6570 Grafikkarte sowie einer Solid-State-Drive (SSD).
4.2 Spielbeschreibung
Im Zuge dieser Diplomarbeit wurde eines der in Kapitel 4.1.3 beschriebenen Minispiele von
Playing Valcamonica, das Puzzle Warrier, auf Basis von Webtechnologien umgesetzt. Das Spiel
Puzzle Warrier ist für eine versuchsweise Umsetzung geeignet, da die Multi-Touch-Gesten
Drag, Rotate und Scale zur Interaktion der Benutzer mit den Puzzleteilen verwendet werden.
Zudem wird bei Spielende eine kurze Animation der Figur angezeigt, welche ebenfalls mit
Webtechnologien umgesetzt wurde. In der weiteren Folge wird das Spiel mit Puzzle bezeichnet.
84
IDE: Integrated Development Environment (Integrierte Entwicklungsumgebung)
85
http://flashdevelop.org/
86
http://www.openzoom.org/
87
http://www.greensock.com/tweenmax/
88
Details zu gemessenen UX-Daten werden von (Seidl u. a., 2011)) beschrieben.
89
http://www.cyworx.at/
70
Umsetzung eines Prototyps
Der Ablauf und die Spielmechanik des Spiels Puzzle kann so beschrieben werden:
•
Im Hintergrund befindet sich eine Fotografie, die den zusammenzusetzenden Pitoto
darstellt. Die Figur ist schwarz eingefärbt.
•
Auf beiden Seiten neben der Figur werden die zehn Puzzleteile mit zufälliger Position,
Größe und Drehung platziert. Diese Zufallswerte liegen innerhalb definierter Wertebereiche. Die Puzzleteile sind mit Weiß überlagert, um eine Differenzierung zu bereits
richtig platzierten Teilen zu gewährleisten.
•
Spieler können die Puzzleteile mit einem Finger (Geste: Drag) verschieben und mit
zwei Finger drehen und in der Größe verändern (Gesten: Rotate und Scale).
•
Wird ein Puzzleteil an der richtigen Position und in richtiger Größe und Drehung über
der Figur platziert (innerhalb eines definierten Bereichs), so verschwindet die in beschriebene weiße Farbüberlagerung und das Element bewegt sich exakt an die richtige
Position.
•
Sind alle zehn Puzzleteile an der richtigen Position, ist das Ende des Spiels erreicht. Eine kurze Animation, in der die Figur die Arme auf und ab bewegt, vermittelt den BenutzerInnen, dass das Spielende erreicht wurde.
Abbildung 29: Startansicht des Puzzle Warrier
71
Umsetzung eines Prototyps
4.3 Vorgehensweise
Die Vorgehensweise bei der Umsetzung dieses Spiels mit Webtechnologien erfolgte in sechs
aufeinander folgenden Schritten:
1. Vorbereitende Versuche
Erste Tests der Verfügbarkeit von Multi-Touch-Daten wurden in Mozilla Firefox durchgeführt, da Google Chrome diese Funktionalität zu diesem Zeitpunkt noch nicht bereitstellte.
Eine einfache Applikation zeichnete die Positionen einzelner Finger bei Berührung als Kreis
auf einem Canvas-Element eines HTML-Dokuments.
Aus diesem Test ging die Applikation Kunstenaar 90 hervor, die im Rahmen einer Jubiläumsfeier der Fachhochschule St. Pölten als digitales Gästebuch verwendet wurde. Besucher/innen
konnten gemeinsam auf einem Tabletop-PC per Berührung ihre Grüße in zeichnerischer Form
hinterlassen. Die neuesten dieser Nachrichten wurden in der Folge auf einer Projektionsfläche
dargestellt.
Abbildung 30: Multi-Touch Webapplikation Kunstenaar mit einer von Besucher/innen hinterlassenen Nachricht.
Bei der Entwicklung dieser Applikation konnten bereits die Möglichkeiten im Hinblick auf die
Verwendbarkeit der Mozilla Touch Events (siehe Kapitel 3.2.3) getestet werden. Jedoch verwendet diese Applikation keine Multi-Touch-Gesten. Zudem mussten aber bereits auch die
Einschränkungen, die mit der Verwendung dieser Events einhergehen und in Kapitel 3.2.3
behandelt wurden, festgestellt werden.
90
http://mgrubinger.at/projects/kunstenaar
72
Umsetzung eines Prototyps
2. Beginn der Entwicklung eines Multi-Touch-Frameworks
Zu diesem Zeitpunkt war noch kein Framework zur Erstellung von Gesten-basierenden MultiTouch-Applikationen verfügbar. Aus diesem Grund wurde seitens des Verfassers dieser Arbeit
mit der Entwicklung eines Frameworks zur Erkennung von einfachen Multi-Touch-Gesten
begonnen. Bereits in einem sehr frühen Stadium wurde jedoch die Bibliothek Hammer.js (siehe
Kapitel 3.3.2) veröffentlicht. Hammer.js realisiert die Ziele des zu entwickelnden Frameworks
weitgehend, daher wurde die Entwicklung eines weiteren Frameworks als obsolet betrachtet.
3. Erster Prototyp mit Hammer.js und Weiterentwicklung zu Hummer.js
Zu Evaluierungszwecken wurde ein Prototyp einer Applikation, die mit den Gesten Drag, Rotate und Scale bedient mit der Bibliothek Hammer.js umgesetzt. Da Hammer.js die Mozilla
Touch Events nicht unterstützt und damit die Verwendung in einer Tabletop-Umgebung nicht
möglich ist, musste Hammer.js um die Mozilla Touch Events sowie weiterer, in Kapitel 3.3.3
beschriebenen Änderungen erweitert werden. Im Zuge dieser Erweiterung wurde Hammer.js
in Hummer.js umbenannt.
Aufgrund der ebenfalls in Kapitel 3.3.3 beschriebenen Probleme konnten mit Hummer.js noch
keine befriedigenden Ergebnisse erzielt werden.
4. Prototyp mit jQMultiTouch sowie Erweiterung dessen
Kurz nach der Entwicklung des Prototyps mit Hummer.js wurde die Bibliothek jQMultiTouch
(siehe Kapitel 3.3.4) veröffentlicht. jQMultiTouch adressiert einige bei der Verwendung von
Hammer.js bzw. Hummer.js aufgetretenen Probleme mit Mozilla Touch Events gezielt. Um
diese Bibliothek zu testen, wurde ebenfalls ein Prototyp des beschriebenen Puzzlespiels entwickelt. Dabei aufgetretene Fehler oder Unzulänglichkeiten von jQMultiTouch wurden im Zuge
dessen behoben (siehe Kapitel 4.4.3).
5. Angeleiteter Test des Prototyps
Um die Funktionalität des Prototyps in einem möglichst realistischen Szenario zu evaluieren,
wurde ein Test mit vier Testpersonen durchgeführt, die das Spiel gemeinsam spielen. Die Teilnehmer/innen des Tests konnten zuerst die Flash-Applikation spielen. Danach wurde die
Webapplikation in zwei verschiedenen Browsern getestet. Eine detaillierte Beschreibung des
Testsetups und die Ergebnisse werden in Kapitel 4.5 dargestellt.
6. Erstellung der Endanimation mit Adobe Edge und Einbindung in das Spiel
In diesem Schritt wurde die Endanimation des Spiels mit dem in Kapitel 3.3.7 beschriebenen
Werkzeug Adobe Edge erstellt. Edge stellte sich trotz seines Vorschaustatus als komfortabel
und einfach zu bedienendes Programm heraus. Innerhalb kurzer Zeit konnte eine Animation
erstellt werden, die der in Flash erstellten bereits sehr ähnlich war.
73
Umsetzung eines Prototyps
Aus den in Kapitel 5.1.4 dargestellten Gründen wurde die Animation aus dem Spiel entfernt
und durch eine mit der GreenSock Animation Platform programmierte Animation ersetzt.
7. Erstellung der Animation mit GSAP und Einbindung in das Spiel
Die Verwendung der in Kapitel 3.3.7 beschriebenen GreenSock Animation Platform hat für
diesen Anwendungsfall einige Vorteile. Die bereits im HTML-Dokument vorhandenen Puzzleteile können für die Animation verwendet werden, ohne dass weitere Bilder geladen werden
müssen. Mit GSAP hat der/die Entwickler/in umfangreiche Möglichkeiten, in die Ausführung
der Animation einzugreifen und ist vor allem beim Timing der Animation sehr flexibel. Als
Nachteil ist zu erwähnen, dass die Erstellung von Animationen mit GSAP im Vergleich mit
Adobe Edge mehr Zeit in Anspruch nimmt.
4.4 Umsetzung mit jQMultiTouch
Als webbasiertes Multi-Touch-Framework wurde für die Umsetzung dieses Prototyps das in
Kapitel 3.3.4 beschriebene jQMultiTouch verwendet, da es – im Vergleich mit Hammer.js bzw.
Hummer.js – umfangreichere Funktionalität hinsichtlich Multi-Touch-Gesten und bessere
Unterstützung für Mozilla Touch Events bietet (siehe Kapitel 3.3.3 und 3.3.4).
Im Folgenden werden die vier Hauptkomponenten der technischen Umsetzung des Spiels –
die Struktur/der Inhalt, das visuelle Erscheinungsbild, die Funktionalität und die Animation –
unter Verwendung der Webtechnologien HTML, CSS und JavaScript erläutert.
4.4.1 Struktur und Inhalt mit HTML5
Wie in Kapitel 3.1.1 beschrieben, bildet HTML die Struktur und den Inhalt einer Website oder
Webapplikation. Die HTML-Datei von Puzzle orientiert sich an HTML5 Boilerplate. Es wurden allerdings die Funktionen für Unterstützung älterer Browser – vor allem Internet Explorer
– entfernt, da diese Browser ohnedies keine Touchevents unterstützen.
Der Kopfbereich der HTML-Datei index.html verweist auf folgende Dateien:
•
Stylesheet puzzle.css
•
jQuery Version 1.7.1 (komprimiert)
•
jQMultiTouch
•
JavaScript-Dateien für die GreenSock-Animationsbibliothek GSAP
•
JavaScript-Datei mit Applikationslogik: application.js
Im Body der HTML-Datei werden alle Puzzleteile als Figure-Tags (<figure>) definiert. Figure ist ein mit HTML5 eingeführter semantischer Tag, der als Container für eine Grafik mitsamt
zusätzlichen, mit der Grafik in Verbindung stehenden Elementen verwendet werden kann
(Hickson, 2012b) .
74
Umsetzung eines Prototyps
Innerhalb der Figure-Elemente befindet sich jeweils ein Image-Element (<img>). Diese Kombination zweier Elemente wurde gewählt, da sowohl ein Originalbild als auch ein weiß überlagertes benötigt werden. Das Figure-Element zeigt im Hintergrund (CSS) das Originalbild. Das
Image-Element stellt das weiß überlagerte Bild genau über dem Originalbild (des FigureElements) dar. Auf diese Art muss nur das äußere Element (Figure) bewegt, rotiert und skaliert
werden um auch das innere (Image) zu verändern. Ein weiterer Vorteil entsteht bei Erreichen
der richtigen Position. Um das Originalbild darzustellen, muss nur das darüber befindliche
Image-Element ausgeblendet werden.
Die Figure-Elemente erfüllen in dieser Applikation einen weiteren Zweck. Über Data-Attribute
werden den Elementen die Werte der finalen Position, Rotation und Größe angefügt. DataAttribute sind eine weitere Neuerung in HTML5 und erlauben es, Daten einem HTMLElement zuzuweisen. Data-Attribute müssen mit data- beginnen und können beliebige Werte
beinhalten. Diese Werte können per JavaScript für die weitere Verwendung gelesen und verändert werden. Listing 14 zeigt das HTML-Markup eines Puzzleteils mitsamt Data-Attributen für
die Werte finalX, finalY, finalRotation und finalScale.
<figure class="helm" data-finalX="803" data-finalY="115" datafinalRotation="0" data-finalScale="1">
<img src="img/helm_weiss.png">
</figure>
Listing 14: HTML-Markup für ein Puzzleteil mit Data-Attributen.
Abbildung 31: Puzzleteil "Helm" in den zwei Varianten Weiß und Original (verwendet in den Elementen
<img> und <figure> in Listing 14).
Die Bilder der Puzzleteile wurden in doppelter Größe eingebettet, um visuelle Artefakte bei
Skalierung der Bilder bis Faktor 2 zu vermeiden. Daraus resultiert eine wesentlich (um Faktor
4) größere Dateigröße der Bilder.
Zusätzlich beinhaltet die HTML-Datei ein Div-Element (<div>), das als Teil der Animation
bei Beendigung des Spiels im Hintergrund angezeigt wird. Die Implementierung der Animation wird in 4.4.3 beschrieben.
75
Umsetzung eines Prototyps
4.4.2 Visuelle Erscheinung mit CSS
Folgende Aspekte von Puzzle wurden mit CSS umgesetzt:
•
Darstellung des Hintergrunds91
•
Darstellung und Positionierung der Puzzleteile 91
•
Erscheinungsbild des Dialogs bei erfolgreichem Beenden des Spiels91
•
Größe und Drehung der Puzzleteile
•
Übergänge (Transition) bei Einrasten eines Puzzleteils
Veränderungen der Größe und Drehung der einzelnen Puzzleteile werden über die in Kapitel
3.1.6 beschriebene CSS Eigenschaft transform mit den Werten scale und rotate realisiert. Bei
Initialisierung der Applikation wird diese CSS-Eigenschaft per JavaScript mit zufälligen Werten gesetzt. Bei Interaktion eines Benutzers mit einem Puzzleteil werden sowohl diese CSSWerte als auch die Positionierung vom jQuery Plug-in jQMultiTouch verändert (siehe Kapitel
4.4.3).
Befindet sich ein Puzzleteil nahe genug an den korrekten Werten der finalen Position, Drehung
und Größe, so wird dem Figure-Element per JavaScript die Klasse final hinzugefügt. Die in
Listing 15 dargestellten CSS-Regeln bewirken durch die Verwendung der Eigenschaft transition 92, dass das Image-Element über eine Dauer von 750 Millisekunden ausgeblendet wird,
sobald einem übergeordneten Figure-Element die CSS-Klasse final zugeordnet wird.
Eine weitere in Listing 15 ersichtliche CSS-Eigenschaft ist background-color mit dem Wert
transparent. Dies stellt einen Lösungsansatz für einen Bug in der aktuellen Implementierung von CSS-Transitions in Firefox dar. Ohne diese Eigenschaft weist das Element während
des Übergangs einen deutlichen Versatz in der Positionierung auf. 93
91
Diese Aspekte stellen relativ simple CSS-Aufgaben dar und werden daher nicht im Detail behandelt. Für
Informationen zu diesen Punkten kann der Quelltext der auf CD beigefügten Datei puzzle.css untersucht
werden.
92
Die CSS-Eigenschaft transition ist wie in Kapitel 3.1.6 dargestellt derzeit noch mit Browser-Präfixe
(-moz, -webkit, -o, -ms) zu versehen. Aus Gründen der Übersichtlichkeit wurde an dieser Stelle darauf verzichtet.
93
Dieses Problem wird unter anderem in einem Forum der Webseite Graphicriver diskutiert:
http://graphicriver.net/forums/thread/latest-firefox-bug-with-css-scale-transform-opacity-transition/61070
76
Umsetzung eines Prototyps
figure.final img {
opacity: 0;
}
figure img {
position: relative;
width: 100%;
height: 100%;
transition: opacity 750ms;
background-color: transparent; /* fix img jump bug */
}
Listing 15: CSS-Regeln für das Image-Element und die Klasse final des Figure-Elements.
Um die Darstellung möglichst in allen Browser anzugleichen, verwendet Puzzle das CSSReset 94 von HTML5 Boilerplate (siehe Kapitel 3.1.1) als Basis. Dabei wurden Teile dieses Resets, die für Puzzle irrelevant sind, entfernt.
Da sich, wie bereits erwähnt, Multi-Touch-Interaktion deutlich von der Interaktion mit Maus
unterscheidet, ist es empfehlenswert, den Mauscursor mit der CSS-Eigenschaft cursor auszublenden.
4.4.3 Funktionalität mit JavaScript
JavaScript bildet den zentralen Bestandteil von Puzzle und realisiert die Funktionalität des
Spiels Puzzle:
•
Zufällige Positionierung der Puzzleteile
•
Handling der Multi-Touch-Daten und Erkennung von Gesten
•
Implementierung der Spielmechanik
•
Speicherung der Einstellungen für die Spielmechanik in stukturierter Form
•
Implementierung der Animation bei Spielende
Im Folgenden werden der Aufbau der JavaScript-Komponenten von Puzzle sowie Programmcode, der für die Entwicklung von Multi-Touch-Applikationen relevante Informationen beinhaltet, diskutiert.
Die JavaScript-Funktionalität ist auf drei Dateien aufgeteilt:
•
94
jquery-1.7.1-min.js: Aktuelle und komprimierte Version der Bibliothek jQuery (siehe
Kapitel 3.1.5).
CSS-Resets versuchen, Unterschiede in den Implementierungen von CSS in verschiedenen Browser auszugleichen. Zu diesen Unterschieden zählen standardmäßig definierte Abstände und Größen und nicht
standardkonforme Positionierung von Elementen.
77
Umsetzung eines Prototyps
•
jquery.multitouch.js: jQMultiTouch Plug-in für jQuery mit Modifikationen seitens des
Autors dieser Arbeit.
•
application.js: das „Herzstück“ der Anwendung. Beinhaltet die Spielmechanik, die Einstellungen des Spiels und initialisiert jQMultiTouch.
application.js
Die Datei application.js beinhaltet drei wesentliche Elemente: ein JSON-Objekt app_data, welches alle Einstellungen für das Spiel wie Schwellwerte und Grenzwerte für die Größe eines
Puzzleteils beinhaltet; das Objekt puzzle, welches die Funktionalität des Spiels beinhaltet und
die Initialisierung des Puzzlespiels sobald die Applikation fertig geladen wurde.
Im JSON-Objekt app_data werden folgende Einstellungswerte festgelegt:
•
Breite und Höhe der Benutzeroberfläche in Pixel
•
Die Bereiche zur Positionierung der Puzzleteile in Pixel
•
Beschränkungswerte für Skalierung eines Elements
•
Schwellwerte für Rotation, Skalierung und Positionierung für die Einrastung eines
Elements
Die Implementierung von Playing Valcamonica in ActionScript verwendet zur Speicherung
dieser Werte eine Datenbank und greift beim Start der Applikation darauf zu. Zur Verwaltung
großer Datenmengen sind Datenbanken sehr geeignet, bei dieser geringen Anzahl von Einstellungsmöglichkeiten ist jedoch die Verwendung eines JSON-Objekts (vor allem im Hinblick auf
die einfache Verwendbarkeit in JavaScript) vorteilhaft.
Die für die Verwendung von Multi-Touch-Gesten relevante Funktionalität ist im Objekt
puzzle implementiert. Dieses Objekt nach dem Pattern Closure 95 strukturiert und besitzt nur
eine öffentliche Methode init(), welche die Initialisierung des Spiels anhand der als Parameter übergebenen Einstellungen (im JSON-Format) vornimmt.
Das Initialisierungsskript (init()) ruft die Methode placeElements() auf, welche die
Puzzleteile innerhalb der im JSON-Objekt angegebenen Grenzen zufällig links und rechts der
Figur in zufälliger Drehung und Größe platziert. Diese Transformationswerte werden, wie in
Listing 16 dargestellt, zur leichteren Verwendung an späterer Stelle als Data-Attribute den
HTML-Elementen hinzugefügt.
95
Es wird empfohlen, Objekte in JavaScript als Closures zu implementieren. Closures werden nicht mit einem
Objektliteral initialisiert, sondern als Funktionsaufruf der ein Objektliteral zurückliefert. Durch die Verwendung von Closures können viele Probleme, die im Zusammenhang mit dem Gültigkeitsbereich von Variablen in JavaScript entstehen, vermieden werden. (Pilgrim, 2010, S. 37)
78
Umsetzung eines Prototyps
$(element).attr("data-rotation", rotation).attr("data-scale", scale);
Listing 16: jQuery Befehl für die Zuweisung von Data-Attributen, die die Werte der Rotation und Größe beinhalten.
In der durch das Initialisierungsskript aufgerufenen Methode addEventListeners() wird
jQMultiTouch initialisiert. Damit wird die Unterstützung für Multi-Touch-Gesten auf alle
selektierten HTML-Elemente (alle Figure-Elemente) angewendet. Der in Listing 17 dargestellte
Aufruf der von jQMultiTouch implementierten Methode touchable() mit einer Reihe an
Parametern ist die zentrale JavaScript-Anweisung für dieses Multi-Touch-Spiel.
$(elements).touchable({
draggable: true,
scalable: {min: 0.8, max: 1.2},
rotatable: true,
dragBefore: bringToFront,
dragAfter: checkPosition });
Listing 17: Aufruf der Methode touchable von jQMultiTouch für alle Puzzleteile ($(elements)) mit Parameter
zur Aktivierung der Gesten Drag, Scale und Rotate. Über die Callback-Funktionen dragBefore und dragAfter
werden Funktionen der Spiellogik zu Beginn bzw. Ende einer Drag-Geste aufgerufen.
Die Parameter draggable, scalable und rotatable aktivieren die Gesten Drag, Scale und
Rotate in jQMultiTouch. Bei Erkennen einer Geste aktualisiert jQMultiTouch standardmäßig
die veränderten Werte für Position, Größe und Drehung. Damit können Puzzleteile bereits mit
einem Finger verschoben und mit zwei Fingern vergrößert/verkleinert und rotiert werden. Die
mathematischen Berechnungen für diese Gesten werden von jQMultiTouch durchgeführt,
ohne dass der/die Entwickler/in in den Prozess der Gestenerkennung oder der darauf folgenden Aktion eingreifen muss.
Wie in Listing 17 ersichtlich, kann aber über verschiedene Callback-Funktionen wie dragBefore und dragAfter in die Ausführung der Geste eingegriffen werden ohne das Plug-in zu
modifizieren. In dem Spiel Puzzle wird zu Beginn einer Drag-Geste (dragBefore) über Aufruf der Funktion bringToFront das aktuelle Element mit der CSS-Eigenschaft z-index in
den Vordergrund gebracht. Unmittelbar nach der Beendigung einer Drag-Geste (dragAfter)
wird die Funktion checkPosition aufgerufen. CheckPosition vergleicht die aktuelle Position des Elements mit der Zielposition und ruft bei Erreichen dieser Zielposition die Funktion
snapin auf. Snapin rastet das Puzzleteil an der festgelegten Position ein und entfernt das
weiß überlagerte Bild. Im Anschluss wird überprüft, ob alle Puzzleteile eingerastet sind. Ist dies
der Fall, so ist das Ende des Spiels erreicht. Über Tap auf den Button „Play Again“ beginnt das
Spiel von neuem. Dieser Ablauf wird in Abbildung 32 visuell dargestellt.
79
Umsetzung eines Prototyps
Abbildung 32: Ablaufdiagramm des Spiels Puzzle
jquery.multitouch.js (jQMultiTouch)
Das Plug-in jQMultiTouch ist, wie erwähnt, einfach zu verwenden und vielseitig erweiterbar.
Im Laufe der Entwicklung von Puzzle wurde jedoch deutlich, dass die aktuelle Version des
Plug-ins (Version 0.4) noch Fehlverhalten und leichte Mängel in der Funktionalität aufweist.
Diese Probleme sind dem Hauptentwickler Michael Nebeling bekannt und werden in der
nächsten Version bereits behoben sein.
Für die Entwicklung von Puzzle mussten diese Probleme dennoch adressiert werden. Die wichtigsten Änderungen an dem Plug-in werden hier kurz zusammengefasst.
1. Fehlerhafte Positionierung bei Drag-Geste nach Rotate oder Scale
Die Positionierung eines Elements bei Verwendung der Geste Drag liefert die erwarteten Resultate: Das Element wird um die bewegte Distanz verschoben. Wird das Element mit einer
Rotate oder Scale-Geste transformiert, treten bei anschließender Drag-Geste Fehler auf. Das
Element wird dann zu Beginn der Geste an eine andere – von der aktuellen Drehung und Größe abhängige – Position verschoben.
In der Originalversion des Plug-ins wird die aktuelle Position des Elements anhand der Koordinaten des Touchpunkts (ausgehend vom Viewport) und der Koordinaten des Elements ermittelt. Diese Berechnungen liefern fehlerhafte Resultate, da durch die Transformation die
Koordinaten des Elements verschoben werden.
Um dieses Problem zu lösen, wurde die zurückgelegte Distanz der Drag-Geste auf den Achsen
x und y berechnet und die ermittelten Werte zu den Positionswerten des Elements bei Beginn
der Geste addiert.
[…]
left: touchData.dragging.startPos.left + dragDistanceX + "px",
top: touchData.dragging.startPos.top + dragDistanceY + "px"
[…]
Listing 18: Berechnung der neuen Werte für left und top (x und y) eines Elements bei einer Drag-Geste
80
Umsetzung eines Prototyps
2. Bestehende Transformationen werden bei Initialisierung des Plug-ins ignoriert.
Dieses Problem wurde bei der Entwicklung von Puzzle deutlich, da die Puzzleteile vor der Initialisierung von jQMultiTouch zufällig positioniert, gedreht und skaliert werden. Die Transformationswerte (Rotate und Scale) werden dabei über die CSS3 Eigenschaft transform für
jedes Element individuell festgelegt. In der Initialisierung erkennt jQMultiTouch vorhandene
CSS-Transforms nicht und produziert bei Durchführung der Gesten Rotate und Drag fehlerhafte Ergebnisse. Das kann wie folgt erklärt werden: Um das erwartete Verhalten bei diesen
Gesten zu erreichen, muss beispielsweise ein bereits um 20° gedrehtes Element bei einer weiteren Drehung um 15° eine Rotation von 35° aufweisen. Die Kalkulation dieses neuen Werts
(35°) ist nur möglich, wenn der Anfangswert (20°) bekannt ist.
Als Lösungsvorschlag wurde im Zuge der Entwicklung von Puzzle jQMultiTouch um eine interne Hilfsfunktion getTransformValues(). Diese Funktion erwartet als Parameter ein
DOM-Element und liefert die Transformationswerte als Objekt mit den Werten scale und
rotation zurück 96.
Werden bereits existierende Transformationswerte bei der Initialisierung mithilfe der
getTransformValues()-Funktion erkannt, so werden diese Werte als Startwerte verwendet.
Andernfalls wird der Standardwert 0 für die aktuelle Rotierung und Skalierung definiert.
touchData.rotate = getTransformValues(this).rotation || 0;
Listing 19: Zuweisung der aktuellen CSS-Rotation des Elements oder des Werts 0, wenn kein Rotationswert
vorhanden ist.
Zur einfacheren Verarbeitung dieser Werte wurde dem Plug-in eine Anweisung hinzugefügt,
die die aktuellen Rotations- und Skalierungswerte als Data-Attribute der HTML-Elemente
speichert (siehe Listing 16). Die Verwendung von Data-Attributen stellt eine Erleichterung bei
der Entwicklung des Spiels dar, allerdings ist diese Funktionalität nicht zwingend notwendig.
3. Limitierung der Maximal- und Minimalwerte für Scale-Geste
In jQMultiTouch kann eine Limitierung der Maximal- und Minimalwerte für die Verwendung
der Geste Scale definiert werden. Dadurch wird verhindert, dass Benutzer skalierbare Elemente
zu klein oder zu groß skalieren.
jQMultiTouch sieht zwar Optionen für diese beiden Werte vor, allerdings wurden sie in der
derzeit verfügbaren Version 0.4 noch nicht implementiert. Daher musste diese Funktionalität
zu jQMultiTouch hinzugefügt werden. Eine einfache Überprüfung des aktuellen Skalierungs-
96
Diese Werte rotate und scale der CSS-Eigenschaft transform können nicht wie herkömmliche
CSS-Eigenschaften ausgelesen werden. CSS-Transformationen werden in einer Transformationsmatrix
dargestellt, daher sind mehrere Berechnungsschritte nötig um die isolierten Werte zu erhalten. (Patonnier,
2012)
81
Umsetzung eines Prototyps
wertes anhand der Maximal- und Minimalwerte, wie in Listing 20 verkürzt dargestellt, löst
dieses Problem.
if(scale > max_scale) scale = max_scale;
if(scale < min_scale) scale = min_scale;
Listing 20: Limitierung der Scale-Werte auf Maximal- und Minimalwerte.
4.4.4 Endanimation mit JavaScript und GSAP
Die Animation bei erfolgreicher Beendigung des Spiels wurde mit der GreenSock Animation
Platform (siehe Kapitel 3.3.7) in JavaScript programmiert. Für die Endanimation von Puzzle
genügte die Funktionalität der Lite-Varianten von GSAP zusammen mit dem Plug-in zur
Animation von CSS-Werten. Die folgenden Dateien wurden daher als komprimierte Varianten
in den Header der HTML-Datei eingebunden:
•
TweenLite.min.js: Zentraler Bestandteil der GreenSock Animation Platform.
•
TimelineLite.min.js: Beinhaltet die Zeitleistenfunktionalität von GSAP.
•
CSSPlugin.min.js: Ermöglicht die Animation von CSS-Attributen mit GSAP.
Die Endanimation von Puzzle besteht aus sechs aufeinander folgenden Schritten:
•
Einblenden des Hintergrunds für die Animation
•
Bewegung der Arme und Werkzeuge (Schild und Axt) nach oben
•
Bewegung der Arme und Werkzeuge nach unten
•
Bewegung der Arme und Werkzeuge nach oben
•
Bewegung der Arme und Werkzeuge in die Ausgangsposition
•
Ausblenden des Hintergrunds der Animation
Um diese Animationssequenz präzise steuern zu können, empfiehlt es sich, die einzelnen Animationen einem Zeitleistenobjekt (Timeline) hinzuzufügen, das als Container für die gesamte
Animation dient.
Da diese Animation Rotationen der Arme der Figur beinhaltet, wurde der Mittelpunkt der
Transformationen in etwa an den Schultern positioniert. Dies erleichtert die Programmierung
der Rotationsbewegung.
Als Easingfunktion wurde Power1.EaseInOut verwendet, da diese Funktion ähnlich einer
natürlichen Bewegung der Arme wirkt. In Listing 21 wird ein Teil der Animation (Rotation der
rechten Hand) im Zusammenhang mit dem Zeitleistenobjekt (Timeline) dargestellt:
82
Umsetzung eines Prototyps
var t_hr_2 = TweenLite.to(
hand_r,
0.5, {
ease: Power1.easeInOut,
css: { rotation: 18 } });
tl.append(t_hr_2); // Tween zu Timeline hinzufügen
Listing 21: Animation des Werts rotation der rechten Hand. Die Animation dauert 0.5 Sekunden und verwendet eine Easingfunktion. Im Anschluss wird die Animation der Zeitleiste (tl) hinzugefügt.
4.5 Test des Prototyps
Um die Verwendbarkeit der prototypisch umgesetzten Lösung zu evaluieren, wurde ein Test
des Systems durchgeführt. Da das Spiel Puzzle für bis zu vier Personen konzipiert ist, spielten
das Spiel während des Tests vier Personen gleichzeitig. Bei diesem Test konnte die Funktionalität des Prototyps unter hoher Last durch viele simultane Interaktionen und Manipulationen
von Elementen getestet werden.
Abbildung 33: Test des Prototyps mit vier Personen.
4.5.1 Testsetup
Die Teilnehmer/innen sind im Alter zwischen 24 und 28 Jahren. Drei Personen sind weiblich
und eine Person ist männlich. Der Test wurde in den Räumlichkeiten der Fachhochschule St.
Pölten auf der in Kapitel 4.1.4 Hardware durchgeführt. Das Puzzlespiel wurde von einem Webserver außerhalb der Fachhochschule abgerufen.
Folgende Browser wurden getestet:
•
Mozilla Firefox, Version 13
•
Google Chrome, Version 20 mit aktivierter Unterstützung für Touchevents (experimentiell)
83
Umsetzung eines Prototyps
4.5.2 Testablauf
Der Test bestand aus drei Phasen:
1.
Kurze Einleitung in den Hintergrund des Tests und Playing Valcamonica.
2.
Test des Puzzlespiels in drei Varianten:
1. ActionScript-Implementierung
2. JavaScript-Implementierung, ausgeführt in Mozilla Firefox 13
3. JavaScript-Implementierung, ausgeführt in Google Chrome 20
3.
Befragung der Teilnehmer/innen
Für jede der drei getesteten Varianten des Spiels wurden folgende Schritte durchgeführt:
•
„Normales“ Spielen mit Beteiligung aller Teilnehmer/innen
•
Simultanes Bewegen (Drag) von zwei Elementen je Teilnehmer/in
•
Starke Auslastung durch simultanes Transformieren von zwei Puzzleteilen je
Teilnehmer/in
Folgende Fragen wurden den Teilnehmer/innen am Ende des Tests gestellt:
•
„Welche Variante hat deiner Meinung nach am besten funktioniert und warum?“
•
„Gab es Probleme bei der Bedienung?“
•
„Sind dir optische Unterschiede zwischen den Varianten aufgefallen?“
84
5
Ergebnisse
In diesem Kapitel werden die Ergebnisse dieser Arbeit dargestellt. Die Erkenntnisse wurden
einerseits aus der in Kapitel 2 und 3 beschriebenen theoretischen Auseinandersetzung sowie
aus der in Kapitel 4 beschriebenen Entwicklung und dem Test des Prototyps gewonnen. Die
Forschungsfrage, ob der Webbrowser als Plattform für Multi-Touch-Applikationen eine Alternative zu Desktopanwendungen darstellt, wird aufbauend auf diese Erkenntnisse und unter
Betrachtung von Use Cases (Anwendungsfälle) beantwortet.
5.1 Ergebnisse der allgemeinen Kriterien
5.1.1 Fähigkeiten aktueller Browser zur Verarbeitung von Touchevents
Die Unterstützung von Touchevents sowie das verwendete API in Desktopbrowser variert
stark, jedoch sind Events zur Verarbeitung von Touchdaten in Webapplikationen in Mozilla
Firefox, Google Chrome und Internet Explorer 10 (siehe Tabelle 8) verfügbar. Unter den auf
mobilen Endgeräten verfügbaren Browser unterstützen Apple Safari, Mozilla Firefox und der
kürzlich veröffentlichte Google Chrome Multi-Touch-Events.
Browser
Version
API
Anmerkung
Mozilla Firefox
ab 3.6
Mozilla Touch API
(proprietär)
Ab Version 6 wird dieses API nicht
mehr weiterentwickelt.
Google Chrome
ab 20
W3C Touch API
Derzeit nur als experimentielle
Funktion aktivierbar und auf sieben simultane Touches beschränkt.
Microsoft Internet
Explorer
ab 10
MS Pointer API
(proprietär)
Tabelle 8: Desktop-Browser mit Unterstützung für Touchevents
5.1.2 Performance aktueller Browser bei Multi-Touch- und
Gesteninteraktionen
Eine hohe Performance ist eine der wichtigsten Voraussetzungen für ein ansprechendes MultiTouch-Interface. Sinkt die Bildwechselfrequenz (FPS) während der Gestendurchführung auf
weniger als 15 Bilder pro Sekunde kann das Gehirn einzelne Schritte wahrnehmen und die
Interaktion wird nicht mehr als „flüssig“ empfunden (Read, Meyer, & Gamma Group, 2000).
Generell ist festzustellen, dass Gestenaktionen in Google Chrome mit einer höheren Frequenz
als Mozilla Firefox ausgeführt werden. Der Unterschied wird vor allem bei der simultanen
85
Ergebnisse
Transformation von mehreren Elementen deutlich. Dies ist auf die in Kapitel 0 erwähnte höhere Performance der JavaScript-Engine von Chrome zurückzuführen.
Bei der Transformation von Bildern mit der CSS3-Eigenschaft transform mittels MultiTouch-Gesten können Performanceprobleme auftreten. Bei kleinen Bildern ist die Performance für eine als flüssig wahrgenommene Interaktion ausreichend, jedoch sinkt die Bildwechselrate enorm, je größer ein Bild skaliert wird. Transformationen eines Bildes mit 1000 Pixel
Kantenlänge werden nur noch sehr langsam (unter 5 FPS) durchgeführt, was zu einer mangelhaften User Experience führt. Um dies zu verhindern ist es notwendig, einen Maximalwert für
Scale-Transformationen festzulegen. Aufgrund der relativ kurzen Verfügbarkeit dieser Transformationen ist allerdings davon auszugehen, dass die Implementierungen der CSSTranformationen in zukünftigen Browserversionen optimiert werden.
In aktuellen mobilen Browser wird ein Performanceproblem bei der Verwendung größerer
Bilder (>150 kB) als Gesteninteraktionselemente ausgelöst. Auch ohne die Verwendung von
CSS-Transformationen ist die Leistung dieser Geräte und Browser zu gering, um eine einfache
Drag-Aktion eines Elements ruckelfrei darzustellen. Werden jedoch HTML-Elemente ohne
Bilder verwendet, ist eine höhere Performance festzustellen.
5.1.3 Verfügbarkeit von Frameworks für Multi-Touch-Gestensteuerungen
Derzeit stehen Entwickler/innen zwei Frameworks zur Verfügung, um Multi-TouchWebanwendungen mit Gestenunterstützung für Tabletop-Systeme zu entwickeln: Hammer/Hummer.js und jQMultiTouch.
Hammer/Hummer.js
Hammer.js eignet sich zur Programmierung von Multi-Touch-Anwendungen und unterstützt
die am häufigsten verwendeten Gesten: Tap, Doubletap, Drag, Rotate und Scale. Die Bibliothek
weist allerdings folgende Einschränkungen auf:
•
Keine Möglichkeit zur Erweiterung des Sets an verfügbaren Gesten
•
Keine Unterstützung von Mozilla Touch Events
•
Verwendendung der Gesten Rotate und Scale aufwendig
Durch die Erweiterung Hummer.js werden die beiden letztgenannten Einschränkungen von
Hammer.js grundsätzlich behoben, wenn auch die Verwendung von Mozilla Touch Events
aufgrund des grundsätzlichen Aufbaus von Hammer.js noch Probleme aufweisen kann (siehe
Kapitel 3.3.3). Ein weiterer Nachteil dieser Erweiterung ist, dass Hummer.js nicht weiterentwickelt wird und somit auch Änderungen der Originalversion (Hammer.js) nicht übernommen
werden.
Hammer.js/Hummer.js realisiert nur die Erkennung der oben erwähnten Gesten, die entsprechende Reaktion des Systems auf diese Gesten muss der/die Programmierer/in implementie-
86
Ergebnisse
ren. Dieser Ansatz entkoppelt zwar die Gestenerkennung von der Applikationslogik, jedoch
resultiert daraus ein höherer Entwicklungsaufwand.
jQMultiTouch
Die Bibliothek jQMultiTouch stellte sich bei der Entwicklung des Prototyps als sehr flexibel
und einfach zu verwenden dar. jQMultiTouch befindet sich noch in der Entwicklung und ist
daher stellenweise noch nicht ausgereift. Die Konzepte im Kern der Bibliothek (etwa die Touch
History, siehe Kapitel 3.3.4) bieten jedoch vielseitige Möglichkeiten zur Entwicklung von Benutzerschnittstellen mit komplexer Gestensteuerung.
jQMultiTouch implementiert vordefinierte Gesten wie Drag, Rotate und Scale mitsamt der
erwarteten Aktion des Elements. Ein Element, das mit jQMultiTouch als rotierbar gekennzeichnet wurde, kann ohne weiteren Code bereits per Multi-Touch gedreht werden. Im Vergleich zu Hammer.js/Hummer.js stellt dies eine Zeitersparnis dar.
Die Möglichkeit, in die Ausführung der vordefinierten Gesten (Drag, Rotate, Scale) über Callback-Funktionen einzugreifen, sorgt für Flexibilität bei der Verwendung der Bibliothek trotz
standardmäßig implementierter Reaktionen auf die Gesten (beispielsweise das Drehen eines
Elements bei der Geste Rotate).
Merkmal
Hummer.js
jQMultiTouch
W3C-Touch Events
✓
✓
Mozilla Touch Events
✓
✓
Standard-Gesten (Drag,
Rotate, Scale)
✓
✓
Individuelle Gesten
×
✓
Transform-Verhalten
implementiert
×
✓
Verlauf der Touchpoints
×
✓ (Touch History)
Individuelle Reaktionen auf
Gesten durch
Events
Callbacks
Tabelle 9: Vergleich der Merkmale von Hummer.js und jQMultiTouch
5.1.4 Verfügbarkeit von Werkzeugen zur Erstellung von
webbasierten Animationen
Mit der Einführung des HTML5-Elements Canvas und dessen zunehmender Unterstützung
wird die Entwicklung sowohl von linear zeitbasierten als auch interaktiven Animationen ohne
Browser-Plug-ins möglich. Sehr rechenintensive Animationen mit einer Vielzahl an Objekten
werden durch WebGL, das in einem Canvas-Element gerendert wird, möglich.
87
Ergebnisse
Abseits von Animationen, die auf Canvas basieren, werden auch Animationen von HTMLElementen wie Images oder Text unter Verwendung von CSS(3)-Attributen mit höherer Performance möglich. Auf diese Entwicklung aufbauend, stellt Adobe mit Edge ein Werkzeug zur
Verfügung, das die Animation von HTML-Elementen anhand einer Zeitleiste mit Schlüsselbildern sehr einfach und effizient ermöglicht. Da Edge auf Standard-Webtechnologien aufbaut,
können auch interaktive Elemente über JavaScript-Code eingebettet werden.
Im Zusammenhang mit der Entwicklung der Endanimation des Prototyps wurde allerdings
festgestellt, dass mit Edge erstellte Animationen noch Einschränkungen haben:
•
Edge ist dafür konzipiert, dass die erstellten Animationen sofort nach abgeschlossenem
Ladevorgang gestartet werden. Soll die Animation erst zu einem späteren Zeitpunkt gestartet werden, so muss der generierte Code verändert werden. Dies führt dazu, dass
nach jedem Export der Animation dieser Schritt wiederholt werden muss.
•
Mit Edge erstellte Animationen und deren verwendeten Ressourcen werden automatisch geladen. So ist bespielsweise keine Möglichkeit vorgesehen, das von Edge verwendete jQuery nicht zu inkludieren. Das kann zu Kompatibilitätsproblemen führen.
Abhilfe schafft die Veränderung des generierten Codes, was jedoch zu dem in Punkt 1
erwähnten Problem führt.
•
Bereits in einem HTML-Dokument vorhandene Elemente können nicht in einem
Edge-Projekt verwendet werden. In Konzepten, die die Animation von vorhandenen
Elementen vorsehen, folgt daraus ein doppelt so hoher Ladebedarf, da jedes Element
zwei Mal vom Server geladen werden muss.
Aus diesen Gründen wurde die Endanimation des Prototyps mit der GreenSock Animation
Platform (GSAP) umgesetzt. Die Verwendung dieser Bibliothek ist – nicht zuletzt aufgrund der
umfangreichen Dokumentation – einfach und schnell zu erlernen. Im Vergleich mit Adobe
Edge ist die Erstellung von Animationen mit GSAP aufgrund des nicht vorhandenen visuellen
Editors zeitaufwändiger. Vorteilhaft ist jedoch, dass vorhandene HTML-Elemente verwendet
und die Animationen präzise per Code gesteuert werden können. Zudem ist GSAP auf hohe
Performance optimiert, um auch komplexere Animationen ruckelfrei darstellen zu können.
5.1.5 Verfügbarkeit von unterstützenden Werkzeugen
Eine Reihe von Werkzeugen wurden bei der Entwicklung des in Kapitel 4 beschriebenen Prototyps verwendet, um die Entwicklung effizienter und angenehmer zu gestalten. Der zentrale
Aspekt der Webentwicklung, die Programmierung, wird in einem Texteditor durchgeführt.
Die Auswahl an Texteditoren mit unterschiedlichen Merkmalen für verschiedene Programmiersprachen ist groß. Die persönlichen Präferenzen der Entwicklerin/des Entwicklers spielen
bei der Auswahl des Texteditors eine große Rolle. Nachfolgend werden die Werkzeuge, die bei
der Entwicklung des Puzzle-Prototyps verwendet wurden, beschrieben.
88
Ergebnisse
Texteditoren: Netbeans IDE 7.1 und Notepad++
Die Integrierte Entwicklungsumgebung (IDE) Netbeans wurde für die Erstellung der HTMLund CSS-Dateien sowie die Programmierung der JavaScript-Funktionalität verwendet. Netbeans bietet in der Version 7.1 umfangreiche Funktionen, die bei Programmieraufgaben unterstützend wirken. Für die Entwicklung von Puzzle stellten sich vor allem folgende Merkmale als
nützlich dar:
•
Syntax-Highlighting erhöht die Übersichtlichkeit von Quellcode enorm.
•
Autocompletion erspart vor allem bei der HTML- und CSS-Entwicklung Tastenanschläge und bietet in der Folge auch Zeitersparnis.
•
Übersichtliche Darstellung der Dateien im Projektexplorer.
•
Syntax-Check bei JavaScript-Entwicklung kontrolliert unter anderem nicht verwendete
Variablen oder fehlerhaft verwendete Zeichen.
•
Integration und Darstellung von Versionierungssystemen wie Git oder Subversion.
Netbeans ist eine umfangreiche Entwicklungsumgebung und benötigt daher einige Zeit für den
Startvorgang. Für einfache Aufgaben und kurzfristige Änderungen wurde daher Notepad++
verwendet. Notepad++ ist ein Texteditor, der ebenfalls Funktionen wie Syntax-Highlighting
bietet, jedoch nicht dem Umfang von Netbeans entspricht.
Versionierungssystem: Git
Als Versionierungssystem wurde Git verwendet. Versionierung ist eine gängige Praxis in der
Softwareentwicklung und ermöglicht die Arbeit von mehreren Entwickler/innen an der gleichen Codebasis sowie problemloses zurückkehren auf frühere Versionen.
Git ist ein verteiltes Versionierungssystem, im Unterschied zu zentralen Systemen wie Subversion hat dies den Vorteil, dass auch ohne bestehende Verbindung zum Internet neuer oder
veränderter Quellcode in das System commited (engl. etwa übergeben) werden kann. Besteht
zu einem späteren Zeitpunkt eine Verbindung zum zentralen Speicherort, können die Änderungen hochgeladen werden um sie für andere Entwickler/innen zur Verfügung zu Stellen.
Als Hostingprovider für das Git Repository von Puzzle wurde Bitbucket verwendet. Bitbucket
bietet kostenlosen Speicherplatz für Sourcecode von nicht kommerziellen Projekten mit Unterstützung für Versionierungssyteme wie Git und Subversion an.
Entwicklertools im Browser: Google Chrome Entwicklertools und Firebug für Mozilla Firefox
Die Entwicklung von Webapplikationen wird durch Entwicklertools der Browser deutlich
schneller, einfacher und komfortabler gestaltet. Entwicklertools erlauben die Inspektion und
Änderung der aktuell im HTML-Dokument vorhandenen Elemente mit ihren CSSEigenschaften ohne den zugrunde liegenden Quellcode bearbeiten zu müssen. Pixelgenaue
Positionierung von Elementen oder subtile Änderungen, etwa von Schlagschatten, können mit
89
Ergebnisse
diesen Werkzeugen direkt im Browser durchgeführt werden. Fehler in JavaScriptAnweisungen werden in diesen Werkzeugen ebenso dargestellt wie die vom Server geladenen
Dateien und Ressourcen.
Für die Entwicklung in Google Chrome stellt der Hersteller die standardmäßig inkludierten
Chrome Entwicklertools bereit. Diese Komponente von Chrome bietet grundsätzlich ähnliche
Funktionalität wie das Plug-in Firebug für Mozilla Firefox. Beide Werkzeuge unterstützen die
Entwicklung von webbasierten Multi-Touch-Applikationen in hohem Ausmaß.
Multi-Touch Vista
Bei der Entwicklung des Puzzlespiels wurde das in Kapitel 3.3.6 beschriebene Produkt MultiTouch Vista zur Simulation der Toucheingabe verwendet. Dabei wurde die Funktion „Multiple
Mice“ aktiviert, um den Prototyp mit zwei an den Entwicklungsrechner angeschlossenen Mäusen zu testen. Dieser Simulator ermöglicht Tests während der Entwicklung des Prototyps, allerdings empfiehlt es sich, Multi-Touch-Applikationen in regelmäßigen Abständen auch auf
Multi-Touch-fähiger Hardware zu testen. Durch die Bedienung des Systems mit zwei Mäusen
kann zwar die grundsätzliche Funktionalität getestet werden, sofern nicht mehr als zwei
Touchpunkte gleichzeitig benötigt werden. Es ist allerdings festzustellen, dass Probleme, die
erst bei mehreren simultanen Berührungspunkten auftreten, mit Simulatoren kaum simuliert
werden können.
5.2 Ergebnisse des Tests des Prototyps
Der in Kapitel 4.5 beschriebene Test des Prototyps wirkte unterstützend bei der Evaluierung
des Prototyps hinsichtlich der Funktionalität und Einsetzbarkeit. Wie beschrieben, wurden die
Flash-Applikation und die Webapplikation getestet, wobei zweitere sowohl in Mozilla Firefox
als auch in Google Chrome ausgeführt wurde. Die Flash-Variante wird dabei als Referenzimplementierung betrachtet anhand derer die Funktionalität der Webapplikation bewertet wird.
5.2.1 Wie verhält sich die Webapplikation bei der Bedienung von einer
Person im Vergleich mit der Flash-Applikation?
Die Webapplikation stellte sich bei der Bedienung des Systems von nur einer Person (Single
User) als zufriedenstellend performant und fehlerfrei dar. Die Performance ist mit jener der
Flash-Implementierung zu vergleichen; signifikante Unterschiede zwischen den Browser Mozilla Firefox und Google Chrome konnten im Test mit einer Testperson nicht festgestellt werden.
90
Ergebnisse
5.2.2 Wie verhält sich die Webapplikation bei der gleichzeitigen Bedienung von vier Personen (Multi User) im Vergleich mit der FlashApplikation?
Im Test der Webapplikation mit vier Personen, die das System gleichzeitig von vier Seiten bedienen, konnten starke Einschränkungen hinsichtlich der Leistungsfähigkeit der Browser bei
Multi-Touch-Interaktionen festgestellt werden (siehe Kapitel 5.2.3). Aus diesen Performanceproblemen resultieren Schwierigkeiten bei der Bedienung der Applikation, da einzelne Puzzleteile nur noch ruckartig bewegt und transformiert werden können. Dies führt zu einer
mangelhaften User Experience.
Zusätzlich konnte in dem Test festgestellt werden, dass die getestete Version Google Chrome
20 mit aktivierter Unterstützung von Touchevents (siehe Kapitel 0) lediglich sieben simultane
Berührungen verarbeiten kann. Diese Einschränkung ist bei mehreren Personen, die vier
gleichzeitige Gesten mit jeweils zwei Fingern durchführen bereits problematisch. Da weitere
Berührungspunkte ignoriert werden und somit Gesten nicht ausgeführt oder falsch interpretiert werden, tritt für die Benutzer/innen unerwartetes Verhalten auf.
5.2.3 Ab welcher Belastung sind Performanceprobleme
deutlich erkennbar?
Wie in Kapitel 5.2.2 bereits erwähnt, treten bei der simultanen Bedienung der Applikation von
vier Personen Probleme hinsichtlich der Performance auf.
Während mehrere Elemente gleichzeitig per Drag-Geste verschoben werden können, ohne
dass die Bedienbarkeit merklich beeinträchtigt wird, ist bei Mehrfinger-Gesten wie Rotate und
Scale eine deutliche Beeinträchtigung feststellbar. Dabei ergeben sich Unterschiede in der Performance der Browser:
In Mozilla Firefox sinkt die Bildwechselfrequenz auf der getesteten Hardware bereits ab zwei
simultanen Rotate- oder Scale-Gesten deutlich ab, so dass die Puzzleteile nur noch ruckartig
transformiert werden.
Google Chrome kann aufgrund der performanteren JavaScript-Engine auch drei gleichzeitig
durchgeführte Transform-Gesten in einer höheren Bildwechselfrequenz als Mozilla Firefox
darstellen. Doch auch in Google Chrome werden die Transformationen leicht ruckartig dargestellt. Zudem sind mehr als drei Zweifinger-Gesten durch die bereits beschriebene Einschränkung des Browsers auf sieben gleichzeitige Berührungspunkte nicht möglich.
5.2.4 Tritt Fehlverhalten bei der Verwendung von Gesten auf?
Die Erkennung der Gesten mit jQMultiTouch funktioniert auch bei mehreren gleichzeitigen
Interaktionen zuverlässig. Die Teilnehmer/innen des Tests konnten das Spiel ohne Probleme
hinsichtlich der Gestenerkennung bedienen.
91
Ergebnisse
Geringfügige Probleme traten jedoch auf, wenn eine Person ein Puzzleteil gleichzeitig transformierte und bewegte. Diese Kombination aus zwei Gesten kann jQMultiTouch zwar ausführen, jedoch wird als Urspungspunkt der Drag-Geste der erste Berührungspunkt verwendet.
Aus diesem Grund tritt bei einer deutlichen Transformation eines Elements unerwartetes Verhalten beim Verschieben auf.
Um dieses Problem zu lösen, müsste die Berechnung der Koordinaten einer Drag-Aktion bei
mehreren gleichzeitigen Punkten den Mittelpunkt aller Punkte ermitteln um das Element anhand diesen Werts zu verschieben.
5.2.5 Welchen subjektiven Eindruck erhalten Benutzer/innen hinsichtlich
der Qualität der Interaktion und der visuellen Darstellung des Spiels?
Die Einschätzung der Qualität der Interaktion und der visuellen Darstellung des Spiels wurde –
zusätzlich zur Beobachtung der Reaktionen der Testteilnehmer/innen – anhand einer mündlichen Befragung zu Ende des Tests evaluiert. Die Antworten stellen daher subjektive Eindrücke
der Testteilnehmer/innen dar, wenngleich die wesentlichen Kommentare auf technische Gegebenheiten zurückzuführen sind.
„Zittrige“ Puzzleteile
Das Transformieren oder Verschieben eines Puzzleteils wirkt auf die Testpersonen „zittrig“.
Alle Teilnehmer/innen des Tests stellten diese ungleichmäßige Darstellung der Bewegung oder
Veränderung fest.
Diese Unregelmäßigkeit ist auf die ungenaue Erkennung von Bewegungen der Fingerpositionen durch die Hardware zurückzuführen. Das Problem kann jedoch softwareseitig gelöst werden, indem Werte, die deutlich von den vorherigen Werten abweichen, angepasst werden.
Derartige Operationen werden als Glättung bezeichnet, da die Funktion, die die Wertveränderung beschreibt, danach eine geringere Fluktuation aufweist.
Schlagschatten von Puzzleteilen
Eine Testperson merkte an, dass die Webapplikation im Vergleich zur Flash-Variante visuell
„flacher“ wirke. Dies ist auf den fehlenden Schlagschatten der einzelnen Puzzleteile zurückzuführen.
In ActionScript/Flash wurde Schlagschatten programmatisch auf einzelne Elemente angewendet, um noch nicht richtig platzierte Elemente subtil in den Vordergrund zu bringen. Besitzen
Puzzleteile eine unregelmäßige Form (wie die Puzzleteilen von Playing Valcamonica) mit
Transparenzen, wird der in ActionScript definierte Schatten dieser Form angepasst (siehe Abbildung 34). Im Vergleich dazu wird bei Verwendung der CSS3-Eigenschaft box-shadow der
Schatten auf das umgebende Rechteck angewendet (siehe Abbildung 35). Um dieses Problem
zu umgehen, muss der Schlagschatten mit einem Bildbearbeitungswerkzeug hinzugefügt wer-
92
Ergebnisse
den. Diese Bearbeitung des Bildes macht jedoch eine spätere programmatische Änderung des
Schattens unmöglich.
Abbildung 34: Schlagschatten in ActionScript passt
Abbildung 35: CSS3-Schlagschatten wird auf das
sich der Form eines Elements mit Transparenzen an.
gesamte Element angewendet.
5.3 Use Cases
Die Forschungsfrage, ob der Browser eines Tabletop-PCs eine Plattform für ansprechende
Multi-Touch-Applikationen darstellt, kann aufgrund der Vielseitigkeit der dargestellten Erkenntnisse nicht eindeutig mit Ja oder Nein beantwortet werden. Daher werden drei Use Cases
(engl. Anwendungsfälle) definiert, anhand derer die Verwendbarkeit von Multi-Touch und
Gestensteuerungen in Webapplikationen diskutiert wird.
Use Case 1: Eine Multi-User-Applikation, die nur mit Gesten geringer Komplexität wie Drag
oder Tap bedient wird oder eine Single-User-Applikation, die auch Rotate- und Scale-Gesten
verwendet.
Für eine derartige Applikation stellt der Browser eine alternative Plattform zu Desktopanwendungen dar. Die beschriebenen Einschränkungen hinsichtlich Performance und Verarbeitung
der Touchevents sind in diesem Anwendungsfall zu vernachlässigen, da einfache Drag und
Tap-Aktionen ausreichend performant durchgeführt werden können und nicht mehr als sieben simultane Berührungspunkte benötigt werden.
Use Case 2: Eine Applikation, die Gesten wie Rotate und Scale verwendet, hochauflösende Grafiken als Interaktionselemente einsetzt und für ein bis drei Personen konzipiert ist (Multi
User).
Eine Applikation mit diesen Eigenschaften ist nur bedingt für die Ausführung im Webbrowser
geeignet, da aufgrund der Grafikanforderungen deutliche Performanceprobleme auftreten
können. Zusätzlich ist bei Ausführung in Google Chrome, der eine höhere Performance als
Mozilla Firefox aufweist, in Multi User Applikationen auf die derzeitige Limitierung sieben
simultaner Berührungspunkte zu achten.
93
Ergebnisse
Use Case 3: Eine Applikation, die sowohl Mehrfingergesten wie Drag und Rotate als auch
hochauflösende Grafiken als Interaktionselemente verwendet und von mehr als drei Spielern
zur selben Zeit bedient werden soll (Multi User).
Aufgrund der derzeitigen Einschränkungen der Multi-Touch-fähigen Browser ist eine Applikation mit diesen Merkmalen für die Ausführung im Browser nicht geeignet. Die Performance
bei Transformationen von hochauflösenden Grafiken mit CSS3 reicht aktuell noch nicht für
eine Bildwechselfrequenz, die eine Applikation für eine ansprechende User Experience benötigt. Zudem treten Probleme durch die Einschränkung auf sieben Touchpoints in Google
Chrome bei der gleichzeitigen Bedienung von mehr als drei Personen auf.
94
6
Conclusio
In dieser Arbeit wurden Möglichkeiten untersucht, Multi-Touch-Applikationen für die Ausführung im Browser eines Tabletop-PCs zu entwickeln. Der Webbrowser als Plattform für
Multi-Touch-Anwendungen bietet Vorteile gegenüber Desktopsoftware, da Webapplikationen
eine hohe Geräte- und Plattformunabhängigkeit aufweisen, einfache Distribution ermöglicht
und die Fähigkeiten der Webbrowser rapide verbessert werden.
Um die zentrale Forschungsfrage, ob der Browser eines Tabletop-PCs eine Plattform für ansprechende Multi-Touch- und gestenbasierte Anwendungen darstellt zu beantworten, wurden
mehrere Aspekte betrachtet. Die Fähigkeiten moderner Browser zur Verarbeitung von MultiTouch-Informationen, die Möglichkeiten, die neue Webstandards wie HTML5 und CSS3 bieten sowie deren Einschränkungen hinsichtlich Performance und Implementierung und Möglichkeiten zur Erstellung webbasierter Animationen wurden diskutiert.
Ein zentraler Aspekt von Multi-Touch ist die Interaktion mittels Gesten, daher wurden Frameworks, die einerseits die unterschiedlichen Touch-APIs vereinheitlichen und andererseits
die Erkennung von Multi-Touch-Gesten realisieren, evaluiert. In einem praktischen Experiment wurden die gewonnen Erkenntnisse in Form eines Prototyps umgesetzt und auf die Verwendbarkeit getestet.
Die Unterstützung von Touchevents in Desktopbrowser ist derzeit noch nicht sehr weit fortgeschritten. Während Mozilla Firefox bereits mit Version 3.6 (aktuell: 14) ein propretäres API für
die Verwendung von Touchevents einführte, bietet Google Chrome erst seit der aktuellen Version 20 experimentielle Unterstützung von Touchevents über ein vom W3C standardisiertes
API. Microsoft kündigte für den in Windows 8 enthaltenen Internet Explorer 10 wiederum ein
eigenes API zur Verwendung von Toucheingabe an.
Aufgrund dieser Unterschiede in Browser unterschiedlicher Hersteller ist die Verwendung von
Frameworks, die die Verwendung dieser APIs vereinheitlichen, sinnvoll. Die beiden Frameworks Hummer.js und jQMultiTouch bieten neben dieser Abstraktion auch die Erkennung
von Gesten. Das Hummer.js zugrunde liegende Framework Hammer.js unterstützt nur das
W3C Touch Event-API, daher wurde dieses Framework im Zuge dieser Arbeit um die Mozilla
Touch Events und einige Funktionen zur einfacheren Verwendbarkeit erweitert und in Hummer.js umbenannt. Das Framework jQMultiTouch unterstützt standardmäßig sowohl W3Cals auch Mozilla Touch Events und ermöglicht die Erkennung von vordefinierten sowie individuellen Gesten. Zudem bietet jQMultiTouch Möglichkeiten zur Anpassung der Funktionalität
und ist damit vielseitig einsetzbar.
In einem Test des mit jQMultiTouch entwickelten Prototyps eines Puzzlespiels wurde die Verwendbarkeit und Praxistauglichkeit einer derartigen Anwendung auf einem Multi-Touch
Tabletop-PC getestet. Vier Personen lösten in diesem Test miteinander und gleichzeitig das
Puzzle einerseits in der in Adobe Flash entwickelten Referenzimplementierung und anderer95
Conclusio
seits die Webapplikation in Mozilla Firefox und Google Chrome. In diesem Test wurde festgestellt, dass Chrome bei der Interaktion mittels Gesten im Vergleich zu Firefox eine höhere Performance aufweist, jedoch ist die Anzahl der simultanen Berührungspunkte derzeit auf sieben
beschränkt. Durch diese Einschränkung ist Chrome nur bedingt für Multi User Applikationen
geeignet. In Mozilla Firefox konnte keine derartige Einschränkung festgestellt werden. Performanceprobleme treten in beiden Browser vor allem bei der Transformation von großen Grafiken mit Multi-Touch-Gesten auf. Im Vergleich mit der Implementierung in Flash wurde von
den Testpersonen neben Performanceproblemen vor allem „zittriges“ Verhalten beim Verschieben oder Transformieren der Puzzleelemente kritisiert. Dieses Problem kann jedoch softwareseitig gelöst werden.
Aufgrund dieser Einschränkungen kann die Forschungsfrage nur bedingt positiv beantwortet
werden. Für Applikationen, die einfache Gesten wie Drag und Tap verwenden und nicht mehr
als sieben simultane Berührungspunkte benötigen, kann der Browser als alternative Plattform
für Multi-Touch-Applikationen betrachtet werden. Vor allem die derzeitige Performance der
Browser bei der Transformation von Grafiken ist als Hindernis für komplexere gestenbasierte
Multi-Touch-Applikationen zu betrachten. Für die Entwicklung von Multi-Touch-Prototypen
sind Webtechnologien aufgrund der relativ einfachen und schnellen Programmierung dennoch
geeignet.
Durch die schnelle Verbesserung der Fähigkeiten moderner Browser im Zusammenhang mit
den Technologien HTML5 und CSS3 ist zukünftig eine höhere Performance bei Transformationen zu erwarten. Derzeitige Bestrebungen seitens des W3C, die Verwendung von Touchevents zu vereinheitlichen, erleichtern zudem die Entwicklung von Multi-Touch-Applikationen.
Im Zusammenhang mit der generellen Tendenz, immer umfangreichere Anwendungen mit
Webtechnologien zu realisieren, sind diese Entwicklungen für die zukünftige Verwendbarkeit
von Multi-Touch im Browser von großer Bedeutung.
Diese Arbeit zeigt, dass der Browser für einfache, gestenbasierte und animationsunterstützte
Applikationen bereits jetzt eine Alternative zu Desktopanwendungen darstellt. Als größte Hindernisse für die Erstellung komplexerer Anwendungen konnte derzeit die Leistungsfähigkeit
der Browser und die daraus resultierende mangelhafte User Experience identifiziert werden.
Aber auch diese Einschränkung wird durch zukünftige Verbesserungen der Browser von geringerer Bedeutung sein.
96
7
Anhang
Anhang A: Quellenverzeichnis
Adobe Systems (Hg.). (2012, Juli 26). HTML5 tools, Animation tools - Adobe Edge Preview. Adobe
Labs. Abgerufen August 5, 2012, von http://labs.adobe.com/technologies/edge/
Apple (Hg.). (2010, Dezember 16). TouchEvent Class Reference. Abgerufen Juni 29, 2012, von
http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/TouchEv
entClassReference/TouchEvent/TouchEvent.html#//apple_ref/doc/uid/TP40009358
Apple (Hg.). (2011, Juli 28). Mac OS X Lion: Informationen zu Multi-Touch-Gesten. Abgerufen Juni 1,
2012, von http://support.apple.com/kb/HT4721?viewlocale=de_DE#
Apple (Hg.). (o. J.-a). Apple - Magic Mouse - Die erste Multi-Touch-Maus der Welt. Abgerufen Juni 1,
2012, von http://www.apple.com/at/magicmouse/
Apple (Hg.). (o. J.-b). Apple - Magic Trackpad - Das Multi-Touch Trackpad für deinen Desktopcomputer. Abgerufen Juni 1, 2012, von http://www.apple.com/at/magictrackpad/
Berners-Lee, T. (2006, Oktober 27). Reinventing HTML | Decentralized Information Group (DIG)
Breadcrumbs. Abgerufen Juni 25, 2012, von http://dig.csail.mit.edu/breadcrumbs/node/166
Berners-Lee, T. (2012, April 11). Longer Bio for Tim Berners-Lee. Abgerufen Juni 22, 2012, von
http://www.w3.org/People/Berners-Lee/Longer.html
Boas, M. (2012, Mai 8). HTML5 Audio — The State of Play | HTML5 Doctor. Abgerufen Juni 25, 2012,
von http://html5doctor.com/html5-audio-the-state-of-play/
Bos, B., Çelik, T., Hickson, I., & Lie, H. W. (2011, Juni 7). Cascading Style Sheets Level 2 Revision 1
(CSS 2.1) Specification. Abgerufen Juni 28, 2012, von http://www.w3.org/TR/2011/REC-CSS220110607/
Brubeck, M. (2012, März 6). Touch events (Mozilla experimental) - MDN. Abgerufen Juli 2, 2012, von
https://developer.mozilla.org/en/DOM/Touch_events_(Mozilla_experimental)
Brubeck, M., Moon, S., & Schepers, D. (2011, Dezember 15). Touch Events version 1. Abgerufen Juni 29,
2012, von http://www.w3.org/TR/touch-events/
Buxton Bill. (2009, Dezember 2). Multi-Touch Systems that I Have Known and Loved.
Cabello, R. (2012, Juni 6). three.js. GitHub. Abgerufen Juni 26, 2012, von
https://github.com/mrdoob/three.js
Cabrera, L. (2011, Juli 7). Next week: The Microsoft Surface SDK and other Tools and Resources will be
available to you! Microsoft Surface Blog. Abgerufen Juni 15, 2012, von
http://blogs.msdn.com/b/surface/archive/2011/07/07/new-tools-and-resources-for-surfacepartners-for-the-samsung-sur40-for-microsoft-surface.aspx
Canalys. (2010, Februar 8). Majority of smart phones now have touch screens. Canalys. Abgerufen Juli
13, 2012, von http://www.canalys.com/newsroom/majority-smart-phones-now-have-touchscreens
Cantrell, C. (2009, November 17). Multitouch and gesture support on the Flash Platform | Adobe Developer
Connection.
Abgerufen
Juni
19,
2012,
von
http://www.adobe.com/devnet/flash/articles/multitouch_gestures.html
Cao, X., Massimi, M., & Balakrishnan, R. (2008). Flashlight jigsaw (S. 77). ACM Press.
doi:10.1145/1460563.1460577
Carr, G. (2010, August 16). Multi-touch Support Lands in Maverick « Canonical Blog. Abgerufen von
http://blog.canonical.com/2010/08/16/multi-touch-support-lands-in-maverick/
Clark, R. (2011, Juli 26). Avoiding common HTML5 mistakes | HTML5 Doctor. Abgerufen Juni 25,
2012, von http://html5doctor.com/avoiding-common-html5-mistakes/
97
Anhang
Constanza, E., & Robinson, J. (2003). A Region Adjacency Tree Approach to the Detection and Design
of Fiducials. Gehalten auf der Vision, Video and Graphics (VVG).
Crockford, D. (2008). Java Script: the good parts. Sebastopol, CA [etc.]: O’Reilly.
Danilin, D. (2011, März 27). Multi-Touch Vista. Abgerufen Juli 7, 2012, von
http://multitouchvista.codeplex.com/
Deveria, A. (o. J.). When can I use... Support Tables for HTML5, CSS3, etc. When can I use... Abgerufen
Juni 29, 2012, von http://caniuse.com/
Doherty, R. (2012, Juni 6). Using HTML5′s Fullscreen API for Fun and Profit. SmugMug Sorcery. Abgerufen Juni 26, 2012, von http://sorcery.smugmug.com/2012/06/06/using-html5s-fullscreen-apifor-fun-and-profit/
Douglas, C. (2011, März 15). Multitouch in Ubuntu 11.04 « Code Crunching. Abgerufen Juni 1, 2012,
von http://voices.canonical.com/chase.douglas/2011/03/15/multitouch-in-ubuntu-11-04/
Doyle, J. (2012a, Mai 15). Announcing GreenSock Animation Platform (GSAP) v12, now with tangy
JavaScript flavor! GreenSock. Abgerufen August 5, 2012, von http://www.greensock.com/v12/
Doyle, J. (2012b, Juli 15). com.greensock package - GreenSock JavaScript Documentation. Abgerufen
August 5, 2012, von http://api.greensock.com/js/
Ecma International. (2011, Juni). ECMAScript Language Specification. Abgerufen von http://ecmainternational.org/publications/files/ECMA-ST/Ecma-262.pdf
Eight Media (Hg.). (o. J.). Hammer.js — A javascript library for multi touch gestures. Abgerufen Juli 5,
2012, von http://eightmedia.github.com/hammer.js/
Flanagan, D. (2006). JavaScript : the definitive guide. Sebastopol, CA: O’Reilly.
Fraser, S., Jackson, D., Hyatt, D., Marrin, C., O’Conner, E., Schulze, D., & Gregor, A. (2012, Juni 16).
CSS Transforms. Abgerufen Juni 29, 2012, von http://dev.w3.org/csswg/css3-transforms/
Gallagher, N., Manian, D., Reinl, H. C., Chuan, S., & Bynens, M. (o. J.). HTML5 Boilerplate - A rocksolid default template for HTML5 awesome. Abgerufen Juli 12, 2012, von
http://html5boilerplate.com/
GestureWorks (Hg.). (o. J.). Open Source Multitouch Gesture Library and Illustrations. GestureWorks.
Abgerufen Juli 13, 2012, von http://gestureworks.com/features/open-source-gestures/
Han, J. Y. (2005). Low-Cost Multi-Touch Sensing through Frustrated Total Internal Refl ection. Gehalten auf der UIST’05, Seattle, WA, USA: ACM.
Hickson, I. (2012a, März 29). HTML5. Abgerufen Juni 25, 2012, von http://www.w3.org/TR/2012/WDhtml5-20120329/
Hickson, I. (2012b, März 29). 4.5.11 The figure element — HTML5. Abgerufen Juli 12, 2012, von
http://www.w3.org/TR/html5/the-figure-element.html#the-figure-element
Hickson, I. (2012c, Juni 23). 4.8.11 The canvas element — HTML Standard. Abgerufen Juni 26, 2012,
von http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html
Hickson, I. (2012d, Juni 26). The WebSocket API. Abgerufen Juli 7, 2012, von
http://dev.w3.org/html5/websockets/
Hinrichs, U., & Carpendale, S. (2011). Gestures in the wild. Proceedings of the 2011 annual conference on
Human factors in computing systems (S. 3023). ACM Press. doi:10.1145/1978942.1979391
Hitthaler, T. (2012, April 25). MINT Framework for muti-touch gestures | vvvv. Abgerufen Juni 15,
2012, von http://vvvv.org/blog/mint-framework-for-muti-touch-gestures
Ideum (Hg.). (2012, Juni 12). Platform Technical Specifications. Ideum - Exhibit Design + Multitouch
Software
and
Hardware.
Abgerufen
Juli
9,
2012,
von
http://ideum.com/products/multitouch/platform/specifications/
Ideum (Hg.). (o. J.). GestureWorks - Multitouch Framework - Features. GestureWorks: build gesturedriven apps. Abgerufen Juni 15, 2012, von http://gestureworks.com/features/
Jordà, S., Geiger, G., Alonso, M., & Kaltenbrunner, M. (2007). The reacTable (S. 139–146). New York,
NY: ACM Press. doi:10.1145/1226969.1226998
98
Anhang
Jordà, S., Julià, C. F., & Gallardo, D. (2010). Interactive Surfaces and Tangibles. XRDS: Crossroads, The
ACM Magazine for Students - The Future of Interaction, (Volume 16 Issue 4, Summer 2010),
21–28.
jQuery Community Experts. (2010). jQuery cookbook. Beijing; Cambridge: O’Reilly.
jQuery Foundation (Hg.). (o. J.). jQuery: The Write Less, Do More, JavaScript Library. Abgerufen Juni
27, 2012, von http://jquery.com/
Kaltenbrunner, M. (2009). reacTIVision and TUIO (S. 9–16). New York, NY: ACM Press.
doi:10.1145/1731903.1731906
Kammer, D., Keck, M., Freitag, G., & Wacker, M. (2010). Taxonomy and Overview of Multi-touch
Frameworks: Architecture, Scope and Features.
Kammer, D., Wojdziak, J., Keck, M., Groh, R., & Taranko, S. (2010). Towards a formalization of multitouch gestures (S. 49). ACM Press. doi:10.1145/1936652.1936662
Kesteren, A. van, & Çelik, T. (2012, Juni 25). Fullscreen. Abgerufen Juni 26, 2012, von
http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
Khronos Group (Hg.). (o. J.). OpenGL ES - The Standard for Embedded Accelerated 3D Graphics. Abgerufen Juni 26, 2012, von http://www.khronos.org/opengles/
Kinglsey-Hughes, A. (2012, März 30). The BIG browser benchmark: Chrome 18 vs Opera 11 vs Firefox
11
vs
IE9
vs
Safari
5.
ZDNet.
Abgerufen
Juli
3,
2012,
von
http://www.zdnet.com/blog/hardware/the-big-browser-benchmark-chrome-18-vs-opera-11-vsfirefox-11-vs-ie9-vs-safari-5/19418
Kiriaty, Y. (2009, August). Multitouch-Funktionen in Windows 7. Abgerufen Juni 1, 2012, von
http://msdn.microsoft.com/de-de/magazine/ee336016.aspx
Laborenz, K. (2011). CSS : das umfassende Handbuch. Bonn: Galileo Press.
Laufs, U., Ruff, C., & Zibuschka, J. (2010). MT4j – A Cross-platform Multi-touch Development Framework. Gehalten auf der EICS, Workshop on Engineering Patterns for Multi-Touch Interfaces.
Le Hegaret, P., & Jacobs, I. (2009, Juli 2). Frequently Asked Questions (FAQ) about the future of
XHTML. Abgerufen Juni 25, 2012, von http://www.w3.org/2009/06/xhtml-faq.html
Marrin, C. (2012, Juni 18). WebGL Specification. Abgerufen Juni 26, 2012, von
https://www.khronos.org/registry/webgl/specs/1.0/
McGreggor, D. (2011, März 21). Multitouch/Ginn - Ubuntu Wiki. Abgerufen Juni 1, 2012, von
https://wiki.ubuntu.com/Multitouch/Ginn
Meyer, E. A. (2000, April 14). CSS3 introduction. Abgerufen Juni 28, 2012, von
http://www.w3.org/TR/2000/WD-css3-roadmap-20000414
Meyer, E. A. (2007). CSS: das umfassende Handbuch : [behandelt CSS2 und CSS2.1]. Beijing [u.a.]:
O’Reilly.
Microsoft (Hg.). (o. J.-a). What’s New? Microsoft Surface. Abgerufen Juni 1, 2012, von
http://www.microsoft.com/surface/en/us/whatsnew.aspx
Microsoft (Hg.). (o. J.-b). Kinect für Xbox 360. Xbox.com. Abgerufen Juni 3, 2012, von
http://www.xbox.com/de-DE/Kinect?xr=shellnav
Microsoft (Hg.). (o. J.-c). Experience Things in a Whole New Way. Abgerufen Juni 13, 2012, von
http://www.microsoft.com/surface/en/us/whatissurface.aspx
Microsoft (Hg.). (o. J.-d). Download: Microsoft® Surface® 2.0 SDK and Runtime. Microsoft Download
Center.
Abgerufen
Juni
15,
2012,
von
http://www.microsoft.com/enus/download/details.aspx?id=26716
Microsoft (Hg.). (o. J.-e). Zeiger- und Gestikereignisse. Abgerufen Juli 3, 2012, von
http://msdn.microsoft.com/de-de/library/ie/hh673557(v=vs.85).aspx
Microsoft (Hg.). (o. J.-f). Using Input Simulator. msdn. Abgerufen Juli 7, 2012, von
http://msdn.microsoft.com/en-us/library/ff727911.aspx
Mozilla Foundation (Hg.). (2011, März 22). Mozilla Firefox 4 Release Notes. Abgerufen Juli 3, 2012, von
http://www.mozilla.org/en-US/firefox/4.0/releasenotes/
Nash, G., & Chippindale, C. (2002). European landscapes of rock-art. London; New York: Routledge.
99
Anhang
Nebeling, M., & Norrie, M. C. (2012). jQMultiTouch: Lightweight Toolkit and Development Framework for Multi-touch/Multi-device Web Interfaces. Gehalten auf der ACM EICS’12, Copenhagen, Denmark.
Net Applications (Hg.). (2012, Juni 1). Operating system market share. netmarketshare. Abgerufen Juni
1,
2012,
von
http://www.netmarketshare.com/operating-system-marketshare.aspx?qprid=10&qpcustomd=0&qptimeframe=M&qpsp=160
Norman, D. A. (2010). The way I see it: Natural user interfaces are not natural. interactions, 17(3), 6.
doi:10.1145/1744161.1744163
Open Exhibits (Hg.). (o. J.). What is Open Exhibits? Learn About the Multitouch Software Initiative.
Open Exhibits. Abgerufen Juni 15, 2012, von http://openexhibits.org/about/
Paper.js (Hg.). (o. J.). Paper.js — About. Abgerufen Juni 26, 2012, von http://paperjs.org/about/
Patonnier, J. (2012, Juli 4). transform - MDN. Abgerufen Juli 7, 2012, von
https://developer.mozilla.org/en/CSS/transform
Perrier, J.-Y. (2012, März 27). CSS animations - MDN. Abgerufen Juli 7, 2012, von
https://developer.mozilla.org/en/CSS/CSS_animations
Pettey, C. (2011, April 7). Gartner Says Android to Command Nearly Half of Worldwide Smartphone
Operating System Market by Year-End 2012. Gartner Newsroom. Abgerufen Mai 31, 2012, von
http://www.gartner.com/it/page.jsp?id=1622614
Pilgrim, M. (2010). HTML5 : up and running. Sebastopol, CA: O’Reilly.
PQ Labs (Hg.). (o. J.). Multi-Touch Screen for LCD large screen, plasma TV display. Abgerufen Juni 13,
2012, von http://multi-touch-screen.com/product_plus.html
Processing.js (Hg.). (o. J.). Understanding Rendering Modes in Processing.js. Abgerufen Juni 26, 2012,
von http://processingjs.org/articles/RenderingModes.html
Raab, F. (o. J.). Tuio.js. Abgerufen Juli 7, 2012, von http://fe9lix.github.com/Tuio.js/
Raggett, D., Le Hors, A., & Jacobs, I. (1997, Dezember 18). HTML 4.0 Specification. Abgerufen Juni 25,
2012, von http://www.w3.org/TR/REC-html40-971218/
Raggett, D., Le Hors, A., & Jacobs, I. (1999, Dezember 24). HTML 4.01 Specification. Abgerufen Juni 25,
2012, von http://www.w3.org/TR/1999/REC-html401-19991224/
Read, P., Meyer, M.-P., & Gamma Group. (2000). Restoration of motion picture film. Oxford; Boston:
Butterworth-Heinemann.
Rock Drawings in Valcamonica - UNESCO World Heritage Centre. (o. J.). Abgerufen Juli 10, 2012, von
http://whc.unesco.org/en/list/94
Rossi, J. (2011, September 20). Touch Input for IE10 and Metro style Apps. IEBlog - MSDN Blogs. Abgerufen Juni 4, 2012, von http://blogs.msdn.com/b/ie/archive/2011/09/20/touch-input-for-ie10and-metro-style-apps.aspx
Roth, T. (2008, Juni 9). DSI - Diffused Surface Illumination. Multitouch Dev Blog. Abgerufen von
http://iad.projects.zhdk.ch/multitouch/?p=90
Rusadi, F. I. (o. J.). npTuioClient. GitHub. Abgerufen Juli 7, 2012, von
https://github.com/fajran/npTuioClient
Saffer, D. (2009). Designing gestural interfaces : touchscreens and interactive devices. Sebastopol, CA
[etc.]: O’Reilly.
Samsung (Hg.). (o. J.). Samsung SUR40 with Microsoft® PixelSenseTM. Abgerufen Juli 13, 2012, von
http://m.samsung.com/us/business/commercial-display-solutions/LH40SFWTGC/ZA
Schechter, G. (2012, April 24). Using full-screen mode - MDN. Abgerufen Juni 26, 2012, von
https://developer.mozilla.org/en/DOM/Using_full-screen_mode
Schepers, D., Moon, S., & Brubeck, M. (2011, November 14). Touch Events version 2. Abgerufen Juli 2,
2012, von http://dvcs.w3.org/hg/webevents/raw-file/default/touchevents.html#touch-interface
Schöning, J., Brandl, P., Daiber, F., Echtler, F., Hilliges, O., Hook, J., Löchtefeld, M., u. a. (2008). MultiTouch Surfaces: A Technical Guide.
Seidl, M., Judmaier, P., Baker, F., Chippindale, C., Egger, U., Jax, N., Weis, C., u. a. (2011). Multi-touch
Rocks: Playing with Tangible Virtual Heritage in the Museum - First User Tests. Gehalten auf
100
Anhang
der VAST11: The 12th International Symposium on Virtual Reality, Archaeology and Intelligent Cultural Heritage, Prato, Italien.
Selfhtml (Hg.). (2005, August 22). SELFHTML: Einführung / Internet und WWW / Entstehung des
World Wide Web. Abgerufen Juni 25, 2012, von http://de.selfhtml.org/intro/internet/www.htm
Smith, M., & Sivonen, H. (2011, Juni 23). History - HTML WG Wiki. Abgerufen Juni 25, 2012, von
http://www.w3.org/html/wg/wiki/History
Smus, B. (2011, Mai 2). Multi-Touch for your Desktop Browser. Boris Smus. Abgerufen Juli 7, 2012, von
http://smus.com/multi-touch-browser-patch/
Strukt (Hg.). (2012, April). MINT - Multi-touch Interaction Framework. Abgerufen Juni 15, 2012, von
http://mint.strukt.com/
Tolmasky. (2011, Juni 21). United States Patent: 7966578. Abgerufen Mai 31, 2012, von
http://patft.uspto.gov/netacgi/nphParser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm
&r=1&f=G&l=50&s1=7,966,578.PN.&OS=PN/7,966,578&RS=PN/7,966,578
Tullis, T., & Albert, B. (2008). Measuring the user experience : collecting, analyzing, and presenting usability metrics. Amsterdam [u.a.]: Elsevier/Morgan Kaufmann.
Ubl, M., & Kitamura, E. (2012, März 13). Einführung zu WebSocket: Sockets im Web. HTML5 Rocks.
Abgerufen Juli 7, 2012, von http://www.html5rocks.com/de/tutorials/websockets/basics/
Vetter, R. J. (1994, Oktober). Mosaic and the World-Wide Web. North Dakota State University.
WHATWG (Hg.). (2012, Juni 1). FAQ - WHATWG Wiki. Abgerufen Juli 15, 2012, von
http://wiki.whatwg.org/wiki/FAQ#What_is_the_WHATWG.3F
Whorley, V. (2011). The History of Microsoft Surface. Abgerufen von www.microsoft.com/enus/news/events/ces/docs/2011/SurfaceHistoryFS.xps
Wigdor, D., & Wixon, D. (2011). Brave NUI world : designing natural user interfaces for touch and gesture. Amsterdam: Elsevier : Morgan Kaufmann.
Wright, M., Freed, A., & Momeni, A. (2003). OpenSound Control: State of the Art 2003. Proceedings (S.
153–160). Gehalten auf der Conference on New Interfaces for Musical Expression, Montreal,
Canada.
Wu, M., Chia Shen, Ryall, K., Forlines, C., & Balakrishnan, R. (2006). Gesture Registration, Relaxation,
and
Reuse
for
Multi-Point
Direct-Touch
Surfaces
(S.
185–192).
IEEE.
doi:10.1109/TABLETOP.2006.19
Yeow, C. C. (2005). Firefox secrets. SitePoint Pty. Ltd.
101
Anhang
Anhang B: Abbildungsverzeichnis
Abbildung 1: Drei Phasen einer Geste: Registration, Continuation, Termination......................................... 9
Abbildung 2: Microsoft PixelSense (vormals Surface 2) (Samsung (Hg.), o.J.) ............................................10
Abbildung 3: PQLabs G4 Multi-Touch Overlay (Quelle: multi-touch-screen.com)....................................11
Abbildung 4: Ideum Platform Multi-Touch-Tisch (Quelle: ideum.com)......................................................12
Abbildung 5: Grundsätzlicher Aufbau eines DIY-Multi-Touch-Tisches bei Diffused Surface
Illumination mit Projektor, Kamera und beleuchteter Oberfläche. ...............................................................13
Abbildung 6: FTIR-Setup schematisch dargestellt. ...........................................................................................14
Abbildung 7: DSI-Setup schematisch dargestellt...............................................................................................15
Abbildung 8: RDI-Setup schematisch dargestellt. .............................................................................................15
Abbildung 9: LLP-Setup schematisch dargestellt. .............................................................................................16
Abbildung 10: Marker (Fiducial) für die Erkennung von physischen Objekten aus dem „amoeba“-Set
von reacTIVision (Jordà et al., 2007. Bildquelle: http://reactivision.sourceforge.net) .................................17
Abbildung 11: Schichtenmodell mit Kriterien zur Klassifikation von Multi-Touch-Frameworks
(Kammer, Keck, Freitag, & Wacker, 2010). .......................................................................................................21
Abbildung 12: HTML5 Logo ................................................................................................................................30
Abbildung 13: Koordinatensystem für die Positionierung von Elementen auf einem Canvas zwei
Punkten (0,0) und (4,2) .........................................................................................................................................32
Abbildung 14: Screenshot der Onlineversion des mit Three.js umgesetzten Spiels TriggerRally. .............34
Abbildung 15: Resultat der in Listing 7 definierten Transformationen. Das halbtransparente Bild zeigt
die Ausgangsposition, der rote Punkt markiert den Ursprungspunkt (transform-origin). ........................41
Abbildung 16: Die Beziehung zwischen Berührung und den Objekttypen TouchEvent, TouchList und
Touch. ......................................................................................................................................................................44
Abbildung 17: Pointer vereint Touch, Stift und Mauseingaben (Rossi, 2011). .............................................47
Abbildung 18: Dropdown-Stil bei aktiver (links) und inaktiver (rechts) Touchunterstützung in Google
Chrome 20. (Suchformular: smashingmagazine.com) .....................................................................................49
Abbildung 19: Hummer.js Logo ..........................................................................................................................53
Abbildung 20: Architektur mit vier Schichten einer Webapplikation basierend auf jQMultiTouch
(Nebeling & Norrie, 2012) ....................................................................................................................................55
Abbildung 21: Konfigurationsoberfläche von Multi-Touch Vista..................................................................59
Abbildung 22: Microsoft Surface Simulator.......................................................................................................60
Abbildung 23: Vergrößerung/Verkleinerung der Abstände zwischen fünf Finger-Objekten mit Surface
Input Simulator ......................................................................................................................................................60
Abbildung 24: Adobe Edge mit Eigenschaftenfenster (links), Bibliothek (rechts) und Zeitleiste (unten).
..................................................................................................................................................................................62
Abbildung 25: Detailaufnahme einer Pitoti-Figur ............................................................................................67
Abbildung 26: Detailaufnahme einer Rosa Camuna, eines der am häufigsten verwendeten Symbole. ....67
Abbildung 27: Gesamter Felsen (Seradina 12) mit Interfaceelementen: Spielstationen (weiße Rosa
Camuna auf Felsen), Navigator und Maßstab (links oben bzw. rechts unten), Hilfe-Button und
Hintergrundinfo-Button (rechts oben bzw. links unten). ................................................................................68
Abbildung 28: Rosa Camuna-Symbole dienen als Einstiegspunkt für die Minispiele. ................................68
102
Anhang
Abbildung 29: Startansicht des Puzzle Warrier .................................................................................................71
Abbildung 30: Multi-Touch Webapplikation Kunstenaar mit einer von Besucher/innen hinterlassenen
Nachricht.................................................................................................................................................................72
Abbildung 31: Puzzleteil "Helm" in den zwei Varianten Weiß und Original (verwendet in den
Elementen <img> und <figure> in Listing 14). .................................................................................................75
Abbildung 32: Ablaufdiagramm des Spiels Puzzle ............................................................................................80
Abbildung 33: Test des Prototyps mit vier Personen........................................................................................83
Abbildung 34: Schlagschatten in ActionScript passt sich der Form eines Elements mit Transparenzen an.
..................................................................................................................................................................................93
Abbildung 35: CSS3-Schlagschatten wird auf das gesamte Element angewendet. .......................................93
Anhang C: Tabellenverzeichnis
Tabelle 1: Gebrauchsmuster für die Verwendung von Multi-Touch-Gesten ................................................. 8
Tabelle 2: TouchList-Attribute eines TouchEvent-Objekts (Brubeck et al., 2011). ......................................45
Tabelle 3: Attribute eines Objekts vom Typ Touch (Brubeck et al., 2011). ...................................................45
Tabelle 4: Zusätzliche in Version 2 der Touch Event Spezifikation (Editor’s Draft) vorgesehene Attribute
eines Objekts vom Typ Touch (Schepers et al., 2011). .....................................................................................46
Tabelle 5: Unterschiedliche Bezeichnungen der Touchevents in Mozilla Firefox und W3C Spezifikation.
..................................................................................................................................................................................47
Tabelle 6: MSPointer Events.................................................................................................................................48
Tabelle 7: Die von Adobe Edge erstellte Ordner- und Dateistruktur für exportierte Projekte. Kursive
Namen stellen Dateien dar. ..................................................................................................................................63
Tabelle 8: Desktop-Browser mit Unterstützung für Touchevents ..................................................................85
Tabelle 9: Vergleich der Merkmale von Hummer.js und jQMultiTouch ......................................................87
Anhang D: Listingverzeichnis
Listing 1: Quellcode eines einfachen HTML-Dokuments................................................................................28
Listing 2: Baum-Darstellung des HTML-Dokuments aus Listing 1 ...............................................................29
Listing 3: Beispiel für Chaining in jQuery. .........................................................................................................36
Listing 4: Ein einfaches JSON-Objekt eines Arrays mit zwei Objekten mit jeweils vier Name/WertPaaren. .....................................................................................................................................................................37
Listing 5: Einfache CSS-Regel mit drei Attributen ............................................................................................39
Listing 6: CSS-Regel mit Browser-Präfixe für CSS3-Attribute ........................................................................39
Listing 7: CSS-Regel für die Verschiebung um 100px an der X-Achse sowie Drehung um 20 Grad für
Bilder der Klasse transformed. Der Mittelpunkt der Transformation befindet sich bei X=60% und
Y=100%. (Patonnier, 2012) ..................................................................................................................................40
Listing 8: Beispiel-Code einer CSS-Animation mit zwei Schlüsselbilder (from, to). Ein H1-Element
bewegt sich dabei innerhalb von drei Sekunden um 100 Pixel von rechts nach links. Aus Gründen der
Lesbarkeit wurde auf Browser-Präfixe verzichtet. (Beispielcode nach Perrier, 2012) ..................................42
103
Anhang
Listing 9: Beispielcode bei Verwendung von Hammer.js .................................................................................52
Listing 10: Verwendung von jQMultiTouch um alle Bilder einer Website über Gesten dreh-, skalier- und
verschiebbar zu machen. .......................................................................................................................................55
Listing 11: Beispielcode für einen Eventhandler für eine Swipe-Right-Geste mit jQMultiTouch .............56
Listing 12: Eventhandler bei der Verwendung des Plug-in npTuioClient.....................................................57
Listing 13: Animation eines HTML-Elements mit der GreenSock Animation Platform in JavaScript. Das
zu animierende Element mit der ID "photo" wird per jQuery ausgewählt und die Höhe auf 200px
animiert. Die Animation dauert 1,5 Sekunden und verwendet die Easingfunktion Elastic.easeOut.........64
Listing 14: HTML-Markup für ein Puzzleteil mit Data-Attributen...............................................................75
Listing 15: CSS-Regeln für das Image-Element und die Klasse final des Figure-Elements. ........................77
Listing 16: jQuery Befehl für die Zuweisung von Data-Attributen, die die Werte der Rotation und Größe
beinhalten................................................................................................................................................................79
Listing 17: Aufruf der Methode touchable von jQMultiTouch für alle Puzzleteile ($(elements)) mit
Parameter zur Aktivierung der Gesten Drag, Scale und Rotate. Über die Callback-Funktionen
dragBefore und dragAfter werden Funktionen der Spiellogik zu Beginn bzw. Ende einer Drag-Geste
aufgerufen. ..............................................................................................................................................................79
Listing 18: Berechnung der neuen Werte für left und top (x und y) eines Elements bei einer Drag-Geste
..................................................................................................................................................................................80
Listing 19: Zuweisung der aktuellen CSS-Rotation des Elements oder des Werts 0, wenn kein
Rotationswert vorhanden ist. ...............................................................................................................................81
Listing 20: Limitierung der Scale-Werte auf Maximal- und Minimalwerte. .................................................82
Listing 21: Animation des Werts rotation der rechten Hand. Die Animation dauert 0.5 Sekunden und
verwendet eine Easingfunktion. Im Anschluss wird die Animation der Zeitleiste (tl) hinzugefügt. .........83
104

Documentos relacionados