Erstellen Sie mit Vuforia ein Pokémon GO-Stil mit Augmented Reality

Was Sie erstellen werden

1. Einleitung

Im ersten Beitrag dieser Serie haben wir darüber gesprochen, wie großartig Vuforia für das Erstellen von Augmented Reality-Erlebnissen ist. Jetzt können wir diese Konzepte in einer tatsächlichen App üben. In diesem Tutorial beginnen wir mit Augmented Reality mit Vuforia on Unity 3D herumzuspielen. Wir lernen, wie man Vuforia einrichtet und ein AR-Spiel von Grund auf entwickelt, wobei eine ähnliche Logik verwendet wird wie bei Pokémon GO!

Es ist nicht erforderlich, über Erfahrungen mit Unity oder Vuforia zu verfügen, um dieses Lernprogramm zu befolgen.

Wenn Sie tiefer graben möchten, lernen Sie in unserem kurzen Kurs eines der grundlegendsten Konzepte von AR, Markern, kennen:

1.1. Kurzer Überblick: Wie funktioniert Vuforia??

Vuforia verwendet den Kamera-Feed des Geräts in Kombination mit Beschleunigungsmessern und Gyroskopdaten, um die Welt zu untersuchen. Vuforia verwendet Computer Vision, um zu verstehen, was die Kamera "sieht", um ein Modell der Umgebung zu erstellen. Nach der Verarbeitung der Daten kann sich das System grob in der Welt befinden und seine Koordinaten kennen: Wo ist die Position nach oben, unten, links, rechts und so weiter.

Wenn Sie nicht wissen, worum es bei Vuforia geht, werfen Sie einen Blick auf den ersten Beitrag dieser Serie.

1.2. Was lernen wir??

Dieses Tutorial besteht aus zwei Teilen. In diesem Abschnitt werden wir einige Besonderheiten von Vuforia in Unity 3D kennenlernen, lernen, wie Sie die Umgebung einrichten, und wir werden auch ein kleines AR-Spiel namens Shoot the Cubes entwickeln. Wir werden dem besonders Aufmerksamkeit schenken ARCamera Fertigteil, einer der wichtigsten Teile von Vuforia in Unity.

Im zweiten Teil werden wir das Shoot the Cubes-Spiel weiterentwickeln, Interaktivität hinzufügen und interessanter machen. Dieser Abschnitt wird nicht zu sehr auf die Besonderheiten von Vuforia eingehen. Die Idee besteht darin, einige Möglichkeiten zu erkunden, die Unity bietet, um eine faszinierende Augmented Reality-Erfahrung zu schaffen.

2. Vuforia über die Einheit

Unity ist eine beliebte und leistungsstarke Spiel-Engine, die einfach zu bedienen ist und Spiele für mehrere Plattformen zusammenstellen kann. Die Verwendung von Unity bietet einige Vorteile für die Erstellung von AR-Erfahrungen mit Vuforia. Es ist möglich, auf alle von Vuforia unterstützten Systeme, einschließlich der Smart Glasses, zu zielen. Dank der Prefabs des SDK von Vuforia ist es einfacher zu bedienen. Wenn Sie nur Unity verwenden, können Sie auf alle Funktionen von Vuforia zugreifen.

2.1. Vuforia Prefabs

