Interaktives Augmented-Reality

Transcription

Interaktives Augmented-Reality
Fachbereich 4: Informatik
Interaktives Augmented-Reality-Spiel
Studienarbeit
im Studiengang Computervisualistik
vorgelegt von
Marko Heinrich
Betreuer:
Prof. Dr. Stefan Müller
(Institut für Computervisualistik, AG Computergraphik)
Koblenz, im Juni 2006
Institut für Computervisualistik
AG Computergraphik
Prof. Dr. Stefan Müller
Postfach 20 16 02
56 016 Koblenz
Tel.: 0261-287-2727
Fax: 0261-287-2735
E-Mail: [email protected]
Fachbereich 4: Informatik
Aufgabenstellung für die Studienarbeit
Marko Heinrich
Thema:
Interaktives Augmented Reality Spiel
In keinem Bereich der Informatik hat sich in den letzten Jahren die Hardware so rasant entwickelt, wie im
Bereich der Computergrafik. So kann man heute mit vergleichsweise kostengünstigen Graphikkarten virtuelle
Welten in einer Komplexität und Qualität darstellen, für die bis vor wenigen Jahren noch Investitionen in
Millionenhöhe nötig waren.
Kaum ein Gebiet der Informatik bietet ein so umfangreiches und ungenutztes Potential wie die Augmented
Reality. Insbesondere findet die visuelle Ergänzung immer mehr bei interaktiver Unterhaltungssoftware
Verwendung. Der Mögliche Einsatz einer solchen Technik im Bereich der Unterhaltung soll hier am Beispiel
einer Art Geschicklichkeits-/Reaktionsspiel aufgezeigt werden.
Eine Herausforderung ist neben der 3D-Darstellung aber auch die 3D-Interaktion, die in den Bereichen
Virtuelle Realität und Augmented Reality neue Potentiale für innovative Mensch-Maschine-Schnittstellen
vermuten lässt. Im Rahmen dieser Arbeit soll daher eine spielerische Anwendung mit 3D-Eingabmöglichkeiten
verbunden werden.
Ziel dieser Arbeit ist die Konzeption und Entwicklung eines interaktiven AR Geschicklichkeits/Reaktionsspiels.
Schwerpunkte dieser Arbeit sind:
1. Einarbeitung in das AR-Toolkit
2. Entwicklung eines Spielkonzepts
3. Implementierung und Umsetzung des Spielkonzeptes
4. Demonstration der Ergebnisse an Beispielen
5. Dokumentation der Ergebnisse
Koblenz, den 24.10.2005
- Prof. Dr. Stefan Müller-
Erklärung
Ich versichere, dass ich die vorliegende Arbeit selbstständig verfasst und keine
anderen als die angegebenen Quellen und Hilfsmittel benutzt habe.
Ja
Nein
Mit der Einstellung dieser Arbeit in die Bibliothek bin ich
einverstanden.
□ □
Der Veröffentlichung dieser Arbeit im Internet stimme ich zu.
□ □
Ort, Datum
Unterschrift
3
Inhaltsverzeichnis
1
EINLEITUNG .......................................................................................................5
1.1 Motivation ......................................................................................................................... 5
1.2 Ziel ..................................................................................................................................... 7
1.3 Aufbau ............................................................................................................................... 7
2
GRUNDLAGEN ....................................................................................................8
2.1 Augmented Reality ........................................................................................................... 8
2.2 Marker-Tracking.............................................................................................................. 8
2.3 Stand der Technik: Beispiele aus dem Bereich Unterhaltungssoftware mit
Augmented Reality Bezug..................................................................................................... 10
3
KONZEPT .........................................................................................................12
4
UMSETZUNG ....................................................................................................14
4.1 ARToolKit....................................................................................................................... 14
4.2 Implementierung des Spiels „CatchAR“ ...................................................................... 16
4.3 Probleme und Tipps ....................................................................................................... 22
5
ERGEBNISSE .....................................................................................................24
5.1 Die 3D-Modelle ............................................................................................................... 24
5.2 Benötigte Hardware ....................................................................................................... 25
5.3 Das Spiel „CatchAR“ ..................................................................................................... 26
5.3.1 Spielprinzip............................................................................................................ 26
5.3.2 Installation ............................................................................................................. 27
5.3.3 Spielablauf ............................................................................................................. 27
6
FAZIT / ERWEITERUNGSMÖGLICHKEITEN .....................................................32
6.1 Fazit ................................................................................................................................. 32
6.2 Erweiterungsmöglichkeiten ........................................................................................... 32
7
ANHANG ...........................................................................................................35
7.1 Eingesetzte Software ...................................................................................................... 35
ABBILDUNGSVERZEICHNIS ....................................................................................36
QUELLENVERZEICHNIS .........................................................................................37
4
1 Einleitung
1.1 Motivation
Die Idee für die Implementierung des hier vorgestellten interaktiven AugmentedReality-Spiels stammt aus dem LucasArts „Point and Click“ Adventure „Sam und
Max Hit the Road“ aus dem Jahre 1993. In diesem Spiel steuert der Spieler die
beiden Hauptakteure Sam (einen Hundedetektiv) und Max (einen aggressiven,
psychopatischen Hasen, mit hang zur unnötigen Gewalt) in einer sarkastische
Geschichte um die Suche nach einem Yeti quer durch Amerika.
In das eigentliche Adventure-Spielgeschehen wurden zur Auflockerung einige
kleine Zusatzspiele integriert, z. B. eine Variation des Spiels „Schiffe versenken“.
Unter diesen Zusatzspielen befindet sich auch das Spiel „Wak-A-Rat“, welches
den Anstoß für das in dieser Studienarbeit entwickelte Augmented-Reality-Spiel
liefert.
Die Aufgabe des Spielers in „Wak-A-Rat“ ist es Mäusen, die aus einer Kiste
erscheinen, auf den Kopf zu schlagen. Pro getroffene Maus gibt es dafür Punkte.
Abb. 1: Sam und Max hit the road
5
Variationen
Mittlerweile existieren eine Vielzahl von alternativen Umsetzungen des
„Wak-a-rat“ Spiels im Internet.
Eine einfache Variante des Originals ist unter dem gleichen Namen im Internet zu
finden. Bei „Wak-a-rat“1 muss der Spieler mit der Maus als Eingabegerät aus
einem Käse erscheinende Mäuse treffen. Nach zehn getroffenen Mäusen steigt der
Spieler einen Level auf. Um zum nächsten Level zu gelangen muss er 10 Mäuse
treffen.
Eine weitere, im Laufe dieser Studienarbeit erschienene Version ist „Tontie“2. Der
Ablauf dieses Spiels ist wesentlich komplexer als der des Originals, das
Grundprinzip ist jedoch das gleiche geblieben. Es müssen erscheinende Figuren
durch drücken der Zahlen auf der numerischen Tastatur getroffen werden Als
Erweiterungen existieren hier verschiedene Arten von Figuren („Gute“ und
„Böse“) und Bonusobjekte, wie z. B. Geldmünzen und Lebenspunkte. Diese
Geldmünzen kann man in einem virtuellen Laden gegen Verbesserungen
eintauschen.
Abb. 2: Wak-a-rat
1
2
Abb. 3: Tontie
http://www.alles-4-u.com/wak_a_rat/wakarat.html
http://www.eyezmaze.com/tontie/v1/index.html
6
Vereinzelt existieren auch Hardware-Umsetzungen dieses Spielprinzips. Diese
sind überwiegend auf Jahrmärkten zu finden.
1.2 Ziel
Ziel dieser Studienarbeit ist es, ein interaktives augmented reality Reaktions- und
Geschicklichkeitsspiel unter Verwendung des ARToolKits zu entwickeln. Von
allen Seiten wird propagiert, dass Kinder zu viel Zeit vor dem Computer
verbringen und sich zu wenig bewegen. Ein Augmented-Reality-Spiel löst dieses
Problem indem Computer spielen und Bewegung miteinander kombiniert werden.
Außerdem ist ein Spiel ein guter Weg, einer breiten Masse auf spielerische Art
und Weise eine neue Technologie nahe zu bringen. Augmented-Reality-Spiele
haben in den letzten Jahren auch in der Unterhaltungsindustrie eine immer
größere Verbreitung erlangt.
1.3 Aufbau
Im folgenden Kapitel werden die Grundlagen für das bessere Verständnis dieser
Studienarbeit vorgestellt. Hierzu gehören neben Einführungen in Augmented
Reality und das Marker-Tracking, die Vorstellung des Stands der Technik anhand
zweier Beispiele aus dem Bereich der Unterhaltungssoftware, die Augmented
Reality verwendet. In Kapitel 3 wird das ursprüngliche Konzept vorgestellt, das
Vorüberlegungen zur Umsetzung beinhaltet.
Die technische Seite des ARToolKits sowie des Spieles CatchAR wird in Kapitel
4 behandelt, außerdem wir an dieser Stelle auf einige aufgetretene Probleme,
sowie deren Lösung eingegangen.
Die Ergebnisse werden in Kapitel 5 gezeigt. Dort wird auf die Erstellung der 3DModelle und die für das Spiel benötigte Hardware eingegangen. Darüber hinaus
wird das umgesetzte Spielkonzept in diesem Kapitel vorgestellt.
Den Abschluss dieser Ausarbeitung bilden ein Fazit und ein Ausblick mit
Verbesserungs- und Erweiterungsvorschlägen.
7
2 Grundlagen
2.1 Augmented Reality
Der Begriff „Augmented Reality“ steht für eine „erweiterte Realität“. Dabei
werden digitale Informationen in das Sichtfeld des Benutzers (hier: Kamerabild)
projiziert. Diese Informationen überlagern und ergänzen dadurch das reale Bild.
In Augmented Reality schwinden die Grenzen zwischen Realität und
Computergrafik. Die Einsatzgebiete des Augmented Reality sind unbegrenzt.
Neben dem Einsatz in den Bereichen der Medizin, Bildung und Unterstützung von
Arbeitsprozessen
findet
es
auch
immer
größere
Verwendung
in
der
Unterhaltungsindustrie.
Das technische Hauptaugenmerk liegt bei Augmented Reality auf dem TrackingVerfahren. Dieses dient dazu, die Realität zu erkennen und zu analysieren und die
gewonnenen Informationen zur Weiterverarbeitung bereitzustellen. Mit Hilfe
dieser Informationen können nun die Zusatzinformationen über das reale Sichtfeld
eingeblendet werden
2.2 Marker-Tracking
Damit die virtuellen Objekte perspektivisch korrekt und passend skaliert
angezeigt werden können, werden Orientierungspunkte benötigt. Hierzu werden
bei optischem Tracking oft so genannte „Marker“ verwendet (siehe Abb. 4).
8
Abb. 4: Beispielmarker
Die Verwendung von Markern bringt einige Nachteile mit sich. So müssen die
Marker an den speziellen Orten, an denen später Informationen eingeblendet
werden sollen, angebracht werden. Hierdurch sind die Marker natürlich ständig
für jedermann sichtbar, auch wenn gerade nicht getrackt wird.
Die Vorteile beim Marker-Tracking liegen in dem geringen Aufwand und den
Kosten, da beliebig viele Marker einfach gedruckt werden können. Außerdem
sind keine Verkabelungen nötig und dadurch bedingt wird eine hohe Mobilität
erreicht. Zusätzlich bekommt man im Vergleich zu anderen optischen
Trackingverfahren nicht nur die Identifizierung des Markers (ID), sondern auch
dessen
Ausrichtung
mitgeliefert.
Dabei
werden
die
Marker
anhand
bildverarbeitender Berechnungen erkannt und ausgewertet. Genau diese
Funktionalität bietet das ARToolKit, welches in dieser Studienarbeit verwendet
wurde.
Die Probleme bei Augmented Reality in Verbindung mit Marker basiertem
Tracking liegen hauptsächlich im Bereich der Benutzerführung und der
Performanz. Bei der Benutzerführung wird häufig noch auf die Verwendung von
Tastatur und Maus zurückgegriffen. Dies zerstört jedoch einen Teil der
Immersion3, die auch bei Augmented Reality sehr wichtig ist.
3
Lat. Immersio = Eintauchung; Eintauchen in eine virtuelle Realität, ohne die wirkliche Realität
wahrzunehmen.
9
2.3 Stand der Technik: Beispiele aus dem Bereich
Unterhaltungssoftware mit Augmented Reality Bezug
Die bekannteste Anwendung von Augmented Reality aus dem Bereich der
Unterhaltungsindustrie ist das von Sony entwickelte „EyeToy“4 für die
Playstation 2, einer ebenfalls von Sony entwickelten Spielekonsole. Dabei wird
von einer Kamera die Bewegungen des Spielers aufgezeichnet und dadurch das
Spielgeschehen beeinflusst.
Abb. 5: EyeToy Kinetic
Die Spielerposition beruht hier nicht auf einer Marker-Erkennung, sondern auf
einem Motion-Tracking-System, das mit Differenzbildern arbeitet. Der Nachteil
dieser Technik ist, dass ein möglichst einfarbiger Hintergrund im Video benötigt
wird und die Kamera nicht bewegt werden darf.
Ein weiteres Beispiel ist das Augmented-Reality-Spiel „The Invisible Train“5 der
Universität Wien. Hierbei können mehrer Spieler parallel virtuelle Züge auf einer
realen Holzeisenbahnstrecke fahren lassen. Diese Züge sind nur durch PDA’s in
Verbindung mit einer Kamera sichtbar, an denen eine Kamera angebracht ist. Die
4
5
http://www.eyetoy.com
http://studierstube.icg.tu-graz.ac.at/invisible_train/
10
Spieler können interaktiv in den Streckenverlauf eingreifen, indem sie virtuelle
Weichen umstellen können. Das Ziel des Spiels ist es, einen Zusammenstoß der
fahrenden Züge zu vermeiden.
Abb. 6: Invisible Train auf PDA’s
11
3 Konzept
Die Überlegung für diese Studienarbeit bestand darin, aus dem Ideenanstoß der
Vorlage „Wak-a-rat“ aus „Sam und Max“ ein komplexeres Augmented-RealitySpiel zu entwickeln. Da das Originalspiel ein relativ einfaches Spielprinzip
besitzt, ist dafür beim Spieler keine Langzeitmotivation vorhanden. Bei der
Erstellung eines komplexeres Spielprinzips muss jedoch stets berücksichtig
werden, dass die Spielbalance immer ausgeglichen bleibt.
Auch sollte ein Reaktionsspiel nicht zu schnell ablaufen, damit der Spieler nicht
durch eine zu schwere Spielbalance demotiviert wird. Ist das Spiel zu langsam,
läuft man Gefahr, dass der Spieler sich zu schnell langweilt.
Der Vorteil von Augmented Reality ist die Möglichkeit einer Marker-Steuerung.
Im hier erstellten Spiel CatchAR wurde deshalb darauf Wert gelegt, die
Verwendung von anderen Eingabegeräten auf ein Minimum zu reduzieren.
Auch sollte das Spiel in seiner Gesamtheit harmonisch erscheinen. Es sollten so
wenig Stilbrüche bei der Verwendung von Rechnererzeugten Objekten und der
realen Hardware auftreten.
Obwohl die Kamera theoretisch während des gesamten Spiels frei beweglich ist,
sollte diese befestigt werden können, da während des Spielens eine
Beeinträchtigung des Spiels durch deren Bewegung vermieden werden sollte.
Als Thema des Spiels boten sich Tiere aus dem Bereich der Insekten an, da diese
in ihrer wirklichen Größe dargestellt werden können, was zu einer Zunahme des
Realitätseindrucks führt. Eine realitätsnahe Analogie ist es dabei, die Insekten mit
einem Kescher zu fangen. Zusätzlich ist dies ein weniger gewalttätiges
Spielprinzip als es die Urversion dieses Spiels besitzt, bei dem die Mäuse mit dem
Hammer getroffen werden müssen.
Das Spielbrett sollte durch einen oder mehrere Marker dargestellt werden. Um
eine technisch gute Umsetzung des Spiels zu erreichen, ist es sinnvoll nicht
12
einfach durch Verdecken eines Spielbrett-Markers einen Treffer zu erzielen, da
der Spieler so in Versuchung geführt werden würde, einfach seine Hand, anstelle
des Fanggerätes zu verwenden. Stattdessen sollte mit einem zusätzlichen Marker
gearbeitet werden, der an dem Fanggerät angebracht ist und dessen Position mit
den Positionen der Marker auf dem Spielbrett verglichen wird, um einen Treffer
zu erzielen.
13
4 Umsetzung
4.1 ARToolKit
Das ARToolKit ist eine in C geschriebene plattformunabhängige Bibliothek zum
markerbasierten Tracken und wurde an der Universität von Washington[3]
entwickelt.
Mit dem ARToolKit wird es Programmieren ermöglicht, relativ einfach
Augmented Reality Anwendungen zu entwickeln. Der Source-Code ist frei
erhältlich (Open Source, GPL Lizenz). Ein Vorteil des ARToolKit ist die
Verfügbarkeit für viele Plattformen (Windows, Linux, Mac, SGI, Matlab, ...).
Um eine Anwendung mit der ARTooKit Bibliothek auszuführen, werden folgende
Dinge benötigt:
•
Videoeingabegerät (z.B. Webcam)
•
OpenGL Treiber
•
GLUT Bibliothek
•
Microsoft DirectShow runtime (Teil von DirectX)
•
Optional: OpenVRML renderer
Funktionsweise des ARToolKits
Das ARToolKit stellt dem Programmierer Funktionen für das Aufnehmen von
Videobildern aus einer Videoquelle, Verarbeitung dieser Bilder für optisches
Tracking, sowie zur Anzeige von Computer generierten Informationen zur
Verfügung.
Der grobe Ablauf einer das ARToolKit nutzenden Anwendung ist im Prinzip
immer gleich:
1. Ein Videobild wird ausgelesen.
2. Dieses wird nach Markern und bekannten Mustern untersucht.
14
3. Die Kameratransformationen werden relativ zu jedem gefundenen Muster
berechnet.
4. Anhand dieser Transformationen werden die Virtuellen Objekte über die
erkannten Muster gezeichnet.
Dieser Ablauf wird für jeden einzelnen Videoframe wiederholt.
Den Prozess der Marker-Erkennung ist in folgender Darstellung gut zu erkennen
(Abb. 7).
Abb. 7: Marker-Erkennung im ARToolKit [4]
Das Videobild von einer Kamera wird anhand eines Schwellenwertes in ein
schwarzweißes Bild umgewandelt, in dem die schwarze Umrandung des Markers
detektiert wird.
Abb. 8: links Videobild, rechts Videobild nach Schwellwertanwendung (Schwellwert: 100)
15
Wird dieser Rahmen ein klein wenig überdeckt, kann schon der Fall eintreten, das
die Marker-Erkennung an diesem Punkt bereits fehlschlägt. Ist der schwarze
Rahmen gefunden, wird die Position und Ausrichtung des Markers relativ zu der
Kamera in Kamerakoordinaten berechnet. Dazu verwendet das ARToolKit jeweils
die vier Eckpunkte des Markers. Nun wird das Marker-Muster perspektivisch
entzerrt und anhand eines „confidence“ Wertes entschieden, welches der vorher
antrainierten
Muster
erkennbar
ist.
Anhand
der
zuvor
berechneten
Transformationen werden die virtuellen Objekte über das Videobild gezeichnet,
welches der Benutzer anschließend angezeigt bekommt.
4.2 Implementierung des Spiels „CatchAR“
Das aus dieser Studienarbeit resultierende Reaktionsspiel CatchAR wurde soweit
möglich in der Programmiersprache C++ geschrieben. Da das ARToolKit jedoch
in der Programmsprache C geschrieben ist, musste aus Kompatibilitätsgründen
hin und wieder ebenfalls C verwendet werden.
16
Im Folgenden eine Übersicht über die verwendeten Klassen und deren
Beziehungen untereinander. Auf deren Funktionsweise wird im Anschluss darauf
genauer eingegangen
uses
Class
MarkerManager
Class
BoardObject
map
Class
BoardMap
ScoreManager
Class
Class
GameManager
LifeManager
Class
UserInterface
Class
TimeManager
Class
LevelManager
Abb. 9: Übersicht des Programmaufbaus
17
Die Klassen LevelManager, TimeManager, LifeManager und ScoreManager
Abb. 10: Die Klassen LevelManager, TimeManager,
LifeManager und ScoreManager
Diese vier Klassen verwalten jeweils einen Teil der Spielvariablen. Die Klasse
LevelManager verwaltet dabei den Spiellevel und die Spielgeschwindigkeit. Sie
besitzt Methoden um diese beiden Variablen zu verändern.
Die Klasse TimeManager verwaltet die im Spiel verwendeten Timer und besitzt
Methoden um den Timer zu berechnen und zu verändern.
Die beiden Klassen LifeManager und ScoreManager verwalten die Lebenspunkte
bzw. Spielpunkte im Spiel. Beide besitzen ähnliche Methoden um diese beiden
Spielvariablen zu beeinflussen.
18
Die Klasse UserInterface
Abb. 11: Die Klasse UserInterface
Diese Klasse ist für das Zeichnen der grafischen Benutzeroberfläche im Spiel
zuständig. Sie besitzt Methoden um die einzelnen Elemente, sowie Textausgaben
abhängig von der aktuellen Spielphase zu zeichnen.
Die Klasse MarkerManager
19
Abb. 12: Die Klasse MarkerManager
Hier
werden
alle
Marker-Berechnungen
und
Marker-Positionsprüfungen
durchgeführt. Um die Position zweier Marker zu vergleichen, welche beim
Schlagen mit dem Catcher-Marker, der an der Fliegenklatsche angebracht ist, auf
einen Board-Marker des Spielfelds wichtig ist, damit der Schlag als Treffer
gewertet wird, wird die Methode compareMarkerDistance benutzt. Diese
vergleicht die Position eines beliebigen Markers mit der Position des CatcherMarkers. Für die Ermittlung der Position der beiden Marker greift sie auf die
beiden Methoden getMarkerPosX bzw. getMarkerPosY zurück.
Außerdem enthält diese Klasse die beiden Konstanten TOL_DIFF_X und
TOL_DIFF_Y. Diese enthalten die maximale Abweichung zweier Marker, anhand
derer eine Position zweier Marker als identisch angesehen, also als Treffer im
Spiel gewertet wird.
Des Weiteren befinden sich hierin die testSelection[...] Methoden, die die
Position des Catcher-Marker überwachen und so eine Menüführung mit lediglich
dem Catcher-Marker möglich macht.
Die Klasse BoardObject
Abb. 13: Die Klasse BoardObject
20
Zu den Instanzen der Klasse BoardObject gehören alle während des Spiels auf
dem Spielbrett gezeigten Objekte: Die verschiedenen Libellenarten sowie die
Fliege.
Deren Eigenschaften sind in den Variablen dieser Klasse gespeichert. Darüber
hinaus besitzt die Klasse neben dem Konstruktor zwei Methoden um bei einem
Treffer (updateEffects) bzw. keinem Treffen (updateIgnoredEffects) die
entsprechenden Eigenschaften des Objekts anzuwenden.
Die Klasse GameManager
Abb. 14: Die Klasse GameManager
In der Klasse GameManager wird der eigentliche Spielablauf gesteuert. Dazu
besitzt die Klasse eine Variable phase, in der die aktuelle Spielphase gespeichert
wird.
Das Spiel ist in mehrere Phasen eingeteilt. Das Spiel startet in der „MainMenu“Phase, in der das Hauptmenü angezeigt wird und ein Spiel begonnen werden
kann. Darauf folgt die „pregame”-Phase, in der ein Countdown von fünf
Sekunden heruntergezählt wird, damit sich der Spieler auf den Spielstart
vorbereiten kann. Die anschließende „Game“-Phase enthält den hauptsächlichen
Spielablauf. Ist ein Level beendet worden, wechselt das Spiel in die
„level_finished“-Phase, um kurz darauf wieder in die nächste „Game“-Phase zu
21
wechseln. Besitzt der Spieler keine Lebenspunkte mehr, endet das Spiel in einer
„game_over“-Phase.
Die Struktur MarkerStruct
Abb. 15: Die Struktur MarkerStruct
In der Struktur MarkerStruct werden Informationen zu den einzelnen SpielbrettMarkern gespeichert. Dazu gehören neben einer markerID und einer Klartext
Beschreibung des Markers (markerDescription) die Nummer der gerade
angezeigten VRML-Grafik (vrmlID_showing) und ob der Marker gerade von
dem Catcher-Marker verdeckt ist (isHiddenFromFlapper).
Die beiden uniqueIDs sind für den VRML-Austausch nötig.
Pro Spielbrett-Marker existiert ein MarkerStruct. Diese neun MarkerStructs
werden in der map BoardMap verwaltet.
Für die im Programm verwendeten ARToolKit Funktionen sei hier auf die
ARToolKit Dokumentation[04] verwiesen.
4.3 Probleme und Tipps
Nachfolgend nun einige Tipps, die mir bei der Hardware sowie der
Implementierung des Programms sehr hilfreich waren.
22
Um die Erkennungsrate der Marker zu erhöhen, ist es eine gute Lösung, die
schwarzen Bestandteile eines Markers mit schwarzem Filz zu bekleben, da dieser
weniger Störungen durch Lichtreflexion erzeugt.
Ein wichtiges Merkmal bei der Marker-Erkennung des ARToolKits ist die darin
verwendete „History Funktion“. Diese Funktion wird genutzt, um ein Flackern der
eingeblendeten Objekte zu verhindern. Dabei werden Informationen aus dem
vorherigen Videobild verwendet, um die Marker-Erkennung zu stabilisieren.
Wird die Funktion „arDetectMarkerLite“ benutzt, so wird bei Scheitern der
Mustererkennung angenommen, dass sich der gleiche Marker, der bei dem
vorherigen Videoframe erkannt wurde, immer noch an dieser Position befindet.
Voraussetzung dafür ist eine ähnliche Größe und Position des Markers im
aktuellen zum vorherigen Frame.
Diese Funktionsweise erzeugt bei einem auf Schnelligkeit basierendem
Reaktionsspiel wie CatchAR das Problem, dass bei einem schnellen Schlag auf
eine Blüte des Spielfelds der Catcher-Marker nicht erkannt wird. Da in dem
Moment des Treffens der Marker eine ähnliche Position und Größe wie der
Spielfeld-Marker besitzt, wird angenommen, es handele sich noch um den
vorherigen Marker und es wird weiterhin die Blüte anstelle des Netzes an dieser
Position angezeigt.
Die Nutzung einer bereits im ARToolKit implementierten Marker-Detektion ohne
„history function“ (arDetectMarkeRLite) behebt diesen Fehler auf Kosten der
Geschwindigkeit und Stabilität, bringt jedoch die Notwendige Verbesserung der
Musterkennung.
23
5 Ergebnisse
5.1 Die 3D-Modelle
Bei einem Augmented-Reality-Spiel ist die Verwendung von 3D-Modellen
essenziell. Die im Spiel verwendeten Modelle wurden mit der 3D Visualisierungsund Animationssoftware Autodesk Maya6 erstellt.
Abb. 16: Eine in Maya erstellte und gerenderte Libelle
Export der Modelle ins VRML Format
Das ARToolKit unterstützt die Anzeige von OpenGL-Grafiken, sowie VRML
(Virtual
Reality
Modeling
Language)
Objekte
(durch
Einbinden
von
OpenVRML). Für ein Augmented-Reality-Spiel eignet sich das VRML-Format
sehr gut, da es alle notwendigen Eigenschaften besitzt, die man dafür benötigt. Es
können damit Transparenzen, Texturen und Animationen dargestellt werden.
Nach dem Export von VRML-Dateien aus Maya heraus, ist jedoch ein wenig
Nachbearbeitung der Dateien notwendig, damit sie im ARToolKit korrekt
angezeigt werden. Da das VRML-Format ein ASCII basiertes Format ist, ist es
ohne weiteres möglich Änderungen mit einem beliebigen Editor vorzunehmen.
6
http://usa.autodesk.com/adsk/servlet/index?id=6871843&siteID=123112
24
Als erstes muss im VRML-Code den Befehl „Convex“ durch „ccw“ ersetzen
werden, da das ARToolKit keine Objekte lädt, die dieses Befehl enthalten.
Dies liegt an der vom ARToolKit verwendeten OpenVRML-Version (v0.14.3),
die den Befehl „convex“ in geometrischen Definitionen nicht mehr erlaubt.
Des Weiteren werden eigene erstellte Objekte im ARToolKit nur sehr wenig
beleuchtet dargestellt. Um dies zu ändern, sollte man in den Materialknoten die
drei Werte der „emissiveColor“ (=Eigenleuchten) jeweils auf „1.0“ ändern.
Besitzt die Textur bereits eine diffuse Farbe („diffuseColor“), so nimmt man
anstelle von „1.0“ die „diffuseColor“ Farbwerte auch als „emissiveColor“ Werte.
Damit besitzt nun jedes Material genügend Eigenleuchten, damit es im
ARToolKit erkennbar ist.
5.2 Benötigte Hardware
AR Spiele werden in der Regel durch die beim Benutzer vorhandene Hardware
eingeschränkt. Das üblichste Mittel, um ein Videobild für das Tracking
aufzunehmen ist eine Webcam. Als Ausgabemedium ist immer noch der
Computerbildschirm die erste Wahl. Nur die wenigsten Benutzer haben eine 3DStereobrille oder ähnliche Hardware zuhause.
Aus diesem Grund ist für das Spiel folgende Hardware nötig:
-
Eine modifizierte Fliegenklatsche mit Catcher-Marker (im folgenden
Catcher genannt) als Eingabegerät
-
Eine beklebte Holzplatte mit Spielbrett-Markern als Spielfläche
-
Eine Webcam als Aufnahmegerät
(Die hier genutzte Creative Webcam Notebook unterstützt u.a. eine
Videoauflösung von 640x480 pixel bei 15 frames bzw. 320x240 bei 30
frames.)
-
Optional kann als Kamerahalterung ein Gerüst aus Holz oder eine andere
Möglichkeit genutzt werden.
25
Abb. 17: Der Galgen zur
Abb. 18: Das Spielbrett und der
Kamerabefestigung
Catcher/ Kescher
Um die Immersion nicht zu zerstören, wurde bei dem hier erstellten
Reaktionsspiel auf eine Steuerung mit Maus oder Tastatur soweit wie möglich
verzichtet. Lediglich vor dem eigentlichen Start des Spiels muss die Auflösung
des Videobilds über die Tastatur eingegeben werden. Ist das Spiel einmal
gestartet, kann es komplett über den Catcher gesteuert werden.
5.3 Das Spiel „CatchAR“
Abb. 19: Das CatchAR Logo
5.3.1
Spielprinzip
Im Spiel Geschicklichkeits- und Reaktionsspiel CatchAR soll der Spieler
versuchen möglichst alle der auftauchenden Libellen einzufangen. Hierzu steht
dem Spieler ein virtueller Kescher zur Verfügung. Um eine Libelle zu fangen,
26
muss der Spieler mit dem Kescher auf die Libelle schlagen. Dafür erhält der
Spieler Punkte.
5.3.2
Installation
Der erste Kontakt, den der Anwender mit einer Software hat, ist die Einrichtung
derselbigen. Dies ist ein wichtiger erster Eindruck. Viele Anwender sind bereits
mit der Installation der Software überfordert, wenn dabei viele Schritte von ihnen
selbst erledigt werden müssen. Um den Anwender nicht schon bei der Einrichtung
abzuschrecken und möglichst vielen Benutzern den Zugang zu der Software zu
ermöglichen, ist eine möglichst automatische Installationsroutine unerlässlich.
Um den Umgang mit der Software zu vereinfachen, wurde mit dem Nullsoft
scriptable install system (NSIS) in Verbindung mit dem Editor HM NIS Edit 2.0.3
ein Installer geschrieben. Dieser ermöglicht es dem Benutzer die Software auf
eine bequeme und einfache Art und Weise auf seinem Computer zu installieren
und auch zu deinstallieren.
Nullsoft scriptable install system 2.16
Das Nullsoft Scriptable Install System (NSIS) ist eine Software zur Erstellung von
Installationsroutinen unter Windows. Es wurde von der Firma Nullsoft entwickelt,
die den Installer u. a. für ihren Mediaplayer „Winamp“ nutzt. Das Nullsoft
Scriptable Install System ist Open Source und steht unter der zlib/libpng Lizenz.
NSIS an sich verfügt lediglich über einen Kommandozeilen-Kompilierer und ein
graphisches Userinterface dafür, das beim Kompilieren hilft und einige
Einstellungen erleichtert. Allerdings erleichtert es die Arbeit, wenn ein NSIS
Editor zur Erstellung der Installationsroutine verwendet wird. Hierzu wurde der
HM NIS Edit Editor genutzt.
5.3.3
Spielablauf
Vor dem Start des eigentlichen Spiels CatchAR erscheinen zwei Fenster. Eines
davon ist ein Kommandozeilenfenster, das lediglich zur Ausgabe von
Systeminformationen dient. Im zweiten Fenster wird unter anderem die Auflösung
27
des Videobildes eingestellt, abhängig von der verwendeten Kamera und Treiber.
Hat der Spieler diese Einstellungen vorgenommen, schließt sich dieses Fenster
und das CatchAR Spiel wird geladen.
Das Videofenster öffnet sich nun in der vorher eingestellten Auflösung und sollte
am besten maximiert werden.
Hauptmenü
Das Spiel startet mit dem Hauptmenü. Dort kann der Spieler mit dem Kescher als
Auswahlwerkzeug den gewünschten Menüpunkt „Start Game“ oder „Exit Game“
auswählen. Dies funktioniert, indem er den Kescher hinter den gewünschten
Menüpunkt hält. Ist die Auswahl erkannt worden, wird sie aktiviert, indem ein
Rahmen um den ausgewählten Menüpunkt eingeblendet wird. Nun erscheint ein
neuer Menüpunkt „OK“. Durch dessen Anwahl wird der aktivierte Menüpunkt
bestätigt und das Spiel gestartet bzw. beendet.
Abb. 20: Das CatchAR Hauptmenü
28
Spielstart
Wählt der Spieler „Start Game“ aus, so wird ein neues Spiele gestartet. Damit der
Spieler sich auf das Spiel vorbereit kann, ist diesem ein Countdown von fünf
Sekunden vorgeschaltet.
Das Spiel
Das Spiel beginnt mit einem „leeren“ Spielfeld, auf dem nur leere Blumen
angezeigt werden. Nach dem Zufallsprinzip werden nun einzelne Marker des
Spielfelds und Objekt ausgewählt, die darauf angezeigt werden. Der Spieler muss
nun 60 Sekunden lang versuchen alle eingeblendeten „guten“ Libellen zu fangen.
Nach 60 Sekunden ist der Level beendet, und nach einem erneut vor geschalteten
Countdown
startet
der
nächste
Level.
Die
Spielgeschwindigkeit,
die
Geschwindigkeit in der die Insekten auf dem Spielbrett erscheinen, steigt von
Level zu Level.
Abb. 21: CatchAR Spiel
Um das Spiel interessanter zu machen, wurden auch negative Eigenschaften
verwendet. Wird ein Objekt verpasst, das heißt nicht getroffen, so kann es
abhängig von den Eigenschaften des Objektes negative Auswirkung auf die
anfangs 200 Lebenspunkte des Spielers haben (Siehe Abb. 16).
29
Objekt
Eigenschaft
Feuerlibelle (Rot)
Treffer: + 5 Spielpunkte
Kein Treffer: -10 Lebenspunkte
Wasserlibelle (Blau)
Treffer: + 10 Spielpunkte
Kein Treffer: -15 Lebenspunkte
Waldlibelle (Grün)
Treffer: -15 Spielpunkte
Kein Treffer: -5 Lebenspunkte
Feuerfliege (Rot)
Treffer: -50 Lebenspunkte
Kein Treffer: -
Abb. 22: Die Spielobjekte und deren Eigenschaften
Für gefangene Libellen erhält der Spieler Punkte auf seinem Punktekonto
gutgeschrieben.
Eine besondere Rolle spielt die Waldlibelle. Diese hat auf jeden Fall einen
Punktabzug zur Folge. Wird sie getroffen, bekommt der Spieler 15 Spielpunkte
abgezogen. Bei keinem Treffer sind es 5 Lebenspunkte, die der Spieler verliert.
Hier muss er sich also entscheiden, ob er es sich leisten kann Lebenspunkte zu
verlieren oder muss ansonsten einen Abzug der Spielpunkte hinnehmen. Dies
bringt eine zusätzlichen taktischen Faktor ins Spiel.
Das Fangen einer Feuerfliege ist nicht beabsichtig und bringt einen hohen Abzug
der Lebenspunkte mit sich. Der Anzahl der Lebenspunkte wird jeweils in das
nächste Level übernommen und nimmt so im Laufe des Spiels immer mehr ab.
Spielende
Das Spiel endet, wenn der Spieler keine Lebenspunkte mehr besitzt. Auf dem
Bildschirm bekommt er anschließend die erreichte Punktzahl angezeigt. Nun kann
er zurück zum Hauptmenü und von dort aus ein neues Spiel starten oder das Spiel
verlassen.
30
Abb. 23: CatchAR Spielende
31
6 Fazit / Erweiterungsmöglichkeiten
6.1 Fazit
Es hat sich gezeigt, dass man bei der Entwicklung einer Anwendung mit dem
ARToolKit, bei der es auf die Erkennung schneller Marker-Bewegungen
ankommt, rasch an die Grenzen stößt. Dieses Problem wird einerseits durch die
interne Vorgehensweise des ARToolKits, aber auch durch die Grenzen der
Bildwiederholrate und Auflösung einer Webcam verursacht. Eine Alternative
wäre hier der Ansatz mit einer digitalen Videokamera.
Ein wichtiger, zu beachtender Punkt bei Augmented Reality Anwendungen ist die
dreidimensionale Wahrnehmung. Wird nur eine Kamera verwendet, fehlt dieser
3D-Eindruck. Übertragen auf das Augmented-Reality-Spiel Catcher bedeutet dies,
dass der Blick der Spieler immer wieder zwischen der Augmented Reality auf
dem Bildschirm und dem Spielbrett hin und her wechselt, um einerseits die
eingeblendeten Objekte zu erkennen, andererseits den passenden Marker zu
treffen.
6.2 Erweiterungsmöglichkeiten
Um die Spielbalance etwas auszugleichen und dem Spieler die Möglichkeit zu
geben verlorene Lebenspunkte wiederzuerhalten, wäre es denkbar in die
Spielelogik eine Funktion dafür einzubauen. Anhand einer festgelegten
Wahrscheinlichkeit könnten getroffene Libellen Objekte verlieren, die dem
Spieler die Lebenspunkte zurückgeben. Diese müssten zum Aufsammeln vom
Spieler erneut getroffen werden und dann auf dem Lebenspunktekonto hinzu
addiert werden.
Um eine Verbesserung des Spielspaßes zu erreichen, wäre die Einbindung von
Musik und Soundeffekten in das Spiel sehr empfehlenswert. Dies wäre unter
32
Umständen mit der Open Source 3D Audio API OpenAL7 möglich. Darüber
hinaus würde eine Weiterentwicklung der Spieloberfläche ihr übriges dazu
beitragen. Möglichkeiten wären hierfür ein Ersetzen der bisher verwendeten mit
OpenGL gerenderten Schrift durch Texturen darzustellen. Dies würde die
kreativen Möglichkeiten in großem Maße erweitern.
Eine Verbesserung in Sachen Marker-Erkennung wäre durch den Einsatz
alternativer Marker-Erkennungspakete möglich. In Frage dafür kämen unter
Umständen ARTag8 oder das ARToolKit Plus9.
Neben der Verbesserung der vorhandenen Spielelogik wäre es ein Einfaches,
weitere Spiele mit den vorhandenen Klassen und Methoden umzusetzen. Im
Folgenden seien exemplarisch zwei mögliche Spielumsetzungen kurz erwähnt.
Handheldspiel Senso
Das Spiel besteht aus einem Gerät mit vier Feldern. Die Idee des Spiels ist relativ
einfach. In einer zufälligen Reihenfolge leuchten diese Felder auf. Die Aufgabe
des Spielers ist es, sich die diese vorgegebene Reihenfolge zu merken und durch
drücken der Tasten zu wiederholen. Jede Runde wird dieser Reihenfolge eine
weitere Farbe hinzugefügt.
7
http://www.openal.org
http://www.cv.iit.nrc.ca/research/ar/artag/
9
http://studierstube.icg.tu-graz.ac.at/handheld_ar/artoolkitplus.php
8
33
Abb. 24: Senso [14]
Von technischer Seite her, wäre eine Augmented Reality Version dieses Spiels
kein großer Aufwand. Für Jedes der Felder kann ein Marker genutzt werden.
Zur besseren Verdeutlichung des Spielprinzips kann bei neave.com10 eine online
Version dieses Spiels getestet werden.
Kopfrechenspiel
Eine andere Erweiterungsmöglichkeit wäre die eines Rechenspiels. Dabei werden
Aufgaben aus dem Bereich der Mathematik gestellt. Mögliche Ergebnisse der
Aufgabe werden auf die verschiedenen Marker projiziert. Wenn der Spieler das
richtige Ergebnis ausgewählt hat, erhält er Punkte. Auch wäre eine zwei Spieler
Version hiervon ohne weiteres möglich. Dazu müsste nur ein zweiter Catcher mit
einem neuen Marker angefertigt werden.
10
http://www.neave.com/games/simon/
34
7 Anhang
7.1 Eingesetzte Software
Folgende Software wurde zur Anfertigung dieser Studienarbeit in den
verschiedensten Bereichen eingesetzt:
-
Adobe Photoshop 6.0
http://www.adobe.com/de/products/photoshop/index.html
-
Alias Maya 6.0
http://usa.autodesk.com/adsk/servlet/index?id=6871843&siteID=123112
-
ARToolKit 2.71.2
http://www.hitl.washington.edu/artoolkit/
-
Doxygen 1.4.6
http://www.stack.nl/~dimitri/doxygen/
-
GLUT 3.7.6
http://www.xmission.com/~nate/glut.html
-
HM NIS Edit 2.0.3
http://hmne.sourceforge.net/index.php
-
Inkscape 0.43
http://www.inkscape.org
-
Microsoft Visual Studio .NET 2003
http://www.microsoft.com/germany/msdn/vstools
-
Nullsoft scriptable install system 2.17
http://nsis.sourceforge.net/Main_Page
-
Visual Paradigm for UML 5.2 Community Edition
http://www.visual-paradigm.com/
35
Abbildungsverzeichnis
Abbildung 1 – Sam und Max hit the road................................................................5
Abbildung 2 – Wak-a-rat .........................................................................................6
Abbildung 3 – Tontie...............................................................................................6
Abbildung 4 – Beispielmarker.................................................................................9
Abbildung 5 – EyeToy Kinetic..............................................................................10
Abbildung 6 – Invisible Train auf PDA’s..............................................................11
Abbildung 7 – Marker-Erkennung im ARToolKit ................................................15
Abbildung 8 – links Videobild, rechts Videobild nach Schwellwert Anwendung
(Schwellwert: 100).........................................................................15
Abbildung 9 – Übersicht der Klassen und Strukturen und deren Beziehungen ....17
Abbildung 10 – Die Klassen LevelManager, TimeManager, LifeManager und
ScoreManager .............................................................................18
Abbildung 11 – Die Klasse UserInterface .............................................................19
Abbildung 12 – Die Klasse MarkerManager.........................................................19
Abbildung 13 – Die Klasse BoardObject ..............................................................20
Abbildung 14 – Die Klasse GameManager ...........................................................21
Abbildung 15 – Die Struktur MarkerStruct ...........................................................22
Abbildung 16 – Eine in Maya erstellte und gerenderte Libelle.............................24
Abbildung 17 – Der Galgen zur Kamerabefestigung ............................................26
Abbildung 18 – Das Spielbrett und der Catcher/ Kescher.....................................26
Abbildung 19 – Das CatchAR Logo......................................................................26
Abbildung 20 – Das CatchAR Hauptmenü............................................................28
Abbildung 21 – CatchAR Spiel .............................................................................29
Abbildung 22 – Die Spielobjekte und deren Eigenschaften ..................................30
Abbildung 23 – CatchAR Spielende......................................................................31
Abbildung 24 – Senso............................................................................................34
36
Quellenverzeichnis
[1]
ARToolKit API (29.05.2006): http://artoolkit.sourceforge.net/apidoc/
[2]
ARToolKit Forum (29.05.2006): http://www.hitlabnz.org/forum/
[3]
ARToolKit Homepage (29.05.2006):
http://www.hitl.washington.edu/artoolkit/
[4]
ARToolKit Dokumentation (29.05.2006):
http://www.hitl.washington.edu/artoolkit/documentation/
[5]
cplusplus resources (29.05.2006): http://www.cplusplus.com/ref
[6]
OpenGL Programming Guide (The Red Book) (29.05.2006):
http://rush3d.com/reference/opengl-redbook-1.1/
[7]
Glut – The OpenGL Utility Toolkit (29.05.2006):
http://www.opengl.org/resources/libraries/glut/
[8]
OpenGL Wiki (29.05.2006): http://wiki.delphigl.com/index.php/OpenGL
[9]
Tobias Kammann: „Entwicklung eines Augmented-Reality-Spiels“,
Universität Koblenz-Landau
http://geri.uni-koblenz.de/Studienarbeiten/arspiel.pdf
[10]
Prof. Dr. Stefan Müller: „Virtuelle Realität und Augmented Reality“,
Vorlesungsunterlagen: http://www.uni-koblenz.de/FB4/Institutes/ICV
/AGMueller/Teaching/WS0506/VRAR
[11]
C++ Doxygen: http://www.stack.nl/~dimitri/doxygen/
[12]
nullsoft scriptable install system: http://nsis.sourceforge.net/Main_Page
[13]
HM NIS Edit: http://hmne.sourceforge.net/
[14]
Wikipedia (29.05.2006: http://de.wikipedia.org/wiki/Senso_(Spiel)
37