So erstellen Sie eine Augmented Reality App

Augmented Reality (AR) ist eine innovative Technologie, mit der Sie eine erweiterte Ansicht der realen Welt um Sie herum darstellen können. Ein gutes Beispiel dafür wäre die Anzeige von Spielergebnissen, die neben dem Live-Fußballgeschehen auf dem Platz eingebettet sind. Die Einbettung erfolgt über eine Augmented-Reality-Anwendung, die ein Live-Kamerabild rendert und ein virtuelles Objekt über das reale Bild legt und auf dem Kameravorschaubildschirm mithilfe von bildverarbeitungsbasierten Erkennungsalgorithmen anzeigt.

In diesem Blog erläutern wir den Entwicklungsprozess einer beispielhaften AR-Anwendung mit dem Qualcomm Vuforia SDK, einem der besten SDKs für die Erstellung von bildverarbeitungsbasierten AR-Anwendungen für Mobilgeräte und Tablets. Derzeit ist es für Android, iOS und Unity verfügbar. Das SDK kümmert sich um die Feinheiten der untersten Ebene, sodass sich die Entwickler ganz auf die Anwendung konzentrieren können.

Konzeptueller Überblick

Wir beginnen mit einem Überblick über die wichtigsten Konzepte im AR-Bereich. Es ist wichtig, diese zu verstehen, bevor man mit der Entwicklung einer AR-App beginnt.

  • Targets – Das sind Objekte oder Markierungen aus der realen Welt (wie Barcodes oder Symbole). Die Ziele werden mit dem Vuforia Target Manager erstellt. Einmal erstellt, können sie verwendet werden, um ein Objekt zu verfolgen und Inhalte darüber anzuzeigen. Bei den Zielen kann es sich um Bildziele, zylindrische Ziele, benutzerdefinierte Ziele oder Wortziele, 2D-Bildrahmen (Rahmenmarkierungen), virtuelle Schaltflächen (die ein Ereignis auslösen können) oder Cloud-Ziele handeln.
  • Inhalt – Mit Inhalt meinen wir ein 2D/3D-Objekt oder Video, das wir über einem Ziel erweitern möchten. Zum Beispiel wird ein Bild oder Video über dem Ziel angezeigt.
  • Texturen – Eine Textur ist ein OpenGL-Objekt, das aus einem oder zwei Bildern mit demselben Bildformat besteht. Das Vuforia AR-System wandelt den Inhalt in eine Textur um und das AR-System rendert die Textur, um sie auf dem Vorschaubildschirm der Kamera anzuzeigen.
  • Java Native Interface – In den Vuforia Android-Beispielen werden die Lebenszyklus-Ereignisse in Java gehandhabt, aber Tracking-Ereignisse und Rendering sind in nativem C++ geschrieben. JNI kann verwendet werden, um zwischen Java und C++ zu kommunizieren, da es native Methodenaufrufe von Java aus ermöglicht.
  • Occlusion – Es bedeutet die Verfolgung eines virtuellen Objekts, das von einem realen Objekt verdeckt wird. Occlusion Management Handling beinhaltet die Herstellung einer Beziehung zwischen virtuellen und realen Objekten durch die Verwendung von transparenten Shadern und damit die Anzeige von Grafiken, als ob sie innerhalb einer realen Welt Objekt.
  • OpenGL ES – Vuforia verwendet OpenGL ES intern für das Rendering von 2D-und 3D-Grafiken mit einer grafischen Prozessoreinheit. OpenGL ES wurde speziell für Smartphones und eingebettete Geräte entwickelt.

Vuforia-Komponenten

Das obige Diagramm zeigt die Kernkomponenten der Vuforia AR-Anwendung.

  • Kamera – Erfasst das Vorschaubild und übergibt es an den Image Tracker.
  • Image Converter – Der Pixelformatkonverter konvertiert das Standardformat der Kamera in ein Format, das für OpenGL ES Rendering und Tracking geeignet ist.
  • Tracker – Der Tracker erkennt und verfolgt reale Objekte im Vorschaubild der Kamera mithilfe von Bilderkennungsalgorithmen. Die Ergebnisse werden in einem Statusobjekt gespeichert, das an den Videohintergrund-Renderer übergeben wird.
  • Videohintergrund-Renderer – Der Renderer rendert das im Statusobjekt gespeicherte Kamerabild und ergänzt es auf dem Kamerabildschirm.
  • Gerätedatenbanken – Die Gerätedatenbank oder der Datensatz enthält Ziele, die mit dem Target Manager erstellt wurden. Sie enthält eine XML-Konfigurationsdatei und eine binäre .dat-Datei.
  • Cloud-Datenbanken – Können mit dem Target Manager erstellt werden und können eine Datenbank mit bis zu 1 Million Targets enthalten, die zur Laufzeit abgefragt werden können.

Beginn der Entwicklung

