Studienarbeit Entwicklung eines räumlichen Interaktionskonzeptes

im Studiengang Softwaretechnik und Medieninformatik Studienschwerpunkt Softwaretechnik der Fakultät Informationstechnik Sommersemester 2009

Björn Abheiden

Datum: 30. Juli 2009 Prüfer: Prof. Dr.-Ing. Andreas Rößler Zweitprüfer: Prof. Dr.-Ing. Reinhard Schmidt Eidesstattliche Erklärung

Hiermit versichere ich, die vorliegende Arbeit selbstständig und unter ausschließlicher Ver- wendung der angegebenen Literatur und Hilfsmittel erstellt zu haben.

Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt und auch nicht veröffentlicht.

Esslingen, den 30. Juli 2009 Unterschrift

ii Kurz-Zusammenfassung

Diese Arbeit zeigt Wege und Überlegungen zur Entwicklung eines räumlichen Interakti- onskonzeptes auf. Als Basis diente die Vorgabe eines Eingabegerätes, der Fernbedienung der Spielekonsole von . Die Wii-Fernbedienung, auch Wiimote genannt, dient dem Benutzer einer Wii-Konsole als primäres Spiel- und Steuerinstrument. Die Tatsache, dass die Wiimote über die standardisierte Bluetooth-Schnittstelle mit ihrer Konsole kommuniziert, brachte bereits eine Vielzahl von quelloffenen Projekten hervor, die es ermöglichen, die Daten der Wiimote auf einem PC oder einem Smartphone aus- zulesen. Anhand einiger Beispiele und einer konkreten Umsetzung erfahren Sie, wie sich die Computernutzung in den kommenden Jahren verändern könnte und welcher Art neue Benutzungsoberflächen sein könnten. Bisherige Benutzerschnittstellen „fesseln“ den Nutzer oft an eine Sitzgelegenheit. So würde sich beispielsweise niemand auf Dauer mit einer Tastatur in der Hand durch den Raum bewegen. Was wäre also, wenn die Bewegung bereits teil der Eingabe wäre? Die Wiimote hat mit ihren eingebauten Bewegungssensoren diese Bedienungsart einem breitem Publi- kum zugänglich gemacht, so dass der erste Schritt bereits gemacht sein dürfte, die eigenen motorischen Fähigkeiten als Eingabemethode zu nutzen.

iii Inhaltsverzeichnis

1 Einleitung 1

2 Grundlagen 2 2.1 Umdenken - Oder: Aus Vertrautem ausbrechen ...... 2 2.2 Wiimote, die Fernbedienung der Nintendo Wii ...... 2

3 Recherche 4 3.1 Wiimote-Software für PC/Mac ...... 4 3.1.1 Microsoft Windows ...... 4 3.1.2 Apple MacOS ...... 5 3.1.3 Linux ...... 5 3.2 Wiimote-Bibliotheken und -APIs ...... 6

4 Realisierung 7 4.1 Leistungsumfang der Beispielanwendung ...... 7 4.2 Nutzung der API WiiuseJ - eine Einführung ...... 8 4.3 Verwendete Erzeugungs- und Verhaltensmuster ...... 9 4.3.1 Erzeugungsmuster ...... 9 4.3.2 Verhaltensmuster ...... 9 4.4 Gestaltung der Oberfläche ...... 10 4.5 Actio et reactio ...... 12

5 Ergebnisse 13 5.1 Ergebnisse der Realisierung ...... 13 5.1.1 Bildrotation ...... 13 5.1.2 Softwaresteuerung „von außen“ ...... 13 5.2 Ergebnisse der Recherche ...... 14 5.2.1 Sony und Nintendos Antwort ...... 14 5.2.2 Microsofts Xbox 360 - völlig losgelöst ...... 14 5.2.3 David gegen Goliath ...... 15

6 Schluss 16 6.1 Weiterentwicklungspotenzial der Beispielanwendung ...... 16

A Auszug aus der Konfigurationsdatei 17

Literaturverzeichnis 18

iv Abbildungsverzeichnis

2.1 Ansichten der Wiimote (Bild [9]) ...... 3 2.2 (Aus-)Richtungen des Beschleunigungssensors (Bild [10]) ...... 3

3.1 Hauptfenster von WiinRemote (Bild [11])...... 4 3.2 Hauptfenster von DarwiinRemote (Bild [12]) ...... 5 3.3 Hauptfenster von wmgui (Bild [13])...... 5

