Sommario:

Realtà aumentata Vuforia 7 Rilevamento del piano di terra.: 8 passaggi
Realtà aumentata Vuforia 7 Rilevamento del piano di terra.: 8 passaggi

Video: Realtà aumentata Vuforia 7 Rilevamento del piano di terra.: 8 passaggi

Video: Realtà aumentata Vuforia 7 Rilevamento del piano di terra.: 8 passaggi
Video: Учебное пособие по обнаружению наземной плоскости VUFORIA с VUFORIA 7 2024, Dicembre
Anonim
Realtà aumentata Vuforia 7 Rilevamento del piano di terra
Realtà aumentata Vuforia 7 Rilevamento del piano di terra
Realtà aumentata Vuforia 7 Rilevamento del piano di terra
Realtà aumentata Vuforia 7 Rilevamento del piano di terra

L'SDK di realtà aumentata di Vuforia per Unity 3D utilizza ARCore e ARKit per rilevare i piani di terra in AR. Il tutorial di oggi utilizzerà la loro integrazione nativa in Unity per creare un'app AR per Android o IOS. Faremo cadere un'auto dal cielo a terra e le sue porte si apriranno automaticamente quando ci avvicineremo. Andremo anche oltre a fare video in AR. Per seguire avrai bisogno di Unity 3D installato sul tuo computer (è gratuito). Queste istruzioni sono per principianti assoluti, quindi esamineremo tutto in dettaglio!

La parte migliore dello SLAM di Vuforia è la quantità di dispositivi IOS e Android che supporta. Un elenco completo dei dispositivi può essere trovato qui:

library.vuforia.com/articles/Solution/grou…

Passaggio 1: inizia un nuovo progetto

Inizia un nuovo progetto
Inizia un nuovo progetto

Scarica Unity 3D da qui se non lo possiedi già:

Assicurati di installare il supporto per Vuforia Augmented Reality e Android o IOS a seconda del dispositivo che possiedi.

Apri Unity e avvia un nuovo progetto Unity, chiamalo come vuoi.

Per prima cosa tiriamo fuori l'app configurata per costruire in modo che non dimentichiamo. Quindi, salva la scena e chiamala "principale".

Vai su file, crea impostazioni e cambia la tua piattaforma di build su Android o IOS. Vai alle impostazioni XR nelle impostazioni del lettore e controlla Vuforia Augmented Reality Supported.

Se sei su Android non dovrai fare nient'altro, ma su IOS vai su altre impostazioni e assicurati di inserire qualcosa per il tuo identificatore di bundle. Usa il formato "com. YourCompanyName. YourAppName".

Inserisci qualsiasi cosa per la descrizione dell'utilizzo della fotocamera e modifica la versione di build minima di destinazione su almeno 9.0.

Chiudilo e ora prepariamo tutto il resto.

Passaggio 2: impostiamo Vuforia

Impostiamo Vuforia
Impostiamo Vuforia

Ora prepariamo tutto.

Vai a gameobject nel menu in alto e fai clic su ARCcamera. Ora elimina la fotocamera principale dalla scena.

Seleziona ARCamera e sul lato destro nell'ispettore fai clic su Apri configurazione Vuforia. Fai clic sulla raccolta dei set di dati e deseleziona tutto perché qui non stiamo utilizzando alcun target di immagine.

Fare clic sul tracker del dispositivo e fare clic su traccia posizione del dispositivo. Cambia il tracciamento da rotazionale a posizionale.

Ora torna alla scheda dell'oggetto di gioco e fai clic su Vuforia, Ground Plane e Plane finder. Questo ospita gli script che trovano il nostro piano di terra.

L'ultima cosa di cui abbiamo bisogno è lo stadio del piano di terra, quindi vai di nuovo all'oggetto di gioco nel menu in alto e fai clic su Vuforia, Piano di terra e scegli Stadio del piano di terra. Ora tutto ciò che siamo figli di questo apparirà in AR.

Passaggio 3: aggiungi un nuovo script

Aggiungi un nuovo script
Aggiungi un nuovo script
Aggiungi un nuovo script
Aggiungi un nuovo script

Il comportamento predefinito di questo rilevamento del piano terra è posizionare un nuovo oggetto ogni volta che si preme sullo schermo. Quello che vogliamo è semplicemente riposizionare l'oggetto ogni volta che si preme sullo schermo. Quindi fai clic con il pulsante destro del mouse nella cartella delle risorse e crea un nuovo script C#. Chiamalo "DeployStageOnce" e sostituisci tutto con questo codice:

