Table des matières:

Détection du plan de sol Vuforia 7 en réalité augmentée. : 8 étapes
Détection du plan de sol Vuforia 7 en réalité augmentée. : 8 étapes

Vidéo: Détection du plan de sol Vuforia 7 en réalité augmentée. : 8 étapes

Vidéo: Détection du plan de sol Vuforia 7 en réalité augmentée. : 8 étapes
Vidéo: Comment utiliser Vuforia 7 Ground Plane avec Unity 2017 - Test de la démo 2024, Juillet
Anonim
Détection du plan au sol Vuforia 7 en réalité augmentée
Détection du plan au sol Vuforia 7 en réalité augmentée
Détection du plan au sol Vuforia 7 en réalité augmentée
Détection du plan au sol Vuforia 7 en réalité augmentée

Le SDK de réalité augmentée de Vuforia pour Unity 3D utilise ARCore et ARKit pour détecter les plans de sol en RA. Le tutoriel d'aujourd'hui utilisera leur intégration native dans Unity pour créer une application AR pour Android ou IOS. Nous aurons une voiture qui tombera du ciel sur le sol, et ses portes s'ouvriront automatiquement lorsque nous nous en approcherons. Nous allons également passer en revue la vidéo en RA. Pour suivre, vous aurez besoin de Unity 3D installé sur votre ordinateur (c'est gratuit). Ces instructions sont destinées aux débutants, nous allons donc tout détailler !

La meilleure partie du SLAM de Vuforia est la quantité d'appareils IOS et Android qu'il prend en charge. Une liste complète des appareils est disponible ici:

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

Étape 1: Démarrer un nouveau projet

Démarrer un nouveau projet
Démarrer un nouveau projet

Téléchargez Unity 3D à partir d'ici si vous ne l'avez pas déjà:

Assurez-vous d'installer la prise en charge de Vuforia Augmented Reality et Android ou IOS en fonction de l'appareil dont vous disposez.

Ouvrez Unity et démarrez un nouveau projet Unity, appelez-le comme vous voulez.

Commençons par configurer l'application pour que nous n'oubliions pas. Alors, enregistrez la scène et appelez-la "principale".

Accédez au fichier, aux paramètres de génération et basculez votre plate-forme de génération sur Android ou IOS. Accédez aux paramètres XR dans les paramètres du lecteur et vérifiez Vuforia Augmented Reality Supported.

Si vous êtes sur Android, vous n'aurez rien d'autre à faire, mais sur IOS, accédez à d'autres paramètres et assurez-vous de saisir quelque chose pour votre identifiant de bundle. Utilisez le format "com. VotreNomEntreprise. VotreNomApp."

Mettez n'importe quoi pour la description d'utilisation de la caméra et changez la version de build minimale cible à au moins 9.0.

Fermez cela et maintenant mettons tout le reste en place.

Étape 2: configurons Vuforia

Configurons Vuforia
Configurons Vuforia

Maintenant, mettons tout en place.

Allez à gameobject dans le menu du haut et cliquez sur ARCamera. Supprimez maintenant la caméra principale de votre scène.

Sélectionnez l'ARCamera et sur le côté droit de l'inspecteur, cliquez sur Ouvrir la configuration Vuforia. Cliquez sur la collection de jeux de données et décochez tout car nous n'utilisons aucune cible d'image ici.

Cliquez sur le suivi de l'appareil et cliquez sur suivre la pose de l'appareil. Changez le suivi de rotation en positionnel.

Revenez maintenant à l'onglet Objet du jeu et cliquez sur Vuforia, Ground Plane et Plane Finder. Cela abrite les scripts qui trouvent notre plan de masse.

La dernière chose dont nous avons besoin est l'étape du plan au sol, alors allez à nouveau à l'objet du jeu dans le menu du haut, et cliquez sur Vuforia, Plan au sol, et choisissez Stade du plan au sol. Maintenant, tout ce que nous enfantons à cela apparaîtra dans AR.

Étape 3: Ajoutez un nouveau script

Ajouter un nouveau script
Ajouter un nouveau script
Ajouter un nouveau script
Ajouter un nouveau script

Le comportement par défaut de cette détection de plan de sol est de placer un nouvel objet à chaque fois que vous appuyez sur l'écran. Ce que nous voulons, c'est simplement repositionner l'objet à chaque fois que vous appuyez sur l'écran. Alors faites un clic droit dans votre dossier d'actifs et créez un nouveau script C#. Appelez-le "DeployStageOnce" et remplacez le tout par ce code:

en utilisant le système;

en utilisant UnityEngine; en utilisant Vuforia; classe publique DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; privé PositionalDeviceTracker _deviceTracker; privé GameObject _previousAnchor; public void Start () { if (AnchorStage == null) { Debug. Log("AnchorStage doit être spécifié"); revenir; } AnchorStage. SetActive(false); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } vide privé OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(HitTestResult result) { if (result == null || AnchorStage == null) { Debug. LogWarning("Le test d'accès n'est pas valide ou AnchorStage n'est pas défini"); revenir; } var ancre = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), résultat); if (ancre != 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 = ancre; } }

Afin de nous assurer que ce script est utilisé, nous devons appeler la fonction OnInteractiveHitTest(). Revenez donc à Unity et cliquez sur l'objet de jeu de recherche d'avion. Changez le mode d'Automatique à Interactif. Faites glisser le script que nous venons de créer sur l'objet de jeu de recherche d'avion. Supprimez le script ContentPositioningBehavior. Vous verrez un emplacement pour un objet de jeu sur le script DeployStageOnce, faites-y glisser le chercheur d'avion et trouvez ce script, choisissez la fonction OnInteractiveHitTest en haut de la liste. Désormais, notre fonction sera appelée à chaque fois que l'utilisateur cliquera sur l'écran !

Étape 4: Ajoutons la voiture

Ajoutons la voiture
Ajoutons la voiture

Téléchargez ce modèle 3D de voiture gratuit à partir d'ici (assurez-vous d'obtenir la version.obj):

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

Téléchargez également ce son car nous allons le jouer lorsque la voiture touchera le sol:

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

Décompressez ces deux fichiers et faites-les glisser dans votre dossier de ressources.

Cliquez sur la voiture et regardez à droite, changez Utiliser des matériaux intégrés pour Utiliser des matériaux externes (héritage) dans le menu déroulant en haut. Maintenant, nous pourrons changer la couleur de tous les matériaux de la voiture.

Faites glisser la voiture sur votre scène de plan de sol, ce qui en fait un enfant. Modifiez l'échelle à 0,035 sur les x, y et z.

Maintenant, parcourez chacun des objets de jeu d'enfant de voitures et changez leurs matériaux pour la couleur que vous voulez.

Ajoutez un composant de carrosserie rigide à l'objet de jeu racine de la voiture et ajoutez également un collisionneur de boîte, redimensionnez-le pour qu'il couvre toute la voiture. Ajoutez également un collisionneur à boîte à l'étage du plan de masse et redimensionnez-le pour qu'il soit quelques fois plus large que l'étage du plan de masse. De cette façon, nous pouvons laisser tomber la voiture du ciel et elle touchera le sol en utilisant le moteur physique intégré de Unity.

Étape 5: Mettez la voiture dans le ciel

Mettez la voiture dans le ciel
Mettez la voiture dans le ciel

Ajoutez un composant de source audio à l'objet de jeu racine de la voiture, faites glisser le son de l'accident de voiture dans son emplacement de clip audio.

Nous devons maintenant créer un script qui mettra la voiture en l'air lorsque l'utilisateur appuie sur l'écran, puis jouera le bruit de l'accident lorsque la voiture heurte le sol. Alors, faites un clic droit dans le dossier des actifs et créez un nouveau script C# et appelez-le "CarController".

Remplacez tout le code par celui-ci:

en utilisant System. Collections;

