Перенос приложений виртуальной реальности в Windows Mixed Reality

Windows 10 включает поддержку иммерсивных и голографических гарнитур. Другие устройства, такие как Oculus Rift или HTC Vive, имеют зависимости от библиотек, которые существуют выше API платформы операционной системы. Чтобы перенести существующие приложения виртуальной реальности Win32 Unity в Windows Mixed Reality, необходимо перенацелить использование пакета SDK виртуальной реальности для конкретного поставщика для кросс-поставщиков API и подключаемых модулей виртуальной реальности Unity.

Для переноса приложений виртуальной реальности в Windows Mixed Reality требуются следующие высокоуровневые процессы:

  1. Убедитесь, что компьютер работает под управлением Windows 10 версии 1709 (Fall Creator's Update) или более поздней версии или Windows 11.
  2. Обновите до последней версии графического или игрового двигателя. Игровые подсистемы должны поддерживать пакет SDK Windows 10 версии 10.0.15063.0 или более поздней.
  3. Обновление ПО промежуточного слоя, подключаемых модулей и компонентов. Если приложение содержит какие-либо компоненты, обновите его до последних версий.
  4. Нацелите последнюю версию Unity и подключаемый модуль OpenXR. Удалите зависимости от повторяющихся пакетов SDK. В зависимости от того, какое устройство предназначено для содержимого, удалите или условно скомпилируйте этот пакет SDK.
  5. Ознакомьтесь с проблемами сборки, связанными с приложением, подсистемой и зависимостями компонентов.

Общие шаги по переносу

Начните со следующих распространенных шагов переноса:

  1. Убедитесь, что у вас есть правильное оборудование для разработки. Руководство для энтузиастов виртуальной реальности перечисляет рекомендуемое оборудование для разработки.

  2. Обновление до последней версии Windows 10.

    1. Установка Windows 10 Creators Update
    2. Присоединитесь к Программа предварительной оценки Windows.
    3. Включение режима разработчика
    4. Перейдите на Windows За кулисами быстрые рейсы через раздел Параметры > Update & Security Section.

    Примечание

    Платформа Windows Mixed Reality по-прежнему находится в активной разработке. Присоединитесь к Программа предварительной оценки Windows, чтобы получить доступ к быстрому Windows За кулисами рейсу. Не получайте предварительные сборки из круга За кулисами Skip Ahead, так как эти сборки не являются наиболее стабильными для разработки смешанной реальности.

  3. Если вы используете Visual Studio, обновите ее до последней сборки. См. статью "Установка средств" в Visual Studio 2022 г. Обязательно установите рабочую нагрузку разработки игр с помощью Unity .

Этапы переноса Unity

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

1. Обновление до последней общедоступной сборки Unity с поддержкой Windows MR

  1. Прежде чем приступить к работе, сохраните копию проекта.
  2. Скачайте последнюю рекомендуемую общедоступную сборку Unity с поддержкой Windows Mixed Reality.
  3. Если проект был создан на основе более старой версии Unity, ознакомьтесь с руководствами по обновлению Unity.
  4. Следуйте инструкциям по использованию автоматического обновления API Unity.
  5. Узнайте, нужно ли вносить другие изменения для запуска проекта, а также работать с ошибками и предупреждениями.

2. Обновление ПО промежуточного слоя до последних версий

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

3. Нацелите приложение на запуск в Win32

Из приложения Unity:

  1. Перейдите кПараметры сборкифайлов>.
  2. Выберите pc, Mac, Linux Standalone.
  3. Задайте целевую платформу для Windows.
  4. Задайте архитектуру x86.
  5. Щелкните Изменить платформу.

Примечание

Если приложение имеет какие-либо зависимости от служб, относящихся к устройству, таких как сопоставление из Steam, отключите их сейчас. Позже можно подключить Windows эквивалентные службы.

4. Добавьте поддержку подключаемого модуля OpenXR Смешанная реальность

  1. Выберите и установите версию Unity и подключаемый модуль XR. Хотя Unity 2020.3 LTS с подключаемым модулем OpenXR Смешанная реальность лучше всего подходит для разработки Смешанная реальность, вы также можете создавать приложения с другими конфигурациями Unity.

  2. Удаление или условное компиляция любой библиотеки, относящегося к другому пакету SDK для виртуальной реальности. Эти ресурсы могут изменять параметры и свойства проекта таким образом, чтобы они были несовместимы с Windows Mixed Reality.

    Например, если проект ссылается на пакет SDK Для SteamVR, обновите проект, чтобы вместо этого использовать общие API виртуальной реальности Unity, которые поддерживают как Windows Mixed Reality, так и SteamVR.

  3. В проекте Unity нацельте пакет SDK Windows 10.

  4. Для каждой сцены настройте камеру.

5. Настройка оборудования Windows Mixed Reality

  1. Ознакомьтесь с инструкциями по настройке иммерсивной гарнитуры.
  2. Узнайте, как использовать симулятор Windows Mixed Reality и перейти по Windows Mixed Reality дома.

6. Используйте сцену для размещения содержимого на полу

Вы можете создавать Смешанная реальность взаимодействия в различных масштабах. Если вы переносите интерфейс масштабирования с сидячим местом, убедитесь, что для Unity задан тип пространства для отслеживания стационарных данных:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Этот код задает систему координат мира Unity для отслеживания стационарного кадра ссылки. В режиме стационарного отслеживания содержимое, которое вы размещаете в редакторе непосредственно перед расположением камеры по умолчанию (вперед — -Z), отображается перед пользователем при запуске приложения. Для более поздней версии источника пользователя можно вызвать XR Unity. Метод InputTracking.Recenter .

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

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

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App can't make assumptions about where the floor plane is.
}

