1. Azure Cloud Services pour HoloLens 21. Azure Cloud Services for HoloLens 2

Bienvenue dans cette série de tutoriels consacrés à l’intégration de services cloud Azure dans une application HoloLens 2.Welcome to this series of tutorials focused on bringing Azure Cloud services into a HoloLens 2 application. Dans cette série de cinq tutoriels, vous allez apprendre à intégrer plusieurs services cloud Azure dans un projet Unity pour HoloLens 2.In this five-part tutorial series, you will learn how to integrate several Azure Cloud services into a Unity project for HoloLens 2. Avec chaque chapitre consécutif, vous ajouterez de nouveaux services cloud Azure pour étendre les fonctionnalités de l’application et l’expérience utilisateur, tout en apprenant les principes fondamentaux de chaque service cloud Azure.With each consecutive chapter, you will add new Azure Cloud services to expand the application features and user experience, while teaching you the fundamentals of each Azure Cloud service.

Notes

Cette série de tutoriels se concentrera sur HoloLens 2, mais en raison de la nature multiplateforme de Unity, la plus grande partie de ce que vous allez apprendre s’appliquera aussi aux applications pour poste de travail et pour smartphone.This tutorial series will focus on the HoloLens 2 but due the cross-platform nature of Unity, most of your learnings will also apply for Desktop and Smartphone applications.

Dans ce premier tutoriel, vous allez découvrir les objectifs de la série et de chaque service cloud Azure que vous utiliserez, ainsi que la configuration du projet Unity initial.In this first tutorial, you'll be introduced to the goals of the series and each Azure Cloud service you'll be using, as well as setting up the initial Unity project.

Dans le deuxième tutoriel, Intégration du Stockage Azure, vous commencerez par intégrer Stockage Azure comme solution de persistance pour l’application de démonstration.In the second tutorial, Integrating Azure Storage, you'll start off by integrating Azure Storage as the persistence solution for the demo application. Vous découvrirez également les différences entre le stockage Blob et le stockage Table, vous préparerez les ressources de projet nécessaires et configurerez la scène.You'll also learn the differences between Blob Storage and Table Storage, prepare the needed project resources, setup the scene. Pour finir, vous apprendrez à vérifier les opérations de lecture, de mise à jour et de suppression de données.Finally, you'll learn how to verify the read, update, and delete data operations.

En poursuivant avec le troisième tutoriel, Intégration d’Azure Custom Vision, vous allez utiliser Azure Custom Vision pour entraîner et détecter des images dans l’application HoloLens 2.Continuing with the third tutorial, Integrating Azure Custom Vision, you will use Azure Custom Vision to train and detect images in the HoloLens 2 application. Le chapitre commence par la configuration de votre propre ressource Azure Custom Vision, la préparation des composants de la scène, et la mise en œuvre de l’entraînement et de la détection de vos propres images à partir de l’application.The chapter starts off with setting up your own Azure Custom Vision resource, preparing the scene components and getting into action by training and detecting your own images from inside the application.

Ensuite, vous passez au quatrième tutoriel, Intégration d’Azure Spatial Anchors, avec l’exploration du service Azure Spatial Anchors pour enregistrer et rechercher des emplacements, découvrir les concepts fondamentaux, préparer les ressources nécessaires, configurer la scène et commencer à utiliser la nouvelle fonctionnalité dans l’application.Next you advance in the fourth tutorial, Integrating Azure Spatial Anchors, with exploring Azure Spatial Anchors service to save and find locations, learn the core concepts, prepare necessary resources, setup the scene and start using the new feature in the application.

Avec le cinquième tutoriel, Intégration d’Azure Bot Service avec LUIS, vous terminez en ajoutant à l’application une nouvelle méthode d’interaction utilisateur : le langage naturel !With the fifth tutorial, Integrating Azure Bot Service with LUIS, you finalize by giving the application a new method of user interaction: natural language! Cette fonctionnalité sera réalisée avec Azure Bot Framework et LUIS (Language Understanding).This feature will be realized by using the Azure Bot Framework together with Language Understanding (LUIS). Ce chapitre final vous fait découvrir les bases d’Azure Bot Service et, pour accélérer le processus, vous allez utiliser le composeur Bot Framework comme solution avec zéro code.This final chapter teaches you the basics of Azure Bot Service and to speed up the process you will be using the Bot Framework Composer as a zero code solution. Une fois le bot créé, vous allez l’intégrer dans la scène et l’exécuter avec l’application HoloLens 2 dans sa dernière version.Once the bot is created, you will integrate it into the scene and give it a run with the final stage of the HoloLens 2 application.

