Создание первого приложения для HoloLens в UnrealCreating your first HoloLens Unreal application

С помощью этого руководства вы создадите и запустите свое первое приложение смешанной реальности для HoloLens в Unreal Engine.This guide will walk you through getting your first Mixed Reality app running on the HoloLens in Unreal Engine. Как это заведено, вы создадите простое приложение Hello World, а именно такое, которое отображает куб на экране.In the tradition of "Hello World", you'll create a simple app that displays a cube on the screen. Чтобы сделать его более наглядным, вы также создадите первый жест для поворота куба и выхода из приложения.To make it more useful, you'll also create your first gesture to rotate the cube and quit the application.

ЗадачиObjectives

  • Создание проекта HoloLens.Start a HoloLens Project
  • Активация нужных подключаемых модулей.Enable the correct plugins
  • Создание актива данных ARSessionConfig.Create an ARSessionConfig Data Asset
  • Настройка возможностей ввода с помощью жестов.Set up gesture inputs
  • Создание базового уровня.Build a basic level
  • Реализация жеста сжатия.Implement a pinch gesture

Создание нового проектаCreating a new project

Первое, что вам понадобится для работы — это проект.The first thing you need is a project to work with. Если вы только начинаете разработку на Unreal, скачайте вспомогательные файлы из Epic Launcher.If you're a first-time Unreal developer, you'll need to download supporting files from the Epic Launcher.

  1. Запуск Unreal EngineLaunch Unreal Engine
  2. В разделе New Project Categories (Категории для нового проекта) выберите Games (Игры) и щелкните Next (Далее):In the New Project Categories, select Games and click Next:

Открытое окно "Недавние проекты" с выделенным элементом "Games" (Игры)

  1. Выберите шаблон Blank (Пустой) и щелкните Next (Далее):Select the Blank template and click Next:

Окно обозревателя проектов Unreal с выделенным шаблоном Blank

  1. В разделе Project Settings (Параметры проекта) установите значения C++, Scalable 3D or 2D, Mobile/Tablet (C++, масштабируемый трехмерный или двухмерный, мобильное устройство или планшет) и No Starter Content (Без начального содержимого), затем выберите расположение для сохранения и щелкните Create Project (Создать проект).In the Project Settings, set C++, Scalable 3D or 2D, Mobile/Tablet, and No Starter Content, then choose a save location and click Create Project

Примечание

Вам нужно выбрать C++ вместо проекта схемы, чтобы позднее добавить подключаемый модуль OpenXR.You're using a C++ rather than a Blueprint project in order to be ready to use the OpenXR plugin later. В этом кратком руководстве используется подключаемый модуль OpenXR, по умолчанию входящий в состав Unreal Engine.This QuickStart uses the default OpenXR plugin that comes with Unreal Engine. Но мы рекомендуем скачать и использовать официальный подключаемый модуль OpenXR корпорации Майкрософт.However, downloading and using the official Microsoft OpenXR plugin is recommended. Для этого необходимо использовать проект C++.That requires the project to be a C++ project.

Окно параметров проекта, где выделены поля для выбора проекта, производительности, целевой платформы и начального содержимого

Новый проект должен автоматически открыться в редакторе Unreal, и тогда можно перейти к следующему этапу.Your new project should open up automatically in the Unreal editor, which means you're ready for the next section.

Включение необходимых подключаемых модулейEnabling required plugins

Вам потребуется активировать два подключаемых модуля, прежде чем вы сможете добавлять объекты в сцену.You'll need to enable two plugins before you can start adding objects to the scene.

  1. Выберите Edit > Plugins (Правка > Подключаемые модули) и выберите вариант Augmented Reality (Дополненная реальность) в списке встроенных категорий.Open Edit > Plugins and select Augmented Reality from the built-in options list.
  • Прокрутите список до пункта HoloLens и установите флажок Enabled (Включено).Scroll down to HoloLens and check Enabled

Окно подключаемых модулей, где открыт раздел дополненной реальности и выделен элемент HoloLens

  1. Введите OpenXR в поле поиска, расположенном в правом верхнем углу, затем включите подключаемые модули OpenXR и OpenXRMsftHandInteraction:Type OpenXR in the search box at the top right and enable the OpenXR and OpenXRMsftHandInteraction plugins:

Окно подключаемых модулей, где включен OpenXR

Окно подключаемых модулей, где включено взаимодействие с руками Open XR Msft

  1. Перезапустите редакторRestart your editor

Примечание

В этом руководстве используется OpenXR, но два установленных ранее подключаемых модуля в настоящее время не предоставляют полный набор возможностей для разработки решений для HoloLens.This tutorial uses OpenXR, but the two plugins you've installed above don't currently provide the full feature set for HoloLens development. Подключаемый модуль HandInteraction обеспечит поддержку для жеста "сжатия", который вы примените далее, но для более сложного взаимодействия потребуется скачать подключаемый модуль OpenXR.The HandInteraction plugin will suffice for the "Pinch" gesture you'll use later, but if you want to go beyond the basics you'll need to download the OpenXR plugin.