После успешного настройки типа пространства отслеживания RoomScale содержимое, размещенное на плоскости y=0, появляется на полу. Источник в (0, 0, 0) — это конкретное место на полу, где пользователь стоял во время настройки комнаты, с -Z, представляющим направление вперед, с которым они столкнулись во время установки.

В коде скрипта можно вызвать TryGetGeometry метод для UnityEngine.Experimental.XR.Boundary типа, чтобы получить многоугольник границы, указав тип границы TrackedArea. Если пользователь определил границу, вы вернетесь к списку вершин. Затем вы можете предоставить пользователю возможности масштабирования помещений , где они могут перемещаться по создаваемой сцене.

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

Пример результатов:

Example of results

Дополнительные сведения см. в разделе "Системы координат" в Unity.

7. Работа с входной моделью

Каждая игра или приложение, предназначенные для существующего встроенного дисплея (HMD), имеет набор входных данных, типов входных данных, необходимых для взаимодействия, и конкретных API, которые он вызывает для получения этих входных данных. Просто и просто воспользоваться преимуществами входных данных, доступных в Windows Mixed Reality.

Дополнительные сведения о том, как Windows Mixed Reality предоставляет входные данные и как они сопоставляют входные данные с вашим приложением, см. в руководстве по переносу входных данных для Unity.

Важно!

Если вы используете контроллеры HP Reverb G2, см. дополнительные инструкции по сопоставлению входных данных в HP Reverb G2 Controllers в Unity .

8. Тестирование и настройка производительности

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

Если вы переносили приложение с помощью пк уровня "Премиум" со значительными вычислительными и графическими бюджетами, обязательно протестируйте и профилируйте приложение на оборудовании, представляющее целевой рынок. Дополнительные сведения см. в разделе Windows Mixed Reality минимальные рекомендации по совместимости оборудования пк.

Как Unity, так и Visual Studio включают профилировщики производительности, а также рекомендации по публикации Майкрософт и Intel по профилированию производительности и оптимизации.

Подробное обсуждение производительности см. в статье "Общие сведения о производительности для Смешанная реальность". Подробные сведения о Unity см. в рекомендациях по производительности для Unity.

сопоставление входных данных;

Сведения о сопоставлении входных данных и инструкции см. в руководстве по переносу входных данных для Unity.

Важно!

Если вы используете контроллеры HP Reverb G2, см. дополнительные инструкции по сопоставлению входных данных в HP Reverb G2 Controllers в Unity .

См. также раздел