Sommario:
- Passaggio 1: inizia un nuovo progetto
- Passaggio 2: impostiamo Vuforia
- Passaggio 3: aggiungi un nuovo script
- Passaggio 4: aggiungiamo l'auto
- Passaggio 5: metti l'auto in cielo
- Passaggio 6: porte Lambo
- Passaggio 7: riproduzione di video in AR
- Passaggio 8: installa l'app sul tuo telefono
Video: Realtà aumentata Vuforia 7 Rilevamento del piano di terra.: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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
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
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
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
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
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
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:
Potenzia la tua memoria con un palazzo della mente in realtà aumentata: 8 passaggi
Potenzia la tua memoria con un palazzo mentale in realtà aumentata: l'uso dei palazzi mentali, come in Sherlock Holmes, è stato utilizzato dai campioni della memoria per richiamare molte informazioni come l'ordine delle carte in un mazzo mescolato. Il palazzo della mente o metodo dei loci è una tecnica di memoria in cui i mnemonici visivi sono
GlobalARgallery - Galleria di realtà aumentata globale: 16 passaggi
#GlobalARgallery - Global Augmented Reality Gallery: #GlobalARgallery è un'opportunità per le scuole (e non solo) di connettersi in modo asincrono in tutto il mondo e condividere esperienze, opere d'arte, storie, timeline, mostre, presentazioni e qualsiasi altra cosa tu possa immaginare. Tutti questi che appaiono in A
Ingranaggio del telefono in realtà aumentata: 7 passaggi
Attrezzatura per telefoni in realtà aumentata: economica, facile, fantastica
Puzzle di realtà aumentata: 11 passaggi
Puzzle in realtà aumentata: i giochi puzzle sono semplicemente meravigliosi. Ci sono puzzle di tutti i tipi, il tipico puzzle, il labirinto, con gettoni e persino videogiochi di questo genere (ad esempio Captain Toad). I giochi di puzzle richiedono al giocatore di progettare una strategia di risoluzione dei problemi
Realtà aumentata (AR) per Dragonboard410c o Dragonboard820c utilizzando OpenCV e Python 3.5: 4 passaggi
Realtà aumentata (AR) per Dragonboard410c o Dragonboard820c utilizzando OpenCV e Python 3.5: queste istruzioni descrivono come installare OpenCV, Python 3.5 e le dipendenze per Python 3.5 per eseguire l'applicazione di realtà aumentata