en utilisant System. Collections. Generic; en utilisant UnityEngine; public class CarController: MonoBehaviour { private bool soundPlayed = false; // Update est appelé une fois par image 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(){ return return new WaitForSeconds (.2f); GetComponent (). Play (); } }

Ajoutez la fonction MoveCar à l'événement OnInteractiveHitTest comme dans l'image ci-dessus. Maintenant, il sera appelé lorsque l'utilisateur cliquera sur l'écran.

Étape 6: Portes Lambo

Portes Lambo
Portes Lambo

Donc, si vous développez l'objet du jeu de voiture et trouvez les portes, vous remarquerez que les deux portes forment un seul maillage. Si nous voulons ouvrir les portes, notre seule option sera les portes Lambo qui s'ouvrent verticalement. Pour que cela fonctionne, nous devons d'abord changer leur point de pivot.

Créez un objet de jeu vide qui est un enfant de la voiture. Faites glisser les portes et faites-en un enfant de ce nouvel objet de jeu. Déplacez l'objet du jeu parent à l'endroit où le point de pivot devrait être, près des charnières de la porte. Remettez maintenant les portes pour enfants en place. Maintenant, lorsque nous faisons pivoter le parent des portes, le point de pivot est au bon endroit.

Nous allons créer un script qui ouvre les portes lorsque vous vous approchez de la voiture, mais avant cela, nous avons besoin d'un moyen de "déclencher" l'événement. Ajoutez un collisionneur de boîte à votre objet de jeu parent de porte et redimensionnez-le pour qu'il aille un peu au-dessus de la voiture dans les deux sens. Cochez "isTrigger". Ajoutez maintenant un collisionneur à boîte à la caméra principale et redimensionnez-le de manière appropriée. Vérifiez également "isTrigger". Ajoutez un composant Rigid Body à votre appareil photo et décochez "useGravity". Avec votre caméra sélectionnée, changez sa balise en "MainCamera" en haut de l'inspecteur.

Ajoutez un nouveau script appelé "LamboDoorBehavior" et ajoutez le code ci-dessous. Faites glisser le script sur le parent de votre porte.

en utilisant System. Collections;

en utilisant System. Collections. Generic; en utilisant UnityEngine; public class LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; flottant privé angle désiré = 0; // Update est appelé une fois par image void Update () { currAngle = Mathf. LerpAngle (currAngle, desireAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors(){ desireAngle = 60f; } public void CloseDoors(){ desireAngle = 0; } void OnTriggerEnter(Collider col){ if (col. CompareTag ("MainCamera")) { OpenDoors (); } } void OnTriggerExit(Collider col){ if (col. CompareTag ("MainCamera")) { CloseDoors (); } } }

Ce script provoquera l'ouverture lente de vos portes lorsque vous les fermerez en AR en utilisant la fonction Lerp() dans l'unité qui interpole entre deux points (ou dans ce cas deux angles).

Étape 7: Lecture de la vidéo en RA

Lecture de vidéo en RA
Lecture de vidéo en RA
Lecture de vidéo en RA
Lecture de vidéo en RA

La dernière chose que nous devons faire est de faire jouer la vidéo en RA.

Faites un clic droit sur n'importe quel objet du jeu qui est un enfant de votre voiture et créez un objet 3D, Quad. Cela garantira que le quad est un enfant de votre voiture. Positionnez et redimensionnez ce quad de manière à ce qu'il s'adapte à l'intérieur du tableau de bord de votre voiture et ressemble à ce qu'il est censé être là. C'est sur cela que nous allons diffuser la vidéo.

Ajoutez un composant de lecteur vidéo à votre quad. Changez la source en URL et trouvez un lien physique vers un fichier. MP4 ou faites glisser un fichier vidéo dans votre dossier de ressources, puis faites glisser ce clip dans l'emplacement vide. Si vous souhaitez diffuser une vidéo à partir d'une URL, Instragram est une excellente source. Faites un clic droit sur n'importe quelle vidéo Instagram dans Google Chrome et cliquez sur inspecter. Trouvez le div contenant la vidéo et copiez le lien à partir de là (j'ai cette méthode illustrée ci-dessus).

Assurez-vous de vérifier la boucle si vous voulez qu'elle soit jouée plus d'une fois. Ajoutez un composant de source audio à cet objet de jeu et changez la source de sortie en source audio sur le lecteur vidéo. Faites glisser votre source audio nouvellement créée dans cet emplacement.

Enfin nous avons terminé !

Étape 8: Mettez l'application sur votre téléphone

Mettez l'application sur votre téléphone !
Mettez l'application sur votre téléphone !

Si vous créez pour Android, vous pouvez simplement accéder au fichier et cliquer sur créer et exécuter avec votre téléphone branché.

Si vous construisez sur un iPhone ou un iPad, assurez-vous de télécharger Xcode depuis l'App Store. De plus, créez un compte développeur Apple gratuit sur www.apple.developer.com. Allez dans le fichier et appuyez sur build. Ouvrez le fichier créé à partir de Xcode et branchez votre téléphone. Choisissez votre équipe de développement et appuyez sur le bouton de lecture.

Vous devrez peut-être déplacer un peu la caméra, mais donnez-lui une seconde et appuyez sur l'écran et vous devriez voir votre voiture tomber du ciel sur le sol ! Maintenant, vous pouvez entrer et regarder votre vidéo dans le tableau de bord !

Amusez-vous bien et laissez-moi savoir si vous avez des questions dans les commentaires !

Conseillé: