Taula de continguts:
- Pas 1: inicieu un projecte nou
- Pas 2: configurem Vuforia
- Pas 3: afegiu un script nou
- Pas 4: afegim el cotxe
- Pas 5: poseu el cotxe al cel
- Pas 6: Portes Lambo
- Pas 7: Reproducció de vídeo en RA
- Pas 8: poseu l'aplicació al telèfon
Vídeo: Realitat augmentada Vuforia 7 Detecció d’avions terrestres .: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
L'SDK de realitat augmentada de Vuforia per a Unity 3D utilitza ARCore i ARKit per detectar plans terrestres en AR. El tutorial d'avui farà servir la seva integració nativa a Unity per crear una aplicació de RA per a Android o IOS. Tindrem un cotxe que caurà del cel a terra i les portes s’obriran automàticament quan ens acostem. També anirem fent vídeos a RA. Per seguir-lo necessitareu Unity 3D instal·lat al vostre ordinador (és gratuït). Aquestes instruccions són per a principiants, de manera que repassarem tot detall.
La millor part del SLAM de Vuforia és la quantitat de dispositius IOS i Android que admet. Podeu trobar una llista completa de dispositius aquí:
library.vuforia.com/articles/Solution/grou…
Pas 1: inicieu un projecte nou
Descarregueu Unity 3D des d’aquí si encara no el teniu:
Assegureu-vos d’instal·lar suport per a Vuforia Augmented Reality i Android o IOS en funció del dispositiu que tingueu.
Obriu Unity i inicieu un nou projecte Unity, anomeneu-lo com vulgueu.
Primer, deixem l’aplicació configurada per desenvolupar-la perquè no ho oblidem. Per tant, deseu l’escena i anomeneu-la “principal”.
Aneu al fitxer, configureu la configuració i canvieu la plataforma de construcció a Android o IOS. Aneu a la configuració de XR a la configuració del reproductor i comproveu la compatibilitat amb la realitat augmentada de Vuforia.
Si esteu a Android no haureu de fer res més, però a iOS aneu a altres paràmetres i assegureu-vos de posar alguna cosa per al vostre identificador de paquet. Utilitzeu el format "com. YourCompanyName. YourAppName".
Introduïu qualsevol cosa per a la descripció d'ús de la càmera i canvieu la versió mínima de construcció objectiu a 9.0 com a mínim.
Tanqueu això i ara configurem tota la resta.
Pas 2: configurem Vuforia
Ara ho configurem tot.
Aneu a gameobject al menú superior i feu clic a ARCamera. Ara suprimiu la càmera principal de la vostra escena.
Seleccioneu la càmera AR i, a la part dreta de l’inspector, feu clic a Obre la configuració de Vuforia. Feu clic a la col·lecció de conjunts de dades i desmarqueu-ho tot perquè aquí no estem utilitzant cap segmentació d'imatge.
Feu clic al rastrejador del dispositiu i feu clic a Rastreja la posició del dispositiu. Canvieu el seguiment de rotacional a posicional.
Ara torneu a la pestanya d'objectes del joc i feu clic a Vuforia, Ground Plane i Plane finder. Aquí hi ha els guions que troben el nostre pla de terra.
L’últim que necessitem és l’etapa del pla de terra, així que aneu de nou a l’objecte de joc al menú superior i feu clic a Vuforia, Ground Plane i trieu Ground Plane Stage. Ara qualsevol cosa que tinguem aquest fet apareixerà a AR.
Pas 3: afegiu un script nou
El comportament predeterminat d’aquesta detecció de pla de terra és col·locar un objecte nou cada vegada que premeu a la pantalla. El que volem és reposicionar l'objecte cada vegada que premeu la pantalla. Feu clic amb el botó dret a la carpeta de recursos i creeu un script C # nou. Anomeneu-lo "DeployStageOnce" i substituïu-ho tot per aquest codi:
utilitzant el sistema;
utilitzant UnityEngine; utilitzant Vuforia; classe pública DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; private GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("s'ha d'especificar AnchorStage"); tornar; } AnchorStage. SetActive (fals); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (resultat HitTestResult) {if (result == null || AnchorStage == null) {Debug. LogWarning ("La prova d'èxit no és vàlida o AnchorStage no s'ha definit"); tornar; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resultat); if (anchor! = null) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } if (_previousAnchor! = null) {Destrueix (_previousAnchor); } _previousAnchor = àncora; }}
Per assegurar-nos que aquest script s’utilitza, hem de trucar a la funció OnInteractiveHitTest (), de manera que torneu a Unity i feu clic a l’objecte de joc del cercador d’avions. Canvieu el mode d'Automàtic a Interactiu. Arrossegueu l’escriptura que acabem de fer a l’objecte de joc del cercador d’avions. Elimineu l'script ContentPositionBehavior. Veureu un lloc per a un objecte de joc a l’script DeployStageOnce, arrossegueu el cercador d’avions cap allà i trobareu aquest script, trieu la funció OnInteractiveHitTest a la part superior de la llista. Ara la nostra funció es cridarà cada vegada que l'usuari faci clic a la pantalla.
Pas 4: afegim el cotxe
Descarregueu aquest model de cotxe 3D gratuït des d’aquí (Assegureu-vos d’obtenir la versió.obj):
www.turbosquid.com/3d-models/max-exterior-…
A més, descarregueu aquest so perquè el reproduirem quan el cotxe toqui a terra:
freesound.org/people/PaulMorek/sounds/1967…
Descomprimiu aquests dos fitxers i arrossegueu-los a la carpeta de recursos.
Feu clic al cotxe i mireu cap a la dreta, canvieu Utilitza materials incrustats per utilitzar materials externs (heretat) al menú desplegable de la part superior. Ara podrem canviar el color de tots els materials del cotxe.
Arrossegueu el cotxe a l’escenari del pla terrestre fent que sigui un nen. Canvieu l'escala a.035 a les x, y i z.
Ara reviseu cadascun dels objectes del joc infantil dels cotxes i canvieu els materials pel color que vulgueu.
Afegiu un component de carrosseria rígid a l’objecte de joc arrel del cotxe i també afegiu un col·lisionador de caixes, escaleu-lo de manera que cobreixi tot el cotxe. Afegiu també un col·lisionador de caixes a l’escenari del pla de terra i escaleu-lo de manera que sigui unes quantes vegades més ample que l’escenari del pla de terra. D'aquesta manera, podem deixar caure el cotxe del cel i tocarà a terra amb el motor de física incorporat d'Unity.
Pas 5: poseu el cotxe al cel
Afegiu un component de font d’àudio a l’objecte de joc arrel del cotxe i arrossegueu el so de l’accident del cotxe al lloc del clip d’àudio.
Ara hem de fer un guió que posi el cotxe a l’aire quan l’usuari premi sobre la pantalla i després reprodueixi el so de xoc quan el cotxe toca terra. Per tant, feu clic amb el botó dret a la carpeta de recursos i creeu un script C # nou i anomeneu-lo "CarController".
Substitueix tot el codi que hi ha per això:
utilitzant System. Collections;
utilitzant System. Collections. Generic; utilitzant UnityEngine; CarController de classe pública: MonoBehaviour {private bool soundPlayed = false; // Actualització es diu una vegada per cada frame void Actualització () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition + = new Vector3 (0, 10, 0); transform.eulerAngles + = nou Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {yield return new WaitForSeconds (.2f); GetComponent (). Play (); }}
Afegiu la funció MoveCar a l'esdeveniment OnInteractiveHitTest, com a la imatge superior. Ara es trucarà quan l'usuari faci clic a la pantalla.
Pas 6: Portes Lambo
Així que si amplieu l'objecte del joc del cotxe i trobeu les portes, notareu que les dues portes són d'una sola malla. Si volem obrir les portes, la nostra única opció serà que les portes Lambo s’obrin verticalment. Per fer que això funcioni, primer hem de canviar el seu punt pivot.
Feu un objecte de joc buit que sigui un fill del cotxe. Arrossegueu les portes i converteix-les en fill d’aquest nou objecte de joc. Moveu l'objecte de joc pare cap a on hauria d'estar el punt de pivot, per les frontisses de la porta. Ara torneu a col·locar les portes del nen al seu lloc. Ara, quan girem la porta principal, el punt de pivot es troba al lloc correcte.
Farem un guió que us obri les portes quan us acosteu al cotxe, però abans de fer-ho necessitem una manera de "desencadenar" l'esdeveniment. Afegiu un col·lisionador de caixes al vostre objecte de joc de la porta pare i escaleu-lo perquè vagi una mica per sobre del cotxe en ambdues direccions. Marqueu "isTrigger". Ara afegiu un col·lisionador de caixes a la càmera principal i escaleu-la adequadament. Marqueu també "isTrigger". Afegiu un component de cos rígid a la càmera i desmarqueu "useGravity". Amb la càmera seleccionada, canvieu l'etiqueta a "MainCamera" a la part superior de l'inspector.
Afegiu un script nou anomenat "LamboDoorBehavior" i afegiu el codi següent. Arrossegueu l'script al pare de la vostra porta.
utilitzant System. Collections;
utilitzant System. Collections. Generic; utilitzant UnityEngine; classe pública LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; flotador privat desitjatAngle = 0; // Actualització es diu una vegada per cada frame void Actualització () {currAngle = Mathf. LerpAngle (currAngle, desitjatAngle, Time.deltaTime * 3f); transform.localEulerAngles = nou Vector3 (currAngle, 0, 0); } public void OpenDoors () {desitjatAngle = 60f; } public void CloseDoors () {Angle desitjat = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}
Aquest script farà que les portes s'obrin lentament quan les tanqueu a AR mitjançant l'ús de la funció Lerp () en unitat que interpola entre dos punts (o en aquest cas dos angles).
Pas 7: Reproducció de vídeo en RA
L’últim que hem de fer és reproduir vídeo en RA.
Feu clic amb el botó dret sobre qualsevol objecte de joc que sigui un fill del vostre cotxe i creeu un objecte 3D, Quad. Això farà que el quad sigui un fill del vostre cotxe. Col·loqueu i canvieu la mida d'aquest quad de manera que quedi dins del tauler del cotxe i sembli que hi hauria de ser. En això reproduirem el vídeo.
Afegiu un component de reproductor de vídeo al quad. Canvieu la font a URL i cerqueu un enllaç dur a un fitxer. MP4 o arrossegueu un fitxer de vídeo a la carpeta de recursos i arrossegueu aquest clip a la ranura buida. Si voleu reproduir en un vídeo des d’un URL, Instragram és una font fantàstica. Feu clic amb el botó dret a qualsevol vídeo d'Instagram a Google Chrome i feu clic a inspecciona. Cerqueu el div que conté el vídeo i copieu l’enllaç des d’allà (tinc aquest mètode a la imatge anterior).
Assegureu-vos de comprovar el bucle si voleu que es reprodueixi més d’una vegada. Afegiu un component de font d'àudio a aquest objecte de joc i canvieu la font de sortida a la font d'àudio del reproductor de vídeo. Arrossegueu la font d'àudio acabada de crear a aquesta ranura.
Per fi ja hem acabat!
Pas 8: poseu l'aplicació al telèfon
Si esteu creant per a Android, podeu anar a un fitxer i fer clic a build i executar-lo amb el telèfon endollat.
Si esteu construint un iPhone o un iPad, assegureu-vos de descarregar Xcode des de la botiga d’aplicacions. A més, registreu-vos per obtenir un compte de desenvolupador gratuït de poma a www.apple.developer.com. Aneu a l'arxiu i premeu compilació. Obriu el fitxer que s'ha creat a partir de Xcode i connecteu el telèfon. Trieu el vostre equip de desenvolupament i premeu el botó de reproducció.
És possible que hagueu de moure la càmera una mica, però doneu-li un segon i toqueu la pantalla i hauríeu de veure com el vostre cotxe cau del cel a terra. Ara podeu entrar i veure reproduir el vostre vídeo al tauler.
Diverteix-te i avisa’m si tens cap pregunta als comentaris.
Recomanat:
Augmenteu la vostra memòria amb una realitat augmentada Mind Palace: 8 passos
Augmenteu la vostra memòria amb una realitat augmentada Mind Palace: l’ús de palaus mentals, com a Sherlock Holmes, ha estat utilitzat pels defensors de la memòria per recordar molta informació, com l’ordre de les cartes en una baralla barrejada. El mind palace o mètode de loci és una tècnica de memòria on la mnemotècnia visual és
GlobalARgallery - Galeria de realitat augmentada global: 16 passos
#GlobalARgallery - Galeria de realitat augmentada global: #GlobalARgallery és una oportunitat per a les escoles (i altres) de connectar-se de manera asíncrona a tot el món i compartir experiències, obres d'art, històries, cronologies, exposicions, presentacions i qualsevol altra cosa que pugueu imaginar. Tot això apareix a A
Equip de telèfon de realitat augmentada: 7 passos
Equip de telèfon de realitat augmentada: barat, fàcil, divertit
Trencaclosques de realitat augmentada: 11 passos
Trencaclosques de realitat augmentada: els jocs de trencaclosques són meravellosos. Hi ha trencaclosques de tota mena, el típic trencaclosques, el laberint, amb fitxes i fins i tot videojocs d’aquest gènere (per exemple, Captain Toad). Els jocs de trencaclosques requereixen que el jugador dissenyi una estratègia de resolució de problemes
Realitat augmentada (RA) per a Dragonboard410c o Dragonboard820c mitjançant OpenCV i Python 3.5: 4 passos
Realitat Augmentada (AR) per a Dragonboard410c o Dragonboard820c Utilitzant OpenCV i Python 3.5: Aquest instructable descriu com instal·lar OpenCV, Python 3.5 i les dependències de Python 3.5 per executar l'aplicació de realitat augmentada