Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

UNITY - L'univers du jeu capable de faire de la réalitée augmentée

Par Ismaïl DRISSI Publié le 05/09/2016 à 14:14:11 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Présentation Unity

Unity est un moteur de jeu multiplateforme permettant de développer des applications de réalité augmentée. Il s’agit de l’un des moteurs de jeu les plus répandus dans le milieu professionnel mais aussi chez les particuliers, du fait de sa facilité d’utilisation et de sa rapidité, mais aussi grâce à sa grande communauté active et présente sur internet. Autre avantage dont bénéficie les utilisateurs, la version gratuite de la licence ne limite d’aucune façon le moteur de jeu, mais seulement quelques fonctionnalités comme la possibilité de lire des vidéos. La licence professionnelle payante ne s’impose qu’aux entreprises qui génèrent un chiffre d’affaire supérieur ou égal à 100 000 dollars. On dit de ce moteur de jeu qu’il est multiplateforme car il permet d’exporter des applications compatibles entre autres Windows, Windows Phone, Android, iOS et WebGL.

Unity peut aussi être considéré comme un logiciel d'animation, cependant comme ce n’est pas sa vocation première, il ne permet pas de modéliser des objets en 3D mais permet de créer des scènes supportant des éclairages, des terrains, des caméras, des textures, du son, des vidéos (version pro) et bien sûr des objets 2D ou 3D ainsi que leurs animations. Ces dernières peuvent être entièrement éditées directement depuis Unity, bien que cela se fait le plus souvent dans les logiciels de modélisation 3D tels que Blender ou 3DSMax. Il faut savoir aussi qu’il n’est possible d’importer dans Unity des modèles 3D qu’aux formats .fbx ou .obj.

Le logiciel utilise un éditeur de script C# et UnityScript (un langage proche du JavaScript). Unity se différencie des autres logiciels de développement par la façon inhabituelle dont se développe les applications. En effet, le logiciel emploie une programmation orientée asset, par le biais d'un environnement de développement dédié. Un asset peut être considéré comme un objet considéré dans une scène. Unity les appelle d’ailleurs gameObject, ce qui sous-entend qu’il s’agit d’un objet dans la scène auquel on pourra appliquer différentes composantes (components dans Unity) telles que des scripts, des textures pour des object 3D, du son, des animations … etc. C’est dans les scripts que s’orchestrent les scènes, que les actions se lancent et que les interactions sont interprétées. Unity intègre également un moteur physique qui permet de simuler l’interaction physique entre les objets d’une scène en leur attribuant des forces gravitationnelles, des zones de collision ou bien des contraintes mécaniques.

Téléchargement Unity

Pour ce qui est du téléchargement de Unity, il est simple et rapide ! Rendez-vous sur le store officiel pour récupérer la dernière version de l'installeur Unity : " https://store.unity.com/?_ga=1.268051019.45052497.1469791497 ".

Création d'un compte Unity

A la suite de votre téléchargement, il faudra vous créer un compte Unity. Pour cela, rendez-vous à l'adresse suivante : " https://id.unity.com/en/conversations/75d01fff-dc00-4350-a485-b10bd2c4079200af ". Vous allez recevoir un mail de vérification de compte. Cliquez sur le lien pour vérifier votre compte. Le compte Unity va nous être utile après l'installation pour pouvoir accèder au logiciel installé.

Installation Unity

Une fois l'installeur téléchargé, éxécutez le en tant qu'administrateur, vous devriez voir apparaitre cette fenêtre :

- cliquez sur "Next", vous allez voir les conditions générales d'utilisation :

- acceptez les en cochant la case, puis cliquez sur "Next" pour choisir l'architecture de votre installation :

Ici, un point est à noter : pour faire le a réalitée augmentée, Unity doit être installé en version 32bit si, et seulement si, la version que vous utilisez de Vuforia est inférieur à la version 6. Choisissez donc l'architecture qui va le mieux à votre environnement. Dans ce tutoriel, j'ai choisi le version 32bit avec une version de vuforia supérieur à 6 car je trouve, personnellement, que pour la réalitée augmentée, la version 32bit est plus stable.

- une fois votre choix fait : cliquez sur "Next" pour passer à l'étape des choix des composants :

Pour avoir un Unity complet sans avoir à réinstaller les composants principaux plus tard, sélectionnez : Unity, Documentation, Standard Assets, Android Build, iOS Build, Mac Build et WebGL Build.

