Как добавить поддержку VR в проект Universal Render Pipeline

Одно из преимуществ разработки игр Unity, построенных на Universal Render Pipeline (URP), заключается в том, что они поддерживаются на самых разных платформах с минимальными изменениями настроек рендеринга. Ваш проект может работать на любой платформе - от мобильных устройств до консолей, ПК и даже VR.
Тем, кто раньше не занимался разработкой для VR, может быть сложно понять, с чего начать. Независимо от того, начинаете ли вы свой проект или у вас уже есть проект URP, который вы опубликовали на других платформах, мы рассмотрим шаги по добавлению поддержки VR, чтобы он мог работать на нескольких платформах VR с минимальными усилиями.
Каждый проект VR Unity нуждается в пакете XR Plug-in Management. Этот пакет позволяет легко настроить ваш проект для VR-платформ, для которых вы хотите создать проект, от Meta Quest и Magic Leap до PlayStation®VR2 (PS VR2).
Еще один полезный пакет - XR Interaction (XRI) Toolkit. Этот пакет сокращает время настройки, предоставляя префабы, которые реализуют варианты движения, распространенные в большинстве VR-игр, такие как телепортация, повороты с замиранием и многое другое. Подробнее о возможностях, которые предоставляет пакет XRI, читайте в этом блоге.
Чтобы добавить эти пакеты в проект, откройте меню Window и выберите пункт Package Manager. В окне "Менеджер пакетов" щелкните на "Пакеты: В раскрывающемся списке "В проекте" раскройте опции, затем выберите опцию "Реестр Unity", чтобы менеджер пакетов вывел список всех доступных пакетов.
Unity поддерживает множество пакетов, поэтому введите "xr" в строке поиска окна менеджера пакетов, чтобы отфильтровать список так, чтобы в нем отображались только пакеты, специфичные для XR. Далее щелкните на пакете XR Plug-in Management, затем выберите кнопку Install, чтобы добавить его в проект. Чтобы добавить пакет XRI Toolkit, выполните те же действия.

Далее добавим образцы активов, предоставленные командой XRI, чтобы помочь вам начать работу. Нажмите на пакет XR Interaction Toolkit в менеджере пакетов, затем на вкладку Samples на панели сведений о пакете. Затем нажмите кнопку Импорт рядом с пунктом Стартовые активы, чтобы добавить активы, которые упростят настройку VR-поведения и входных действий.

Установив эти пакеты, вы уже более чем на полпути к разработке для VR.
Далее необходимо указать, на какие VR-платформы вы хотите нацелиться. Для этого откройте настройки проекта и перейдите на вкладку XR Plug-in Management (которая была включена при установке пакета), чтобы увидеть список доступных поставщиков плагинов, которые вы можете выбрать для своего проекта. Поставщики плагинов - это другое название VR-платформ. Выберите вариант, например Oculus или Open XR, и Unity установит пакет(ы), предназначенный(ые) для этой платформы.

Некоторые платформы XR используют цель сборки Windows, Mac и Linux в настройках сборки, но другие работают с другими целями. Например, сборка для PS VR2 требует переключения цели сборки на PlayStation®5 (PS5), а другие сборки требуют переключения на Android или iOS. Убедитесь, что вы переключились на правильную цель сборки во время разработки, чтобы вовремя заметить все важные ошибки и предупреждения. Не забывайте, что для разработки игр для PS5 необходимо зарегистрироваться в качестве разработчика PlayStation.
Каждый XR-плагин обеспечивает проверку, чтобы убедиться, что ваш проект правильно настроен для сборки в XR. Чтобы найти их, перейдите в окно Project Settings, затем перейдите на вкладку Project Validation во вкладке XR Plug-in Management и посмотрите, нет ли там предупреждений или ошибок, на которые нужно обратить внимание. Большинство проверок включают кнопку "Исправить", чтобы решить проблему за вас.

Выбрав нужных поставщиков плагинов, вы можете приступать к созданию платформы (платформ) VR. Однако вам все равно придется сопоставить управление VR с существующим персонажем игрока. Именно здесь на помощь приходят стартовые активы, предоставляемые XRI Toolkit.
В окне проекта перейдите в папку Samples/XR Interaction Toolkit/2.3.2/Starter Assets/Prefabs, затем перетащите префаб Complete XR Origin Set Up в сцену. В этом префабе предустановлены все компоненты, необходимые для настройки VR-входа для контроллера игрока.
Префаб имеет вложенный префаб XR Origin, который обрабатывает большинство настроек VR-контроллеров. В нем есть два игровых объекта, которые представляют левую и правую руки игрока, а также основная камера, вложенная в игровой объект Camera Offset, который управляет перемещением камеры в зависимости от того, находится ли игрок в сидячем или стоячем положении. Поскольку префаб Complete XR Origin Set Up включает в себя собственную основную камеру, если у вас уже есть объект основной камеры в сцене, то обязательно отключите его, чтобы не было нескольких камер, пытающихся одновременно отобразить основной вид игрока.

Инструментарий XRI также поставляется с картой ввода, которая сопоставляет действия с общими элементами управления VR. Эти элементы управления являются стандартными для большинства VR-платформ, поэтому нет необходимости в дополнительном кодировании, чтобы обеспечить распознавание ваших действий на различных платформах, включая Meta Quest, Magic Leap и PS VR2. Убедитесь, что вы скопировали и вставили все скрипты, которые были важны для отслеживания состояния игры, из вашего оригинального контроллера игрока в новый добавленный префаб Complete XR Origin Set Up. Не стесняйтесь переименовать префаб во что-нибудь более удобное для запоминания, например VR FPS Controller.

