Créez un jeu de réalité augmentée de style Pokémon GO avec Vuforia

Ce que vous allez créer

1. Introduction

Dans le premier billet de cette série, nous avons expliqué à quel point Vuforia est génial pour la création d'expériences de réalité augmentée. Nous sommes maintenant prêts à mettre en pratique ces concepts dans une application réelle. Dans ce didacticiel, nous allons commencer à jouer avec la réalité augmentée à l'aide de Vuforia sur Unity 3D. Nous allons apprendre à configurer Vuforia et à commencer à développer un jeu de RA à partir de rien, en adoptant une logique similaire à celle utilisée sur Pokémon GO!

Il ne sera pas nécessaire d'avoir une expérience préalable sur Unity ou Vuforia pour suivre ce tutoriel..

Si vous souhaitez aller plus loin, pourquoi ne pas vous familiariser avec l'un des concepts les plus fondamentaux de la RA, les marqueurs, dans notre cours succinct:

1.1. Récapitulation rapide: Comment fonctionne Vuforia?

Vuforia utilise l'alimentation de la caméra de l'appareil, associée aux données de l'accéléromètre et du gyroscope, pour examiner le monde. Vuforia utilise la vision par ordinateur pour comprendre ce qu'il "voit" sur l'appareil photo afin de créer un modèle de l'environnement. Après traitement des données, le système peut se situer grossièrement dans le monde, en connaissant ses coordonnées: où se trouvent le haut, le bas, la gauche, la droite, etc..

Si vous ne savez pas de quoi parle Vuforia, jetez un coup d'œil au premier billet de cette série..

1.2. Qu'allons-nous apprendre?

Ce tutoriel est divisé en deux parties. Dans celui-ci, nous verrons certaines des particularités de Vuforia sur Unity 3D, nous apprendrons à configurer l'environnement et nous commencerons également à développer un petit jeu de RA appelé Shoot the Cubes. Nous porterons une attention particulière à la ARCamera Prefab, une des parties les plus importantes de Vuforia dans Unity.

Dans la deuxième partie, nous continuerons à développer le jeu Shoot the Cubes, en ajoutant de l’interactivité et en le rendant plus intéressant. Cette section ne va pas trop insister sur les particularités de Vuforia, car il s'agira d'explorer les possibilités offertes par Unity pour créer une expérience de réalité augmentée attrayante..

2. Vuforia sur l'unité

Unity est un moteur de jeu populaire et puissant, facile à utiliser et capable de compiler des jeux pour plusieurs plates-formes. Utiliser Unity pour créer des expériences de RA avec Vuforia présente certains avantages. Il est possible de cibler tous les systèmes pris en charge par Vuforia, y compris les lunettes intelligentes. Son utilisation est plus simple, grâce aux Prefabs fournis par le SDK de Vuforia. En utilisant uniquement Unity, il est possible d'accéder à toutes les fonctionnalités disponibles sur Vuforia.

2.1. Vuforia Prefabs

Vous pouvez accéder à toutes les fonctionnalités de Vuforia sur Unity à l’aide des préfabriqués de Vuforia. Tout ce que vous avez à faire est de faire glisser l'objet sur la scène et de le configurer. Comme leur nom l'indique, les préfabriqués sont comme des modèles de création et de clonage d'objets Unity complets avec des composants et des propriétés. Par exemple, le ImageTarget représente des images pouvant être utilisées comme cibles. Jetons un coup d'œil aux préfabriqués Vuforia disponibles sur Unity:

  • ARCamera: Le préfabriqué le plus important. Il gère l'expérience globale des RA, en contrôlant la qualité du rendu, en définissant le centre du monde, la caméra à utiliser, les cibles maximales à suivre, etc. Dans ce tutoriel, nous allons concentrer nos efforts sur la compréhension de l'utilisation de cet objet..
  • Les cibles: Toutes les cibles Vuforia ont leur propre préfabriqué: ImageTarget, Multi-cible, CylinderTarget, ObjectTarget, UserDefinedTargetBuilder, VuMark, FrameMarker. Ces objectifs seront reconnus par le ARCamera et commencer une action, comme exposer un objet ou une animation 3D.
  • CloudRecognition: Utilisé pour accéder aux cibles définies dans le système cloud Vuforia.
  • SmartTerrain et Soutenir: Ces objets sont utilisés dans la fonctionnalité Smart Terrain.
  • Reconnaissance textuelle et Mot: Préfabriqués utilisés dans la fonctionnalité de reconnaissance de texte.
  • VirtualButtonVuforia peut comprendre les cibles comme des boutons sur lesquels l'utilisateur peut appuyer physiquement. Ce préfabriqué vous aidera à utiliser cette ressource.