- Puis cliquez sur "Next" pour choisir l'emplacement des fichiers qui seront téléchargés durant l'installation et l'emplacement du dossier de Unity.

- Une fois les champs renseigné, cliquez sur "Next" pour démarrer l'installation :

A noter, qu'avec les composants sélectionné, cette installation peut prendre quelques longues minutes. Cela depend aussi de l'ordinateur sur lequel est installé Unity. En résumé, cela peut prendre entre 15min et 1h. Une fois l'installation, cette fenêtre apparait :

- Cochez la case, si vous voulez que Unity demarre maintenant.

- Il vous demande maintenant de vous connecter avec le compte Unity, préalablement créé. Vous devriez voir, ensuite la fenêtre ci-dessous :

L’interface de développement se divise en six fenêtres/onglets, dont la disposition peut être changée selon la volonté du développeur :

1. La fenêtre « Scene » correspond à la scène en cours d’édition dans un projet Unity (ici un environnement avec de nombreux gameObjects).

2. La fenêtre « Game » correspond au rendu visuel de l’application lorsqu’elle est exécutée (ici vue de caméra placée au-dessus du joueur avec l’affichage de l’interface de jeu).

3. Un onglet « Hierarchy » qui liste de façon organisée l’ensemble des gameObjects présents dans la scène en cours de développement.

4. Un onglet « Project » qui est en fait un explorateur des fichiers qui font partie du projet mais pas forcément de la scène.

5. Un onglet « Inspector » qui correspond aux caractéristiques d’un objet sélectionné dans la scène (ici la camera). On peut ici modifier les coordonnées et rotation d’un gameObject ainsi que lui attribuer des composantes et les éditer.

6. Une fenêtre « Console » qui permet le débogage des applications en affichant les messages d’erreurs, d’avertissements et de débogage pendant et avant l’exécution d’une application.

Définition : Réalitée augmentée