4.1 Aufbau der Verbindung ...... 10 4.2 Verbindungsaufbau gescheitert ...... 10 4.3 Statusmeldung bei erfolgreicher Verbindung ...... 11 4.4 Ansicht auf eine Beispielgruppe aus Menüpunkten ...... 11 4.5 Hinweis auf eine erfolgte Verbindungstrennung ...... 11

v 1 Einleitung

Der Computerarbeitsplatz von heute zeichnet sich in den meisten Fällen durch das Vor- handensein der typischen Eingabegeräte Tastatur und Maus und eines Ausgabegerätes, den Monitor, aus. Die Szene der PC- und Konsolenspieler hat da zumindest einige weite- re Komponenten, mit denen die Spieler zwar der Anwendung nach gerechter interagieren können, allerdings ebenfalls an einen Stuhl oder eine sonstige Sitzgelegenheit gebunden sind. Einen ganz anderen Weg geht da beispielsweise das Unternehmen Nintendo mit ihrer 2006 vorgestellten Spielekonsole Wii. Das Eingabegerät der Konsole, die Wii-Fernbedienung oder auch Wiimote genannt, fordert den Spieler auf, sich zu bewegen. Durch natürliche Bewegungsabläufe schwingt der Spieler so einen Tennisschläger oder holt mit dem Eisen eines Golfers aus. Eine Rückkopplung der eigenen Körperhaltung durch die Darstellung einer Spielfigur auf dem Bildschirm in gleicher Pose verstärkt den Eindruck eines intuitiven Spielkonzeptes. Der Spieler wird wesentlich direkter in das Spiel eingebunden und erfährt zudem eine gewollte Bewegungsfreiheit. Auch außerhalb der Spielewelt lassen sich Anwendungen finden, die Eingaben von räum- lichen Daten interpretieren können, bzw. in denen sich solche Daten zur Steurung nutzen lassen. Ingenieure, Designer und Technische Zeichner nutzen zur Navigation im dreidimen- sionalen Raum und zur Modifikation dreidimensionaler Objekte häufig eine so genannte Spacemouse, welche ihnen ermöglicht, alle sechs Freiheitsgrade zu bedienen. Diese Geräte werden durch minimale Bewegungen aus ihrer Ruhelage bedient und kehren anschließend in diese Ausgangsposition zurück. Im Unterschied dazu wird die Wiimote frei im Raum bewegt und besitzt in der Hand ihres Benutzers keine Ruhelage. Deutlicher wird der Unter- schied, wenn man sich überlegt, dass Eingaben an einer Spacemouse eine relative Änderung zum Ausgangspunkt darstellen, die Wiimote aber die Rotationswerte aus der Haltung des Gerätes gegenüber der Richtung der wirkenden Gravitationskraft ermittelt.

1 2 Grundlagen

2.1 Umdenken - Oder: Aus Vertrautem ausbrechen

Nicht erst in der heutigen Zeit ist es schon fast üblich, elektronische Geräte und andere Erzeugnisse über ihren eigentlich Einsatzzweck hinaus zu nutzen. Hierbei gilt es nicht, den Mangel von passendem Equipment auszugleichen, sondern mit erfindungsreichen Modifi- kationen der Erste zu sein, der diese umsetzt. Mit dem Aufkommen einer neuen Technik- Generation gruppieren sich mittlerweile sehr schnell einige findige Entwickler, die sich mit dem Innenleben und den Finessen neuer Geräte vertraut machen. Im Falle der Spielekonsole Wii gab es gleich mehrere Teams und Einzelpersonen, die sich nicht nur mit der Konsole an sich, sondern auch mit dem neuartigen Eingabegerät ausein- andersetzten. Mit den Spielekonsolen beschäftigen sich die Entwickler so genannter Hacks deshalb ger- ne, weil sie ihre eigene Software oder alternative Betriebssysteme auf der, bis dahin mit properitärem Code betriebenen, Plattform zum Laufen bringen wollen.

2.2 Wiimote, die Fernbedienung der Nintendo Wii

Die Wii brachte mit der erwähnten Fernbedienung Wiimote, ein Steuerinstrument an den Endverbraucher, das er so noch nie gesehen hatte. Jedoch schaffte es Nintendo mit Hilfe der, in den Spielen angezeigten, Erklärungen, den Nutzer sehr schnell an dieses Eingabe- gerät zu gewöhnen. Im Gegensatz zu den kabellosen Lösungen anderer Hersteller zur Anbindung der Game- controller an die Konsole, setzt Nintendo auf einen weit verbreiteten Standard. Bis zu vier Wiimotes lassen sich mit der Wii via Bluetooth verbinden. Da sich heute in nahezu jedem aktuellen Notebook ein Bluetoothchip befindet und auch die Nachrüstung vorhandener Rechner mit einem USB-Bluetoothstick einfach und kostengünstig ermöglicht wird, kann die Wii-Fernbedienung auch mit einem Computer kommunizieren. Neben den äußerlich sichtbaren Tasten beherbergt die Wiimote versteckte Sensorik. Die Lage, die Bewegungsrichtung und die Bewegungsgeschwindigkeit, mit der die Fernbedie- nung bedient wird, werden durch einen Beschleunigungssensor ermittelt. Eine Infrarotka- mera, welche bis zu vier Quellen in ihrer Position und Intensität erkennen kann, wird z.B.

2 2 Grundlagen 2.2 Wiimote, die Fernbedienung der Nintendo Wii zur Steuerung eines Mauszeigers in den Menüs der Wii genutzt. Als Infrarotquelle kommt bei der Wii eine s.g. Sensorbar zum Einsatz. Der Sensorbar darf man dabei keine große In- telligenz zuschreiben, da sie wie eine Taschenlampe mit ständig leuchtenden Infrarot-LEDs funktioniert.

Abb. 2.1: Ansichten der Wiimote (Bild [9])

Abb. 2.2: (Aus-)Richtungen des Beschleunigungssensors (Bild [10])

3 3 Recherche

Wie bereits erwähnt, gibt es zahlreiche Projekte, die sich mit der Nutzung der Wiimote als HID (Human Interface Device) beschäftigen. Einige Programme stellen dabei eine grafische Ausgabe der Sensordaten, der betätigten Knöpfe und der Infrarotkamera dar. Andere verwenden die eingelesenen Daten zur Steue- rung des Mauszeigers und zum Auslösen von Aktionen durch Simulation eines Maustas- tenklicks.

3.1 Wiimote-Software für PC/Mac

Die, im Folgenden genannten Programme stellen eine unvollständige Auswahl von Projek- ten vor, die es für die einzelnen Betriebssysteme bereits gibt.

3.1.1 Microsoft Windows

• WiinRemote bietet auf einer kleinen, eher beschaulichen Oberfläche eine Übersicht über die wichtigsten Funktionen einer Wiimote.

Abb. 3.1: Hauptfenster von WiinRemote (Bild [11])

Darüber hinaus lässt sich mit WiinRemote auch der Mauszeiger mit Hilfe der In- frarotkamera, des Bewegungssensors oder des Analogsticks, eines zusätzlich an die Wiimote anzuschließenden Nunchucks, steuern.

4 3 Recherche 3.1 Wiimote-Software für PC/Mac

3.1.2 Apple MacOS

• DarwiinRemote für MacOS stellt das Pendant zu WiinRemote dar.

Abb. 3.2: Hauptfenster von DarwiinRemote (Bild [12])

3.1.3 Linux

• wmgui baut auf dem User-Space-Treiber CWiid auf und zeigt die empfangenen Daten der Wiimote an.

Abb. 3.3: Hauptfenster von wmgui (Bild [13])

• wminput baut ebenfalls auf CWiid auf und kann zur Steuerung des Mauszeigers genutzt werden. Mit bereits mitgelieferten Plug-Ins kann der Mauszeiger anstatt über den Bewegungssensor auch über die Infrarotkamera gesteuert werden.

5 3 Recherche 3.2 Wiimote-Bibliotheken und -APIs

3.2 Wiimote-Bibliotheken und -APIs

Zum direkten Entwicklungsstart eigener Applikationen, welche die Wiimote als Eingabe- gerät nutzen, lassen sich unterschiedliche Bibliotheken nutzen, welche unter anderem in C, C++ oder Java geschrieben wurden.

• WiiYourself! ist eine native C++-Bibliothek für Windows. Diese Bibliothek wurde jedoch gar nicht weiter betrachtet, da die Implementierung der Beispielanwendung, auf die noch später eingegangen wird, unter Linux stattfand. • Linux CWiid wurde in C geschrieben und kommt mit den bereits vorgestellten Programmen wmgui und wminput daher. Nach anfänglichen Versuchen, die mitge- lieferte Demo-Applikation wmdemo zu verschlanken und auf die eigenen Bedürfnisse anzupassen, wurde auch dieser Weg verworfen. • Wiiuse ist eine C-Bibliothek, die sowohl für Linux, als auch für Windows entworfen und implementiert wurde. • WiiuseJ baut auf Wiiuse auf und ermöglicht, dank der Nutzung von JNI, die Ent- wicklung von Java-Programmen mit Wiimote-Steuerung. Die Wahl fiel auf WiiuseJ, da sich in Verbindung mit bereits erlangten Kenntnissen in der Entwicklung von Be- nutzungsoberflächen mit Java Swing, die Implementierung einer Beispielanwendung unter Java anbot. (siehe [3])

