Перенос приложений виртуальной реальности в 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 вразделе "Обновление параметров > & безопасность".

    Примечание

    Платформа Windows Mixed Reality все еще находится в стадии активной разработки. Присоединяйтесь к программе предварительной оценки Windows, чтобы получить доступ к тестовой программе предварительной оценки Windows. Не получайте предварительные сборки из круга Insider 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. Если пользователь определил границу, возвращается список вершин. Затем вы можете предоставить пользователю возможность масштабирования помещения , где он сможет ходить по сцене, в которой вы создаете.

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

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

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

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

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

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

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

Важно!

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

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

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

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

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

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

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

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

Важно!

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

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