Avant de commencer à rentrer dans le vif du sujet, il est important de bien comprendre ce qu’est cette technologie. D’une façon générale, la réalité augmentée désigne les systèmes informatiques qui rendent possible la superposition d'un modèle virtuel (2D ou 3D) à la perception que nous avons naturellement de la réalité et ceci en temps réel. Elle désigne les différentes méthodes qui permettent d'incruster de façon réaliste des objets virtuels dans une séquence d'images. Elle s'applique aussi bien à la perception visuelle (superposition d'image virtuelle aux images réelles) qu'aux perceptions proprioceptives comme les perceptions tactiles ou auditives. Notons qu’elle ne doit pas être confondue avec la réalité virtuelle, qui désigne les technologies informatiques qui créent artificiellement un environnement, réel ou imaginaire, et simule la présence et l'environnement physique d'un utilisateur pour permettre une interaction de l'utilisateur. Pour résumer, la réalité augmentée applique une couche virtuelle sur la perception réelle alors que la réalité virtuelle soumet à la vision de l’utilisateur un environnement virtuel seulement. L’illustration suivante permet de bien distinguer ces deux technologies :

Ici le GPS utilisant la réalité augmentée dessine le chemin à suivre sur l’environnement réel qu’elle filme en parallèle, alors que le GPS utilisant la réalité virtuelle affiche l’itinéraire sur une reproduction précise de l’environnement dans lequel se situe l’utilisateur mais en aucun cas sur la réalité perçue par ce dernier. Les applications de la réalité augmentée sont multiples et touchent de plus en plus de domaines telle que l'éducation, la publicité, les industries (conception, design, maintenance, assemblage…etc) ou encore le médical.

Les plugs-in de la réalitée augmentée pour Unity

Présentation Vuforia

Vuforia est, pour ma part, la solution la plus développée, stable tout en étant totalement gratuite. Vuforia semblait donc être un bon candidat, car elle bénéficie d’une grande communauté active et d’un support technique opérationnel qui continue de développer le plugin en parallèle. Vuforia est compatible iOS, Android et même avec les masques de réalité virtuelle tels que le Google Cardboard. Seul bémol, elle n’est à ce jour pas compatible Windows, mais le sera prochainement comme annoncé sur le site officiel. Vuforia s’exploite aussi par le biais d’un plugin Unity appelé Vuforia SDK, qui permet de développer depuis Unity des projets de réalité augmentée avec la technologie offerte par Vuforia. Au contraire de Diota, elle permet d’exporter des applications aux différents formats correspondants aux supports précisés précédemment. Notons aussi que Vuforia gère le tracking avec les marqueurs 2D classiques (motif imprimé sur une feuille par exemple) mais aussi des cubes, des cylindres et des objets 3D plus complexes de petite taille (10cm) qu’il faut préalablement scanner avec une application Android fournie. Tous ces marqueurs doivent être chargés dans la base de données du site de Vuforia afin de pouvoir les utiliser.

Présentation Diota

Diota s’exploite par le biais d’un plugin Unity appelé DiotaStudio, qui permet de développer depuis Unity des projets de réalité augmentée avec la technologie offerte par Diota. En revanche, il n’est pas possible de créer une application avec cette technologie mais seulement de générer un fichier à un format propre à Diota et lisible uniquement par une seconde solution logicielle fournie et nommée DiotaPlayer. Ce lecteur de projet permet d’afficher les différents scénarios développés sous forme de vues, appelés job cards, que l’on fait défiler les unes après les autres. La particularité de la technologie Diota, est que le tracking* se fait grâce à un objet 3D et non avec un marqueur 2D classique comme le font la plupart des technologies de réalité augmentée. C’est-à-dire qu’elle est capable de détecter en temps réel un objet en 3D et de lui superposer la couche virtuelle et cela sous tous ses angles. Entre outre, elle permet aussi de faire de la réalité augmentée directement depuis une vidéo ce qui évite de devoir aller filmer à chaque fois l’objet en question. L’équipement matériel nécessaire est fourni. Puisque cette technologie n’est compatible qu’avec Windows 10 et que l’ensemble doit être mobile, elle s’embarque sur une tablette Microsoft Surface Pro 4 surmontée d’une caméra haute définition. Notons qu’il s’agit d’une technologie particulièrement onéreuse, puisqu’il faut dépenser 7000€ pour obtenir le kit de développement complet, c’est-à-dire la licence Diota, le plugin DiotaStudio, la solution DiotaPlayer et la tablette équipée.

Présentation ARToolkit

ARToolKit est une bibliothèque logicielle permettant de créer ses propres applications de réalité augmentée. Il permet d'affranchir le développeur de tous les calculs d'analyse et de rendu d'images dont nous avons parlés précédemment. ARToolkit a un fonctionnement similaire à celui de Vuforia mais étant moins populaire et pas plus performante. Le fonctionnement globale d'une application de réalité augmentée en utilisant ARToolKit se décompose en 5 étapes distinctes : Recherche du marqueur, Calcul de la position et de l'orientation du marqueur par rapport à la caméra, Identification du symbole à l'intérieur du marqueur, Calcul de la position et de l'orientation de l'objet que l'on veut insérer sur le marqueur, Création de l'image en mixant l'image issue de la caméra avec les éléments virtuels que l'on souhaite intégrer.

Présentation Wikitude

Wikitude permet de créer directement vos propres campagnes de réalité augmentée, en quelques minutes. En combinaison avec Wikitude studio, des projets et des campagnes de réalité augmentée peuvent rapidement et facilement créer et de fournir un contenu interactif. Au cœur de la dernière version de Wikitude : lar echerche avancée. La recherche avancée est votre passerelle pour libérer le monde du contenu numérique augmentée autour de vous. L'algorithme avancé et contextuellement conscient recherche ne fournit que les résultats les plus pertinents, vous offrant ce que vous avez besoin, quand vous en avez besoin. Plus précisément, les entreprises peuvent fournir aux clients un code de recherche spécifique qui les dirige directement vers une expérience AR spécifique.

Installation de Vuforia dans Unity

- Dans un premier temps, il faut téléchargé le SDK pour Unity de Vuforia sur le site developpeur de vuforia : " https://developer.vuforia.com/downloads/sdk "

- Une fois téléchargé, il ne vous reste plus qu'a l'intégrer dans le dossier des standards assets de Unity. Pour cela ouvrez le dossier d'installation de Unity, puis allez dans le dossier "Editor" puis "Standard Assets". Dans ce dossier, vous devez déplacer le SDK Vuforia téléchargé à l'étape précédente.

- L'étape suivante est le lancement du logiciel Unity en intégrant le composant Vuforia à un nouveau projet. Pour cela, lancer Unity et connectez-vous si besoin avec le compte Unity que vous avez préalablement créé.

- Cliquez ensuite sur "Add Asset Package" et sélectionnez dans votre liste "Vuforia-Unity" puis cliquez sur "Done"

- Enfin, cliquez sur "Create project". Voilà, notre projet contient donc tous les composants nécessaires pour faire de la réalité augmentée dans Unity grâce au plug-in Vuforia.

Premier pas avec la réalitée augmentée

Principes de fonctionnement

Vuforia fournit un SDK* pour Unity sous forme d’un package à importer. Ce package contient des prefabs qui permettent de mettre très rapidement en oeuvre la réalité augmentée. Parmi les prefabs fournit, nous utilisons les prefabs ARCamera et ImageTarget. Avant de les utiliser, il faut au préalable créer un compte sur le site de Vuforia.

En effet, pour pouvoir exploiter cette technologie il faut obtenir une licence en la demandant sur le site. Ils existent plusieurs types de licences, elles sont toutes gratuites, sauf celles destinées à des applications commerciales.

Vuforia est une technologie qui fonctionne avec la reconnaissance de marqueurs 2D, entre autres. Ces marqueurs doivent être chargés sur le site. Celui-ci accepte des images au format .jpeg. Lorsqu’une image est chargée, Vuforia évalue son indice de performance sur une échelle allant de 0 à 5 étoiles. Plus l’indice est élevé, mieux sera assurée la reconnaissance du marqueur pendant la session de réalité augmentée. Notons qu’un indice supérieur ou égal à 3 est suffisant. Les marqueurs efficaces sont ceux ayant un contraste marqué et n’ayant pas de motifs redondants. Il faut ensuite récupérer les marqueurs formatés par Vuforia en les téléchargeant depuis le site sous forme de package. Celui-ci doit être ensuite importé dans le projet Unity et nous pourrons enfin faire fonctionner Vuforia.

Application d'un modèle sur un marqueur

De retour dans Unity, la première chose à faire est d’instancier un objet à partir du prefab ARCamera de Vuforia. Aux travers des composantes qui lui sont associées, ce gameObject gère la vue caméra et la détection des marqueurs. On peut paramétrer par exemple le nombre de marqueurs détectable simultanément. Il permet aussi de gérer le rendu stéréo pour les masques de réalité virtuelle. On peut également définir la caméra à utiliser si l’appareil en a plusieurs. A ce propos, l’ARCamera est préconfiguré pour un certain nombre de caméras classique, mais lorsque la caméra utilisée ne figure pas dans sa liste, la qualité de capture de la caméra peut être fortement altérée. On peut corriger cela en éditant le fichier profiles.xml situé dans le dossier Vuforia du projet. Voici le code à ajouter dans le fichier .xml en remplaçant NomDeLaCamera par le nom de la caméra utilisé (visible dans les composantes de l’ARCamera) :

L’illustration suivante montre quelques une des composantes de l’ARCamera qu’on va essentiellement utiliser :

Dans le champ « App Licence Key » il faut copier la licence Vuforia. Le paramètre Max Simultaneous définit le nombre de marqueurs que l’on peut détecter simultanément. Il est important de cocher les cases Load Database et Activate afin de prendre en compte les marqueurs importés. Enfin la composante WebCamBehaviour permet de sélectionner la caméra.

Nous pouvons maintenant instancier le dernier prefab qui nous permettra de faire fonctionner Vuforia. Il s’agit du prefab ImageTarget. La seule composante qu’il faut considérer est l’ImageTargetBehaviour qu’on peut voir dans l’image qui suit :

Il faut sélectionner dans Database le package de marqueurs importé au début du projet puis sélectionner le marqueur qui nous intéresse dans ImageTarget. Dès lors le marqueur apparait dans la scène et la réalité augmentée devient opérationnel. Maintenant il ne reste plus qu’a développé le projet souhaité. La dernière condition pour que cela fonctionne est de systématiquement placer les gameObjects, qui composeront la scène virtuelle, en tant que fils de l’ImageTarget. Pour faire apparaitre la scène virtuelle il suffit de filmer le marqueur pendant l’exécution de l’application et lorsqu’il sera détecté la couche virtuelle apparaitra par-dessus le marqueur.

Exportation d'une application android

Voici un petit tutoriel pour configurer en quelques clics votre unity pour le développement d'application et jeux sous Android. Avant toute chose l'export d'une application Unity pour Android nécessite une licence payante à acheter sur le site d'Unity3d. Cette licence est disponible en deux version, une version "basique" et une version "pro" qui ajoute des fonctionnalités comme la lecture vidéo, des effets graphiques avancés ou le support des sockets .NET. La liste des features complète est visible sur cette page : http://unity3d.com/unity/licenses#android. Vous aurez également besoin d'un téléphone Android et de son câble USB. Installez le SDK Java dans sa dernière version 32bits/x86 disponible (Site web JAVA SDK) . Installez ensuite le SDK Android (Site Web Android SDK).

Configuration du téléphone

Nous allons configurer votre téléphone pour autoriser l'installation d'applications non reconnues via le câble USB. Pour ce faire rendez vous dans le menu réglages, puis :

1.Allez dans "Options développeur"

2.Cochez "Débogage USB"

3.Revennez au menu précédent, allez dans "Sécurité"

4.Cochez l'option "Sources inconnues"

Votre téléphone est désormais configuré pour le développement. Pour des raisons évidentes de sécurité ces réglages ne doivent pas forcément rester activés lorsque vous ne développez pas.

Le pas à pas pour l'exportation

S'il ne s'est pas lancé tout seul exécutez l'Android SDK Manager depuis le menu démarrer. Une fenêtre s'ouvre et vous propose les packages à installer. Par défaut le système utilisé est la dernière version parue d'Android. Pour connaître la version d'Android installée sur votre téléphone rendez-vous dans "Réglages -> A propos du téléphone". Choisissez la version qui correspond à votre téléphone. Enfin si vous n'avez pas déjà installé les drivers de votre téléphone cochez "Google USB Driver" dans "Extra" en bas de la liste et validez l'installation des packages. Nous reviendrons dessus plus tard si nécessaire.

Le téléchargement peut prendre un certain temps, profitez en pour configurer Android dans Unity.

De retour sur Unity : Cliquez sur "Fichier > Build Settings", le panneau de configuration apparaît. Sélectionnez "Android" qui doit être cliquable si vous avez enregistré et activé votre licence sur le poste, puis "Switch Platform" en bas. Tous les assets vont être réimportés ce qui peut prendre un certain temps. A la fin du processus pensez à cocher "Development Build" et "Script Debugging", ces deux options vont ralentir le temps de compilation et de lancement sur le mobile mais seront d'une précieuse aide pour débuguer l'application ! Evidement pour la build finale de votre application il faudra penser à les décocher.

Si tout est bien configuré et que vos scripts compilent, il se peut que votre téléphone ne soit pas reconnu par le système. Dans ce cas ouvrez le gestionnaire de périphériques (Clic droit sur "Ordinateur" dans l'explorateur > Gérer > Gestionnaire périphériques), sélectionnez l'appareil mobile auquel il manque un driver et choississez de mettre à jour le pilote. Renseignez simplement l'adresse du SDK Android "/Extras/Google USB Driver/" et confirmez l'installation du pilote. Une fois le driver installé votre appareil sera reconnu par le système et Unity pourra exécuter votre application.

Si vous rencontrez des problèmes à la compilation, consultez les logs et la documentation, la majorité des fonctions Unity sont disponibles sur toutes les plate-formes mais certaines features peuvent ne pas être accessible sur mobile, ou dans la version "basique" du plugin Android. Si votre application fonctionne, je vous invite à consulter la documentation officielle pour commencer à exploiter les fonctionnalités propres au mobile.

Conclusion

Unity est un gros logiciel, très complet. Il a été et reste un logiciel qui est utilisé par de nombreux développeurs de jeux. Cependant grâce au plug-in de réalitée augmentée, il devient aussi un logiciel d'implementation 3D dans un univers visuel réel.

Vuforia présente de nombreux avantages : son coût nul, sa performance dans la détection des marqueurs qui est très satisfaisante, sa facilité de mise en oeuvre, sa compatibilité avec Android, iOS et les masques de réalité virtuelle, et le fait qu’il permet les interactions avec les modèles virtuels et qu’il ne posera pas de problème pour établir une connexion entre l’application et un système externe.

Les limites de Vuforia sont les faibles distances de détection (1 à 1,50 m maximum pour des marqueurs au format A4), l’impossibilité d’estimer la distance entre plusieurs marqueurs et son incompatibilité avec Windows (pour le moment).

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels