1. Облачные службы Azure для HoloLens 21. Azure Cloud Services for HoloLens 2

Представляем вашему вниманию серию учебников, посвященных переносу облачных служб Azure в приложение HoloLens 2.Welcome to this series of tutorials focused on bringing Azure Cloud services into a HoloLens 2 application. Из этой серии учебников в пяти частях вы узнаете, как интегрировать несколько облачных служб Azure в проект Unity для 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. В каждой из последующих глав будут добавляться новые облачные службы Azure для расширения возможностей приложений и взаимодействий с пользователем. Кроме того, вы узнаете об основных принципах роботы облачной службы 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.

Примечание

В этой серии учебников основное внимание уделяется HoloLens 2, но из-за межплатформенного характера Unity большая часть материалов будет также применяться для классических приложений и смартфонов.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.

В этом первом учебнике описано назначение этой серии и каждой облачной службы Azure, которую вы будете использовать, а также настройка первоначального проекта Unity.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.

При работе со вторым учебником, Интеграция службы хранилища Azure, вы выполните интеграцию службы хранилища Azure в качестве решения для сохранения данных для демонстрационного приложения.In the second tutorial, Integrating Azure Storage, you'll start off by integrating Azure Storage as the persistence solution for the demo application. Вы также узнаете о различиях между Хранилищем BLOB-объектов и Хранилищем таблиц, выполните подготовку нужных ресурсов проекта и настроите сцену.You'll also learn the differences between Blob Storage and Table Storage, prepare the needed project resources, setup the scene. Наконец, вы научитесь проверять операции считывания, обновления и удаления данных.Finally, you'll learn how to verify the read, update, and delete data operations.

Продолжая работу с третьим учебником Интеграция Пользовательского визуального распознавания Azure, вы будете использовать Пользовательское визуальное распознавание Azure для обучения и обнаружения изображений в приложении 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. В начале главы приведены сведения о настройке ресурса "Пользовательское визуальное распознавание Azure", подготовке компонентов сцены и действия для обучения и обнаружения изображений в приложении.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.

Далее в четвертом учебнике Интеграция пространственных привязок Azure вы изучите службы пространственных привязок Azure для сохранения и поиска расположений, а также основные концепции, подготовите необходимые ресурсы, настроите сцены и приступите к использованию новой функции в приложении.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.

С помощью пятого руководства Интеграция службы Azure Bot с LUIS вы завершите обучение, предоставляя приложению новый метод взаимодействия с пользователем с использованием естественного языка.With the fifth tutorial, Integrating Azure Bot Service with LUIS, you finalize by giving the application a new method of user interaction: natural language! Эта функция будет реализована с помощью платформы Azure Bot Framework, а также службы "Распознавания речи" (LUIS).This feature will be realized by using the Azure Bot Framework together with Language Understanding (LUIS). В этой заключительной главе рассказывается о принципах работы службы Azure Bot и ускорении процесса, который вы будете использовать в качестве решения с нулевым кодом с помощью Bot Framework Composer.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. После создания бота вы интегрируете его в сцену и запустите его на завершающем этапе приложения HoloLens 2.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.

Цели приложенияApplication goals

В этой серии учебников вы создадите приложение HoloLens 2, которое может обнаруживать объекты на изображениях и находить их пространственное положение.In this tutorial series, you will build a HoloLens 2 application that can detect objects from images and find its spatial location. Чтобы установить язык домена, необходимо вызвать такие сущности из отслеживаемого объекта.To set a domain language, you call such entities from now Tracked Object. Пользователь может создать отслеживаемый объект, чтобы связать набор изображений с помощью компьютерного зрения или пространственного положения.The user can create a Tracked Object to either or both associate a set of images via computer vision and/or a spatial location. Все данные должны быть сохранены в облаке.All data must be persisted into the cloud. Кроме того, некоторые аспекты приложения будут дополнительно контролироваться естественным языком с помощью бота.Furthermore some aspects of the application will be optionally controlled by natural language assisted through a bot.

ВозможностиFeatures

  • Базовое управление данными и изображениями.Basic managing of data and images
  • Обучение и обнаружение изображений.Image training and detection
  • Хранение пространственного положения и инструкций.Storing a spatial location and guidance to it
  • Бот-помощник для использования некоторых возможностей с помощью естественного языка.Bot assistant to use some features via natural language

Облачные службы AzureAzure Cloud services

Вы будете использовать следующие облачные службы Azure для реализации приведенных выше функций:You'll use the following Azure Cloud services to implement the above features:

Служба хранилища AzureAzure Storage

Для решения сохраняемости будет использоваться служба хранилища Azure.You will use Azure Storage for the persistence solution. Она позволяет хранить данные в таблице и отправлять большие двоичные файлы, например изображения.It allows you to store data on a table and upload large binaries like images.

Пользовательское визуальное распознавание AzureAzure Custom Vision

С помощью Пользовательского визуального распознавания Azure (в составе Azure Cognitive Services) можно связать с отслеживаемыми объектами набор изображений, обучить модель машинного обучения в наборе и определить отслеживаемый объект.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.

Пространственные привязки AzureAzure Spatial Anchors

Чтобы сохранить расположение отслеживаемого объекта и предоставить инструкции по его поиску, используйте Пространственные привязки Azure.To store a Tracked Object location and give a guided directions to find it, you use Azure Spatial Anchors.

Служба Azure BotAzure Bot Service

Приложение в основном управляется через традиционный пользовательский интерфейс, поэтому вы используете службу Azure Bot, чтобы добавить некоторую индивидуальность и использовать новый метод взаимодействия.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.

Предварительные условияPrerequisites

Совет

Если вы еще не прошли руководства из серии, посвященной началу работы, мы рекомендуем начать знакомство именно с этой серии.If you have not completed the Getting started tutorials series yet, it's recommended that you complete those tutorials first.

  • Компьютер с Windows 10, настроенный с помощью требуемых установленных инструментов.A Windows 10 PC configured with the correct tools installed
  • Пакет SDK для Windows 10 версии 10.0.18362.0 и выше.Windows 10 SDK 10.0.18362.0 or later
  • Базовые навыки программирования на C#.Some basic C# programming ability
  • Устройство HoloLens 2, настроенное для разработки.A HoloLens 2 device configured for development
  • Подключенная веб-камера, если вы хотите выполнить тестирование из редактора Unity.A connected webcam if you like to test from Unity editor
  • Unity Hub с Unity 2019 LTS и модулем поддержки сборки универсальной платформы WindowsUnity Hub with Unity 2019 LTS installed and the Universal Windows Platform Build Support module added

Внимание!

Рекомендуемая версия Unity для этой серии руководств — Unity 2019 LTS.The recommended Unity version for this tutorial series is Unity 2019 LTS. Это заменяет все требования к версии Unity и рекомендации, указанные выше.This supersedes any Unity version requirements or recommendations stated in the prerequisites linked above.

Создание и подготовка проекта UnityCreating and preparing the Unity project

В рамках этого раздела вы создадите новый проект Unity и подготовите его к разработке MRTK.In this section, you will create a new Unity project and get it ready for MRTK development.

Для этого сначала выполните инструкции из руководства Инициализация проекта и первое приложение, за исключением раздела Разработка приложения для устройства, то есть следующие действия:First, follow the Initializing your project and first application, excluding the Build your application to your device instructions, which includes the following steps:

  1. Создание проекта Unity и присвоение ему подходящего имени, например Azure Cloud Tutorials.Creating the Unity project and give it a suitable name, for example, Azure Cloud Tutorials
  2. Переключение платформы сборки.Switching the build platform
  3. Импорт требуемых ресурсов TextMeshPro.Importing the TextMeshPro Essential Resources
  4. Импорт набора средств для смешанной реальности (MRTK).Importing the Mixed Reality Toolkit
  5. Настройка проекта Unity.Configuring the Unity project
  6. Создание и настройка сцены и назначение ей понятного имени, например AzureCloudServices.Creating and configuring the scene and give the scene a suitable name, for example, AzureCloudServices

Затем следуйте инструкциям по изменению параметра отображения для отслеживания пространственного положения, чтобы указать профиль конфигурации MRTK DefaultHoloLens2ConfigurationProfile для сцены и значение 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.

Установка встроенных пакетов UnityInstalling inbuilt Unity packages

В меню Unity выберите Window > Package Manager (Окно > Диспетчер пакетов), чтобы открыть окно диспетчера пакетов, а затем щелкните AR Foundation и нажмите кнопку Install (Установить) для установки пакета.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:

Окно диспетчера пакетов Unity с выбранным пакетом AR Foundation

Примечание