Objectifs de l’applicationApplication goals

Dans cette série de tutoriels, vous allez créer une application HoloLens 2 capable de détecter des objets à partir d’images et de trouver leur emplacement spatial.In this tutorial series, you will build a HoloLens 2 application that can detect objects from images and find its spatial location. Pour définir une terminologie du domaine, vous appelez à partir de maintenant ces entités des objets suivis.To set a domain language, you call such entities from now Tracked Object. L’utilisateur peut créer un objet suivi pour associer un ensemble d’images via la vision par ordinateur et/ou un emplacement spatial.The user can create a Tracked Object to either or both associate a set of images via computer vision and/or a spatial location. Toutes les données doivent être conservées dans le cloud.All data must be persisted into the cloud. De plus, certains aspects de l’application seront éventuellement contrôlés par le langage naturel via un bot.Furthermore some aspects of the application will be optionally controlled by natural language assisted through a bot.

FonctionnalitésFeatures

  • Gestion de base des données et des imagesBasic managing of data and images
  • Entraînement et détection d’imagesImage training and detection
  • Stockage d’un emplacement spatial et conseils pour ce stockageStoring a spatial location and guidance to it
  • Assistant bot pour utiliser certaines fonctionnalités via le langage naturelBot assistant to use some features via natural language

Services cloud AzureAzure Cloud services

Pour implémenter les fonctionnalités ci-dessus, vous utiliserez les services cloud Azure suivants :You'll use the following Azure Cloud services to implement the above features:

Stockage AzureAzure Storage

Vous allez utiliser Stockage Azure pour la solution de persistance.You will use Azure Storage for the persistence solution. Il vous permet de stocker des données sur une table et de charger des données binaires volumineuses, comme des images.It allows you to store data on a table and upload large binaries like images.

Azure Custom VisionAzure Custom Vision

Avec Azure Custom Vision (qui fait partie d’Azure Cognitive Services), vous pouvez associer à des objets suivis un ensemble d’images, entraîner un modèle Machine Learning sur l’ensemble d’images et détecter l’objet suivi.With Azure Custom Vision (part of the Azure Cognitive Services) you can associate to Tracked Objects a set of images, train a machine learning model on the set and detect the Tracked Object.

Azure Spatial AnchorsAzure Spatial Anchors

Pour stocker un emplacement d’objet suivi et donner des directions guidées pour le trouver, vous utilisez Azure Spatial Anchors.To store a Tracked Object location and give a guided directions to find it, you use Azure Spatial Anchors.

Azure Bot ServiceAzure Bot Service

L’application est pilotée principalement par une interface utilisateur traditionnelle : vous utilisez donc Azure Bot Service pour ajouter une personnalité et faire office de nouvelle méthode d’interaction.The application is mainly driven by traditional UI, so you use the Azure Bot Service to add some personality and act as a new interaction method.

PrérequisPrerequisites

Conseil

Si vous n’avez pas encore terminé la série de tutoriels de démarrage, nous vous conseillons de le faire avant d’aller plus loin.If you have not completed the Getting started tutorials series yet, it's recommended that you complete those tutorials first.

  • PC Windows 10 configuré avec les outils appropriés installésA Windows 10 PC configured with the correct tools installed
  • SDK Windows 10 (10.0.18362.0 ou version ultérieure)Windows 10 SDK 10.0.18362.0 or later
  • Capacité de programmation C# de baseSome basic C# programming ability
  • Appareil HoloLens 2 configuré pour le développementA HoloLens 2 device configured for development
  • Une webcam connectée si vous voulez tester depuis l’éditeur UnityA connected webcam if you like to test from Unity editor
  • Unity Hub avec Unity 2019 LTS installé et le module de prise en charge de la build d’applications de plateforme Windows universelle ajoutéUnity Hub with Unity 2019 LTS installed and the Universal Windows Platform Build Support module added

Attention

