Die erweiterte Realität (Augmented Reality) wurde heutzutage schon zum häufigen Buzzword. Es ist aber immer etwas neues, faszinierendes, einfach sexy. Was kann man aber wirklich schaffen und wie viel Mühe, Arbeit, Zeit, beziehungsweise auch Geld kostet so etwas?

Die Dateien über die Tiefe, also die Tiefe des Raumes ist eine der wichtigsten Säulen auf der Brücke zur Verständigung der durch eine Kamera aufgenommenen Szenerie. Das schon früher vorgestellte Projekt Tango (2014) von Google schuf es, anhand eines speziellen Sensors für die Abstände, virtuelle Vorstellung eines 3D-Raumes innerhalb eines mobilen Gerätes zu abzubilden. Heute ist dies schon auch ohne einen speziellen Sensors für die Abstände möglich. Die vor Kurzem veröffentlichte Technologie ARKit von Apple oder das Projekt ARCore geht vom dem Projekt Tango aus und dient zu einer relativ einfachen Gewinnung der virtuellen Vorstellung über den aufgenommenen Raum, jedoch haben auch diese Technologien ihre Beschränkungen.

Eigenschaften SDK

Beide Technologien haben ungefähr das gleiche Set an Eigenschaften. Ein SDK kann etwas besser, das andere wieder etwas anderes, aber mehr oder weniger sind sie alle ähnlich.

  • Detektion der Interessenspunkte (Feature Points): Findung von denselben (entsprechenden) Punkten bei kontinuierlicher Aufnahme. Von zwei Bildern (zwei Aufnahmen aus dem Video), die nur unmerkbar unterschiedlich sind, lässt sich berechnen, welche Pixelgruppe auf einer Aufnahme der Pixelgruppe auf der zweiten Aufnahme entspricht. Diese Punkte werden zum Grundbaustein bei Umgebungserkennung.
  • Bewegungsaufnahme (Motion Tracking): Virtuelle Objekte geordnet in realer Umgebung auf Basis der Daten aus den Positionssensoren in Kombination mit dem aufgenommenen Bild. Die Fähigkeit, die Lage und Position des Gerätes in einer realen Szenerie zu bestimmen
  • Verständigung der Umgebung (Environmental Understanding): Abschätzung von horizontalen Flächen (polygon bei ARCore, Quader bei ARKit) und von ihren Größen. Dank dessen kann man mit einer verhältnismäßig großen Genauigkeit bis auf Millimeter das Maß für die reale Welt erwerben, das auch für virtuelle Objekte verwendbar ist.
  • Lichtabschätzung (Light Estimation): die Feststellung der Lichtquellen-Farbe und seiner Intensität für die Sicherstellung einer verstärkt realistischen Abbildung von virtuellen Objekten in der Szenerie.
  • Benutzer-Interaktion (User Interaction): Fähigkeit, die Koordinaten eines Punktes in der realen Welt auf der Basis der Berührungsstelle (oder Richtung der Kamera) im Gerät zu bestimmen. Dank dessen lassen sich die virtuellen Objekte direkt über den Bildschirm des Gerätes.
  • Verankerung (Anchors): Detektierte Flächen sind im realen Raum festgehalten, dank dessen die einzelnen Flächen nicht miteinander verbunden sein müssen, und trotzdem alle im gleichen Maß sind.

Neuheiten in den letzten Versionen

Bei ARCore 1.0 wurde die Detektion der Interessenspunkte (Feature Points) beschleunigt,  weitere unterstützte Geräte wurden zugegeben und vor allem kam noch die Möglichkeit der Detektion von texturierten Flächen im Allgemeinen dazu. Dank dessen lassen sich schiefe Flächen oder auch Wände detektieren. Mit ARKit für iOS 11.3 kam noch die Möglichkeit zur Detektion der vertikalen Flächen, Autofokus oder auch die Fähigkeit der Erkennung der im Vorhinein definierten Bilder.

Einschränkung der AR-Technologien

Zu den ersten lässt sich die Liste der unterstützten Geräte einordnen.

