[Es gibt 3D-GIFs unter dem Schnitt]Augmented Reality (AR) ist plötzlich ein sehr beliebter Begriff geworden. Dank Vuforia können Entwickler
die physische Welt problemlos mit digitalen Inhalten
ergänzen .
Obwohl die Veröffentlichung von
ARKit und
ARCore dazu beigetragen hat, die Popularität von Augmented Reality zu steigern, gab es bereits andere Plattformen und SDKs. Einer von ihnen war Vuforia;
Vor kurzem hat Unity
eine Partnerschaftsvereinbarung mit Vuforia geschlossen und diese AR-Plattform in die Unity-Game-Engine integriert.
In diesem Tutorial werde ich ein AR-Spiel mit dem in die Unity-Engine integrierten Vuforia SDK erstellen. Dabei werde ich auf folgende Schlüsselkomponenten eingehen:
- Richten Sie die Datenübertragung von der Augmented Reality-Kamera ein
- Bildverfolgung - was es ist und wie es funktioniert
- Anhängen von digitalen Inhalten an ein physisches Objekt
- Erstellen Sie benutzerdefinierte Interaktionen, die je nach dem, was die Kamera sieht, ausgelöst werden
Hinweis: In diesem Tutorial zu Vuforia wird davon ausgegangen, dass Sie die Grundlagen der Entwicklung in Unity bereits kennen. Wenn Sie Unity noch nicht kennen, lesen Sie das großartige Tutorial Erste Schritte mit Unity .
Entwicklung von AR-Spielen in Unity
Es gibt viele AR-Geräte auf dem Markt, aber das Hauptziel von AR-Anwendungen ist der mobile Bereich von Plattformen wie iOS und Android. Hier ist die Kombination von Unity und Vuforia praktisch - bei der plattformübergreifenden Entwicklung. Ein weiteres Plus ist, dass die Anwendung im Editor getestet werden kann. Dafür brauchen Sie nur eine Webcam!
Bevor Sie beginnen, laden Sie die neueste Version von Unity herunter und installieren Sie die
Vuforia Augmented Reality Support- Komponente. Wenn Sie den
Unity Hub verwenden , können Sie diese Komponente einer bereits installierten Version von Unity hinzufügen.
An die Arbeit gehen
Nachdem Sie Unity, Vuforia und eine Webcam haben, müssen Sie ein Beispielprojekt herunterladen (
von hier ).
Extrahieren Sie nach dem Herunterladen die Dateien und öffnen Sie das Projekt
Erstellen eines AR-Spiels mit Vuforia Starter in Unity. Öffnen Sie beim
Laden des Projekts die
Starterszene aus dem Ordner "
Szenen " und sehen Sie sich das Hierarchiefenster an:
Nachdem Sie die Zusammensetzung des Projekts überprüft haben, klicken Sie im Editor auf die Schaltfläche
Wiedergabe , um die Bestellung in unserem Pizzaspiel auszufüllen.
Großartig, wir können mit Pizza spielen, aber unsere eigentliche Herausforderung besteht darin, daraus ein AR-Spiel zu machen.
Hinweis: Die UI-Assets für dieses Tutorial wurden von shareicon.net heruntergeladen
.
Treffen Sie den Vuforia Chef
Dazu müssen wir die virtuelle Pizza auf dem Tracker-Bild anzeigen lassen, das wir in der realen Welt haben. Nachdem Sie die Füllung zur Bestellung hinzugefügt haben, können Sie die Pizza physisch "servieren" und sie aus der Sichtweite der Kamera entfernen ...
Aber alles hat seine Zeit. Zuerst müssen Sie die
Hauptkamera durch die
AR-Kamera ersetzen. Entfernen Sie die
Hauptkamera aus der Szene und
klicken Sie mit der
rechten Maustaste in die
Hierarchie .
Fügen Sie dann
Vuforia -> AR Camera hinzu . Dies öffnet dieses Fenster:
Klicken Sie auf
Importieren und warten Sie, bis das Vuforia-Paket in das Projekt importiert wurde. Es werden einige Dateien hinzugefügt.
Sie können die neuen Dateien in den Ordnern
Editor und
Streaming Assets ignorieren. Dies sind nur Vorlagen; Die benötigten Dateien sind im Projekt enthalten.
Der
Vuforia- Ordner enthält alle Prefabs und Skripte, die von der von uns verwendeten Vuforia-Plattform verwendet werden.
Erwähnenswert ist auch die
VuforiaConfiguration- Datei im Ordner
Resources . Diese Datei wurde hinzugefügt, da für die Entwicklung der Vuforia-Anwendung eine Lizenz erforderlich ist. Wenn Sie möchten, können Sie jedoch eine kostenlose Entwicklerlizenz für das
Vuforia Developer Portal erwerben.
Hinweis: Wenn Ihr Projekt keinen App-Lizenzschlüssel hat, finden Sie ihn in der README-Datei. Kopieren Sie die Zeile in das Inspektorfeld der
VuforiaConfiguration- Datei.
Jetzt, da wir die AR-Kamera in der Szene haben, bleibt nur noch eines zu tun - Augmented Reality einschalten!
Gehen Sie zu
Bearbeiten -> Projekteinstellungen -> Player . Scrollen Sie nach unten zu den
XR-Einstellungsoptionen und stellen Sie sicher, dass das Kontrollkästchen
Vuforia Augmented Reality Supported aktiviert ist.
Klicken Sie in den
Play Editor und grüßen Sie sich selbst!
Hinweis: Wenn Sie auf Wiedergabe geklickt haben und der Bildschirm „Vuforia-Initialisierung fehlgeschlagen“ angezeigt wird, starten Sie Unity neu. Dies ist ein zufälliger Fehler, der nur auf einigen Systemen auftritt.
Einführung in die Mustererkennung
Sich selbst zu bewundern ist natürlich großartig, aber wollten wir nicht ein Pizzaspiel machen?
Standardmäßig arbeitet Vuforia mit der
Bilderkennung . Die Mustererkennung, auch Tracker-Erkennung oder Bildverfolgung genannt, ist ein Prozess, bei dem eine Kamera ein vordefiniertes Bild erkennt und weiß, was damit zu tun ist, z. B. Inhalte darüber zu rendern. Dies funktioniert am besten, wenn das Tracking-Bild irgendwie mit dem Inhalt übereinstimmt, z. B. funktionieren Grundrisse für das Rendern von Gebäuden gut über dem Bild mit dem Gebäude.
So funktioniert es: Es ist sehr wichtig, ein Bild von guter Qualität für die Verfolgung auszuwählen. Wenn Sie Vuforia verwenden, können Sie das ausgewählte Bild in das Entwicklerportal hochladen, um die Qualität der Nachverfolgung zu überprüfen. Dies muss
vor Beginn der Entwicklung erfolgen. Das Entwicklerportal weist dem Bild eine Bewertung zu, zeigt aber vor allem seine „charakteristischen Punkte“ an. Damit der Tracker gut ist, sollten diese charakteristischen Punkte (Merkmalspunkte) dicht über das Bild verteilt sein und keine sich wiederholenden Muster enthalten. Zur Laufzeit sucht die Kamera nach diesen charakteristischen Punkten, um ihre Position relativ zum Bild zu berechnen.
Für dieses Tutorial sind die Bild- und Tracking-Datenbank bereits konfiguriert. Das Bild der Pizza befindet sich im zuvor heruntergeladenen Materialordner. Im Idealfall ausdrucken. Oder Sie können es auf einem digitalen Gerät öffnen und dann der Kamera „zeigen“. So sieht das Bild in der Vuforia Tracker-Datenbank aus:
Wie Sie sehen können, sind die charakteristischen Punkte gut verteilt. Es ist auch Pizza, was praktisch ist!
Hinzufügen von Bildzielen zur Szene
Es ist Zeit, die Magie zu machen! Wir werden virtuelle Pizza über unserer Pizza erscheinen lassen. Verwenden
Sie erneut das Menü
Erstellen in der
Hierarchie und wählen Sie
Vuforia -> Bild .
Jetzt haben wir ein
Image Target GameObject in der Szene. Schauen Sie sich dieses Ziel im Inspektor an und Sie werden mehrere Komponenten sehen. Die wichtigsten sind das
Image- Zielverhalten und der
standardmäßige verfolgbare Ereignishandler . Wir werden den zweiten Teil später genauer untersuchen. Stellen Sie jedoch vorerst sicher, dass die Optionen für die Dropdown-Liste Bildzielverhalten wie folgt konfiguriert sind:
- Die Datenbank ist auf RW_ItsaPizza eingestellt
- Bildziel auf PizzaClipArt eingestellt
Erinnern Sie sich an die Dateien, die zuvor zu dem Projekt hinzugefügt wurden und die ich ignorieren wollte? Du hast sie gefunden! Vuforia fügt mehrere Image Target-Beispieldatenbanken hinzu, damit wir mit der Entwicklung beginnen und sie für Beispiele verwenden können, z. B. die von uns verwendete, die bereits zu den Materialien hinzugefügt wurden.
Hinweis: Der Pizza-Tracker ist das einzige Bildziel in Ihrer Datenbank. Es können jedoch Hunderte von Bildern in einer Datenbank vorhanden sein. Darüber hinaus können mehrere Datenbanken in einer Anwendung vorhanden sein.
Nachdem wir die
AR-Kamera und den
Image Tracker in der Szene konfiguriert haben, haben wir alles, was Sie brauchen, damit Augmented Reality funktioniert! Klicken Sie im Editor auf die Schaltfläche
Wiedergabe und platzieren Sie das gedruckte Bild vor der Kamera.
Wir haben Pizza!
Anhängen von Spielobjekten an Tracker als untergeordnete Objekte
Die Pizza ist etwas klein, klebt aber fest am Tracker-Image. Sie können auch feststellen, dass die Pizza in der Luft hängt, wenn Sie das verfolgte Bild entfernen.
Tatsache ist, dass Vuforia die Position der
AR-Kamera in der Szene aktualisieren kann, während die Webcam den
Bild-Tracker sehen kann. Wenn Sie dies in Aktion sehen möchten, konfigurieren Sie den Unity-Editor so, dass sowohl das
Spiel- als auch das
Szenenfenster gleichzeitig sichtbar sind. Wählen Sie dann
AR-Kamera aus und klicken Sie auf Wiedergabe.
Wie kann man Pizza richtig verhalten, wenn die Kamera funktioniert? Wählen Sie
ImageTarget in der Hierarchie aus. Sie werden sehen, dass der Maßstab auf jeder Achse
10 beträgt. Dies wird von der Komponente
Image Target Behavior gesteuert. Im erweiterten Abschnitt können Sie sehen, dass der Parameter
Width den Wert
10 hat . Es wurde festgelegt, als das Bild auf die Vuforia Developer-Website hochgeladen wurde.
Hinweis: Verstehst du nicht, warum Image Target in diesem Tutorial auf Breite 10 eingestellt wurde? Wenn die Größe für die Anwendung kein wesentlicher Faktor ist, erhöht die Einstellung der Kamera auf 10 die Wahrscheinlichkeit der Verfolgung, während die Position des Inhalts zwischen der nahen und der fernen Ebene der AR-Kamera gut positioniert wird. Manchmal ist es jedoch notwendig, dass Augmented Reality einen bestimmten Umfang hat. In diesem Fall müssen Sie die Größe des Image-Trackers so einstellen, dass sie den physischen Maßen beim Hochladen auf das Entwicklerportal entspricht.
Wählen Sie nun GameObject
Pizza in der
Hierarchie . Ziehen Sie es auf
ImageTarget , um es zu einem
untergeordneten Element zu machen. Die Skala ändert sich zu
(X: 0.1, Y: 0.1, Z: 0.1)
. Stellen Sie die Werte
(X: 1, Y: 1, Z: 1)
und verschieben Sie die Position entlang der
Y- Achse auf
0.01
. Dank dessen wird
Pizza ImageTarget entsprechen .
Drücken Sie erneut auf
Wiedergabe , und Sie sehen, dass sich die Pizza oben auf dem Bild befindet und auch verschwindet, wenn das Bild aus dem Rahmen verschwindet.
Erkunden von DefaultTrackableEventHandler
Dieses Verhalten wird dem
DefaultTrackableEventHandler des
ImageTarget übernommen . Öffnen Sie das Skript und zeigen Sie es an.
Das Skript ist gut kommentiert, aber es lohnt sich, einige Aspekte zu beachten:
- Die Start- Funktion registriert dieses Skript als Ereignishandler für das TrackableBehaviour (in diesem Fall ImageTargetBehaviour ).
- OnDestroy entfernt diesen Link.
- OnTrackableStateChanged ist die wichtigste Funktion. Ihr Code sagt, was passieren soll, wenn sich der Tracking-Status ändert.
- OnTrackingFound und OnTrackingLost werden von OnTrackableStateChanged aufgerufen . In DefaultTrackableEventHandler schalten sie die Renderer- , Collider- und Canvas- Komponenten eines untergeordneten Elements um .
Wenn die Kamera ein Bild erkennt, bewegt sie nicht mehr nur die
AR-Kamera . Sie befiehlt GameObject
Pizza außerdem , alle
Renderer- Komponenten einzuschalten. Wenn das Bild von der Kamera verschwindet, befiehlt er erneut, sie auszuschalten.
Verdauen Sie diese Informationen vorerst.
Erstellen Sie Ihre eigenen Tracking-Aktionen
Es ist Zeit, etwas mit diesen Informationen zu tun!
Entfernen Sie die
DefaultTrackableEventHandler- Komponente aus
ImageTarget .
Fügen Sie dann den
PizzaTrackableEventHandler hinzu , der sich im Ordner
Scripts befindet . Öffnen
Sie dann
PizzaTrackableEventHandler . Dies ist ein Klon von
DefaultTrackableEventHandler , aber der Code in
OnTrackingFound und
OnTrackingLost wurde gelöscht -
Sie müssen dieses Problem lösen!
Das Aktivieren und Deaktivieren von
Renderer- Komponenten ist in fast jeder AR-Anwendung praktisch. Lassen Sie uns diesen Code also zurückerhalten. Wenn Sie nicht
weiterkommen , können Sie es aus dem
DefaultTrackableEventHandler kopieren oder unter dem Spoiler unten finden.
Code protected virtual void OnTrackingFound() { var rendererComponents = GetComponentsInChildren<Renderer>(true);
Wir sind bereit, dieses Projekt in ein Spiel in Augmented Reality zu verwandeln!
Schauen Sie sich die Benutzeroberfläche an und finden Sie die Schaltfläche, die der Spieler drücken muss, um seine Pizza fertigzustellen.
Wie Sie sehen können, wird Event
GameManager.CompleteOrder()
aufgerufen, wenn eine Taste gedrückt
GameManager.CompleteOrder()
. Anstatt den Spieler zu zwingen, den Knopf zu drücken, können Sie sicherstellen, dass er Pizza „serviert“ hat, um die Bestellung abzuschließen (er hat den Tracker aus der Sichtweite der Kamera verschoben).
Fügen Sie zu Beginn von
PizzaTrackableEventHandler ein
UnityEvent hinzu , das aufgerufen werden soll, wenn Image die Verfolgung verliert.
using Vuforia; using UnityEngine; using UnityEngine.Events; public class PizzaTrackableEventHandler : MonoBehaviour, ITrackableEventHandler { public UnityEvent OnTrackingLostEvent; ...
Rufen wir nun das Ereignis in der
OnTrackingLost- Methode auf:
protected virtual void OnTrackingLost() { var rendererComponents = GetComponentsInChildren<Renderer>(true);
Dies macht
PizzaTrackableEventHandler flexibler, da wir jetzt die Ausführung aller Aktionen festlegen können, wenn das Tracking verloren geht. Speichern Sie den
PizzaTrackableEventHandler , kehren Sie zum Unity-Editor zurück und warten
Sie , bis die Kompilierung abgeschlossen ist. Wenn es endet, muss
GameManager.CompleteOrder()
aufgerufen werden, wenn der Tracking-Pizza-Tracker verloren geht. Deaktivieren oder entfernen Sie schließlich
CompleteOrderButton in der Benutzeroberfläche.
Speichern Sie die Szene, klicken Sie auf
Wiedergabe und servieren Sie Pizza!
Wohin als nächstes gehen
Herzlichen Glückwunsch, Sie haben das Tutorial abgeschlossen!
Ein Beispielprojekt kann hier heruntergeladen
werden .
Weitere Informationen zum Entwickeln mit Vuforia in Unity finden Sie in der
Vuforia Developer Library oder
im Unity-Lernprogramm .
Vergessen Sie nicht, auf
dem Vuforia-Portal ein Entwicklerkonto für sich selbst einzurichten. Sie können dort auch versuchen, mehrere verschiedene Tracker hochzuladen, um zu überprüfen, wie sie verfolgt werden.
Weitere Informationen finden Sie unter
Virtuelle Schaltflächen . Die Vuforia-Website enthält Beispielmaterialien. Überprüfen Sie, ob Sie diese virtuellen Schaltflächen erstellen können, um die Benutzeroberfläche in einem Pizzaspiel zu ersetzen.
Überlegen Sie sich neue Ideen für Augmented Reality-Spiele. Vielleicht ist dies ein Kartenkampfspiel, bei dem Kreaturen direkt von den Karten springen? Was ist mit Tower Defense? Wo steuern Sie einen Kampfhubschrauber mit Ihrem Telefon?