La version d’Unity recommandée pour cette série de tutoriels est Unity 2019 LTS.The recommended Unity version for this tutorial series is Unity 2019 LTS. Elle remplace toutes les versions Unity requises ou recommandées qui sont indiquées dans les prérequis ci-dessus.This supersedes any Unity version requirements or recommendations stated in the prerequisites linked above.

Création et préparation du projet UnityCreating and preparing the Unity project

Dans cette section, vous allez créer un projet Unity et le préparer au développement avec MRTK.In this section, you will create a new Unity project and get it ready for MRTK development.

Suivez d’abord Initialisation de votre projet et de votre première application, en excluant les instructions données dans Générer votre application sur votre appareil, qui inclut les étapes suivantes :First, follow the Initializing your project and first application, excluding the Build your application to your device instructions, which includes the following steps:

  1. Création du projet Unity et affectation d’un nom pertinent, par exemple Azure Cloud TutorialsCreating the Unity project and give it a suitable name, for example, Azure Cloud Tutorials
  2. Changement de plateforme de générationSwitching the build platform
  3. Importation des ressources TextMeshPro EssentialImporting the TextMeshPro Essential Resources
  4. Importation du Mixed Reality ToolkitImporting the Mixed Reality Toolkit
  5. Configuration du projet UnityConfiguring the Unity project
  6. Création et configuration de la scène, et affectation d’un nom pertinent à la scène, par exemple AzureCloudServicesCreating and configuring the scene and give the scene a suitable name, for example, AzureCloudServices

Ensuite, suivez les instructions de Changer l’option d’affichage de la reconnaissance spatiale pour remplacer le profil de configuration MRTK de votre scène par DefaultHoloLens2ConfigurationProfile et remplacer les options d’affichage du maillage de la reconnaissance spatiale par Occlusion.Then follow the Changing the Spatial Awareness Display Option instructions to change the MRTK configuration profile for your scene to the DefaultHoloLens2ConfigurationProfile and change the display options for the spatial awareness mesh to Occlusion.

Installation de packages Unity intégrésInstalling inbuilt Unity packages

Dans le menu Unity, sélectionnez Window > Package Manager pour ouvrir la fenêtre Package Manager, sélectionnez AR Foundation, puis cliquez sur le bouton Install pour installer le package :In the Unity menu, select Window > Package Manager to open the Package Manager window, then select AR Foundation and click the Install button to install the package:

Fenêtre Unity - Package Manager, avec AR Foundation sélectionné

Notes

Vous installez le package intégré AR Foundation, car il est nécessaire pour le SDK Azure Spatial Anchors que vous allez importer dans la section suivante.You are installing the AR Foundation package because the Azure Spatial Anchors SDK requires it, which you will import in the next section.

Importation des ressources du tutorielImporting the tutorial assets

Téléchargez et importez les packages personnalisés Unity suivants dans l’ordre où ils sont listés :Download and import the following Unity custom packages in the order they are listed:

Conseil

Pour un rappel de la façon d’importer un package personnalisé Unity, vous pouvez vous référer aux instructions de Importer le Kit de ressources de réalité mixte.For a reminder on how to import a Unity custom package, you can refer to the Import the Mixed Reality Toolkit instructions.

Une fois que vous avez importé les ressources du tutoriel, votre fenêtre Project doit ressembler à ceci :After you have imported the tutorial assets your Project window should look similar to this:

Fenêtres Hierarchy, Scene et Project dans Unity, après l’importation des ressources du tutoriel

Notes

Si vous voyez des avertissements CS0618 signalant que « WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr) » et « WorldAnchor.GetNativeSpatialAnchorPtr() » sont obsolètes, vous pouvez les ignorer.If you see any CS0618 warnings regarding 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' and 'WorldAnchor.GetNativeSpatialAnchorPtr()' being obsolete, you can ignore these warnings.

Création et préparation de la scèneCreating and preparing the scene

Dans cette section, vous allez préparer la scène en ajoutant une partie des préfabriqués du tutoriel.In this section, you will prepare the scene by adding some of the tutorial prefabs.

Dans la fenêtre Project, accédez au dossier Assets > MRTK.Tutorials.AzureCloudServices > Prefabs > Manager.In the Project window, navigate to Assets > MRTK.Tutorials.AzureCloudServices > Prefabs > Manager folder. Tout en maintenant le bouton Ctrl enfoncé, cliquez sur SceneController, RootMenu et DataManager pour sélectionner les trois préfabriqués :While holding down the CTRL button, click on SceneController, RootMenu and DataManager to select the three prefabs:

Unity avec les préfabriqués SceneController, RootMenu et DataManager sélectionnés

SceneController (prefab) contient deux scripts, SceneController (script) et UnityDispatcher (script) .The SceneController (prefab) contains two scripts, SceneController (script) and UnityDispatcher (script). Le composant de script SceneController contient plusieurs fonctions d’expérience utilisateur et facilite la fonctionnalité de capture de photos, UnityDispatcher étant une classe helper pour autoriser les actions d’exécution sur le thread Unity principal.The SceneController script component contains several UX functions and facilitates the photo capture functionality while UnityDispatcher is a helper class to allow execute actions on the Unity main thread.

RootMenu (prefab) est le préfabriqué d’interface utilisateur principal qui contient toutes les fenêtres d’interface utilisateur qui sont connectées l’une à l’autre via différents petits composants de script et qui contrôlent le flux général de l’interface utilisateur de l’application.The RootMenu (prefab) is the primary UI prefab that holds all UI windows that are connected to each other through various small script components and control the general UX flow of the application.

DataManager (prefab) est responsable de la communication avec le stockage Azure et il sera expliqué plus en détail dans le tutoriel suivant.The DataManager (prefab) is responsible for talking to Azure storage and will be explained further in the next tutorial.

Les trois préfabriqués étant sélectionnés, faites-les maintenant glisser dans la fenêtre Hierarchy pour les ajouter à la scène :Now with the three prefabs still selected, drag them into the Hierarchy window to add them to the scene:

Unity avec les préfabriqués SceneController, RootMenu et DataManager nouvellement ajoutés toujours sélectionnés

Pour vous concentrer sur les objets de la scène, vous pouvez double-cliquer sur l’objet RootMenu, puis effectuer à nouveau un léger zoom arrière :To focus in on the objects in the scene, you can double-click on the RootMenu object, and then zoom slightly out again:

Unity avec l’objet RootMenu sélectionné

Conseil

Si vous trouvez gênantes les grandes icônes de votre scène, par exemple les grandes icônes « T », vous pouvez les masquer en basculant le gizmos sur la position Off.If you find the large icons in your scene, for example, the large framed 'T' icons distracting, you can hide these by toggling the Gizmos to the off position.

Configuration de la scèneConfiguring the scene

Dans cette section, vous allez connecter ensemble SceneManager, DataManager et RootMenu pour avoir une scène de travail prête pour le tutoriel suivant, Intégration de Stockage Azure.In this section, you will connect SceneManager, DataManager and RootMenu together to have a working scene to be ready for the following Integrating Azure storage tutorial.

Connecter les objetsConnect the objects

Dans la fenêtre Hierarchy, sélectionnez l’objet DataManager :In the Hierarchy window, select the DataManager object:

Unity avec l’objet DataManager sélectionné

Dans la fenêtre Inspector, recherchez le composant DataManager (Script)  : vous verrez un emplacement vide sur l’événement On Data Manager Ready () .In the Inspector window, locate the DataManager (Script) component and you will see an empty slot on the On Data Manager Ready () event. À présent, dans la fenêtre Hierarchy, faites glisser l’objet SceneController dans l’événement On Data Manager Ready () .Now from the Hierarchy window drag the SceneController object into the On Data Manager Ready () event.

Unity avec l’écouteur d’événements DataManager ajouté

Vous remarquerez que le menu déroulant de l’événement est devenu actif. Cliquez sur le menu déroulant et accédez à SceneController puis, dans le sous-menu, sélectionnez l’option Init ()  :You will notice that the dropdown menu of the event became active, click on the dropdown menu and navigate to SceneController and in the sub menu select the Init () option:

Unity avec l’action d’événement DataManager ajoutée

Dans la fenêtre Hierarchy, sélectionnez l’objet SceneController ; dans l’inspecteur, vous trouvez le composant SceneController (script).From the Hierarchy window, select the SceneController object, there in the Inspector you will find the SceneController (script) component.

Unity avec SceneController sélectionné