3. Créer notre première expérience de RA

Le jeu que nous allons développer est simple, mais il illustre bien les principes de la réalité augmentée et nous en apprendra davantage sur les principes fondamentaux de Vuforia. L'objectif du jeu est de trouver et de tirer des cubes qui volent autour de la salle. Le joueur recherchera les cubes à l'aide de son appareil et «tapera» pour tirer sur les boîtes. Nous ne nous intéresserons pas au score, au niveau ou à quoi que ce soit d'autre, mais vous pouvez facilement développer vous-même ces aspects du jeu..

3.1. Préparer Unity pour Vuforia

Avant de commencer à jouer, nous devrons préparer Unity pour Vuforia. Le processus est assez simple et nous avons essentiellement besoin d’importer le package SDK de Vuforia et d’ajouter un fichier. ARCamera préfabriqué à notre projet.

  • Créer un compte développeur sur Vuforia.
  • Connectez-vous et téléchargez le SDK Vuforia pour Unity.
  • Ouvrez Unity et créez un nouveau projet appelé "Shoot the Cubes".
  • Une fois la fenêtre du projet Unity ouverte, allez à Biens> Package d'importation> Package personnalisé et sélectionnez le SDK téléchargé.
  • Tout importer.
  • Supprimer le Caméra objet dans le Hiérarchie la fenêtre.
  • Accédez au gestionnaire de licences sur le portail de développeur de Vuforia et créez une nouvelle licence à l'aide de votre compte de développeur..
  • Copier la clé de licence.
  • Retour à l'unité, dans le Projet fenêtre, allez à Patrimoine> Vuforia> Préfabriqués> ARCamera.Sélectionnez l'élément et faites-le glisser vers le bas Hiérarchie la fenêtre.
  • Avec ARCamera sélectionné, dans le Inspecteur panneau, allez à Vuforia Behavior (Script), trouver le terrain Clé de licence d'application, et collez la licence que vous avez créée dans le portail des développeurs de Vuforia.
  • Clique le Appliquer bouton près du sommet de la Inspecteur volet pour ajouter la clé de licence à tous ARCamera prefabs sur ce projet.

3.2. Tester si Vuforia fonctionne

Il est temps de vérifier si l'environnement fonctionne correctement. 

Utiliser votre appareil photo

Si vous avez une webcam sur votre ordinateur, vous pouvez appuyer sur le bouton de lecture de Unity pour vérifier si le ARCamera travaille. Il sera possible de reconnaître des cibles en utilisant la webcam; Cependant, il ne sera pas possible d'utiliser des données de capteur pour tester votre expérience de RA. Si le flux de la caméra ne montre pas le Jeu fenêtre, il est possible que votre appareil photo ne soit pas compatible avec le profil de webcam fourni par ARCamera

Configuration de l'application pour qu'elle s'exécute sur un périphérique

Le meilleur moyen de tester votre application Vuforia est directement sur l'appareil. Nous compilerons le projet pour Android, mais les mêmes étapes s'appliqueraient aux appareils iOS..

  • Premièrement, nous devons sauver la scène sur laquelle nous travaillons. Aller à Fichier> Enregistrer la scène.
  • Sélectionnez le Les atouts dossier et créer un nouveau dossier appelé Des scènes.
  • Enregistrer cette scène sous ShootTheCubesMain.
  • Aller à Fichier> Paramètres de construction.
  • Sélectionner Android et cliquez sur Plate-forme de commutation. Si cette option est désactivée, vous devrez télécharger le SDK Unity souhaité pour le périphérique..
  • Cliquer sur Paramètres du joueur et configurer le projet dans le Inspecteur la fenêtre.
  • Faites attention à certaines options: Éteignez le API graphique automatique et assurez-vous que OpenGLES2 est sélectionné pour le API graphique option.
  • Tapez le Identifiant de paquet.
  • Pour les appareils Android, assurez-vous que le Niveau d'API minimum sélectionné est API 9 ou plus grand. Vous aurez également besoin d'utiliser ARMv7 pour le Filtre de périphérique option.
  • Si vous avez suivi les étapes correctement, le projet est prêt à être généré. Toutefois, s'il s'agit de la première fois que vous compilez un projet Unity pour Android ou iOS, vous devez configurer Unity pour ces périphériques. Suivez ce guide pour Android et ceci pour iOS.
  • Pour exécuter le projet, retournez à Paramètres de construction et cliquez sur Construire et exécuter.