6 4 Realisierung

Nach der Entscheidung über die zu verwendende API zur Anbindung der Wiimote an eine Applikation, stand gleichzeitig die Programmiersprache fest, in der die Beispielanwendung geschrieben werden sollte. Java wurde als Programmiersprache, eine Benutzungsoberflä- che unter Verwendung von Java Swing und NetBeans als Entwicklungsumgebung ausge- wählt.

4.1 Leistungsumfang der Beispielanwendung

Die Beispielanwendung ermöglicht den Aufruf von Menüpunkten mit Hilfe der Wiimote. Hierzu wird die Ausrichtung um die Y-Achse genutzt, um einen von maximal fünf wähl- baren Menüpunkten zu fokussieren. Die B-Taste bestätigt die Auswahl und sendet eine voreingestellte Tastenkombination an die Anwendung, die derzeit den Systemfokus inne hält. Damit die beschränkte Anzahl Menüpunkte ausgeweitet werden kann, lassen sich Gruppen von eben solchen fünf Punkten anlegen und mit den Tasten des Steuerkreuzes nacheinander aufrufen. Hierdurch erweitert sich die Möglichkeit der anzulegenden Aktionen theoretisch auf ein unendliches Maß, jedoch sollte stets bedacht werden, dass die Aufnahme des Be- nutzers keine unendlich hohe Anzahl an Elementen ermöglicht. Die Anwendung soll dem Benutzer eine Hilfe sein und keine zusätzlich Belastung darstellen. Zur besseren Erläuterung von Menüpunkten und Gruppen dienen diese Beispiele: Die Gruppe Datei enthält die Menüpunkte Öffnen, Speichern, Drucken, Schließen und Beenden. Die Gruppe Bearbeiten enthält die Menüpunkte Ausschneiden, Kopieren, Einfügen und Löschen. Die Gruppe Ansicht enthält die Menüpunkte Vollbild, Einpassen und Seitenbreite. Der Nutzer kann durch die Anpassung einer XML-Datei, in der die Menüpunkte, Gruppen und Tastenkombinationen hinterlegt sind, festlegen, für welche Aktionen er die Anwendung nutzen möchte. So können Benutzerprofile für die Steuerung einer Präsentationssoftware, eines Multimedia-Players oder anderer Programme entstehen.

7 4 Realisierung 4.2 Nutzung der API WiiuseJ - eine Einführung

4.2 Nutzung der API WiiuseJ - eine Einführung

„Im Anfang war das Wort“ heißt es bereits in der Bibel. Zur erfolgreichen Konversation zwischen Menschen bedarf es häufig einer großen Anzahl Worte. Die Kommunikation zwi- schen Geräten erfordert ein Festlegung von Protokollen, so dass die „Sprache“ des einen Gerätes, auch vom Gegenüber verstanden wird. Die Kommunikation zwischen dem Rechner und der Wiimote erfolgt via Bluetooth, einer standardisierten Funkschnittstelle und dem Protokoll für Human Interface Devices, kurz HID. Innerhalb der API WiiuseJ wird dem Anwendungsentwickler diese Kommunikations- beschreibung bereits abgenommen und so kann die Entwicklung sich auf die eigentliche Aufgabenerfüllung konzentrieren. Einen solchen Vorteil erhofft man sich natürlich prin- zipiell von jeder API, doch folgendes Beispiel soll die Verwendung von WiiuseJ noch ein wenig hinterleuchten. List. 4.1: Beispiel-Quellcode zur Verwendung einer Wiimote mit Hilfe von WiiuseJ 1 import wiiusej.WiiUseApiManager; import wiiusej.Wiimote; import wiiusej.wiiusejevents.physicalevents.*; import wiiusej.wiiusejevents.wiiuseapievents.*; import wiiusej.wiiusejevents.utils.WiimoteListener; 6 public class WiimoteSample { private Wiimote[] wiimotes = null;

public void connectWiimotes(int count) { 11 wiimotes = WiiUseApiManager.getWiimotes(count, true); for (int i = 0; i < wiimotes.length; i++) { myWiimoteListener.add(i, new MyWiimoteListener()); wiimotes[i].addWiiMoteEventListeners(new MyListener()); wiimotes[i].activateMotionSensing(); 16 } } }