Игровой объект XR Origin включает в себя множество компонентов, которые поначалу могут сбить с толку. Считайте, что компонент XR Origin в XR Origin Prefab - это драйвер всех остальных компонентов XRI. Без него локомоция XR не работает. Остальные компоненты - это провайдеры, которые позволяют реализовать специфическую локомоцию XR. Эти провайдеры соответствуют различным типам VR-движения, от телепортации до моментальных поворотов, захвата поверхностей двумя руками и тяги за собой и многого другого.
Чтобы узнать, как настроить параметры локомоции в XR Origin Prefab по своему вкусу, прочитайте документацию. Но если вы только начинаете, то использование значений по умолчанию должно работать нормально.
Конечно, не все VR-платформы созданы одинаковыми, и очень важно помнить об аппаратных характеристиках вашей целевой платформы, особенно когда VR-игры должны поддерживать стабильные 60, 90 или 120 кадров в секунду, чтобы свести к минимуму укачивание. Этого можно добиться, уменьшив максимальное разрешение глаз, настроив параметры сглаживания для основной камеры, уменьшив количество динамического освещения в пользу запекаемого, уменьшив количество альфа-прозрачности, используемой в игровых объектах, и настроив значения LOD для игровых объектов таким образом, чтобы они отрисовывали версию с более высокой геометрией только тогда, когда игрок находится рядом с ними. Чтобы узнать больше, прочитайте наше руководство по оптимизации производительности графики.
Хорошая новость заключается в том, что очень легко переключаться между различными настройками качества в зависимости от уровня качества, который вы задали для каждой платформы. На вкладке "Качество" окна "Настройки проекта" вы можете создавать и настраивать уровни качества, которые устанавливают уникальные настройки рендеринга, сглаживания, LOD и освещения, чтобы помочь вам получить максимальную отдачу от каждой платформы. Узнайте больше о настройке параметров качества.
Теперь, когда ваш проект настроен на выбранную вами платформу VR, пришло время протестировать только что добавленную в проект установку XR. Существует два рекомендуемых метода тестирования VR: использовать XR Device Simulator из набора инструментов XRI Toolkit для проверки настройки в редакторе или собрать плеер и запустить его на устройстве.
В Unity есть удобный инструмент под названием XR Device Simulator, который позволяет симулировать элементы управления XR в окне Game в редакторе, когда вы находитесь в режиме Play. Вы можете сэкономить время, тестируя настройки локомоции без создания проекта. Чтобы добавить XR Device Simulator в проект, откройте окно Package Manager, перейдите к пакету XRI Toolkit, перейдите на вкладку Samples и в разделе Sample Assets нажмите кнопку Import рядом с XR Device Simulator.

После его установки откройте окно Project Settings и перейдите на вкладку XRI Toolkit. На этой вкладке установите флажок "Использовать симулятор устройства XR в сценах", чтобы добавить симулятор устройства XR во время выполнения при переходе в режим воспроизведения. Вы также можете перетащить префаб XR Device Simulator Prefab из окна Project прямо в сцену.

Теперь, когда вы войдете в режим игры в редакторе, вы сможете использовать WASD и мышь для перемещения XR Rig и нажимать Tab для переключения между перемещением всех элементов управления, только левой или только правой руки. Это не совпадение 1:1 с реальным VR-вводом, но это поможет вам сразу же проверить, работают ли ваши настройки локомоции так, как ожидалось.
Помните, что перед сборкой проекта необходимо либо отключить флажок "Use XR Device Simulator in scenes" в окне XRI Toolkit Project Settings, либо отключить/удалить XR Device Simulator из сцены. В противном случае элементы управления VR не будут работать на устройстве должным образом. Это связано с тем, что XR Device Simulator имитирует ввод VR с помощью мыши и клавиатуры или игрового контроллера и игнорирует ввод с реальных VR-контроллеров.

Второй метод тестирования XR Rig - просто собрать и запустить его на целевой платформе. Настройка каждого устройства XR для запуска сборок Unity уникальна, поэтому читайте документацию о том, как подключить их к вашей машине для разработки, чтобы получить самую свежую информацию. После подключения устройства выберите Build and Run в окне Build Settings, чтобы создать сборку для целевой платформы и загрузить ее на устройство.
После того как сборка будет запущена на устройстве, вы сможете самостоятельно протестировать вводимые данные и посмотреть, что работает, а что нет. Единственное ограничение - дождаться окончания сборки и иметь доступное устройство для тестирования.
С помощью этих шагов, а также незначительных настроек рендеринга foveated мне удалось запустить сцену "Японский сад" из нового шаблона URP на PS VR2, который был представлен на GDC 2023.
Надеюсь, это краткое руководство поможет вам начать добавлять поддержку VR в свой проект. Если вас смущает какая-либо часть настройки VR, вы можете просмотреть руководство Unity по настройке проекта для XR для получения дополнительной информации.
Команды XR и URP прилагают все усилия для того, чтобы разработка для нескольких платформ была как можно более простой. Пожалуйста, делитесь любыми отзывами о Universal Render Pipeline на форуме URP, а о XR - на форуме XR. Следите за будущими техническими блогами от разработчиков Unity в рамках продолжающейсясерииTech from theTrenches.