Après la construction, l'application sera installée sur votre appareil. Pour l'instant, tout ce que vous devez attendre est de voir la caméra se nourrir sur votre appareil sans aucune erreur. Si vous avez ça, tout a bien fonctionné.

3.3. Utilisation du préfabriqué ARCamera

L'objectif du jeu Shoot the Cubes est de rechercher et de tirer des cubes en vol à l'aide de la caméra et des capteurs de l'appareil. Cette approche est similaire à celle utilisée sur Pokémon GO. Pour ce faire, il suffit d’utiliser le Vuforia ARCamera préfabriqué.

Il y a beaucoup de scripts attachés à la ARCamera. Pour le moment, le seul que vous aurez besoin de comprendre est le Comportement de Vuforia scénario. Jetons un coup d'oeil à ses options:

  • Clé de licence d'application: Où la clé de licence Vuforia doit être insérée.
  • Mode appareil photo: Contrôle la qualité de rendu des objets.
  • Max images simultanées suivies: Définit les cibles maximales suivies au même moment. Vuforia ne recommande pas plus de cinq à la fois.
  • Max objets simultanés suivis: Définit le nombre maximal d'objets suivis en même temps. Encore une fois, Vuforia ne recommande pas plus de cinq en même temps.
  • Charger les cibles d'objet lors de la détection: Charge l'objet associé à la cible dès que celle-ci est détectée.
  • Direction de la caméra: Choisissez l'appareil photo à utiliser.
  • Arrière-plan vidéo miroir: Définit si le flux de la caméra doit être mis en miroir.
  • Mode Centre Word: L'option la plus pertinente pour notre projet. Il définit comment le système doit localiser le centre du monde. 
    • SPECIFIC_TARGET: Utilise une cible spécifique comme référence au monde.
    • FIRST_TARGET: La première cible détectée servira de référence au monde.
    • CAMÉRA: Utilise la caméra comme point de référence du monde.
    • DEVICE_TRACKING: Utilise le capteur de l'appareil comme référence pour définir les positions du monde. C'est l'option que nous devons choisir pour notre petit projet.

Pour le moment, tout ce que vous devrez changer dans le ARCamera est le Mode Centre Word. Clique sur le ARCamera élément dans la hiérarchie et dans la Inspecteur volet, changez le Mode Centre mondial à DEVICE_TRACKING.

3.4. Utilisation du capteur de l'appareil pour trouver le centre du monde

Ajoutons un cube à la scène et testons si ARCamera fonctionne correctement.

  • Sois sûr que ARCameraLa position et la rotation de sont définies sur 0 sur les axes X, Y et Z.
  • Créer un cube objet de Objet de jeu> Objet 3D> Cube.
  • Déplacer le cube Position sur le Z axe à dix et 0 sur le X et Y.
  • Échelle l'objet à 2 sur le XY, et Z axe.
  • Tourner Le cube 45 degrés sur le X et Y axe.
  • Vous pouvez appuyer sur le bouton de lecture pour vérifier si le cube est correctement positionné.
  • Une fois que vous êtes certain que le cube est correctement positionné, générez à nouveau le projet et testez-le sur le périphérique. Pour construire, allez à Fichier> Construire et exécuter.

Vous devrez regarder autour de vous en faisant pivoter votre appareil pour trouver le cube. Vous remarquerez que l'objet reste toujours au même endroit, même après que vous l'ayez fait pivoter. C'est comme si le cube "existait" dans le monde réel, mais ne pouvait être vu qu'avec la caméra du périphérique.

3.5. Définition de la position des éléments selon ARCamera

Le premier problème avec notre application jusqu'ici est que le cube peut apparaître n'importe où et que l'utilisateur devra regarder autour de lui pour le trouver. Comme le centre du monde est défini en fonction des capteurs de l'appareil, nous ne pouvons être certains de la position réelle des éléments. Cela est dû au fait que l'utilisateur peut démarrer avec le périphérique dans n'importe quelle orientation et que la façon dont la rotation est mesurée varie d'un périphérique à l'autre..