Пакет AR Foundation необходимо установить, так как он требуется для пакета SDK Пространственных привязок Azure, который вы будете импортировать при работе со следующим разделом.You are installing the AR Foundation package because the Azure Spatial Anchors SDK requires it, which you will import in the next section.

Импорт активов для руководстваImporting the tutorial assets

Скачайте и импортируйте следующие пользовательские пакеты Unity в указанном здесь порядке:Download and import the following Unity custom packages in the order they are listed:

Совет

Чтобы вспомнить, как правильно импортировать пользовательский пакет Unity, воспользуйтесь инструкциями из статьи об импорте Набора средств Смешанной реальности (MRTK).For a reminder on how to import a Unity custom package, you can refer to the Import the Mixed Reality Toolkit instructions.

Когда вы завершите импорт активов для руководства, окно проекта должно выглядеть примерно так:After you have imported the tutorial assets your Project window should look similar to this:

Unity с окнами Hierarchy (Иерархия), Scene (Сцена) и Project (Проект) после импорта ресурсов для руководства

Примечание

Если вы видите предупреждение CS0618 об устаревании WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr) и WorldAnchor.GetNativeSpatialAnchorPtr(), такое предупреждение можно игнорировать.If you see any CS0618 warnings regarding 'WorldAnchor.SetNativeSpatialAnchorPtr(IntPtr)' and 'WorldAnchor.GetNativeSpatialAnchorPtr()' being obsolete, you can ignore these warnings.

Создание и подготовка сценыCreating and preparing the scene

В рамках этого раздела вы подготовите сцену, добавив в нее несколько заготовок для руководства.In this section, you will prepare the scene by adding some of the tutorial prefabs.

В окне проекта перейдите к папке Assets > MRTK.Tutorials.AzureCloudServices > Prefabs > Manager.In the Project window, navigate to Assets > MRTK.Tutorials.AzureCloudServices > Prefabs > Manager folder. Удерживая нажатой клавишу CTRL, щелкните заготовки SceneController, RootMenu и DataManager, чтобы выбрать их:While holding down the CTRL button, click on SceneController, RootMenu and DataManager to select the three prefabs:

Unity с выбранными заготовками SceneController, RootMenu и DataManager

SceneController (prefab) (SceneController — заготовка) содержит два скрипта: SceneController (script) (SceneController — скрипт) и UnityDispatcher (script) (UnityDispatcher — скрипт).The SceneController (prefab) contains two scripts, SceneController (script) and UnityDispatcher (script). Компонент скрипта SceneController содержит несколько функций взаимодействия с пользователем и упрощает использование функции фотозахвата. UnityDispatcher является вспомогательным классом, позволяющим выполнять действия в основном потоке Unity.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) (RootMenu — заготовка) является основной заготовкой пользовательского интерфейса, которая содержит все окна пользовательского интерфейса, подключенные друг к другу через различные небольшие компоненты скрипта и управляющие общим потоком интерфейса приложения.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) (DataManager — заготовка) отвечает за взаимодействие с хранилищем Azure. Она будет описана в следующем учебнике.The DataManager (prefab) is responsible for talking to Azure storage and will be explained further in the next tutorial.

Теперь, когда все три заготовки будут выбраны, перетащите их вместе в окно "Иерархия", чтобы добавить в сцену:Now with the three prefabs still selected, drag them into the Hierarchy window to add them to the scene:

Unity с добавленными заготовками SceneController, RootMenu и DataManager

Чтобы перенести фокус на объекты сцены, дважды щелкните объект RootMenu и немного уменьшите масштаб представления:To focus in on the objects in the scene, you can double-click on the RootMenu object, and then zoom slightly out again:

Unity с выбранным объектом RootMenu

Совет

Если вы считаете, что большие значки в сцене (как большие "Т" в рамках в нашем примере) отвлекают внимание, их можно спрятать. Для этого переведите манипуляторы в отключенное положение.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.

Настройка сценыConfiguring the scene

В этом разделе вы будете вместе соединять объекты SceneManager, DataManager и RootMenu, чтобы подготовить рабочую сцену к работе со следующим учебником по интеграции службы хранилища 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.

Соединение объектовConnect the objects

В окне Hierarchy (Иерархия) выберите объект DataManager:In the Hierarchy window, select the DataManager object:

Unity с выбранным объектом DataManager