utilizzando il sistema;

utilizzando UnityEngine; usando Vuforia; public class DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; privato PositionalDeviceTracker _deviceTracker; privato GameObject _previousAnchor; public void Start() { if (AnchorStage == null) { Debug. Log("AnchorStage deve essere specificato"); Restituzione; } AnchorStage. SetActive(false); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } private void OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(risultato di HitTestResult) { if (risultato == null || AnchorStage == null) { Debug. LogWarning("Hit test non è valido o AnchorStage non è impostato"); Restituzione; } var anchor = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), risultato); if (ancora != null) { AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive(true); } if (_previousAnchor != null) { Destroy(_previousAnchor); } _previousAnchor = ancora; } }

Per assicurarci che questo script venga utilizzato, dobbiamo chiamare la funzione OnInteractiveHitTest() quindi tornare a Unity e fare clic sull'oggetto di gioco di ricerca aereo. Cambia la modalità da Automatica a Interattiva. Trascina lo script che abbiamo appena creato sull'oggetto del gioco di ricerca aereo. Rimuovere lo script ContentPositioningBehavior. Vedrai un punto per un oggetto di gioco nello script DeployStageOnce, trascina lì il cercatore aereo e trova questo script, scegli la funzione OnInteractiveHitTest dalla parte superiore dell'elenco. Ora la nostra funzione verrà chiamata ogni volta che l'utente fa clic sullo schermo!

Passaggio 4: aggiungiamo l'auto

Aggiungiamo l'auto
Aggiungiamo l'auto

Scarica questo modello 3D di auto gratuito da qui (assicurati di ottenere la versione.obj):

www.turbosquid.com/3d-models/max-exterior-…

Inoltre, scarica questo suono perché lo suoneremo quando l'auto colpisce il suolo:

freesound.org/people/PaulMorek/sounds/1967…

Decomprimi entrambi i file e trascinali nella cartella delle risorse.

Fai clic sull'auto e guarda a destra, cambia Usa materiali incorporati in Usa materiali esterni (legacy) dal menu a discesa in alto. Ora saremo in grado di cambiare il colore di tutti i materiali sull'auto.

Trascina l'auto sul palco del tuo piano di terra rendendola un bambino. Cambia la scala in.035 su x, y e z.

Ora passa attraverso ciascuno degli oggetti del gioco per bambini delle auto e cambia i loro materiali con il colore che desideri.

Aggiungi un componente del corpo rigido all'oggetto di gioco radice dell'auto e aggiungi anche un collisore di scatole, ridimensionalo in modo che copra l'intera auto. Aggiungi anche un collisore di scatole allo stadio del piano di terra e ridimensionalo in modo che sia alcune volte più largo dello stadio del piano di terra. In questo modo possiamo far cadere l'auto dal cielo e colpirà il suolo usando il motore fisico integrato di Unity.

Passaggio 5: metti l'auto in cielo

Metti la macchina in cielo
Metti la macchina in cielo

Aggiungi un componente sorgente audio all'oggetto di gioco principale dell'auto, trascina il suono dell'incidente automobilistico nel punto della clip audio.

Ora abbiamo bisogno di creare uno script che metta l'auto in aria quando l'utente preme sullo schermo e poi riproduca il suono dell'incidente quando l'auto colpisce il suolo. Quindi, fai clic con il pulsante destro del mouse nella cartella delle risorse e crea un nuovo script C# e chiamalo "CarController".

Sostituisci tutto il codice lì con questo:

utilizzando System. Collections;

