Windows Mixed Reality: руководство для разработчиков (Часть 1)

Привет, Хабр! Сегодня мы начинаем цикл статей по Windows Mixed Reality. В его рамках мы с нуля разработаем приложение со смешанной реальностью на Unity. Кстати, все это будет проходить в формате lab work (лабораторной работы), то есть вы сможете сами, параллельно с публикацией статей, создать такое приложение. Присоединяйтесь!

yhcqno7fjv8jcsz3esj_caymlks.jpeg

Всё руководство будет состоять из 5 частей. Оно будет пополняться каждую неделю. Ниже вы сможете перейти к нужной вам части.

Часть 1: Экспорт приложения UWP для Windows Mixed Reality из Unity;
Часть 2: Настройка среды (VR) (Coming soon);
Часть 3: Контроллеры (Coming soon);
Часть 4: Пространственный звук (Coming soon);
Часть 5: HoloLens и графика (Coming soon).


Смешанная реальность — это объединение реального мира с виртуальным содержимым, гибридная среда, в которой физические и цифровые объекты существуют вместе и взаимодействуют между собой.

В ходе этого практического занятия вы создадите приложение для иммерсивных гарнитур Windows Mixed Reality (VR) и устройства Microsoft HoloLens (AR). С помощью Unity вы создадите виртуальную комнату, в которой пользователи будут взаимодействовать с динамиком, воспроизводящим пространственный звук. Пользователи будут слышать звук, телепортируясь в различные точки комнаты или перемещая по комнате сам динамик.

Приложение будет создано с помощью набора средств Mixed Reality Toolkit для максимальной совместимости с HoloLens. Ближе к концу занятия вы внесете в приложение несколько изменений, чтобы сделать из приложения виртуальной реальности опыт оптимизированный для устройства HoloLens.

После завершения занятия вы:

  • узнаете, как с помощью Unity создавать приложения виртуальной реальности, и закрепите эти знания;
  • узнаете, как настраивать Unity для сборки приложений UWP для Mixed Reality;
  • научитесь использовать стандартные функции Mixed Reality (MR), такие как настройка камер, обработка ввода (управление с помощью взгляда, контроллеров движения и жестов), а также воспроизведение пространственного звука в приложениях для MR;
  • научитесь создавать приложения для Mixed Reality, которые подходят как для очков виртуальной реальности, так и для HoloLens.


Требования к оборудованию


  • Компьютер с поддержкой MR
  • [Необязательно] Иммерсивная гарнитура Windows Mixed Reality с контроллерами движения
  • [Необязательно] Устройство HoloLens


Примечание. Если у вас нет доступа к иммерсивной гарнитуре или устройству HoloLens, вы можете посмотреть на работу своего приложения в симуляторе Mixed Reality или эмуляторе HoloLens. См. ссылки ниже.

Требования к программному обеспечению


• Visual Studio 2017. Подойдет любой выпуск, включая бесплатный выпуск Community Edition. Во время установки необходимо выбрать следующие компоненты и рабочие нагрузки:
Примечание. В Visual Studio доступ к различным наборам инструментов можно получить с помощью меню Tools → Get Tools and Features (Инструменты → Получить инструменты и компоненты).

• Unity 2017.4.3 (при выборе компонентов во время установки необходимо добавить .Net Scripting Backend);

• ОС Windows 10 Fall Creators Update (или более поздних версий);

  • чтобы включить режим разработчика, перейдите в Settings → Update & security (Настройки системы → Обновление и безопасность) → For developers (Для разработчиков).


• [Необязательно] Эмулятор HoloLens или симулятор Mixed Reality.

Экспорт приложения UWP для Windows Mixed Reality из Unity


1. Создание проекта Unity и импорт ресурсов


Для этого практического занятия нам нужно импортировать несколько необходимых ресурсов. Скачайте эти два пакета Unity и сохраните их на компьютере.

  • Holotoolkit.Unitypackage
    Это снепшот набора средств Microsoft Mixed Reality Toolkit — набора сценариев и компонентов, который позволяет ускорить разработку приложений для Microsoft HoloLens и гарнитур, поддерживающих Windows Mixed Reality.
  • SpatialSoundLab.Unitypackage
    Специальный пакет, подготовленный для этого практического занятия. Содержит ресурсы (модели, материалы и аудиоклипы), которые будут использоваться для работы с пространственным звуком.


После получения файлов ресурсов мы можем создать проект Unity.

1. Откройте редактор Unity и щелкните New (Создать).

2. Выберите имя для проекта (например, SpeakerPlacement).

3. Включите 3D для шаблона, отключите аналитику и щелкните Create project (Создать проект).

4. Чтобы импортировать пакеты Unity, выберите в меню пункт Assets → Import Package → Custom Package (Ресурсы → Импортировать пакет → Пользовательский пакет) и перейдите к сохраненному ранее пакету Holotoolkit.unitypackage.

rs8xsmrze58s4fygieful34ebkk.png

5. Не снимайте выделение с элементов, чтобы импортировать все файлы. Щелкните Import (Импорт).

