Inhaltsverzeichnis:
- Schritt 1: Starten Sie ein neues Projekt
- Schritt 2: Lassen Sie uns Vuforia einrichten
- Schritt 3: Fügen Sie ein neues Skript hinzu
- Schritt 4: Fügen wir das Auto hinzu
- Schritt 5: Setzen Sie das Auto in den Himmel
- Schritt 6: Lambo-Türen
- Schritt 7: Video in AR abspielen
- Schritt 8: Legen Sie die App auf Ihr Telefon
Video: Augmented Reality Vuforia 7 Groundplane-Erkennung. - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
Das Augmented-Reality-SDK von Vuforia für Unity 3D verwendet ARCore und ARKit, um Groundplanes in AR zu erkennen. Das heutige Tutorial verwendet ihre native Integration in Unity, um eine AR-App für Android oder IOS zu erstellen. Ein Auto wird vom Himmel auf den Boden fallen und seine Türen öffnen sich automatisch, wenn wir näher kommen. Wir werden auch Videos in AR erstellen. Um mitzumachen, müssen Sie Unity 3D auf Ihrem Computer installieren (es ist kostenlos). Diese Anweisungen sind für absolute Anfänger, daher werden wir alles im Detail durchgehen!
Das Beste an Vuforias SLAM ist die Anzahl der unterstützten IOS- und Android-Geräte. Eine vollständige Geräteliste finden Sie hier:
library.vuforia.com/articles/Solution/grou…
Schritt 1: Starten Sie ein neues Projekt
Laden Sie Unity 3D von hier herunter, falls Sie es noch nicht haben:
Stellen Sie sicher, dass Sie die Unterstützung für Vuforia Augmented Reality und Android oder IOS installieren, je nachdem, welches Gerät Sie haben.
Öffnen Sie Unity und starten Sie ein neues Unity-Projekt, nennen Sie es wie Sie wollen.
Lassen Sie uns zuerst die App einrichten, um sie aufzubauen, damit wir sie nicht vergessen. Speichern Sie also die Szene und nennen Sie sie "main".
Gehen Sie zu Datei, Build-Einstellungen und stellen Sie Ihre Build-Plattform auf Android oder IOS um. Navigieren Sie in den Player-Einstellungen zu den XR-Einstellungen und aktivieren Sie Vuforia Augmented Reality Supported.
Wenn Sie Android verwenden, müssen Sie nichts weiter tun, aber auf IOS gehen Sie zu anderen Einstellungen und stellen Sie sicher, dass Sie etwas für Ihre Bundle-Kennung eingeben. Verwenden Sie das Format "com. IhrFirmenname. IhrAppName".
Geben Sie alles für die Beschreibung der Kameranutzung ein und ändern Sie die minimale Zielversion der Build-Version auf mindestens 9.0.
Schließen Sie das ab und lassen Sie uns jetzt alles andere einrichten.
Schritt 2: Lassen Sie uns Vuforia einrichten
Lassen Sie uns jetzt alles einrichten.
Gehen Sie zu gameobject im oberen Menü und klicken Sie auf ARCamera. Löschen Sie nun die Hauptkamera aus Ihrer Szene.
Wählen Sie die ARCamera aus und klicken Sie rechts im Inspektor auf Open Vuforia Configuration. Klicken Sie auf die Datensatzsammlung und deaktivieren Sie alles, da wir hier keine Bildziele verwenden.
Klicken Sie auf Geräte-Tracker und klicken Sie auf Gerätepose verfolgen. Ändern Sie die Verfolgung von rotatorisch auf positionell.
Gehen Sie nun zurück zum Spielobjekt-Tab und klicken Sie auf Vuforia, Ground Plane und Plane Finder. Darin befinden sich die Skripte, die unsere Grundebene finden.
Das letzte, was wir brauchen, ist die Groundplane-Bühne. Gehen Sie also im oberen Menü erneut zum Spielobjekt und klicken Sie auf Vuforia, Ground Plane und wählen Sie Groundplane-Bühne. Jetzt wird alles, was wir untergeordnet haben, in AR angezeigt.
Schritt 3: Fügen Sie ein neues Skript hinzu
Das Standardverhalten dieser Groundplane-Erkennung besteht darin, jedes Mal, wenn Sie auf den Bildschirm drücken, ein neues Objekt zu platzieren. Was wir wollen, ist, das Objekt jedes Mal neu zu positionieren, wenn Sie auf den Bildschirm drücken. Klicken Sie also mit der rechten Maustaste in Ihren Assets-Ordner und erstellen Sie ein neues C#-Skript. Nennen Sie es "DeployStageOnce" und ersetzen Sie alles durch diesen Code:
Verwenden des Systems;
mit UnityEngine; mit Vuforia; öffentliche Klasse DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; privater PositionalDeviceTracker _deviceTracker; privates GameObject _vorherigerAnchor; public void Start() { if (AnchorStage == null) { Debug. Log("AnchorStage muss angegeben werden"); Rückkehr; } AnchorStage. SetActive(false); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } privat void OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(HitTestResult result) { if (result == null || AnchorStage == null) { Debug. LogWarning("Hit test is invalid or AnchorStage not set"); Rückkehr; } var Anker = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), Ergebnis); if (anchor != null) { AnchorStage.transform.parent = Anker.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive(true); } if (_vorherigerAnchor != null) { Destroy(_vorherigerAnchor); } _vorherigerAnchor = Anker; } }
Um sicherzustellen, dass dieses Skript verwendet wird, müssen wir die Funktion OnInteractiveHitTest() aufrufen. Gehen Sie also zurück zu Unity und klicken Sie auf das Spielobjekt Flugzeugfinder. Ändern Sie den Modus von Automatisch auf Interaktiv. Ziehen Sie das soeben erstellte Skript auf das Spielobjekt Flugzeugfinder. Entfernen Sie das ContentPositioningBehavior-Skript. Sie sehen einen Platz für ein Spielobjekt im DeployStageOnce-Skript, ziehen den Flugzeugfinder dorthin, suchen dieses Skript und wählen die OnInteractiveHitTest-Funktion oben in der Liste. Jetzt wird unsere Funktion aufgerufen, wenn der Benutzer auf den Bildschirm klickt!
Schritt 4: Fügen wir das Auto hinzu
Laden Sie dieses kostenlose 3D-Automodell von hier herunter (Achten Sie darauf, die.obj-Version zu erhalten):
www.turbosquid.com/3d-models/max-exterior-…
Laden Sie auch diesen Sound herunter, denn wir werden ihn spielen, wenn das Auto auf dem Boden aufschlägt:
freesound.org/people/PaulMorek/sounds/1967…
Entpacken Sie diese beiden Dateien und ziehen Sie sie in Ihren Assets-Ordner.
Klicken Sie auf das Auto und schauen Sie nach rechts, ändern Sie Eingebettete Materialien verwenden in Externe Materialien verwenden (Legacy) aus dem Dropdown-Menü oben. Jetzt können wir die Farbe aller Materialien am Auto ändern.
Ziehen Sie das Auto auf Ihre Groundplane-Bühne, um es zu einem Kind zu machen. Ändern Sie die Skalierung für x, y und z auf.035.
Gehen Sie nun jedes der Kinderspielobjekte des Autos durch und ändern Sie deren Materialien in die gewünschte Farbe.
Fügen Sie dem Hauptspielobjekt des Autos eine starre Karosseriekomponente hinzu und fügen Sie auch einen Boxcollider hinzu, skalieren Sie ihn so, dass er das gesamte Auto abdeckt. Fügen Sie auch einen Box Collider zur Groundplane-Bühne hinzu und skalieren Sie ihn so, dass er ein paar Mal breiter ist als der Groundplane-Bühne. Auf diese Weise können wir das Auto vom Himmel fallen lassen und es wird mit der eingebauten Physik-Engine von Unity auf dem Boden aufschlagen.
Schritt 5: Setzen Sie das Auto in den Himmel
Fügen Sie dem Root-Spielobjekt des Autos eine Audioquellenkomponente hinzu und ziehen Sie den Autounfallton an die Stelle des Audioclips.
Jetzt müssen wir ein Skript erstellen, das das Auto in die Luft bringt, wenn der Benutzer auf den Bildschirm drückt und dann den Crash-Sound abspielt, wenn das Auto auf dem Boden aufschlägt. Klicken Sie also mit der rechten Maustaste in den Assets-Ordner und erstellen Sie ein neues C#-Skript und nennen Sie es "CarController".
Ersetzen Sie den gesamten Code dort durch diesen:
Verwenden von System. Collections;
mit System. Collections. Generic; mit UnityEngine; öffentliche Klasse CarController: MonoBehaviour { private bool soundPlayed = false; // Update wird einmal pro Frame aufgerufen void Update () { if (!soundPlayed && transform.localPosition.y <.05f) { soundPlayed = true; StartCoroutine (DelayPlaySound()); } } public void MoveCar () { transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += new Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () { Yield return new WaitForSeconds (.2f); GetComponent(). Play(); } }
Fügen Sie die MoveCar-Funktion zum OnInteractiveHitTest-Ereignis wie in der Abbildung oben hinzu. Jetzt wird es aufgerufen, wenn der Benutzer auf den Bildschirm klickt.
Schritt 6: Lambo-Türen
Wenn Sie also das Autospielobjekt erweitern und die Türen finden, werden Sie feststellen, dass beide Türen ein einziges Netz sind. Wenn wir die Türen öffnen wollen, sind unsere einzige Option die Lambo-Türen, die sich vertikal öffnen. Damit dies funktioniert, müssen wir zuerst ihren Drehpunkt ändern.
Erstelle ein leeres Spielobjekt, das ein Kind des Autos ist. Ziehen Sie die Türen hinein und machen Sie sie zu einem Kind dieses neuen Spielobjekts. Bewegen Sie das übergeordnete Spielobjekt dorthin, wo der Drehpunkt sein sollte, bei den Türscharnieren. Bringen Sie nun die Kindertüren wieder an ihren Platz. Wenn wir nun das Elternelement der Türen drehen, befindet sich der Drehpunkt an der richtigen Stelle.
Wir werden ein Skript erstellen, das die Türen öffnet, wenn Sie sich dem Auto nähern, aber bevor wir das tun, müssen wir das Ereignis "auslösen". Fügen Sie Ihrem Tür-Elternspielobjekt einen Boxcollider hinzu und skalieren Sie ihn so, dass er in beide Richtungen ein wenig über das Auto hinausgeht. Aktivieren Sie "isTrigger". Fügen Sie nun der Hauptkamera einen Boxcollider hinzu und skalieren Sie ihn entsprechend. Überprüfen Sie auch "isTrigger". Fügen Sie Ihrer Kamera eine Starrkörper-Komponente hinzu und deaktivieren Sie "useGravity". Wenn Ihre Kamera ausgewählt ist, ändern Sie das Tag oben im Inspektor in "MainCamera".
Fügen Sie ein neues Skript namens "LamboDoorBehavior" hinzu und fügen Sie den folgenden Code hinzu. Ziehen Sie das Skript auf das übergeordnete Element Ihrer Tür.
Verwenden von System. Collections;
mit System. Collections. Generic; mit UnityEngine; öffentliche Klasse LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; privater Gleitkommawert erwünschtWinkel = 0; // Update wird einmal pro Frame aufgerufen void Update () { currAngle = Mathf. LerpAngle (currAngle, wishAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); aufrechtzuerhalten. Public void OpenDoors () {gewünschter Winkel = 60f; aufrechtzuerhalten. Public void CloseDoors () {gewünschter Winkel = 0; aufrechtzuerhalten. Void OnTriggerEnter (Collider col) { if (col. CompareTag ("MainCamera")) { OpenDoors (); } } void OnTriggerExit (Collider col) { if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }
Dieses Skript bewirkt, dass sich Ihre Türen langsam öffnen, wenn Sie sie in AR schließen, indem Sie die Funktion Lerp () in Einheit verwenden, die zwischen zwei Punkten (oder in diesem Fall zwei Winkeln) interpoliert.
Schritt 7: Video in AR abspielen
Das letzte, was wir tun müssen, ist die Videowiedergabe in AR.
Klicken Sie mit der rechten Maustaste auf ein beliebiges Spielobjekt, das ein Kind Ihres Autos ist, und erstellen Sie ein 3D-Objekt, Quad. Dadurch wird sichergestellt, dass das Quad ein Kind Ihres Autos ist. Positionieren und verkleinern Sie dieses Quad so, dass es in das Armaturenbrett Ihres Autos passt und so aussieht, als ob es dort sein sollte. Darauf werden wir das Video abspielen.
Fügen Sie Ihrem Quad eine Videoplayer-Komponente hinzu. Ändern Sie die Quelle in URL und suchen Sie einen festen Link zu einer. MP4-Datei oder ziehen Sie eine Videodatei in Ihren Assets-Ordner und ziehen Sie dann diesen Clip in den leeren Slot. Wenn Sie ein Video von einer URL streamen möchten, ist Instragram eine großartige Quelle. Klicken Sie mit der rechten Maustaste auf ein beliebiges Instagram-Video in Google Chrome und klicken Sie auf "Inspizieren". Suchen Sie das Div, das das Video enthält, und kopieren Sie den Link von dort (ich habe diese Methode oben abgebildet).
Stellen Sie sicher, dass Sie die Schleife überprüfen, wenn Sie möchten, dass sie mehr als einmal abgespielt wird. Fügen Sie diesem Spielobjekt eine Audioquellenkomponente hinzu und ändern Sie die Ausgabequelle auf dem Videoplayer in eine Audioquelle. Ziehen Sie Ihre neu erstellte Audioquelle in diesen Slot.
Endlich sind wir fertig!
Schritt 8: Legen Sie die App auf Ihr Telefon
Wenn Sie für Android erstellen, können Sie einfach zur Datei gehen und auf Erstellen und Ausführen klicken, während Ihr Telefon angeschlossen ist.
Wenn Sie auf einem iPhone oder iPad aufbauen, stellen Sie sicher, dass Sie Xcode aus dem App Store herunterladen. Melden Sie sich auch für ein kostenloses Apple-Entwicklerkonto unter www.apple.developer.com an. Gehen Sie zur Datei und klicken Sie auf Build. Öffnen Sie die von Xcode erstellte Datei und schließen Sie Ihr Telefon an. Wählen Sie Ihr Entwicklungsteam und klicken Sie auf den Play-Button.
Möglicherweise müssen Sie die Kamera ein wenig bewegen, aber geben Sie ihr eine Sekunde und tippen Sie auf den Bildschirm und Sie sollten sehen, wie Ihr Auto vom Himmel auf den Boden fällt! Jetzt können Sie hineingehen und Ihr Video im Dashboard abspielen!
Viel Spaß und lass es mich wissen, wenn du Fragen in den Kommentaren hast!
Empfohlen:
Augmented-Reality-Puzzle: 11 Schritte
Augmented Reality Puzzle: Puzzlespiele sind einfach wunderbar. Es gibt Rätsel aller Art, das typische Puzzle, das Labyrinth, mit Token und sogar Videospiele dieses Genres (zum Beispiel Captain Toad). Puzzlespiele erfordern, dass der Spieler eine Problemlösungsstrategie entwickelt
Virtual Reality Headset-Google Karton: 4 Schritte
Virtual Reality Headset-Google Cardboard: Hallo Leute, hier ist ein einfaches Tutorial, wie man Google Cardboard, ein hausgemachtes Virtual Reality Headset, herstellt. Es wird schmerzlich gesellig sein, einen Horrorfilm in diesem Headset zu sehen.Auch Achterbahnfahrt-Videos werden zu einem unvergesslichen Erlebnis.Achtung
So zeigen Sie Augmented Reality auf Ihrem Computer an – wikiHow
So zeigen Sie Augmented Reality auf Ihrem Computer an: In diesem Tutorial zeige ich Ihnen, wie Sie Augmented Reality auf Ihrem Computer nur mit einer Webcam anzeigen. Papier und das Internet