ARKit (iOS) ARCore (Android)
– iPhone (SE, 6s, 7, 8, Plus, X)
– iPad Pro
– iPad (2017)
– Asus Zenfone AR
– LG (V30, V30+)
– Google Pixel (1, 2, XL)
– OnePlus 5
– Samsung Galaxy (S7, S7 Edge, S8, S8+, Note 8)

 

ARKit erfordert iOS 11+ und Prozessor A9 oder neuer, ARCore braucht zumindest Android 7.

  • der Mangel an Licht oder ein verzerrtes Bild (in Folge einer schnellen Bewegung der Kamera) verschlechtert die Qualität der Detektion, denn die Feature Points sind schwieriger erkennbar.
  • Reflexive Flächen oder Flächen mit wenigen Details haben fast keine Feature Points, weswegen eine texturierte Oberfläche besser geeignet ist.
  • Detektion von komplizierteren Szenerien wie zum Beispiel Treppen, gekippte Flächen und Ähnliches sind anhand der erwähnten SDK vorerst in einer viel zu frühen Entwicklungsphase.
  • Die Detektion der Lichtrichtung ist bisher nicht erhältlich
  • Die Detektion der Objekte auf diesem Gebiet ist ein Randthema und es gibt keine große Unterstützung von seiten der SDK-Lieferer. ARKit fängt an zu experimentieren mit der Erkennung der im Vorhinein bekannten Bildern, aber allgemein ist es besser auf andere Bibliotheken zu vertrauen, zu denen zum Beispiel OpenCV gehört (eine der am besten erweiterten Bibliotheken für das Bearbeiten von Bildern).

Die Erlösung durch Unity

Beide SDK lassen sich nicht nur nativ verwenden, sondern auch in Verbindung mit Werkzeugen, die eine Manipulation in der 3D-Umgebung einfacher machen. Eins von ihnen ist zum Beispiel Unity 3D. Dank ihm lässt sich die virtuelle Umgebung deutlicher einfacher kreieren als auf Basis eines nativen Codes auf der Endplattform. Im Unity lässt sich ein Code schreiben, den man dann auf beiden Plattformen laufen lassen kann, es gibt hier allerdings gewisse Einschränkungen, da man die Durchschnittsmengen der Eigenschaften extrahieren muss, die bei den Plattformen übereinstimmend sind, damit der Code für multiple Plattformen passt und einzigartig ist.

Zu den markantesten Unterschiedlichkeiten beider Technologien gehört die Detektion von Flächen, die bei jedem SDK anders gelöst ist. Der ARCore kann die Flächen als diskrete Konvex-Polygons (Vielecke), die sich an die Krümmungen der Umgebung einfach anpassen lassen. Das ARKit detektiert lediglich Vierecke (ab der Version ARKit 1.5 auch Polygone). Damit man den Flächendetektor auf beiden Plattformen starten könnte, ist es notwendig eine solche Flächendetektion zu verwenden, die auf beiden Plattformen realisierbar ist, also die Viereck-Detektion. Für diesen Fall kann man die Abstrahierung beider Plattformen durch ARInterface realisieren, wodurch man mit einem SDK arbeiten kann, das im Hintergrund die Technologien von ARKit für iOS, oder ARCore für Android verwendet. ARInterface bietet auch die Möglichkeit die Apps direkt vom Computer aus abzustimmen, ohne den Code am Endgerät laufen zu lassen, was im Endeffekt Zeit beim Debugieren spart.  

Beispiel eines AR-Projektes

© Walt Disney Studios Motion Pictures
© Walt Disney Studios Motion Pictures

Als ein anschauliches Beispiel für die Aufwendigkeit eines AR, das in Unity geschrieben wurde, hat man das bewegende Modell BB8 ausgewählt (ein Roboter aus Star Wars).

Wie höher schon beschrieben wurde, SDK kann die horizontale Fläche detektieren, also den Boden, Tisch usw. Dank dessen gewinnen wir eine Vorstellung über die aktuelle 3D-Szenerie und ihre Maße. Die Bewegung der Kamera gewährleistet eben ein ARInterface, das “Instruktionen” aus dem ARKit oder ARCore übersetzt.