a0wdmsny1l8s1kcyxxejloxny98.png

Процесс импорта состоит из нескольких этапов и может занять несколько минут.Если импорт пакета пройдет успешно, в окне проекта под папкой Assets (Ресурсы) появится папка с именем Holotoolkit.

4jtc0aefjftjqtchxvcx2f2u8i0.png

6. Импортируйте также файл SpatialSoundLab.UnityPackage, повторив действия, указанные выше.

7. В папке Assets (Ресурсы) теперь должны находиться оба пакета.

rwiwergs9d-jg3kmqsvie-uwhr0.png

2. Применение параметров проекта


Далее нужно настроить наш проект Unity на сборку приложения для Windows Mixed Reality. Эту задачу нам поможет выполнить набор средств Mixed Reality Toolkit.

1. В верхнем меню перейдите в раздел Mixed Reality Toolkit → Configure (Mixed Reality Toolkit → Настройка) и выберите Apply Mixed Reality Project Settings (Применить настройки проекта смешанной реальности).

m2hetbc9rsfbcbqx8i6ox8pishw.png

2. Установите флажок Use Toolkit-specific InputManager Axes (Использовать оси InputManager из набора средств) и нажмите кнопку Apply (Применить).

2ltwxq20pcudmvbia-u-mpvywu8.png

В справочных целях приведем описание каждого из параметров:

  • Target Windows Universal UWP (Сборка для Windows Universal UWP) — указывает для Unity целевую платформу. Другие варианты целевой платформы можно посмотреть, выбрав File → Build Settings (Файл → Параметры сборки).
  • Build for Direct3D (Сборка для Direct3D): задает значение D3D для параметра Build Type (Тип сборки) в разделе Build Settings (Параметры сборки). Для приложений Mixed Reality, предназначенных для закрытых гарнитур, XAML не поддерживается.
  • Установка параметра Enable XR (Включить XR) равнозначна установке параметра Virtual Reality Supported (Поддержка виртуальной реальности) в разделе Player Settings → XR Settings (Параметры проигрывателя → Параметры XR).
  • Установка параметра Enable .NET scripting (Включить сценарии .NET) равнозначна установке значения .NET для параметра Player Settings → Other Settings → Scripting Backend (Параметры проигрывателя → Другие параметры → Платформа сценариев). Вариант IL2CPP тоже подошел бы, но для единообразия на этом практическом занятии мы рекомендуем использовать вариант .NET.
  • Параметр Use Toolkit-specific InputManager axis (Использовать оси InputManager из набора средств) изменяет оси раздела Edit → Project Settings → Input Manager (Правка → Параметры проекта → Input Manager), чтобы включить поддержку всех осей, которые применяются в наборе средств. Другими словами, он включает поддержку геймпада Xbox и контроллеров для Mixed Reality.
  • Если вы создаете приложения только для иммерсивных гарнитур, то можете установить флажок Target Occluded Devices (Сборка для закрытых устройств). Так как мы собираемся переносить наше приложение на устройство HoloLens, то не будем устанавливать этот флажок.


Мы обеспечили поддержку Mixed Reality, но необходимо настроить еще несколько параметров, относящихся к универсальной платформе Windows.

3. В верхнем меню перейдите в раздел Mixed Reality Toolkit → Configure (Mixed Reality Toolkit → Настройка) и выберите Apply UWP Capability Settings (Применить настройки совместимости с UWP).

iuuw_d5qpbktzgwwzmwjfvdiuha.png

4. Установите флажок Spatial Perception (Пространственное восприятие), если собираетесь переносить это приложение на устройство HoloLens. Это позволит нам составить карту среды и найти поверхности для размещения динамиков.

5. Нажмите кнопку Apply (Применить), чтобы сохранить внесенные изменения.

6. Далее откройте диалоговое окно File → Build Settings (Файл → Параметры сборки) с помощью сочетания клавиш Ctrl+Shift+B, выберите Universal Windows Platform (Универсальная платформа Windows), затем щелкните Switch Platform (Сменить платформу). Добавьте открытую сцену в сборку, установив флажок рядом с именем сцены и нажав кнопку Add Open Scenes (Добавить открытые сцены). Подтвердите предложение сохранить сцену и выберите для нее подходящее имя. Мы назвали нашу сцену Main.

3. Применение параметров сцены и добавление объектов Mixed Reality


Теперь нам нужно настроить сцену. Давайте добавим объекты, которые будут обрабатывать движение камеры и сигналы, поступающие от контроллера.

1. В верхнем меню перейдите в раздел Mixed Reality Toolkit → Configure (Mixed Reality Toolkit → Настройка) и выберите Apply Mixed Reality Project Settings (Применить настройки сцены смешанной реальности).

4-v3sj5shimjk2h0voahbxcpz50.png

2. Оставьте выбранными все параметры по умолчанию и нажмите кнопку Apply (Применить).

efprjsjlqg4xvc_n9rjst9wp04i.png