В окне Inspector (Инспектор) найдите компонент DataManager (Script) (DataManager — скрипт), вы увидите пустой слот в событии 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. Теперь в окне Hierarchy (Иерархия) перетащите объект SceneController в событие On Data Manager Ready () .Now from the Hierarchy window drag the SceneController object into the On Data Manager Ready () event.

Unity с добавленным прослушивателем событий DataManager

Вы увидите, что раскрывающееся меню события стало активным, щелкните его и перейдите к SceneController. В подменю выберите параметр 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 с добавленным действием события DataManager

В окне Hierarchy (Иерархия) выберите объект SceneController. В окне Inspector (Инспектор) вы найдете компонент SceneController (script) (SceneController — скрипт).From the Hierarchy window, select the SceneController object, there in the Inspector you will find the SceneController (script) component.

Unity с выделенным объектом SceneController

Отобразятся несколько незаполненных полей. Заполните их.You will see that there are several unpopulated fields, let's change that. Переместите объект DataManager из окна Hierarchy (Иерархия) в поле Data Manager (Диспетчер данных) и переместите GameObject RootMenu из окна Hierarchy (Иерархия) в поле 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 с настроенным объектом SceneController

Теперь сцена подготовлена для работы со следующими учебниками.Now your scene is ready for the upcoming tutorials. Не забудьте сохранить ее в проекте.Don't forget to save it into your project.

Подготовка конвейера сборки проектаPrepare project build pipeline

Хотя в проект еще нужно добавлять содержимое, выполните несколько действий, чтобы проект был готов к созданию 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. Добавление дополнительных требуемых возможностей1. Add additional required capabilities

В меню Unity щелкните Edit > Project Settings... (Правка > Параметры проекта...), чтобы открыть окно параметров проекта:In the Unity menu, select Edit > Project Settings... to open the Project Settings window:

Unity с открытыми параметрами проекта

В окне параметров проекта выберите элемент Player (Проигрыватель), а затем — Publishing Settings (Параметры публикации):In the Project Settings window, select Player and then Publishing Settings:

Unity с открытыми параметрами публикации

В окне Publishing Settings (Параметры публикации) прокрутите содержимое вниз до раздела Capabilities (Возможности) и убедитесь, что здесь включены возможности InternetClient (Интернет-клиент), Microphone (Микрофон) и SpatialPerception (Пространственное восприятие), которые вы включили при создании проекта в начале работы с этим учебником.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. Теперь включите возможности InternetClientServer (Сервер интернет-клиента), PrivateNetworkClientServer (Сервер клиента частной сети) и Webcam (Веб-камера):Then, enable the InternetClientServer, PrivateNetworkClientServer, and Webcam capabilities:

Возможности Unity

2. Разверните приложение на устройстве HoloLens 22. Deploy the app to your HoloLens 2

Не все функции, которые будут использоваться в этой серии учебников, можно выполнять внутри редактора Unity. Это означает, что вам необходимо получить сведения о развертывании приложения на устройстве 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.

Совет

Чтобы вспомнить, как правильно скомпилировать проект Unity и развернуть его на HoloLens 2, воспользуйтесь инструкциями из раздела о разработке приложения для устройства в учебнике по началу работы.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. Запустите приложение на HoloLens 2 и следуйте предоставленным инструкциям3. Run the app on your HoloLens 2 and follow the in-app instructions

Внимание!

Все службы Azure используют Интернет, поэтому обеспечьте подключение устройства к Интернету.All Azure Services uses the internet, so make sure your device is connected to the internet.

Когда приложение запускается на устройстве, предоставьте доступ к следующим запрошенным возможностям:When the application is running on your device, accept access to the following requested capabilities:

  • микрофонMicrophone
  • КамераCamera

Эти функции необходимы для правильной работы таких служб, как чат-бот и Пользовательское визуальное распознавание.These capabilities are required for services like Chat Bot and Custom Vision to function properly.

Поздравляем!Congratulations

Здесь вы ознакомились с серией учебников, узнали о функциях, которые будете реализовывать, и о том, как согласовывать облачные службы Azure, чтобы реализовать приложение 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. Вы добавили необходимые компоненты в проект и подготовили сцену для работы с этой серией учебников.You added the required components into the project and prepared the scene for this tutorial series.

На следующем уроке вы будете использовать хранилище Azure в качестве облачного решения для сохранения данных и изображений.In the next lesson, you will use Azure storage as a cloud based persistence solution for storing data and images.