Sie können auf alle Funktionen von Vuforia in Unity über die Voreinstellungen von Vuforia zugreifen. Alles, was Sie tun müssen, ist das Objekt auf die Bühne zu ziehen und zu konfigurieren. Wie der Name vermuten lässt, sind Prefabs wie Vorlagen zum Erstellen und Klonen von Unity-Objekten mit Komponenten und Eigenschaften. Zum Beispiel die ImageTarget stellt Bilder dar, die als Ziele verwendet werden können. Schauen wir uns die Vuforia-Prefabs auf Unity an:

  • ARCamera: Das wichtigste Fertigteil. Es verwaltet das gesamte AR-Erlebnis, steuert die Renderqualität, definiert den Mittelpunkt der Welt, die zu verwendende Gerätekamera, die maximal zu verfolgenden Ziele und so weiter. In diesem Lernprogramm konzentrieren wir uns auf die Verwendung dieses Objekts.
  • Ziele: Alle Vuforia-Ziele haben ein eigenes Fertighaus: ImageTarget, MultiTarget, CylinderTarget, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Diese Ziele werden von der ARCamera und starten Sie eine Aktion, z. B. ein 3D-Objekt oder eine Animation.
  • CloudRecognition: Wird für den Zugriff auf im Vuforia-Cloud-System definierte Ziele verwendet.
  • SmartTerrain und Stütze: Diese Objekte werden in der Smart Terrain-Funktion verwendet.
  • Texterkennung und Wort: Prefabs, die in der Texterkennungsfunktion verwendet werden.
  • VirtualButton: Vuforia kann Ziele als Tasten verstehen, die vom Benutzer physisch gedrückt werden können. Dieses Prefab hilft Ihnen bei der Verwendung dieser Ressource.

3. Erstellen unserer ersten AR-Erfahrung

Das Spiel, das wir entwickeln werden, ist einfach, aber es veranschaulicht die Prinzipien der Augmented Reality gut und es wird uns einige Grundlagen von Vuforia vermitteln. Das Ziel des Spiels ist es, Würfel zu finden und zu schießen, die im Raum herumfliegen. Der Spieler sucht mit seinem Gerät nach Würfeln und tippt auf die Boxen. Wir kümmern uns nicht um Punkte, Level oder ähnliches, aber Sie können diese Aspekte des Spiels leicht selbst erweitern.

3.1. Einheit für Vuforia vorbereiten

Bevor wir anfangen zu spielen, müssen wir Unity für Vuforia vorbereiten. Der Prozess ist ziemlich einfach, und wir müssen im Wesentlichen das SDK-Paket von Vuforia importieren und ein ARCamera Fertig für unser Projekt.

  • Erstellen Sie ein Entwicklerkonto bei Vuforia.
  • Machen Sie das Login und laden Sie das Vuforia SDK für Unity herunter.
  • Öffne Unity und erstelle ein neues Projekt mit dem Namen "Shoot the Cubes".
  • Wechseln Sie nach dem Öffnen des Unity-Projektfensters zu Assets> Paket importieren> Benutzerdefiniertes Paket und wählen Sie das heruntergeladene SDK.
  • Alles importieren.
  • Löschen Sie die Kamera Objekt in der Hierarchie Fenster.
  • Wechseln Sie zu License Manager im Vuforia Developer Portal und erstellen Sie eine neue Lizenz mit Ihrem Entwicklerkonto.
  • Kopieren Sie den Lizenzschlüssel.
  • Zurück zur Einheit in der Projekt Fenster, gehe zu Assets> Vuforia> Prefabs> ARCamera.Wählen Sie das Element aus und ziehen Sie es in das Hierarchie Fenster.
  • Mit ARCamera ausgewählt, in der Inspektor Panel, gehen Sie zu Vuforia-Verhalten (Skript), finde das Feld App-Lizenzschlüssel, und fügen Sie die von Ihnen erstellte Lizenz in das Entwicklerportal von Vuforia ein.
  • Drücke den Sich bewerben Knopf in der Nähe der Inspektor Fenster, um den Lizenzschlüssel allen hinzuzufügen ARCamera Prefabs für dieses Projekt.

3.2. Testen, ob Vuforia funktioniert

Es ist Zeit zu prüfen, ob die Umgebung ordnungsgemäß funktioniert. 

Verwendung Ihrer Computerkamera

Wenn sich auf Ihrem Computer eine Webcam befindet, können Sie die Wiedergabetaste von Unity drücken, um zu prüfen, ob ARCamera funktioniert. Mit der Webcam können Ziele erkannt werden. Es ist jedoch nicht möglich, Sensordaten zum Testen Ihrer AR-Erfahrung zu verwenden. Wenn der Kamera-Feed nicht angezeigt wird Spiel In diesem Fenster besteht die Möglichkeit, dass Ihre Kamera nicht mit dem Webcam-Profil von kompatibel ist ARCamera