В справочных целях приведем описание всех этих параметров:

  • В сцену добавляется префаб MixedRealityCameraParent. Этот префаб добавляет стандартную (основную) камеру в начало координат (0,0,0), а также добавляет поддержку контроллеров движения и границ.
  • В сцену добавляется префаб InputManager. Он обеспечивает поддержку ввода (управление взглядом, жестами, с помощью сенсорного ввода или геймпада Xbox).
  • В сцену добавляется префаб DefaultCursor.


Все добавленные объекты будут видны в панели Unity Hierarchy (Иерархия).

На этом настройка и подготовка проекта и сцены для создания приложения UWP для MR завершена.

Сохраните сцену и проект.

3. Щелкните File → Save Scenes (Файл → Сохранить сцены). Когда появится запрос на выбор имени для сцены, назовите ее Main (или придумайте любое другое подходящее имя).

4. Щелкните File → Save Project (Файл → Сохранить проект).

Примечание. Подробное описание всех использованных здесь параметров см. в этом руководстве по настройке проектов Mixed Reality.

4. Развертывание приложения на гарнитурах


Сейчас это делать не требуется, но если вы решите собрать проект, воспользуйтесь следующими инструкциями по его запуску.

Развертывание проекта на иммерсивной гарнитуре

1. Перейдите в раздел Mixed Reality Toolkit → Build Window (Mixed Reality Toolkit → Окно сборки).

2. Щелкните Open in Visual Studio (Открыть в Visual Studio). Выполнение этого действия займет несколько минут — за это время будут скомпилированы все ресурсы и создано или обновлено решение для Visual Studio.

Примечание. Если в Unity появится сообщение о том, что отсутствует открытое решение для проекта, и будет задан вопрос о необходимости выполнения сборки, выберите Yes, Build (Да, выполнить сборку).

3. После завершения сборки в Unity запустится среда Visual Studio.

4. На стандартной панели инструментов Visual Studio измените активную платформу решения с ARM на x64. В качестве цели развертывания необходимо выбрать Local Machine (Локальный компьютер).

fodx-foolbeyylacmktrwsboxiu.png

Если вы не выполняете отладку, то рекомендуем также изменить тип сборки с Debug (Отладка) на Release (Выпуск), так как отладочные сборки Unity чаще всего выполняются медленнее.

5. Запустите приложение, нажав кнопку воспроизведения.

Развертывание проекта на устройстве HoloLens

Процедура развертывания проекта на устройстве HoloLens очень похожа на приведенную выше процедуру для иммерсивных гарнитур с тем лишь исключением, что необходимо выбрать другое целевое устройство, а в качестве платформы выбрать x86.

1. Перейдите в раздел Mixed Reality Toolkit → Build Window (Mixed Reality Toolkit → Окно сборки).

2. Щелкните Open in Visual Studio (Открыть в Visual Studio). Выполнение этого действия займет несколько минут — за это время будут скомпилированы все ресурсы и создано или обновлено решение для Visual Studio.

Примечание. Если в Unity появится сообщение о том, что отсутствует открытое решение для проекта, и будет задан вопрос о необходимости выполнения сборки, выберите Yes, Build (Да, выполнить сборку).

3. После завершения сборки в Unity запустится среда Visual Studio.

4. На стандартной панели инструментов Visual Studio измените активную платформу решения с ARM на x86 и выберите подходящую цель для развертывания:

  • если развертывание выполняется через USB, выберите Device (Устройство);
  • если развертывание выполняется через Wi-Fi, необходимо выбрать Remote machine (Удаленный компьютер) и настроить параметры удаленного компьютера.


0iezzgnnyecmgmqia2yhr7_eglu.png

Если вы не выполняете отладку, то рекомендуем также изменить тип сборки с Debug (Отладка) на Release (Выпуск), так как отладочные сборки Unity чаще всего выполняются медленнее.

5. Запустите приложение, нажав кнопку воспроизведения.

Информацию о публикации приложений в Microsoft Store см. на сайте разработчиков для Windows.

Приложение Speaker Placement


В разработанном нами приложении Speaker Placement для размещения динамиков пользователю будут доступны следующие возможности:

  • с помощью контроллеров движения пользователь может телепортироваться в различные точки виртуальной гостиной или передвигаться по ней;
  • также можно будет выбирать динамики, перемещать, поворачивать, включать и выключать их и слушать пространственный звук по всей комнате.


Ниже приведен список подготовленных нами ресурсов моделей и музыки.

  • Prefabs → RoomPrefab.prefab — виртуальная гостиная для иммерсивной гарнитуры.
  • Models → Speaker.3DS — модель наших динамиков, которую мы превратим в работающий префаб.
  • Audio → ChillBlueLagoon.mp3 — музыкальный файл (можно использовать любой файл в формате MP3, OGG, WAV или AIFF).


Остальные возможности будут реализованы с помощью набора средств Mixed Reality Toolkit. Компоненты этого набора будут использоваться для добавления возможностей по взаимодействию.

Оригинал
Авторы: Eric Ahlstrom, cbarkerms, Madison Hight

© Habrahabr.ru