class MyListener 21 implements WiimoteListener { public void onDisconnectionEvent(DisconnectionEvent arg0) {} public void onStatusEvent(StatusEvent arg0) {} public void onButtonsEvent(WiimoteButtonsEvent arg0) {} public void onMotionSensingEvent(MotionSensingEvent arg0) {} 26 public void onExpansionEvent(ExpansionEvent arg0) {} public void onIrEvent(IREvent arg0) {} public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {} public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {} public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {} 31 [...] }

Die Klasse WiimoteSample baut in der Funktion connectWiimotes() eine Verbindung zu der übergebenen Anzahl(count) Wiimotes auf. Der zusätzliche Übergabeparameter an die Funktion getWiimotes() ist vom Typ boolean. Hierüber wird festgelegt, ob die Wiimote bei erfolgter Verbindung kurz den integrierten Vibrationsmotor aktivieren soll. Zudem müssen die Datei wiiusej.jar, sowie die zwei Bibliotheken wiiuse und libWiiUseJ im Projekt(-ordner) vorliegen.

8 4 Realisierung 4.3 Verwendete Erzeugungs- und Verhaltensmuster

4.3 Verwendete Erzeugungs- und Verhaltensmuster

Da die Beispielanwendung im Laufe des 6. Semesters entstand, wurde die Entwicklung stark durch die Vorlesungen Objektorientierte Systeme 2, Softwarearchitektur und Benut- zungsoberflächen beeinflusst. Hierbei sei die Warnung angebracht, dass sich, beispielsweise bei der Verwendung von Ent- wurfsmustern, keine Musteritis einschleicht und die entstehende Anwendung mehr Muster erhält, als es ihr gut tun würde.

4.3.1 Erzeugungsmuster

Die Erzeugung der Klasse, zur Darstellung und Steuerung der Oberfläche, wird im Zu- sammenhang mit dem Betreiben der Software nur ein einziges Mal benötigt. Anschließend wird mit dem erzeugten Objekt weitergearbeitet, so dass sich die Verwendung des Erzeu- gungsmusters Singleton anbot.

4.3.2 Verhaltensmuster

Die Einführung in die verwendete API (siehe 4.2) hat bereits gezeigt, dass sich die Er- eignisse, die von der Wiimote ausgelöst werden, an einem Listener bemerkbar machen. Um die aufgefangenen Ereignisse an die Oberfläche weiter zu reichen und die Kopplung des Listeners mit der Oberfläche möglichst gering zu halten, wurde das Verhaltensmuster Observer eingesetzt. Die Oberfläche meldet sich bei den verbundenen Wiimote-Objekten als Beobachter an, welche sich dann wiederum an den Listenern anmelden. An dieser Stelle hätte man nun eine Beobachtungsebene weglassen können, jedoch ist dies erst in einem Stadium fortge- schrittener Musteritis aufgefallen, als ein zurück bereits einen unverhältnismäßig großen Aufwand bedeutet hätte.

9 4 Realisierung 4.4 Gestaltung der Oberfläche

4.4 Gestaltung der Oberfläche

Um den Benutzer stets über die, aktuell möglichen, Menüpunkte zu informieren, sollte ein freier Blick auf die Anwendung ermöglicht werden. Dieser Anforderung nachzukommen ist mit einem Fenster, das sich immer im Vordergrund des Bildschirmes präsentiert, am einfachsten zu erreichen. Da ausschließlich der Inhalt des Fensters für den Benutzer von Bedeutung ist und die Steuerung über die Wiimote statt findet, bedarf es weder Schaltflächen zum Anklicken mit der Maus, noch einer Titelzeile, da selbst die Beendigung der Anwendung über die Wiimote vollführt wird.

Abb. 4.1: Aufbau der Verbindung

Abb. 4.2: Verbindungsaufbau gescheitert

10 4 Realisierung 4.4 Gestaltung der Oberfläche

Mit dem Start der Anwendung wird die Verbindung zur Wiimote aufgebaut und mit einer textuellen Ausgabe auf dem, radial verlaufendem, blau-grauen Hintergrund begleitet. Nach erfolgreicher Verbindung zeigt eine Statusmeldung den Zustand der Batterien an, der von der Wiimote als Wert in Prozent übermittelt wird.

