Les premiers chapitres présentent les différentes caractéristiques de la réalité augmentée ainsi que son utilisation, et un apprentissage du moteur temps réel Unity qui servira de support d implémentation pour la suite du livre. Ensuite, les différentes interactions entre les entités virtuelles et réelles sont étudiées à l aide du langage de programmation C# sous l environnement Mono. L ajout du composant de réalité augmentée et l étude de marqueurs sont décrits à l aide de nombreux exemples pratiques. Enfin, le développement complet d une application de réalité augmentée pour smartphone est étudié à travers un chapitre entier, qui expose la réflexion sur l architecture, les contraintes techniques et le déploiement, en apportant à chaque problème une solution concrète et fonctionnelle. Tous les codes sources du livre ainsi que les versions compilées sont disponibles en téléchargement sur le site www.editions-eni.fr. Les chapitres du livre Avant-propos Appréhender la réalité augmentée Comprendre et utiliser Unity Étude d un framework de réalité augmentée Exemple d un projet de réalité augmentée Aller plus loin ISSN 1960-3444 ISBN 978-2-7460-9062-0 9 782746 090620 54 Stéphane DORLAC est Chef de Projet, Architecte en développement, spécialisé en environnement.net. Ses domaines d intervention sont variés : téléphonie, paiement en ligne, mobilité, serious games Autour de la réalité augmentée, et en s appuyant sur Unity pour la réalisation technique, il fournit au lecteur les connaissances nécessaires pour réaliser des applications fiables et productives qui répondent aux attentes générées dans le monde de l entreprise par ce nouveau concept. Plus d informations : Guide du développeur C# Ce livre s adresse à un public de développeurs désireux d apprendre à développer leurs propres solutions de réalité augmentée à l aide du moteur 3D temps réel Unity. Grâce à une approche pratique et didactique, l auteur permet aux lecteurs d entrer rapidement dans le vif du sujet : après avoir analysé les modalités nécessaires à l élaboration d un projet de réalité augmentée, vous apprendrez à déployer des applications de réalité augmentée sur des terminaux mobiles (Android, ios, Windows Phone, ) mais aussi sur PC, Mac ou Linux. Une connaissance générale de la programmation est requise afin d exploiter au mieux le contenu de cet ouvrage. Guide du développeur (exemples et solution complète avec C#) La réalité augmentée avec Unity Guide du développeur (exemples et solution complète avec C#) Sur www.editions-eni.fr : b Code source des exemples. b Code source d une application mobile. Téléchargement www.editions-eni.fr.fr Stéphane DORLAC
Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence ENI du livre EPREAUC dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. Avant-propos Chapitre 1 Appréhender la réalité augmentée 1. Les concepts généraux...................................... 7 1.1 La réalité augmentée.................................... 7 1.2 Les différents types d implémentation..................... 9 1.3 Les applications du marché............................. 11 2. L environnement de travail................................. 13 2.1 Le choix d Unity 3D comme moteur temps réel............ 14 2.2 Le choix de l environnement de développement............ 17 2.3 Les différentes plateformes............................. 19 3. Les pré-requis et rappels.................................... 21 3.1 Informations sur la programmation objet pour Unity....... 22 3.2 Un environnement 3D temps réel........................ 25 3.3 Les outils de développement conseillés.................... 29 4. Conclusion.............................................. 30 Chapitre 2 Comprendre et utiliser Unity 1. L interface utilisateur...................................... 31 1.1 L organisation des fenêtres de travail..................... 32 1.1.1 L onglet Scene................................... 34 1.1.2 L onglet Game................................... 36 1.1.3 L onglet Project.................................. 38
2 Guide du développeur C# 1.1.4 L onglet Inspector................................ 40 1.1.5 L onglet Hierarchy............................... 44 1.1.6 L onglet Console................................. 46 1.2 Les menus........................................... 48 1.2.1 La gestion du projet avec les menus File et Edit........ 48 1.2.2 La gestion des scènes avec les menus File et Edit....... 53 1.2.3 La gestion des Assets avec les menus GameObject, Assets et Components............................ 55 1.3 Paramétrer son espace de travail......................... 57 1.3.1 Les différents Layouts............................ 58 1.3.2 Modifier un environnement de travail............... 59 2. Les différentes entités conceptuelles.......................... 62 2.1 Présentation des entités................................ 62 2.1.1 Les scènes...................................... 63 2.1.2 Les GameObjects................................ 65 2.1.3 Les Components................................. 68 2.2 Combinaison de contenus.............................. 71 2.2.1 Les Prefabs...................................... 72 2.2.2 Les Assets et les Packages.......................... 74 2.3 La gestion de la caméra................................. 76 2.3.1 Le GameObject Camera........................... 76 2.3.2 Gérer plusieurs caméras dans une scène.............. 81 3. Les interactions entre les différentes entités.................... 85 3.1 Programmer les scripts et comprendre MonoBehaviour...... 85 3.1.1 Création des scripts.............................. 86 3.1.2 Rôle de MonoBehaviour........................... 92 3.1.3 Scripts de conception............................ 96 3.1.4 Communication entre les entités................... 98 3.1.5 La gestion des préférences utilisateur............... 105 3.2 Les outils pour déboguer son code....................... 109 3.2.1 L objet Debug et le Log........................... 109 3.2.2 Les points d arrêt avec MonoDevelop............... 116
Table des matières 3 3.3 La gestion différée des actions sous Unity................ 121 3.3.1 L invocation................................... 121 3.3.2 Les Coroutines................................. 125 3.4 Définir une interface utilisateur........................ 130 3.4.1 Les outils de création d interfaces utilisateur......... 131 3.4.2 La gestion d une interface avec NGUI............... 141 4. Les différentes plateformes................................ 155 4.1 Connaître les principaux formats de sortie................ 156 4.1.1 Les applications Standalone....................... 156 4.1.2 Les applications ios............................. 161 4.1.3 Les applications Android......................... 162 4.1.4 Les applications Windows Store................... 165 4.1.5 Les applications Windows Phone 8................. 167 4.1.6 Les applications WebPlayer....................... 168 4.2 Gestion des contraintes liées aux plateformes............. 170 4.2.1 Les applications pour mobile...................... 171 4.2.2 Le WebPlayer et sa Sandbox...................... 176 5. Conclusion............................................. 181 Chapitre 3 Étude d un framework de réalité augmentée 1. Le plug-in de réalité augmentée............................. 183 1.1 Vue d ensemble...................................... 184 1.1.1 L architecture proposée.......................... 184 1.1.2 Utilisation du Target Manager.................... 187 1.2 Gérer le contenu..................................... 194 1.2.1 Gestion du contenu par des marqueurs............. 194 1.2.2 Conseils et bonnes pratiques...................... 198 2. L intégration dans Unity.................................. 200 2.1 Présentation et installation............................ 200 2.1.1 Récupération du plug-in et installation............. 200 2.1.2 Les Prefabs du plug-in............................ 204
4 Guide du développeur C# 2.2 Marqueurs et fonctionnalités avancées................... 211 2.2.1 Exemple d un marqueur de type Image............. 211 2.2.2 Les boutons virtuels............................. 227 2.2.3 L utilisation du cloud............................ 240 3. Conclusion............................................. 254 Chapitre 4 Exemple d un projet de réalité augmentée 1. Définition et préparation.................................. 255 1.1 Structurer le projet................................... 255 1.1.1 Définition du périmètre fonctionnel................ 256 1.1.2 Choix de la plateforme de sortie................... 258 1.2 Définition du contenu................................ 259 2. Développer l application.................................. 261 2.1 Le projet Unity...................................... 262 2.1.1 Mise en place et configuration..................... 262 2.1.2 Import des Assets............................... 265 2.1.3 Le Manager d application......................... 266 2.1.4 La localisation.................................. 268 2.2 Intégration de la réalité augmentée...................... 274 2.2.1 Création des marqueurs.......................... 274 2.2.2 Création de la base de données de marqueurs........ 277 2.3 Gestion des scènes................................... 281 2.3.1 Les scènes satellites.............................. 281 2.3.2 La scène principale.............................. 297 2.4 Déploiement et améliorations.......................... 311 2.4.1 Compiler et déployer sur Android................. 311 2.4.2 Conclusion.................................... 314
Table des matières 5 Chapitre 5 Aller plus loin 1. L Asset Store............................................ 317 1.1 Des composants et plug-ins conseillés................... 318 1.2 Créer et monétiser avec l Asset Store.................... 320 2. L aspect social et les communautés.......................... 329 2.1 Les réseaux sociaux dans les applications................. 329 2.2 Ressources web...................................... 333 3. En conclusion........................................... 334 Index.................................................. 335
Chapitre 2 Comprendre et utiliser Unity 1. L interface utilisateur Comprendre et utiliser Unity Unity propose une interface riche et intuitive. Facilement personnalisable, elle permet à l utilisateur de configurer rapidement un environnement de travail qui lui est propre, ceci afin de gagner en productivité. Le but de cette section n est pas d'expliquer un à un tous les éléments que comportent les menus et les barres d outils (la documentation du produit remplit bien son office), mais plutôt d en expliquer les éléments les plus utiles et les plus utilisés, en fournissant les informations nécessaires au lecteur tout en restant dans le cadre du projet de l ouvrage. L objectif annoncé est de fournir au lecteur les moyens de naviguer dans les différentes vues et menus en toute connaissance des tenants et aboutissants de chacun et enfin de lui permettre de configurer au mieux l interface qu il jugera la plus pertinente pour son projet d application.
32 Guide du développeur C# 1.1 L organisation des fenêtres de travail Pour appréhender l interface proposée par Unity, il convient de définir préalablement les modalités de fonctionnement du système. En effet, il est possible de considérer Unity comme un agrégateur de contenu qui intègre une série d outils pour faciliter leur interaction. Il est possible de modifier des comportements de ces éléments soit par du code, soit dans l éditeur intégré, et pour gérer ces modifications l utilisateur aura besoin de repères graphiques et numériques dans un espace de travail, d outils de saisie de valeurs, de fenêtres de visualisation d état, d un plan de travail, d outils de contrôle et d optimisation et enfin d un référentiel de contenu. Pour répondre à ces attentes, Unity propose différentes vues et outils que nous allons présenter. L espace de travail : Unity expose deux vues à travers l onglet Scene et l onglet Game. Ces vues représentent respectivement l espace de travail dans lequel la manipulation des différents objets est possible, et le rendu final lors de l exécution. La gestion du contenu disponible : à l aide de l onglet Project, Unity référence dans ce dernier la liste des éléments que va contenir l application. Cela concerne aussi bien les scripts que les objets 3D ou la musique. Il s agit d un référentiel de tous les éléments qui vont constituer le projet. Les manipulateurs visuels : une barre d outils est proposée par Unity. Cette dernière donne la possibilité à l utilisateur de modifier la position, la rotation et la taille des éléments présents dans l onglet Scene. Une autre section de cette barre d outils propose une gestion de calques (que nous étudierons plus loin dans la section) et enfin une partie dédiée à la configuration de l interface. Les modifications de valeurs : Unity propose deux onglets intiment liés. Il s agit de l onglet Hierarchy et de l onglet Inspector. L onglet Hierarchy comporte les éléments présents dans la scène (représentés graphiquement dans l onglet Scene) et l onglet Inspector expose les différentes modifications possibles sur l élément sélectionné dans Hierarchy. Editions ENI - All rights reserved
Comprendre et utiliser Unity Chapitre 2 33 Le suivi : avec l aide de l onglet Console, Unity expose à l'utilisateur un outil de contrôle. Cet outil fournit des informations lors de l exécution du projet mais aussi lors de l ajout ou la modification de code dans les différents scripts, afin de donner un état de validation. L utilisateur pourra ajouter ses propres informations lors de l exécution du projet afin d assurer un suivi d exécution, comme nous le présenterons plus loin dans ce chapitre. La capture ci-dessous illustre l organisation proposée par Unity lors du lancement d un projet sur une plateforme PC. Nous pouvons noter la présence de différentes vues gérées à l aide d onglets et la présence d un élément nommé Main Camera ajouté par défaut à l onglet Hierarchy. Les informations contenues dans l onglet Project sont celles importées lors de la création du projet. Une fois cette vue générale établie, il convient de se pencher sur chaque onglet afin d en expliquer les subtilités.
34 Guide du développeur C# 1.1.1 L onglet Scene Cet onglet va prendre une place prépondérante dans l interface générale. L utilisateur va manipuler une multitude d objets dans cette dernière. Plusieurs sous-menus occupent le haut de cette fenêtre. Le mode d affichage : il s agit du type d affichage, qui propose entre autres la possibilité d afficher les objets 3D de façon texturée ou non par exemple. Le mode de rendu : il permet quant à lui de modifier le rendu de cette fenêtre (et non le rendu final de la scène une fois l exécution lancée), ce qui peut s avérer pratique pour positionner des objets à l aide de la transparence. Le mode 2D/3D : alterne entre une vue 2D ou 3D de la scène. L affichage des lumières : ce menu permet le rendu des lumières de la scène sur les objets (et uniquement sur l onglet Scene et non pas lors de l exécution de l application). L affichage des effets sonores : permet d afficher sur l onglet Scene les effets sonores, afin de les positionner par exemple. L affichage des effets visuels : permet l affichage sur l onglet Scene des effets visuels à l aide de sélecteurs à cocher. L affichage des Gizmos : avec ce menu, il est possible de gérer finement les Gizmos, qui sont des repères scéniques visuels. Si nous prenons par exemple une entité de type Camera, qui n a d autre but que de permettre à l utilisateur final de voir la scène en cours, cette entité fournit un service mais n a pas de consistance 3D visuelle. Afin de la manipuler (déplacement, rotation du point de vue, etc.), l utilisateur a besoin de la voir dans l onglet Scene. Le Gizmo est utilisé pour cela. D autres Gizmos sont disponibles et affichables ou pas depuis ce menu. La recherche : ce menu est très utile lorsque les scènes sont complexes et comportent de nombreux objets. Lorsque l utilisateur entre le nom de l objet, ce dernier se met en surbrillance dans la scène, ce qui est fort utile pour le repérer. Editions ENI - All rights reserved
Comprendre et utiliser Unity Chapitre 2 35 La capture d écran ci-dessous illustre la représentation du menu de l onglet Scene. Pour naviguer dans une scène, les actions suivantes sont disponibles : Déplacement : un clic droit plus un mouvement de la souris. Le pointeur se change en main et la vue change en suivant le mouvement de la souris. Zoom : le zoom s effectue à l aide de la molette de la souris. Il est aussi possible d effectuer cette opération en utilisant la touche [Alt] avec un clic droit tout en effectuant un mouvement avec la souris. Rotation : la touche [Alt] plus un déplacement de la souris permet d effectuer une rotation de la vue actuelle autour d un point de pivot. Un clic droit plus un mouvement de la souris fait pivoter la caméra de la vue. Enfin, l onglet Scene propose un manipulateur de vue. Ce dernier (illustré dans la capture d écran ci-dessous) permet d afficher rapidement la vue selon les axes désirés (X, Y ou Z) dans une vue de type perspective ou isométrique. Ce manipulateur est à mettre en relation avec les boutons de la barre d outils qui permettent des manipulations de l objet sélectionné selon les axes choisis. Les manipulations peuvent être liées au déplacement, à la rotation ou à la taille. Ces actions sont possibles à l aide des boutons que l on aperçoit dans la capture ci-dessous.
36 Guide du développeur C# 1.1.2 L onglet Game Cet onglet représente le rendu final de l application. Contrairement à l onglet précédent, cette vue est liée à la caméra présente dans la scène. Lorsque plus loin dans ce chapitre le GameObject Camera sera traité, les modifications de ces propriétés auront un impact direct sur cette vue. L onglet Game possède des outils intrinsèques qui vont permettre les actions suivantes : La modification du ratio de rendu : lorsqu un projet est en cours d exécution, le rendu final s effectue dans l onglet Game. Il est possible de définir à l aide d une liste déroulante le ratio d affichage désiré pour ce rendu. Cela s avère très pratique si l on souhaite par exemple tester le rendu sur des résolutions spécifiques. Cette liste déroulante propose des choix prédéfinis, mais permet aussi la saisie de nouvelles résolutions. Il est ainsi facile de tester le rendu sur une résolution de 800x600 pixels ou de 1920x1200 pixels. Avec l option Free Aspect, il est tout aussi facile de laisser le rendu s adapter à la taille de l onglet actuel (il s agit d ailleurs du choix par défaut). La gestion du plein écran : lorsque l on exécute un projet depuis Unity, il peut s avérer pratique de tester le rendu en plein écran (sans l interface Unity) ou alors de laisser l exécution s effectuer dans l onglet. Le bouton Maximize on Play permet de commuter entre les deux possibilités. Il peut être intéressant de ne pas passer en mode plein écran afin de se laisser la possibilité de modifier des valeurs ou des comportements en utilisant les autres onglets. L affichage des Gizmos : nous l avons abordé dans l onglet précédent, les Gizmos sont des repères visuels qui correspondent à des entités existantes jouant un rôle dans la scène mais non représentées graphiquement dans celle-ci (comme une source lumineuse par exemple). Le bouton Gizmos permet de les afficher ou non dans le rendu final sur Unity (et non dans l application finale compilée). L affichage des statistiques : il est possible d afficher en surimpression une fenêtre des statistiques de la scène en cours dans l onglet Game, à l aide du bouton Stats. Editions ENI - All rights reserved