Завершив настройку подключаемых модулей, переходите к созданию содержимого.With the plugins enabled, you can focus on filling it with content.

Создание уровняCreating a level

Следующая задача — создать игровую обстановку с начальной точкой и кубом, задающим начало отсчета и масштаб.Your next task is to create a player setup with a starting point and a cube for reference and scale.

  1. Выберите File > New Level (Файл > Создать уровень), а затем Empty Level (Пустой уровень).Select File > New Level and choose Empty Level. В окне просмотра должна отображаться пустая сцена по умолчанию.The default scene in the viewport should now be empty
  2. На вкладке Modes (Режимы) выберите Basic (Основные) и перетащите в сцену элемент PlayerStart.From the Modes tab, select Basic and drag PlayerStart into the scene
  • На вкладке Details (Сведения) установите для параметра Location (Расположение) значения X = 0, Y = 0 и Z = 0, чтобы размещать пользователя в центре сцены при запуске приложения.In the Details tab, set Location to X = 0, Y = 0, and Z = 0 to place the user at the center of the scene when the app starts

Сцена редактора Unreal, где добавлены расположение и начальная позиция игрока

  1. С вкладки Basic (Основные) перетащите в сцену элемент Cube (Куб).From the Basic tab, drag a Cube into the scene
  • Задайте для параметра Location (Расположение) этого куба значения X = 50, Y = 0 и Z = 0, чтобы при запуске размещать куб на расстоянии 50 см от игрока.Set the cube's Location to X = 50, Y = 0, and Z = 0 to position the cube 50 cm away from the player at start
  • Измените параметр Scale (Масштаб) для этого куба на значение X = 0,2, Y = 0,2 и Z = 0,2Change the cube's Scale to X = 0.2, Y = 0.2, and Z = 0.2

Куб не будет виден, пока в сцену не добавлен источник света. Это и будет нашей последней задачей перед тем, как протестировать сцену.You can't see the cube unless you add a light to your scene, which is your last task before testing the scene.

  1. На панели Modes (Режимы) перейдите на вкладку Lights (Освещение) и перетащите с нее в сцену элемент Directional Light (Направленное освещение),In the Modes panel, switch to the Lights tab and drag a Directional Light into the scene
  • разместив его над элементом PlayerStart так, чтобы он был виден.Position the light above PlayerStart so you can see it

Сцена редактора Unreal, где добавлены куб и источник направленного освещения

  1. Выберите элементы File > Save Current (Файл > Сохранить текущий), присвойте уровню имя Main (Главный) и щелкните Save (Сохранить).Go to File > Save Current, name your level Main, and select Save

Сцена готова. Чтобы увидеть куб в действии, нажмите кнопку Play (Воспроизвести) на панели инструментов.With the scene set, press Play in the toolbar to see your cube in action! Когда будете готовы действовать дальше, нажмите клавишу ESC, чтобы остановить приложение.When you're finished admiring your work, press Esc to stop the application.

Сцена в режиме воспроизведения, на которой в середине экрана размещен куб

Итак, настройка сцены завершена, и мы можем подготовить ее к простым взаимодействиям в режиме дополненной реальности (AR).Now that the scene is set up, lets get it ready for some basic interactions in AR. Сначала вам нужно создать сеанс AR и добавить схемы, чтобы обеспечить взаимодействие с руками.First, you need to create an AR Session and can add blueprints to enable hand interaction.

Добавление актива для сеансаAdding a session asset

Сеансы дополненной реальности в Unreal не возникают сами по себе.AR sessions in Unreal don't happen by themselves. Для работы с сеансом требуется ресурс данных ARSessionConfig, который мы сейчас и добавим:To use a session, you need an ARSessionConfig data asset to work with, which is your next task:

  1. В обозревателе содержимого выберите Add New > Miscellaneous > Data Asset (Добавить > Прочее > Актив данных) и перейдите в корень папки Content.In the Content Browser, select Add New > Miscellaneous > Data Asset and make sure you're at the root Content folder level
  2. Выберите ARSessionConfig, щелкните Select (Выбрать) и присвойте активу имя ARSessionConfig:Select ARSessionConfig, click Select, and name the asset ARSessionConfig:

Открытое окно выбора класса для актива данных, где выделен актив конфигурации сеанса дополненной реальности

  1. Дважды щелкните ARSessionConfig, чтобы открыть этот актив, а затем сохраните его со значениями по умолчанию. Это действие вернет вас в основное окно:Double-click ARSessionConfig to open it, Save with all default settings, and return to the Main window:

Окно сведений об активе конфигурации для сеанса дополненной реальности