Abb. 4.3: Statusmeldung bei erfolgreicher Verbindung

Die Menüpunkte werden um den Mittelpunkt angeordnet. Durch die Hervorhebung des aktuell ausgewählten Menüpunktes in der Farbe rot wird dem Benutzer ein visuelles Feed- back gegeben. Bewegt man nun die Wiimote um ihre Y-Achse, werden die benachbarten Menüpunkte ausgewählt.

Abb. 4.4: Ansicht auf eine Beispielgruppe aus Menüpunkten

Die Abschaltung der Wiimote führt zur Absetzung des onDisconnect-Ereignisses. Da dem Benutzer damit das Steuerelement der Anwendung fehlt, gibt es die Statusmeldung „Verbindung getrennt“ aus und beendet sich kurz darauf automatisch.

Abb. 4.5: Hinweis auf eine erfolgte Verbindungstrennung

11 4 Realisierung 4.5 Actio et reactio

4.5 Actio et reactio

Dank der Implementierung des Listeners erhält die Anwendung die ausgewerteten Daten der Wiimote und leitet sie über die Ereignisse an ihre Beobachter (siehe 4.3.2) weiter.

List. 4.2: Reaktion auf die Betätigung einer Taste an der Wiimote public void onButtonsEvent(WiimoteButtonsEvent arg0) { int btnCode = arg0.getButtonsJustReleased(); 3 if (btnCode != 0) { buttonReleased = WiimoteButton.getButton(btnCode); } setChanged(); notifyObservers(WiiEvent.BUTTON); 8 }

Die Auswertung der erhaltenen, bzw. abgeholten Daten geschieht erst beim Beobachter. Innerhalb der Beispielanwendung übernimmt dies die gleiche Klasse, die ebenfalls für die Versorgung der grafischen Benutzeroberfläche zuständig ist. Auf eine Trennung nach dem Model-View-Controller-Muster (MVC) wurde verzichtet.

List. 4.3: Entgegennahme und Reaktion auf die Benachrichtigungen an die Beobachter public void update(Observable o, Object arg) { 2 if (o instanceof MyWiimotes && arg instanceof WiiEvent) { MyWiimotes myWiimote = (MyWiimotes) o; WiiEvent wiiEvent = (WiiEvent) arg; switch (wiiEvent) { case STATUS: 7 connectionEstablished(); break ; case BUTTON: [...] case MOTIONSENSING: 12 if (Math.abs(wiimote.getRoll(0) - 180) > 0 && Math.abs(wiimote.getRoll(0) - lastValue) > 10) { lastValue = wiimote.getRoll(0); showButtons(); } break ; 17 case DISCONNECT: exitWiiMenu(); break ; } } 22 }

Die Berücksichtigung von Daten des Bewegungssensors führen erst dann zu einem Neu- zeichnen der Menüpunkte, wenn der aktuelle Wert sich um einen (derzeit) festen Wert von zehn Grad gegenüber dem gespeicherten Wert unterscheidet. Diese Maßnahme wurde getroffen, da ein Übergang zwischen zwei Menüpunkten unweigerlich zu einem „Flackern“ führte und bei der Betätigung der B-Taste unter Umständen eine ungewollte Aktion aus- geführt worden wäre.

12 5 Ergebnisse

5.1 Ergebnisse der Realisierung

5.1.1 Bildrotation

Zu Beginn der Implementierung der Beispielanwendung war die Anzeige einer Wiimote- Abbildung geplant, die sich, entsprechend ihrem Original, dreht und sich so den Menü- punkten zuwendet. Dieses Vorhaben missglückte leider, da sich das Drehen der Abbildung als komplexer erwies, als anfangs erwartet. Bei der Rotation ist wichtig, zu beachten, um welchen Punkt diese statt findet. Das rotierte Bild wird in einem angepassten Zeichen- bereich eingeblendet, der für die Darstellung in positiver Drehrichtung ausreichend groß war, allerdings bei einer Drehung in negativer Richtung nicht in benötigter Weise ange- passt wurde. Dadurch „verschwand“ die Abbildung. Die Erkenntnisse aus der Arbeit an der Rotation von Abbildungen konnte allerdings im Projekt des Faches „Grafische Benut- zungsoberflächen“ Anwendung finden. Somit waren die investierten Stunden zumindest nicht umsonst.

5.1.2 Softwaresteuerung „von außen“

Eine weitere Herausforderung stellte die Ermittlung des Programmes dar, welches der Benutzer steuern möchte. Zwei Vorgehensweisen wurden hierbei in Betracht gezogen. 1. Das Betriebssystem oder die JVM stellt Funktionen zur Verfügung, die diese Infor- mationen preis geben. 2. Das Programm im Vordergrund nimmt die Befehle der Tastatur entgegen. Die An- wendung sendet die auszuführenden Befehle als Tastenkombination an das Pro- gramm, welches dann wie gewohnt reagiert. Zu Punkt 1 gab es nach einiger Recherche leider keine aussichtsreichen Resultate. Zu Punkt 2 war schon nach kurzer Zeit das ein oder andere Beispiel gefunden. Mit diesen Informationen konnten die Javadocs durchsucht werden. Die Klasse java.awt.Robot bilde- te schließlich die Grundlage für die Steuerung. Das Programm, welches nun gesteuert wird, wird damit leider nicht ermittelt und eine Anpassung der Menüpunkte an unterschiedliche Software fällt damit leider aus, jedoch lassen sich die gängigsten Tastenkombination zur Steuerung nutzen (z.B. Strg + S zum Speichern oder Strg + W zum Schließen).

13 5 Ergebnisse 5.2 Ergebnisse der Recherche

5.2 Ergebnisse der Recherche

In der aktuellen Entwicklung von räumlichen Interaktionskonzepten dürfen wir uns auf Neuerungen aus den Reihen der Spielkonsolen-Industrie freuen. Da sich das Konzept von Nintendo in hohen Verkaufszahlen wiederspiegelt, springen nun auch Sony und Microsoft auf. Die Zeit, die sich Nintendos Konkurrenz gelassen hat, wurde genutzt, um mehr als eine Kopie der Wiimote auf den Markt zu bringen.

5.2.1 Sony und Nintendos Antwort

Sony wartet laut Medienberichten 2010 mit einem „Motion Controller“ auf, der der Kon- kurrenz einige Generationen voraus sei (siehe [4]). Eine Präsentation auf der Spielemesse zeigte, was der Prototyp des Controllers bereits jetzt kann (siehe [8]) Nintendo hat auf diesen Entwicklungsvorsprung reagiert und brachte vor Kurzem eine Erweiterung für die Wiimote heraus, die „Wii MotionPlus“ getauft wurde. Mit diesem Zu- satzmodul, welches an den Erweiterungssteckplatz der Wiimote angesteckt wird, erhält der Controller gleich zwei zusätzliche Beschleunigungssensoren, die eine höhere Genauigkeit bei der Erfassung der Bewegungen ermöglicht. Die Marketing-Abteilung von Nintendo hat hierbei wieder darauf geachtet, direkt mit einem Zubehör auch die entsprechende Software zu liefern. Das „ Resort“ enthält beim Kauf bereits eine „Wii MotionPlus“- Erweiterung. (siehe [2])

5.2.2 Microsofts Xbox 360 - völlig losgelöst

Auch Microsofts Anstrengungen der Xbox-Entwicklungsabteilung richten sich nach den natürlichen Bewegungsabläufen des Menschen. Hierbei soll aber ebenso wenig ein Wiimote- Klon entstehen. Die erste Präsentation des „Project Natal“ genannten Systems konnten die Besucher der E3 in Los Angeles Anfang Juni 2009 bewundern. Zwei Kameras, ein Mikrofon und ein Tiefensensor erfassen den Spieler, der nun direkt mit und in der virtuellen Welt agiert. „Project Natal“ setzt Bein- und Arm-, sowie Hand- und Gesichtsbewegungen in Spielaktionen um. Dieses System wird als Erweiterung zur Xbox 360 angeboten. Der Verkaufsstart ist zum Zeitpunkt des Spiegel-Artikels vom 2. Juni 2009 noch nicht bekannt gewesen. (siehe [7])

14 5 Ergebnisse 5.2 Ergebnisse der Recherche

5.2.3 David gegen Goliath

Neben den Großen im Bereich der Spiele- und Spielkonsolenentwicklung, gibt es immer wieder auch interessante Tüftlerprojekte, in denen vorhandene Hardware neuen Verwen- dungszwecken zugeführt wird. Am 23. Juni 2009 berichtete golem.de über eine „Bildschirmwaffe aus der Garage“. Der Artikel lässt arge Zweifel an der Echtheit des Vorführungsvideos aufkommen, in dem eine Spielzeugpistole mit einem Bildschirm, einigen Tasten und den Bewegungssensoren einer Gyro-Maus ausgestattet wurde. Ziel dieses Aufbaus ist die Steuerung von Ego-Shootern über die Bewegung der Waffe im Raum. Ein Schwenk mit der Waffe führt zu Bewegungs- abläufen im Spiel, so dass der Spieler auf dem angebrachten Monitor das in der virtuellen Welte sieht, wohin er in der realen Welt gerade zeigt. (siehe [5])

