Evaluation & erste Schritte
Nach ersten Recherchen schien Unity das geeignete Werkzeug für unser Vorhaben zu sein. Unity wird vor allem für die Entwicklung von Games eingesetzt. Als grosser Vorteil von Unity gilt die Plattformunabhängigkeit. Einmal entwickelt können Games für alle möglichen Plattformen ausgespielt werden. Desweiteren schienen die beiden Frameworks «Vuforia» und «Kudan AR» für unser Vorhaben geeignet. Beide sind (für Entwickler) frei zugänglich und mit Unity kompatibel.
Um virtuelle Objekte in der realen Welt zu platzieren, gibt es mehrere Möglichkeiten. Am meisten werden «Markers» verwendet, also Bilder, die von der Applikation erkannt werden und auf dem die virtuellen Objekte platziert werden. Mit dieser Methode konnten wir schnell erste Erfolge feiern.
Ein 3D-Modell von Trump projiziert auf einer 20er Note
Mit Markern zu arbeiten, stellte sich für unser Vorhaben allerdings als ungünstig heraus. Diese Methode ist eher für kleine, statische Objekte geeignet. Der Bahnhofplatz in Bern ist weder klein, noch statisch. Somit mussten wir auf die «Markerless»-Methode zurückgreifen. Mit Hilfe von GPS-Daten sollen damit Objekte platziert werden können.
Herausforderungen
Da die Technologie noch jung und einem steten Wandel unterworfen ist, waren Tutorials und Anleitungen eher rar und zudem oft schon überholt. Nachdem wir bereits einiges an Zeit benötigt hatten, um die Entwicklungsumgebung einzurichten und uns darin zurechtzufinden, stiessen wir auf erste Schwierigkeiten.
Zum Beispiel beim Debugging. Da wir Daten vom Smartphone benötigten, konnte die App nicht in der Entwicklungsumgebung getestet werden. Wir mussten jedes Mal die App aufs Handy exportieren und nach draussen gehen. Auf dem Smartphone stand uns zudem keine Entwicklungskonsole zur Verfügung, welche die Fehlersuche erheblich vereinfacht hätte. Dies hat die Entwicklung der App in die Länge gezogen.
Dann waren da verschiedene Probleme mit den GPS-Daten. Zum einen ist GPS eigentlich zu ungenau für unsere Anforderungen. Beim Entwickeln kam es vor, dass wir an Ort und Stelle standen und unsere GPS-Position laut Smartphone im Umkreis von 50 Metern hin und her sprang. Auch im Screencast oben ist zu erkennen, dass der Turm bisweilen hin und her hüpft.
Ferner versteht Unity kein GPS. Das heisst, die GPS-Daten mussten mittels eines komplexen Algorithmus in orthogonale Daten (x,y,z) umgewandelt werden, um den Turm überhaupt an der richtigen Stelle zu platzieren. Zudem mussten wir eruiren, in welche Himmelsrichtung die Smartphone-Kamera gerade zeigt und bei Drehungen die Unity-Welt simultan mitdrehen. Diese Funktionen waren in keinem frei zugänglichen Framework verfügbar und mussten selbst programmiert werden.
Ausblick
Bis zur Veröffentlichung der Applikation in einem App-Store müsste noch einiges getan werden. Die Benutzeroberfläche ist nur rudimentär gestaltet und könnte ein Update vertragen. Dasselbe gilt für das 3D-Objekt des Christoffelturms, das noch ausgearbeitet werden müsste. Zudem könnten der App nach dem gleichen Prinzip weitere Objekte hinzugefügt werden, um etwa einen digitalen Stadtführer zu erstellen.
Programmatisch gäbe es noch ein grosses Problem zu lösen. Die App kann zwar den Turm an der ungefähr richtigen Stelle platzieren, sie erkennt aber nicht, ob etwas zwischen dem Standort des Turms und der Position des Anwenders steht. Im Screencast oben ist das gut zu erkennen, zum Beispiel bei 00:10, als das Tram vorbeifährt.
Die Methode des «Simultaneous localization and mapping» (SLAM) könnte hier Abhilfe schaffen. SLAM ist in verschiedenen Frameworks verfügbar und erstellt in Echtzeit ein 3D-Mesh der Umgebung. Damit ist die Applikation in der Lage, Überlagerungen in der dritten Dimension zu erkennen. SLAM ist noch in einem frühen Entwicklungsstadium und hat sehr hohe Hardware-Anforderungen.
Fazit
Alles in allem haben wir ein manchmal etwas frustrierendes, aber umso lehrreiches Projekt hinter uns. Die Entscheidung, sich auf ein einzelnes Objekt mit klar umrissenen Anforderungen zu konzentrieren, hat sich im Nachhinein als sehr wertvoll herausgestellt. Trotzdem würden wir in Zukunft ein solches Vorhaben in einem grösseren Team durchführen um den grossen Aufwand besser zu verteilen.
Zuletzt bleibt uns noch einen Dank auszusprechen. Zum einen an Markus Schürpf, Leiter des Fotobüros Bern für seine Hilfestellungen in historischen Fragen und an Armand Baeriswyl, Leiter des Ressorts Mittelalterarchäologie und Bauforschung des Kantons Bern, welcher uns freundlicherweise ein 3D-Modell des Christoffelturms zur Verfügung gestellt hat. Dieses mussten wir nur noch leicht anpassen, was uns so einiges an Aufwand ersparte.