Für die Interaktion des Benutzers mit der Umgebung wurde ein “Peiler” erschaffen. Damit das Framework die Flächen detektieren kann, braucht er genügend Feature Points, die man mit einer horizontalen Kamera-Bewegung um die angeforderte, zum Detektieren bestimmte Fläche herum, gewinnt. Sobald die Fläche detektiert wird, werden Grundlagen für das Koordinatensystem festgelegt, das für die geschaffene 3D-Welt nötig ist. Der Peiler befestigt sich nach der Flächendetektion auf dem Boden.

Sobald wir die Position auf dem Boden kennen, können wir hierhin beliebiges Objekt legen. In Unity kann fast alles importiert werden, zur Vereinfachung – genügen uns in diesem Fall nur die Grundformen – (Kugel – Körper, Halbkugel – Kopf, Zylinder – die Antennen). Das Vorteil von Unity sind hier zum Beispiel vorimplementierte physikalische Eigenschaften, die sich den Objekten verleihen lassen. Weil wir wollen, dass sich der Roboter auf dem Boden bewegt, ist die Gravitation eine wichtige Kraft. Auf den Boden muss man eine virtuelle Platte ausspannen (kann unsichtbar sein), die als ein so genannter Collider dienen wird und auf der sich ein Roboter bewegen wird. BB8 ist eine Maschine mit einer kugelformigen Grundlage, die sich in Richtung der Fahrt wälzt. Am Gipfel der Kugel ist der Kopf des Roboters in Form der Halbkugel mit zwei Antennen. Angesichts der Einfachheit der Konstruktion lässt sich die Wälzbewegung durch eine Rotation der Basis bei einer richtigen Geschwindigkeit in Abhängigkeit von der Länge der Trajektorie simulieren, die der Roboter ablegt.  

Die Berechnung der Bewegung des Kopfes um die seine Sphäre herum erfordert die Anwendung von elementaren Algebra (Winkel der Neigung in Richtung der Bewegung in Abhängigkeit von der Geschwindigkeit), wobei die Arbeit mit einer Masse (Gewicht) der einzelnen Roboter-Teile für die Imitation einer realistischen Bewegung geeignet ist und man muss sie für alle kinetischen Bewegungen in Betracht nehmen. Mit einem Bisschen an investierter Zeit ist es möglich, ein ziemlich realistisches Verhalten zu erzielen. Für die Erhaltung der eigenen Identität wurde der Roboter in Ackee-Farben mit einigen Bildern gekleidet.

 

Zum Schluss kann man sagen, dass die Entwickung der AR-Applikationen mehr oder weniger so wie die Herstellung der eigentlichen virtuellen Umgebung ist. Dank der erwähnten Technologien ARKit und ARCore lässt sich eine deutlich große Menge an Low-Level-Arbeit auf das absolute Minimum vereinfachen und direkt mit der 3D-Welt anfangen, deren Grenzen fast unbegrenzt sind. Anhand von ARInterface-Aufbau kann man sich die Arbeit an der Entwicklung deutlich einfacher machen, allerdings gibt es hier die Einschränkung, dass das finale Ergebnis (eine App) nur diejenigen Eigenschaften nutzen werden kann, die in der Durchschnittsmenge von beiden SDK sind. Ansonsten muss man unbedingt einen speziellen Code schreiben, der bei SDK konkrete Plattformen nutzt. Für die Bearbeitung von komplizierteren Szenerien, Erkennung von Objekten usw. ist es darüber hinaus besser, auch mit anderen Bibliotheken zu arbeiten, die jedoch keine so geradlinige Implementierung bieten und mit ihrer Kompliziertheit ein eigenständiges Studienfach darstellen.

Falls Sie beeindruckte, wass wir mit der erweiterten Realität machen können, werden wir uns freuen, wenn Sie sich mit Ihren AR-Projekten an uns wenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.