Следующий шаг — настроить сеанс дополненной реальности таким образом, чтобы он запускался при загрузке уровня и останавливался при его завершении.With that done, your next step is to make sure the AR session starts and stops when the level loads and ends. К счастью, для этого в Unreal есть специальная схема Level Blueprint (Схема уровня), которая работает как глобальный граф событий, относящихся к уровню.Luckily, Unreal has a special blueprint called a Level Blueprint that acts as a level-wide global event graph. Если подключить ресурс ARSessionConfig на схеме Level Blueprint (Схема уровня), сеанс дополненной реальности будет гарантированно стартовать в момент начала игры.Connecting the ARSessionConfig asset in the Level Blueprint guarantees the AR session will fire right when the game starts playing.

  1. На панели инструментов редактора выберите Blueprints > Open Level Blueprint (Схемы > Открыть схему уровня):From the editor toolbar, select Blueprints > Open Level Blueprint:

Открытое меню Blueprints (Схемы), где выделен параметр Open Level Blueprint (Открыть схему уровня)

  1. Перетащите узел выполнения (значок с направленной вправо стрелкой) из узла Event BeginPlay и отпустите его.Drag the execution node (left-facing arrow icon) off Event BeginPlay and release
  • Найдите узел Start AR Session (Запуск сеанса дополненной реальности) и нажмите клавишу ВВОД.Search for the Start AR Session node and hit enter
  • В разделе Session Config (Параметры сеанса) щелкните стрелку раскрывающегося списка Select Asset (Выбор актива) и выберите актив ARSessionConfig.Click the Select Asset dropdown under Session Config and choose the ARSessionConfig asset

Граф схемы, на котором начало воспроизведения события подключено к функции запуска сеанса дополненной реальности

  1. Щелкните правой кнопкой мыши в EventGraph и создайте новый узел Event EndPlay (Завершение воспроизведения события).Right-click anywhere in the EventGraph and create a new Event EndPlay node.
  • Перетащите закрепление выполнения и отпустите его, а затем введите Stop AR Session (Завершить сеанс дополненной реальности) для поиска и нажмите клавишу ВВОД.Drag the execution pin and release, then search for a Stop AR Session node and hit enter
  • Нажмите кнопку Compile (Компилировать), а затем Save (Сохранить). Это действие вернет вас в главное окно.Hit Compile, then Save and return to the Main window

Важно!

Если сеанс дополненной реальности не останавливается по окончании уровня, некоторые функции могут не работать после перезапуска приложения при потоковой передаче данных на гарнитуру.If the AR session is still running when the level ends, certain features may stop working if you restart your app while streaming to a headset.

Конечный узел события, присоединенный к функции "stop ar session" (Прекратить выполнение сеанса)

Настройка входных данныхSetting up inputs

  1. Щелкните Edit > Project Settings (Правка > Параметры проекта) и найдите раздел Engine > Input (Движок > Вход).Select Edit > Project Settings and go to the Engine > Input
  2. Щелкните значок + рядом с элементом Action Mappings (Сопоставления действий) и создайте действия RightPinch и LeftPinch:Select the + icon next to Action Mappings and create RightPinch and LeftPinch actions:

Привязка входных параметров, где выделены сопоставления действий сжатия слева и справа

  1. Сопоставьте действия RightPinch и LeftPinch с соответствующими действиями взаимодействия с руками OpenXR Msft:Map the RightPinch and LeftPinch actions the to the respective OpenXR Msft Hand Interaction actions:

Область сопоставления действий, где выделены параметры взаимодействия с руками OpenXR Msft

Настройка жестовSetting up gestures

Теперь, когда мы настроили возможности ввода, мы можем приступить к интересной части. А именно, к добавлению жестов.Now that we have setup the inputs, we can get to the exciting part: Adding gestures! Мы настроим вращение куба при сжатии справа и выход из приложения при сжатии слева.Lets rotate the cube on the right pinch and quit the application on left pinch.

  1. Откройте схему уровня (Level Blueprint) и добавьте действия InputAction RightPinch и InputAction LeftPinch.Open the Level Blueprint and add an InputAction RightPinch and InputAction LeftPinch
  • Подключите действие сжатия справа к действию AddActorLocalRotation, у которого целевым объектом является созданный ранее куб, а параметр Delta Rotation имеет значения X = 0, Y = 0 и Z = 20.Connect the right pinch event to an AddActorLocalRotation with your Cube as the target and Delta Rotation set to X = 0, Y = 0, and Z = 20. Теперь куб будет вращаться на 20 градусов при каждой активации сжатияThe cube will now rotate by 20 degrees every time you pinch
  • Подключите событие сжатия слева к действию Quit Game (Выход из игры).Connect the left pinch event to Quit Game

Открытое окно схемы уровня, где настроены действия ввода для событий сжатия справа и слева

  1. В параметрах Transform (Преобразование) для этого куба задайте параметру Mobility (Мобильность) значение Movable (Перемещаемый), чтобы объект мог динамически перемещаться:In the cube's Transform settings, set Mobility to Movable so it can move dynamically:

Параметры преобразования, где выделено свойство перемещаемости

Теперь вы готовы к развертыванию и тестированию приложения!At this point, you're ready to deploy and test the application!