TargetManager – Der erste Schritt besteht darin, Targets mit dem Vuforia Target Manager zu erstellen, um sie als Gerätedatenbank zu verwenden. Dazu ist zunächst eine kostenlose Registrierung auf dem Vuforia-Entwicklerportal erforderlich. Dieses Konto kann verwendet werden, um Ressourcen von Vuforia herunterzuladen und Probleme in den Vuforia-Foren zu posten. Nach der Anmeldung,

  • Öffnen Sie den TargetManager auf der Vuforia-Website wie oben gezeigt und öffnen Sie den Reiter Gerätedatenbanken.
  • Klicken Sie auf Datenbank erstellen, Ziel hinzufügen. Ein neuer Target-Dialog öffnet sich.

  • Wählen Sie das Bild, das Sie als Target anzeigen möchten, von Ihrem lokalen System aus. Es werden nur JPG- oder PNG-Bilder (nur RGB oder Graustufen) mit einer Größe von weniger als 2 MB unterstützt. Ein ideales Zielbild sollte detailreich sein und einen guten Kontrast sowie keine sich wiederholenden Muster aufweisen.
  • Wählen Sie als Zieltyp ein einzelnes Bild. Geben Sie einen beliebigen Wert für die Breite ein und klicken Sie auf „Ziel erstellen“. Nach kurzer Bearbeitungszeit wird das ausgewählte Ziel erstellt.
  • Wenn die Zielbewertung mehr als drei beträgt, kann das Ziel für die Verfolgung verwendet werden. Eine höhere Bewertung zeigt an, dass das Bild leicht vom AR-System verfolgt werden kann.
  • Fügen Sie weitere Ziele auf die gleiche Weise hinzu. Wählen Sie die Ziele aus, die Sie herunterladen möchten, und klicken Sie auf „Ausgewählte Ziele herunterladen“.
  • Der Download enthält eine <Datenbankname>.xml und <Datenbankname>.dat Datei. Die .xml-Datei enthält die Datenbank der Zielbilder, während die .dat-Datei eine binäre Datei ist, die Informationen über die trackbare Datenbank enthält.

Installation und Download von Beispielcode

  • Angenommen, du bist bereits in deinem Vuforia-Account eingeloggt, dann lade das Vuforia SDK für Android und die Samples für Android herunter
  • Extrahiere den Vuforia SDK-Ordner und lege ihn in denselben Ordner, in dem du deinen Android-SDK-Ordner aufbewahrt hast. Kopieren Sie die Samples in das leere Sample-Verzeichnis im Vuforia-SDK-Ordner und importieren Sie das VideoPlayBack-Beispiel.
  • Gehen Sie in Eclipse auf Window-Preferences und navigieren Sie zu Java-Build Path – Class Variables und erstellen Sie eine neue Variable.
  • Fügen Sie QCAR_SDK_ROOT in das Feld Name ein und wählen Sie den Vuforia SDK-Ordner aus, indem Sie auf die Ordner-Option klicken.
  • Prüfen Sie in Ihrem Projekt Java-Build Path, vuforia.jar wird unter Order and Exports tab exportiert.
  • Öffnen Sie copyVuforiaFiles.xml und geben Sie unter <fileset> den Pfad für armeabi-v7a an. Du kannst den Pfad im Build-Verzeichnis deines Vuforia-SDK-Ordners überprüfen. In meinem Fall unter Linux ist der Pfad : „/home/vineet/vineet/vuforia-sdk-android-2-8-8/build/lib/armeabi-v7a“
  • Der vorherige Schritt erzeugt die Datei libVuforia.so in deinem Projekt-Libs-Verzeichnis, wenn du die App baust und ausführst.
  • Die Demo-App enthält bereits 2 Marker und Videodateien, die du zum Testen verwenden kannst. Sie können die Marker aus den PDF-Dateien im Medienordner Ihrer App ausdrucken.
  • Nach dem Ausführen der App öffnet sich der Bildschirm der Kameraansicht. Wenn Sie die Kamera auf den Marker richten, erscheint ein Video auf dem Bildschirm, das den Marker überlagert.

Arbeitsablauf des Entwicklers

Wenn ein Benutzer die Beispiel-App startet, beginnt sie mit dem Erstellen und Laden von Texturen durch den Aufruf von loadTextures(). Hier werden die Bitmaps aus dem Assets-Ordner in Texturen umgewandelt, die von der Vuforia SDK-Engine für das Rendern von 3D-Objekten in der AR-Ansicht benötigt werden.

Gleichzeitig startet die App den Prozess zur Konfiguration der Engine durch den Aufruf von initAR(). Hier wird die App asynchron die Vuforia SDK Engine initialisieren. Nach erfolgreicher Initialisierung beginnt die App mit dem asynchronen Laden der Tracker-Daten. Sie lädt und aktiviert die Datensätze aus der XML-Zieldatei, die mit dem TargetManager erstellt wurde.

Nach der Konfiguration der Engine ruft die App initApplicationAR() auf, wo sie die OpenGLES-Ansicht erstellt und initialisiert und einen Renderer an sie anhängt, der erforderlich ist, um das Video auf dem Kamerabildschirm anzuzeigen, wenn das Bildziel gefunden wird. Der Renderer, der mit der OpenGL ES Ansicht verbunden ist, fordert das Laden von Videos durch den VideoPlaybackHelper an und ruft die OpenGL DrawFrame() Methode auf, um die Kamerabilder zu verfolgen. Während dieses Prozesses werden auch die OpenGL-Texturen aus den zu Beginn geladenen Texturobjekten und Texturen für die Videodaten erstellt.

Die App ruft dann startAR() auf, um die Kamera zu starten. Sobald die Kamera startet, beginnt der Renderer mit der Bildverfolgung. Wenn imageTarget gefunden wird, zeigt die App das Video an. Das Video kann so konfiguriert werden, dass es automatisch abgespielt wird oder beim Antippen gestartet wird.

Alle Ressourcen werden von der App durch den Aufruf von onDestroy() entladen, wenn der Benutzer die App schließt.

Abschluss

Mit diesem Blog haben wir nun gesehen, wie wir Vuforia verwenden können, um ImageTargets zu verfolgen und Videos darauf anzuzeigen. Vuforia kann für viele Zwecke verwendet werden, wie z.B. Texterkennung, Verdeckungsmanagement, Generierung von Laufzeitzielen aus der Cloud. Um mehr über Vuforia zu erfahren, besuchen Sie developer.vuforia.com.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.