Введение
Passthrough — это новый захватывающий рубеж в разработке виртуальной реальности. Даже с текущими системными ограничениями мы уже видели, как разработчики выпускают довольно потрясающие приложения смешанной реальности. Если вы хотите стать пионером в этой области разработки виртуальной реальности, вы обратились по адресу. Сегодня я собираюсь дать вам краткий обзор создания вашего первого приложения Passthrough.
Предпосылки
- Единство 2019.4.35f1
- Среда выполнения Oculus v34+
- Окулус Квест 2
В этом руководстве мы не расскажем, как установить Unity, поскольку я предполагаю, что если вы занимаетесь разработкой виртуальной реальности, у вас уже установлено это. Тем не менее, если вам нужны подробности установки приведенной выше версии Unity, включая соответствующие зависимости от Android, я рекомендую начать здесь.
Я собираюсь разрабатывать на своем Mac Mini 2020 года с Big Sur версии 11.5.2. Если вы работаете в Windows, вы все равно сможете продолжить.
Настройка единства
Сначала откройте Unity Hub и создайте новый 3D-проект под названием Hello-Cube и дождитесь загрузки редактора Unity. Если вы уже знаете, как настроить проект Unity для разработки виртуальной реальности, вы можете перейти к разделу Начало работы.
Установить целевую платформу
Как только редактор Unity завершит загрузку, нам нужно переключить целевую платформу, на которой мы собираемся разрабатывать, поскольку Quest — это Android.
- Перейдите в Файл ›Настройки сборки.
- В разделе Платформа выберите Android.
- Установите для параметра Сжатие текстур значение ASTC.
- Установите Run Device на гарнитуру Oculus Quest, если она подключена.
- Нажмите Переключить платформу.
После переключения платформы загрузка должна занять минуту или две. После загрузки вы можете закрыть настройки сборки на данный момент.
Включить поддержку виртуальной реальности
Далее нам нужно установить XR Plugin Framework, чтобы включить поддержку VR в Unity.
- Перейдите в раздел Редактировать › Настройки проекта.
- Слева выберите Управление подключаемыми модулями XR и нажмите Установить управление подключаемыми модулями XR.
- Перейдите на вкладку Android и выберите Oculus. При этом будет установлен плагин Oculus XR, обеспечивающий поддержку виртуальной реальности.
Импорт пакета интеграции Oculus
Пакет интеграции Oculus — это универсальный источник основных функций виртуальной реальности, который на данный момент является лучшим вариантом для разработки сквозных приложений.
- Перейдите в раздел Window › Asset Store.
- В Unity Asset Store найдите Интеграция с Oculus.
- В результате выберите Интеграция с Oculus и нажмите Импорт.
- В окне «Импорт пакета Unity» оставьте выбранными все файлы и папки и нажмите Импорт.
- Если будет предложено что-либо обновить, нажмите Да.
После завершения установки вы можете закрыть магазин активов, и вы должны увидеть «Oculus» в строке меню Unity.
Настройте Unity для сквозного доступа
Это последний шаг с точки зрения настройки, чтобы начать разработку с сквозным доступом.
- Перейдите в раздел Редактировать › Настройки проекта › Плеер, затем разверните Другие настройки и выполните следующие действия:
- В разделе Визуализация в списке Цветовое пространство выберите Линейный.
- В разделе Конфигурация в списке Бэкенд сценариев выберите IL2CPP. И в разделе "Целевые архитектуры" выберите ARMv7 и ARM64.
После этого ваш проект Unity должен быть настроен для сквозной разработки.
Начиная
Наконец, у нас есть необходимые настройки, и мы можем приступить к созданию нашего сквозного приложения. Во-первых, давайте создадим новую сцену.
- Файл › Новая сцена и сохраните ее как Hello-Cube.
- В Иерархическом представлении мы можем удалить основную камеру по умолчанию. Мы собираемся использовать префаб OVRCameraRig, который предоставляет игровой объект пространства отслеживания для точной настройки связи между системой отсчета отслеживания головы и вашим миром.
- На вкладке Проект разверните папку Assets › Oculus › VR › Prefabs и перетащите префаб OVRCameraRig на вкладку Hierarchy.
Теперь нам нужно вручную включить Passthrough, так как это дополнительная функция. Это очень просто и может быть сделано с помощью следующего:
- В представлении Иерархия выберите OVRCameraRig.
- В представлении Инспектор в разделе OVRManager сделайте следующее:
- В разделе «Функции задания» > «Общие» выберите Возможности сквозного доступа, чтобы включить компоненты времени сборки для использования сквозного доступа.
- В разделе Insight Passthrough выберите Включить сквозную передачу, чтобы инициализировать сквозную передачу во время запуска приложения.
Далее нам нужно добавить слой Passthrough в OVRManager.
- В представлении Иерархия выберите OVRCameraRig.
- В представлении Инспектор внизу нажмите Добавить компонент, а затем из списка выберите сценарий OVRPassthroughLayer.
- В разделе Компостирование установите для параметра Размещение значение Подложка. Размещение определяет, должен ли сквозной слой отображаться сверху в качестве наложения или под ним в качестве подложки основного проекционного слоя приложения.
Прежде чем мы сможем получить предварительный просмотр нашего сквозного приложения, нам нужно убедиться, что наше приложение будет отображать канал камеры, а не скайбокс. Мы можем сделать это с помощью следующего:
- В представлении Иерархия выберите OVRCameraRig › Пространство отслеживания › CenterEyeAnchor.
- В разделе Камера выберите «Очистить флаги» и измените Skybox на Solid Color. Если вы хотите, вы можете изменить цвет background на черный. Это управляет «оттенком» проходного слоя.
На данный момент у нас есть все необходимое для предварительного просмотра того, как выглядит сквозной AR. Если вы еще этого не сделали, подключите Oculus Quest к компьютеру.
- Если вы сидите во время разработки своего квеста, я бы порекомендовал в OVRCameraRig › OVRManager › Tracking › Tracking Origin Type и установить на уровень глаз. Однако, если вы планируете проводить тестирование стоя, я бы рекомендовал установить отслеживание на Уровень пола.
- Перейдите в раздел Файл › Настройки сборки и нажмите Добавить открытые сцены.
- Теперь нажмите Создать и запустить.
- Когда будет предложено назвать сборку, введите Hello-Cube.
Теперь наденьте гарнитуру, и вы должны увидеть следующее:
Добавление куба
- На вкладке Иерархия щелкните правой кнопкой мыши 3D-объект › Куб.
- Щелкните куб в Transform, измените его масштаб на (0,2, 0,2. 0,2) и его положение на (0,01, -0,07, 0,45)
- Добавить компонент› OVRGrabbable и оставить настройки без изменений
- Добавить компонент › RigidBody, затем отключите параметр «Использовать гравитацию» и установите для параметра «Обнаружение столкновений» значение «Непрерывный».
- Наконец, давайте добавим нашему кубу цвет. В корне каталога Assets щелкните правой кнопкой мыши Создать › Материал и назовите его Синий. На вкладке Инспектор измените Albedo на синий, а затем перетащите его на куб в нашей сцене. Примечание. Вы можете выбрать любой понравившийся цвет. Синий – мой любимый цвет.
Если хотите, вы можете создать и запустить проект, который позволит вам увидеть плавающий перед вами куб. При необходимости вы можете настроить положение и масштаб куба, чтобы получить более удобный угол обзора. Далее мы добавим виртуальные модели сенсорных контроллеров Oculus, чтобы захватить наш куб.
Добавление контроллеров
- На вкладке «Проект» перейдите в раздел Активы › Oculus › VR › Prefabs, затем перетащите OVRControllerPrefab в OVRCameraRig › Tracking Space › RightHandAnchor в панель strong>Иерархия. Повторите то же самое для LeftHandAnchor.
- Для обоих OVRControllerPrefabs добавьте компоненты: Rigid Body и OVRGrabber. Важно: в RigidBody обязательно снимите флажок Использовать гравитацию, иначе модели контроллера выпадут из поля зрения.
- В OVRGrabber выберите Контроллер и измените значение на соответствующее направление руки. Для RightHandAnchor выберите R Touch, а для LeftHandAnchor выберите L Touch
- Внутри OVRControllerPrefab в разделе Помощник контроллера OVR измените поле Controller на соответствующие направления влево и вправо. Важно, чтобы вы сделали это, иначе вы не увидите свои контроллеры.
- Теперь нам нужно передать значения для остальных настроек в OVRGrabber. Чтобы начать, перетащите OVRCameraRig в поле Player. Сделайте это для обоих.
На этом этапе вы можете снова построить и запустить проект, чтобы увидеть, как 3D-модели сенсорных контроллеров отслеживаются в соответствии с вашими реальными позициями контроллера.
Добавление взаимодействия
Теперь нам нужно добавить в наше преобразование захвата:
- В разделе RightHandAnchor перетащите элемент RightControllerAnchor в поле Grip Transform в OVRControllerPrefab > OVRGrabber.
- Теперь повторите описанные выше шаги для LeftHandAnchor, но используйте LeftControllerAnchor для преобразования захвата.
Наконец, мы добавляем объемы захвата, чтобы фактически захватывать куб с помощью контроллеров.
- В разделе RightHandAnchor › OVRControllerPrefab внутри OVRGrabber разверните GrabVolumes и измените размер на 1
- Теперь вернитесь в раздел OVRControllerPrefab и добавьте Пустой объект и назовите его GrabVolume.
- На вкладке Inspector в GrabVolume добавьте компонент Capsule Collider. Измените Радиус на 0,05 и Высоту на 0. После этого обязательно выберите параметр Is Trigger.
- Перетащите GrabVolume в Элемент 0 в разделе GrabVolumes.
- Повторите описанные выше шаги для LeftHandAnchor.
Теперь у нас должно быть все готово для взаимодействия с нашим кубом. Выберите «Сборка и запуск», чтобы увидеть и выполнить следующие действия:
Сквозная студия
Мы думаем, что Passthrough (или Digital See-Through) — это следующее крупное и перспективное дополнение к индустрии виртуальной реальности. Если вы хотите узнать больше об этом и о том, как он развивается, подпишитесь на обновления и уведомления Passthrough Studio, используя ссылку ниже. Мы новая студия, которая будет публиковать контент обо всем, что связано с Passthrough AR.