Afin de s’assurer que les entités AR commencent par la vue de l’utilisateur, la solution la plus simple consiste à attendre que Vuforia définisse le centre du monde et trouve le ARCamera rotation et ensuite pour organiser l'emplacement de départ des éléments en fonction de cette orientation.

Nous allons créer un Gestionnaire Spawn définir la position des cubes à engendrer. Le gestionnaire définira sa position en fonction des ARCamera rotation. Il attendra que la rotation soit définie, puis passera de 10 unités à l'avant de la caméra.

  • Créez deux objets vides avec Objet du jeu> Créer vide. Faites un clic droit sur l’un des objets que vous venez de créer et renommez-le en _SpawnController.
  • Changez le nom de l'autre objet vide en _GameManager.
  • dans le Projet fenêtre, sélectionnez le Les atouts dossier et créer un nouveau dossier appelé Les scripts.
  • dans le Les scripts dossier, créez un script C # appelé SpawnScript.
  • Faites glisser le SpawnScript au _SpawnController.
  • Double-cliquez sur SpawnScript pour le modifier.

Ajoutons d'abord le paquet Vuforia.

utiliser UnityEngine; using System.Collections; // Nous devrons utiliser le paquet Vuforia pour // nous assurer que tout fonctionne avec Vuforia; Classe publique SpawnScript: MonoBehaviour 

Accéder ARCamera, utilisation Camera.main. Créons une fonction pour obtenir la position de la caméra et définissons le cube à générer 10 unités à partir de ce point.

Classe publique SpawnScript: MonoBehaviour // Définit la position si l'objet // selon la position ARCamera private bool SetPosition () // récupère la position de la caméra Transform cam = Camera.main.transform; // définit la position 10 unités en avant à partir de la position de la caméra transform.position = cam.forward * 10; retourne vrai; 

Nous changerons la position une seule fois de la Début une fonction. Changer de position est une coroutine qui attendra un peu de temps avant de définir la position.

 bool privé mPositionSet; void Start () // Définition de la position de ponte StartCoroutine (ChangePosition ());  // Nous utiliserons une Coroutine pour accorder un // petit délai avant de définir la position private IEnumerator ChangePosition () return return new WaitForSeconds (0.2f); // Définit la position de Spawn une seule fois si (! MPositionSet) // ne modifie la position que si Vuforia est actif if (VuforiaBehaviour.Instance.enabled) SetPosition ();  

Testons le script:

  • De retour dans Unity, cliquez sur le bouton _SpawnController objet et utilisation Objet de jeu> Objet 3D> Sphère insérer une sphère à l'intérieur _SpawnController
  • Sélectionnez la sphère et assurez-vous que sa position est définie sur 0 sur les axes X, Y et Z. 
  • Maintenant, nous allons chevaucher le cube et _SpawnController afin que vous puissiez remarquer l'importance du script. Sélectionner _SpawnController et définissez sa position sur 0 sur les axes X et Y et sur 10 sur l'axe Z, la même position que le cube. 

Les éléments commencent par se chevaucher; Cependant, une fois que vous avez créé et exécuté l'application sur un périphérique, vous verrez que le _SpawnController et sa sphère apparaîtra devant la caméra, et le cube sera à un autre endroit. Allez-y et testez-le! Assurez-vous que vous regardez bien l'appareil au démarrage de l'application.

4. Conclusion

Félicitations, vous avez créé votre première expérience de réalité augmentée. Oui, c'est un peu dur, mais ça marche! Dans ce tutoriel, vous avez appris à utiliser le préfabriqué principal de Vuforia dans Unity, le ARCamera. Vous avez également appris à le configurer et à utiliser les capteurs de l'appareil pour créer l'illusion qu'un objet virtuel est inséré dans le monde..

4.1. Et après?

Dans le prochain tutoriel, nous allons améliorer ce principe pour créer un vrai jeu et une expérience plus attrayante. Nous continuerons à développer le jeu Shoot the Cubes, en ajoutant de l'interactivité et en explorant les possibilités de Unity pour créer un jeu AR intéressant. Nous allons faire en sorte que les cubes apparaissent et volent, et nous laisserons le joueur les rechercher et les détruire en tirant un laser hors de l'appareil.

À bientôt!

Un merci spécial pour le vecteur de l'image conçu par Freepik, sous licence Creative Commons CC BY-SA.