AiRHockey
Augmented Reality AirHockey
AiRHockey ist ein Projekt, welches ich zusammen mit Kevin Urban 2010 im Rahmen des Metaverse-Seminar an der Universität Basel entwicklet habe.
AiRHockey wurde zum Thema "Interaktive AR-Toolkit Anwendung" erstellt und ist, wie der Name bereits vermuten lässt, eine Augmented Reality Version vom bekannten Spiel AirHockey.
Plattformunabhängigkeit
Da wir bei unserem Projekt besonders darauf achten wollten, dass es Plattformunabhing (also auf allen gängigen Betriebssystemen) funktioniert, entschieden wir uns Java als Programmiersprache zu verwenden. Dies hatte außerdem den Vorteil, das wir zum Processing verwenden konnten um möglichst einfach 3D-Objekte zu zeichnen.
Als AR-Toolkit-Library verwendeten wir die Java-Version von NyARToolkit.
Um auch die Webcam in allen Betriebssystemen ansprechen zu können, verwendeten wir Gstreamer, da hier Clients für alle Systeme vorhanden waren. Diesen Entschluss bereuten wir allerdings später als wir feststellen mussten, dass das Java-Bindung für Gstreamer ziemlich verbugt ist. Die Bildergebnisse waren zwar gut, aber die Hälfte der angebotenen Funktionen funktionierten einfach nicht.
Um die unterschiedlichen Native-Libraries ansprechen zu können, wurde noch ein Classloader programmiert, der zuerst das Betriebssystem (Windows, Linux, OSX) und die Architektur (32 oder 64 bit) erkennt und je nach Ergebnis die unterschiedlichen JARs zur Laufzeit einbindet und den "java.library.path" um den Pfad zu den Nativle-Libraries ergänzt.
Ergebnis
Am besten wird unsere Anwendung wohl durch das folgende Video, welches wir 1 Woche vorher beim 1. größeren Test im Seminarraum gedreht haben, erklärt:
Bis zur Präsentation hat sich dann allerdings noch einiges (vor allem an der GUI und an der Eyecandy im Spiel) getan. Ich habe allerdings leider kein neueres Video.
Fazit
Es kann zwar viel Spaß machen so etwas zu programmieren, aber vor allem gegen Ende ist das AR-Toolkit mehr und mehr auf die Nerven gegangen, da es einfach extrem umgebungsabhängig (Lichtverhältnisse usw.) ist. Dieses Problem wurde anderen Gruppen ebenfalls zum Verhängnis.
Auch verbugte (Gstreamer) oder nur auf japanisch dokumentierte (NyARToolkit) Libraries können sehr mühsam sein.
Außerdem haben wir schnell gemerkt, dass Geometrie im dreidimensionalen Raum schnell sehr komplex werden kann. Zum Beispiel ist das Berechen der Position des Player-Markers im Spielfeld-Koordinatensystem relativ komplex.
Am Ende haben wir dann aber eine für AR-Toolkit-Verhältnisse, relativ stabile und spielbare Version unseres Programmes präsentieren können.