15 6 Schluss

Viele Entwicklungen zeigen, vor allem in der Spieleindustrie, einen Weg zu einer immer befreiteren Form der Steuerung, doch auch in der Industrie lassen sich Formen der räumli- chen Interaktion vorstellen. Hierbei wird natürlich eher auf den Bereich der 3D-Planung , -Konstruktion und -Präsentation geschaut, als auf einen Ersatz der Tastatur zum Verfassen von Texten. Neben dem Einsatz im privaten und kommerziellen Umfeld ist ebenso ein Gebrauch im militärischem Bereich denkbar. Beispielsweise könnte der Soldat von morgen durch präzise Bewegungssensoren natürlichere Bewegungsabläufe an Roboter geben, welche in einem Ge- fahrenbereich die Sicherung und den Schutz der zivilen Bevölkerung gewährleistet. Robo- ter werden im Bereich der Bombenentschärfung genutzt und mit einer Joystick-Steuerung gelenkt oder fahren automatisierte Programme ab. Der Einsatz von natürlicheren Einga- bemethoden würde so die Einarbeitungszeit verkürzen.

6.1 Weiterentwicklungspotenzial der Beispielanwendung

Die vorgestellte Beispielanwendung lässt derzeit noch viel Spielraum für Weiterentwick- lungen. So wäre eine Erkennung der zu steuernden Software wünschenswert. Hiermit ließen sich Tastenkombinationen für einzelne Programme gezielt laden. Derzeit wird nur ein Bewegungsablauf, die Drehung um die Y-Achse, genutzt. Eine Neigung der Wiimote nach vorne könnte z.B. aus einem Menüpunkt „Vorlauf“ einen „schnellen Vorlauf“ machen.

16 A Auszug aus der Konfigurationsdatei

List. A.1: Auszug aus der myMenu.xml

3 Datei Öffnen 8 // Taste STRG drücken und gedrückt halten 17 true 13 // Taste 'O' kurz drücken 79 false 18 // Taste STRG drücken und wieder loslassen 17 false 23 Speichern 17 true 28 // Taste 'S' kurz drücken 83 false 33 17 false 38 [...] Bearbeiten 43 [...] 48 Ansicht Vollbild [...]

17 Literaturverzeichnis

[1] Markus Dahm, Grundlagen der Mensch-Computer-Interaktion, 2006, http:// www.pearson-studium.de; (1. Auflage)

Webseiten

[2] Nintendo, deutsche Unternehmens-Homepage, http://www.nintendo.de; Stand: 2009-07-29 [3] Projektseite von WiiuseJ bei „Google Code“, http://code.google.com/p/ wiiusej/; Stand: 2009-07-29 [4] Giga.de, Sony - Bewegungscontroller sei der Konkurrenz einige Generationen vor- aus, http://www.giga.de/usernews/00018487-sony-bewegungscontroller- sei-der-konkurrenz-einige-generationen/; Stand: 2009-07-23 [5] golem.de, Wireless Game Gun - die Bildschirmwaffe aus der Garage, http:// www.golem.de/0906/67946.html; Stand: 2009-06-23 [6] WiiBrew Wiki, http://wiibrew.org; Stand: 2009-06-20 [7] Spiegel online, Gaming mit Ganzkörpereinsatz, http://www.spiegel.de/ netzwelt/spielzeug/0,1518,628187,00.html; Stand: 2009-06-02 [8] YouTube, Video der Präsentation des Sony „Motion Controllers“, http://www. youtube.com/watch?v=qiX-26VL4bM; Stand: 2009-06-02

Abbildungsquellen

Stand: 2009-07-30 [9] WiiMote Project, http://www.nipissingu.ca/iteach/iTeach-Resources. htm [10] WiiMote Beschleunigungssensor, http://twenty7studio.ch/BA/wordpress/ wp-content/uploads/2009/03/pry-wiimote.gif [11] WiinRemote, http://onakasuita.org/wii/index-e.html [12] DarwiinRemote, http://sourceforge.net/projects/darwiin-remote/ [13] wmgui, http://www.circuitdb.com/articles/7/3

18