Vous voyez que plusieurs champs ne sont pas remplis : nous allons changer cela.You will see that there are several unpopulated fields, let's change that. Déplacez l’objet DataManager depuis la hiérarchie vers le champ Data Manager et déplacez le GameObject RootMenu depuis la hiérarchie vers le champ Main Menu.Move the DataManager object from the Hierarchy into the Data Manager field and move the RootMenu GameObject from the Hierarchy into the Main Menu field.

Unity avec SceneController configuré

Votre scène est maintenant prête pour les tutoriels suivants.Now your scene is ready for the upcoming tutorials. N’oubliez pas de l’enregistrer dans votre projet.Don't forget to save it into your project.

Préparer le pipeline de génération du projetPrepare project build pipeline

Alors que le projet doit encore être rempli avec du contenu, vous devez effectuer certaines préparations pour que le projet soit prêt à être généré pour HoloLens 2.While the project yet has to be filled with content, you have to perform some preparations, so the project is ready for building for HoloLens 2.

1. Ajouter des fonctionnalités supplémentaires nécessaires1. Add additional required capabilities

Dans le menu Unity, sélectionnez Modifier > Paramètres du projet... pour ouvrir la fenêtre Paramètres du projet :In the Unity menu, select Edit > Project Settings... to open the Project Settings window:

Ouverture des paramètres du projet dans Unity

Dans la fenêtre Project Settings, sélectionnez Player, puis Publishing Settings :In the Project Settings window, select Player and then Publishing Settings:

Paramètres de publication Unity

Dans Publishing Settings, accédez à la section Capabilities et vérifiez bien que les fonctionnalités InternetClient, Microphone et SpatialPerception, que vous avez activées lors de la création du projet au début de ce tutoriel, sont activées.In the Publishing Settings, scroll down to the Capabilities section and double-check that the InternetClient, Microphone and SpatialPerception capabilities, which you enabled when you created the project at the beginning of the tutorial, are enabled. Activez ensuite les fonctionnalités InternetClientServer, PrivateNetworkClientServer et Webcam :Then, enable the InternetClientServer, PrivateNetworkClientServer, and Webcam capabilities:

Fonctionnalités Unity

2. Déployer l’application sur votre HoloLens 22. Deploy the app to your HoloLens 2

Certaines des fonctionnalités que vous allez utiliser dans cette série de tutoriels ne peuvent pas s’exécuter dans l’éditeur Unity : cela signifie que vous devez être familiarisé avec le déploiement de l’application sur votre appareil HoloLens 2.Not all features that you will use in this tutorial series can run inside the Unity editor, this means that you need to be familiar with deploying the application to your HoloLens 2 device.

Conseil

Pour vous rappeler comment générer et déployer votre projet Unity sur HoloLens 2, vous pouvez vous référer aux instructions de Tutoriels de démarrage - Générer votre application sur votre appareil.For a reminder on how to build and deploy your Unity project to HoloLens 2, you can refer to the Getting started tutorials - Build your application to your device instructions.

3. Exécuter l’application sur votre HoloLens 2 et suivre les instructions dans l’application3. Run the app on your HoloLens 2 and follow the in-app instructions

Attention

Comme tous les services Azure utilisent Internet, vérifiez que votre appareil y est connecté.All Azure Services uses the internet, so make sure your device is connected to the internet.

Quand l’application s’exécute sur votre appareil, acceptez l’accès aux fonctionnalités demandées suivantes :When the application is running on your device, accept access to the following requested capabilities:

  • MicrophoneMicrophone
  • Appareil photoCamera

Ces fonctionnalités sont nécessaires pour que des services comme Chat Bot et Custom Vision fonctionnent correctement.These capabilities are required for services like Chat Bot and Custom Vision to function properly.

FélicitationsCongratulations

Dans ce tutoriel, vous avez découvert la série de tutoriels, les fonctionnalités que vous allez implémenter et la façon dont les services cloud Azure permettent la réalisation de votre application HoloLens 2.In this tutorial, you were introduced to the tutorial series, learned about the features you will implement and how Azure Cloud services tie in to making your HoloLens 2 application happen. Vous avez ajouté les composants nécessaires dans le projet et préparé la scène pour cette série de tutoriels.You added the required components into the project and prepared the scene for this tutorial series.

Dans la leçon suivante, vous allez utiliser Stockage Azure comme solution de persistance cloud pour stocker des données et des images.In the next lesson, you will use Azure storage as a cloud based persistence solution for storing data and images.