Konfigurieren der Anwendung zur Ausführung auf einem Gerät

Die beste Möglichkeit, Ihre Vuforia-Anwendung zu testen, ist direkt auf dem Gerät. Wir werden das Projekt für Android kompilieren, aber die gleichen Schritte würden für iOS-Geräte gelten.

  • Zuerst müssen wir die Szene speichern, an der wir gerade arbeiten. Gehe zu Datei> Szene speichern.
  • Wähle aus Vermögenswerte Ordner und erstellen Sie einen neuen Ordner mit dem Namen Szenen.
  • Speichern Sie diese Szene als ShootTheCubesMain.
  • Gehe zu Datei> Einstellungen erstellen.
  • Wählen Android und klicken Sie auf Plattform wechseln. Wenn diese Option deaktiviert ist, müssen Sie das gewünschte Unity SDK für das Gerät herunterladen.
  • Klicke auf Player-Einstellungen und konfigurieren Sie das Projekt in der Inspektor Fenster.
  • Achten Sie auf einige Optionen: Schalten Sie das aus Auto Graphics API und stellen Sie sicher, dass OpenGLES2 ist für ausgewählt Grafik-API Möglichkeit.
  • Schreib die Bundle Identifier.
  • Stellen Sie bei Android-Geräten sicher, dass die Mindest-API-Level ausgewählt ist API 9 oder größer. Sie müssen auch verwenden ARMv7 für die Gerätefilter Möglichkeit.
  • Wenn Sie die Schritte korrekt ausgeführt haben, kann das Projekt erstellt werden. Wenn Sie jedoch zum ersten Mal ein Unity-Projekt für Android oder iOS kompilieren, müssen Sie Unity für diese Geräte konfigurieren. Folgen Sie dieser Anleitung für Android und diese für iOS.
  • Um das Projekt auszuführen, gehen Sie zurück zu Einstellungen erstellen und klicken Sie auf Bauen und ausführen.

Nach dem Aufbau wird die Anwendung auf Ihrem Gerät installiert. Im Moment sollten Sie nur erwarten, dass die Kamera ohne Fehler auf Ihrem Gerät angezeigt wird. Wenn Sie das haben, hat alles richtig funktioniert.

3.3. Verwenden des ARCamera Prefab

Das Ziel des Spiels Shoot the Cubes besteht darin, fliegende Würfel mit der Kamera und den Sensoren des Geräts zu suchen und zu schießen. Dieser Ansatz ähnelt dem von Pokémon GO. Um dies zu erreichen, müssen wir nur die Vuforia verwenden ARCamera vorgefertigt.

Dem Skript sind viele Skripte beigefügt ARCamera. Die einzige, die Sie verstehen müssen, ist die Vuforia Verhalten Skript. Schauen wir uns die Optionen an:

  • App-Lizenzschlüssel: Wo der Vuforia-Lizenzschlüssel eingefügt werden soll.
  • Kamerageräte-Modus: Steuert die Renderqualität der Objekte.
  • Max. Gleichzeitig nachverfolgte Bilder: Definiert die maximalen gleichzeitig verfolgten Ziele. Vuforia empfiehlt nicht mehr als fünf gleichzeitig.
  • Max. Gleichzeitig nachverfolgte Objekte: Definiert die maximalen Objekte, die gleichzeitig verfolgt werden. Vuforia empfiehlt nicht mehr als fünf gleichzeitig.
  • Objektziele bei Erkennung laden: Lädt das mit dem Ziel verknüpfte Objekt, sobald das Ziel erkannt wird.
  • Kamerarichtung: Wählen Sie die zu verwendende Gerätekamera aus.
  • Spiegel-Videohintergrund: Legt fest, ob der Kamera-Feed gespiegelt werden soll.
  • Word Center-Modus: Die relevanteste Option für unser Projekt. Es definiert, wie das System den Mittelpunkt der Welt lokalisieren soll. 
    • SPECIFIC_TARGET: Verwendet ein bestimmtes Ziel als Referenz zur Welt.
    • FIRST_TARGET: Das erste erkannte Ziel wird als Referenz zur Welt verwendet.
    • KAMERA: Verwendet die Kamera als Bezugspunkt zur Welt.
    • DEVICE_TRACKING: Verwendet den Gerätesensor als Referenz, um die Positionen der Welt festzulegen. Dies ist die Option, die wir für unser kleines Projekt wählen müssen.

Für jetzt alles, was Sie in der ändern müssen ARCamera ist der Word Center-Modus. Klicke auf das ARCamera Element in der Hierarchie und in der Inspektor Bereich, ändern Sie die World Center-Modus zu DEVICE_TRACKING.

3.4. Verwenden des Sensors des Geräts, um das Zentrum der Welt zu finden

Fügen Sie der Bühne einen Würfel hinzu und testen Sie, ob die ARCamera ordnungsgemäß funktioniert.

  • Stelle sicher das ARCameraDie Position und Rotation von X, Y und Z ist auf 0 gesetzt.
  • Ein ... kreieren Würfel Objekt von Spielobjekt> 3D-Objekt> Würfel.
  • Bewegen Sie den Würfel Position auf der Z Achse zu 10 und 0 auf der X und Y.
  • Rahmen das Objekt zu 2 auf der XY, und Z Achse.
  • Drehen der Würfel 45 grad auf der X und Y Achse.
  • Sie können die Wiedergabetaste drücken, um zu überprüfen, ob der Würfel richtig positioniert ist.
  • Wenn Sie sicher sind, dass der Cube richtig positioniert ist, erstellen Sie das Projekt erneut und testen Sie es auf dem Gerät. Um zu bauen, gehe zu Datei> Erstellen und ausführen.

Sie müssen sich umsehen, indem Sie Ihr Gerät drehen, um den Würfel zu finden. Sie werden bemerken, dass das Objekt an der gleichen Stelle bleibt, auch wenn Sie das Gerät wegdrehen. Es ist, als ob der Würfel in der realen Welt 'existiert', aber nur mit der Gerätekamera sichtbar ist.

3,5. Einstellen der Position der Elemente gemäß ARCamera

Das erste Problem mit unserer Anwendung ist bisher, dass der Cube an einer beliebigen Stelle erscheinen kann und der Benutzer sich umsehen muss, um ihn zu finden. Da der Mittelpunkt der Welt anhand der Sensoren des Geräts definiert wird, können wir nicht sicher sein, wo sich die Elemente tatsächlich befinden. Dies liegt daran, dass der Benutzer mit dem Gerät in einer beliebigen Richtung beginnen kann und weil die Art und Weise, wie die Rotation gemessen wird, von Gerät zu Gerät variiert.

Um sicherzustellen, dass die AR-Entitäten aus Sicht des Benutzers beginnen, ist es am einfachsten, darauf zu warten, dass Vuforia den Mittelpunkt der Welt definiert und den ARCamera drehen und dann die Startposition der Elemente entsprechend dieser Ausrichtung festlegen.

Wir schaffen eine Spawn-Manager um die Position der zu erzeugenden Würfel festzulegen. Der Manager legt seine Position gemäß fest ARCamera Drehung. Es wird gewartet, bis die Drehung eingestellt ist, und bewegt sich dann 10 Einheiten vor die Kamera.

  • Erstellen Sie zwei leere Objekte mit Spielobjekt> Leere erstellen. Klicken Sie mit der rechten Maustaste auf eines der Objekte, die Sie gerade erstellt haben, und benennen Sie es um _SpawnController.
  • Ändern Sie den Namen des anderen leeren Objekts in _GameManager.
  • In dem Projekt Wählen Sie das Fenster aus Vermögenswerte Ordner und erstellen Sie einen neuen Ordner mit dem Namen Skripte.
  • In dem Skripte Erstellen Sie ein C # -Skript mit dem Namen SpawnScript.
  • Zieh den SpawnScript zum _SpawnController.
  • Doppelklicken Sie auf SpawnScript um es zu bearbeiten.

Zuerst fügen wir das Vuforia-Paket hinzu.

mit UnityEngine; using System.Collections; // Wir müssen das Paket Vuforia verwenden, um sicherzustellen, dass // alles mit Vuforia funktioniert. öffentliche Klasse SpawnScript: MonoBehaviour 

Zugreifen ARCamera, benutzen Camera.main. Erstellen Sie eine Funktion, um die Kameraposition zu ermitteln, und legen Sie den Würfel so fest, dass er von diesem Punkt aus um 10 Einheiten nach vorne gerückt wird.

public class SpawnScript: MonoBehaviour // Definiere die Position, wenn das Objekt // entsprechend der ARCamera-Position private bool SetPosition () // die Kameraposition abrufen soll. Transformieren cam = Camera.main.transform; // Stelle die Position 10 Einheiten von der Kameraposition aus nach vorne um. transform.position = cam.forward * 10; wahr zurückgeben; 

Wir werden die Position nur einmal vom ändern Start Funktion. Position ändern ist eine Coroutine, die ein wenig warten muss, bevor die Position eingestellt wird.

 private bool mPositionSet; void Start () // Definieren der Laichposition StartCoroutine (ChangePosition ());  // Wir werden eine Coroutine verwenden, um eine kurze // Verzögerung einzugeben, bevor die Position festgelegt wird. Private IEnumerator ChangePosition () Ausbeute zurückgeben new WaitForSeconds (0.2f); // Definiere die Spawn-Position nur einmal, wenn (! MPositionSet) // die Position nur ändern, wenn Vuforia aktiv ist, wenn (VuforiaBehaviour.Instance.enabled) SetPosition ();  

Lassen Sie uns das Skript testen:

  • Klicken Sie in Unity erneut auf _SpawnController Objekt und Verwendung Spielobjekt> 3D-Objekt> Kugel eine Kugel hineinlegen _SpawnController
  • Wählen Sie die Kugel aus und stellen Sie sicher, dass ihre Position auf der X-, Y- und Z-Achse auf 0 gesetzt ist. 
  • Jetzt überlappen wir den Würfel und _SpawnController So können Sie die Wichtigkeit des Skripts erkennen. Wählen _SpawnController und setzen Sie seine Position auf der X- und Y-Achse auf 0 und auf der Z-Achse auf 10, dieselbe Position wie der Würfel. 

Die Elemente beginnen sich überlappend; Sobald Sie jedoch die Anwendung auf einem Gerät erstellt und ausgeführt haben, sehen Sie das _SpawnController und seine Kugel erscheint vor der Kamera, und der Würfel befindet sich an einem anderen Ort. Probier es aus! Stellen Sie sicher, dass Sie das Gerät direkt beim Start der App betrachten.

4. Fazit

Herzlichen Glückwunsch, Sie haben Ihre erste Augmented Reality-Erfahrung erstellt. Ja, es ist ein bisschen grob, aber es funktioniert! In diesem Lernprogramm haben Sie gelernt, wie man die Hauptfertigungsfläche von Vuforia in Unity verwendet, die ARCamera. Sie haben auch gelernt, wie Sie es konfigurieren und wie Sie die Gerätesensoren verwenden, um die Illusion zu erzeugen, dass ein virtuelles Objekt in die Welt eingefügt wird.

4.1. Was kommt als nächstes?

Im nächsten Tutorial werden wir dieses Prinzip verbessern, um ein echtes Spiel und eine einnehmendere Erfahrung zu schaffen. Wir werden das Shoot the Cubes-Spiel weiterentwickeln, Interaktivität hinzufügen und die Möglichkeiten von Unity erkunden, um ein interessantes AR-Spiel zu erstellen. Wir bringen die Würfel zum Laichen und fliegen herum, und wir lassen den Spieler suchen und zerstören, indem er einen Laser aus dem Gerät schießt.

Bis bald!

Besonderer Dank für die Von Freepik entworfener Bildvektor, lizenziert unter Creative Commons CC BY-SA.