utilizzando System. Collections. Generic; utilizzando UnityEngine; public class CarController: MonoBehaviour { private bool soundPlayed = false; // Update viene chiamato una volta per frame 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 = falso; } IEnumerator DelayPlaySound(){ restituisce un nuovo WaitForSeconds (.2f); GetComponent(). Play (); } }

Aggiungi la funzione MoveCar all'evento OnInteractiveHitTest come nell'immagine sopra. Ora verrà chiamato quando l'utente fa clic sullo schermo.

Passaggio 6: porte Lambo

Porte Lambo
Porte Lambo

Quindi, se espandi l'oggetto del gioco dell'auto e trovi le porte, noterai che entrambe le porte sono un'unica rete. Se vogliamo aprire le porte, la nostra unica opzione saranno le porte Lambo che si aprono verticalmente. Per fare questo lavoro dobbiamo prima cambiare il loro punto di articolazione.

Crea un oggetto di gioco vuoto che sia un figlio dell'auto. Trascina le porte e rendile un figlio di questo nuovo oggetto di gioco. Sposta l'oggetto del gioco genitore nel punto in cui dovrebbe essere il punto di rotazione, vicino ai cardini della porta. Ora rimetti in posizione le porte del bambino. Ora, quando ruotiamo il genitore delle porte, il punto di rotazione è nel posto giusto.

Faremo una sceneggiatura che apra le porte quando ti avvicini alla macchina, ma prima di farlo abbiamo bisogno di un modo per "attivare" l'evento. Aggiungi un collisore di scatole all'oggetto del gioco genitore della tua porta e ridimensionalo in modo che superi leggermente l'auto in entrambe le direzioni. Seleziona "isTrigger". Ora aggiungi un collisore di scatole alla fotocamera principale e ridimensionalo in modo appropriato. Controlla anche "isTrigger". Aggiungi un componente Rigid Body alla tua fotocamera e deseleziona "useGravity". Con la fotocamera selezionata, cambia il tag in "MainCamera" nella parte superiore dell'inspector.

Aggiungi un nuovo script chiamato "LamboDoorBehavior" e aggiungi il codice qui sotto. Trascina lo script sul genitore della tua porta.

utilizzando System. Collections;

utilizzando System. Collections. Generic; utilizzando UnityEngine; public class LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; angolo desiderato float privato = 0; // Update viene chiamato una volta per frame void Update() { currAngle = Mathf. LerpAngle (currAngle, desideratoAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors(){ Angolo desiderato = 60f; } public void CloseDoors(){ wantAngle = 0; } void OnTriggerEnter(Collider col){ if (col. CompareTag ("MainCamera")) { OpenDoors (); } } void OnTriggerExit(Collider col){ if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }

Questo script farà sì che le tue porte si aprano lentamente quando le chiudi in AR usando la funzione Lerp() in unità che interpola tra due punti (o in questo caso due angoli).

Passaggio 7: riproduzione di video in AR

Riproduzione di video in AR
Riproduzione di video in AR
Riproduzione di video in AR
Riproduzione di video in AR

L'ultima cosa che dobbiamo fare è riprodurre il video in AR.

Fai clic con il pulsante destro del mouse su qualsiasi oggetto di gioco figlio della tua auto e crea un oggetto 3D, Quad. Questo farà in modo che il quad sia figlio della tua auto. Posiziona e ridimensiona questo quad in modo che si adatti al cruscotto della tua auto e sembri che dovrebbe essere lì. Questo è ciò su cui riprodurremo il video.

Aggiungi un componente lettore video al tuo quad. Cambia la sorgente in URL e trova un collegamento reale a un file. MP4 o trascina un file video nella cartella delle risorse e quindi trascina quel clip nello slot vuoto. Se vuoi trasmettere in streaming un video da un URL, Instragram è un'ottima fonte. Fai clic con il pulsante destro del mouse su qualsiasi video di Instagram in Google Chrome e fai clic su ispeziona. Trova il div contenente il video e copia il link da lì (ho questo metodo nella foto sopra).

Assicurati di controllare il loop se vuoi che venga riprodotto più di una volta. Aggiungi un componente sorgente audio a questo oggetto di gioco e cambia la sorgente di output in sorgente audio sul lettore video. Trascina la tua sorgente audio appena creata in quello slot.

Finalmente abbiamo finito!

Passaggio 8: installa l'app sul tuo telefono

Metti l'app sul tuo telefono!
Metti l'app sul tuo telefono!

Se stai compilando per Android, puoi semplicemente andare su file e premere build ed eseguire con il telefono collegato.

Se stai costruendo su un iPhone o iPad, assicurati di scaricare Xcode dall'app store. Inoltre, registrati per un account sviluppatore Apple gratuito da www.apple.developer.com. Vai al file e premi build. Apri il file che è stato creato da Xcode e collega il telefono. Scegli il tuo team di sviluppo e premi il pulsante di riproduzione.

Potrebbe essere necessario spostare un po' la telecamera, ma dargli un secondo e toccare lo schermo e dovresti vedere la tua auto cadere dal cielo a terra! Ora puoi entrare e guardare il tuo video riprodotto nella dashboard!

Divertiti e fammi sapere se hai domande nei commenti!

Consigliato: