Разработка приложений виртуальной и дополненной реальности

«Вердж3Д» позволяет создавать приложения для дополненной реальности (ДР) и виртуальной реальности (ВР) на основе браузерной технологии ВебИксЭр (расшифровывается как «расширенная реальность для веба»). Кроме того, вы можете использовать формат ЮСДЗ и технологию «Эпл АР Квик Лук» чтобы показывать ваши модели в режиме дополненной реальности на устройствах «Айфон» и «Айпад».

Содержание

Виртуальная реальность (ВР)

Настройки

Устройства «ЭйчТиСи Вайв» и «Мета Квест» поддерживаются технологией ВебИксЭр и должны работать из коробки. Для устройств подключаемых к компьютеру, типа «ЭйчТиСи Вайв ПРО» вам потребуется браузер «Гугл Хром» (или подобный). Для мобильных устройств виртуальной реальности, типа «Мета Квест», используйте встроенный браузер.

ВебИксЭр требует безопасного контекста. Приложения «Вердж3Д» должны обслуживаться через HTTPS или с УРЛ-адреса localhost.

Создание ВР-приложений

Наличие ВР-режима проверяется с помощью пазла check VR mode, а вход в ВР-режим осуществляется с помощью пазла enter VR mode.

Минимальные ВР-пазлы

Для ВР-устройств без контроллеров взаимодействие с 3Д-объектами осуществляется с помощью прицельного указателя.

Прицельный указатель в ВР

Для ВР-устройств с контроллерами взаимодействие осуществляется с помощью виртуального луча, исходящего из контроллеров.

Лучевой указатель в ВР

Вы можете использовать стандартные пазлы when hovered или when clicked для захвата пользовательских действий, а также специфические для ВР события перехватываемые с помощью пазла on session event.

Перемещение в виртуальной реальности

При активации режима виртуальной реальности создаётся специальная стерео-камера, привязанная к устройству. Это означает, что штатные пазлы и режимы управления камерой, назначенные в 3Д-пакетах не работают. Вместо них необходимо привязать камеру в некоему объекту (выполняющему функцию персонажа) и перемещать этот объект. Смотрите описание пазла camera control object чтобы получить больше информации.

В целом, вам потребуется реализовать свою собственную логику перемещения персонажа, в частности использовать физику чтобы ограничить его перемещения за пределами сцены. Однако для режима позиционирования камеры sitting or standing мы сделали библиотеку VR Controls, которая уже включает в себя всю необходимую функциональность.

Данная функциональность используется в демо-приложении «Виртуальная реальность» (качайте в магазине ассетов).

Дополненная реальность (ДР)

Настройки

Вы можете запускать свои приложения дополненной реальности на базе «Вердж3Д» на мобильных устройствах с операционными системами «Андроид» и «АйОС»/«АйпадОС».

ВебИксЭр требует безопасного контекста. Приложения «Вердж3Д» должны обслуживаться через HTTPS или с УРЛ-адреса localhost.

«Андроид»

Чтобы включить дополненную реальность, необходимо устройство «Андроид», поддерживающее технологию ARCore, и последняя версия браузера «Гугл Хром». Также необходимо установить сервисы Google Play для AR. Установка этого пакета предлагается автоматически при первом входе в режим дополненной реальности, если он уже не был установлен ранее.

Установка сервисов Google Play для AR

«АйОС» и «АйпадОС»

Для «Айфонов» и «Айпадов» предусмотрено два способа запуска приложений дополненной реальности:

  1. Установить браузер WebXR Viewer
  2. Использовать формат ЮСДЗ для просмотра в штатном браузере «Сафари»

Mozilla WebXR Viewer — это браузерное приложение на базе «Файрфокса», которое поддерживает технологию дополненной реальности на устройствах «Эпл» (начиная с «Айфона» модели 6s). Просто установите его из «Апп Стор». Преимущество данного решения заключается в том, что вы можете использовать штатную технологию ВебИксЭр (и те же самые пазлы) аналогично устройствам с ОС «Андроид». Недостаток — необходимость установки ещё одного браузера (вам и вашим пользователям).

С помощью формата ЮСДЗ, вы можете использовать технологию «Эпл АР Квик Лук», которая обеспечивает упрощённый просомотр моделей в режиме дополненной реальности в браузере «Сафари». При таком подходе вам потребуется использовать совершенно другой рендер, являющийся частью операционной системы «АйОС», что лишает вас возможности использовать сложные материалы и определять сценарии поведения приложений с помощью пазлов.

Создание ДР-приложений для «Андроида» и WebXR Viewer

Режим ДР можно настроить для любого приложения «Вердж3Д» с помощью пазла enter AR mode.

Войдя в режим ДР, вы сможете позиционировать 3Д-контент в "реальной" системе координат, которая совмещена с вашим мобильным устройством. Кроме того, вы можете обнаруживать горизонтальные поверхности (столы, полки, пол и т.д.) с помощью ДР-пазла detect horizontal surface AR

Также, чтобы увидеть реальное окружение устройства через 3Д-окно, необходимо включить опцию transparent background в пазле configure application.

Данная функциональность используется в демо-приложении «Дополненная реальность» (качайте в магазине ассетов).

Создание ДР-приложений на основе формата ЮСДЗ

Чтобы войти в режим «АР Квик Лук» вам потребуется создать ЮСДЗ-ассет. Для это вам надо будет экспортировать сцену (или отдельную модель) в процессе выполнения «Вердж3Д»-приложения (то есть на лету), либо создать данный ассет заранее в каком-нибудь пакете моделирования.

Подготовка ЮСДЗ-ассета в процессе выполнения

Этот подход основан на использовании пазла export to USDZ используемого для генерации ЮСДЗ-ассета (смотрите пример ниже).

Подготовка ЮСДЗ-ассета в пакете моделирования

На данный момент экспорт в ЮСДЗ поддерживается в только в «3дс Максе». Для «Блендера» вы можете попробовать неофициальный аддон BlenderUSDZ.

ЮСДЗ отличается от более привычного ЮСД тем, что содержит не только геометрию, но и медиа-файлы, такие как PNG, JPEG, MP3. Таким образом, пакеты моделирования, поддерживающие экспорт в формат ЮСД, не обязательно поддерживают ЮСДЗ.

Для пользователей «МакОС», «АйОС», «АйпадОС» имеется ряд утилит доступных для загрузки с сайта «Эпл». С их помощью вы можете конверировать модели из форматов ОБДЖ/ФБИКС/ГЛТФ/ЮСД в ЮСДЗ.

Загрузка ЮСДЗ

Чтобы просмотреть ЮСДЗ созданный заранее в пакете моделирования (или с использованием конвертера) вам нужно создать ХТМЛ-элемент в виде ссылки, содержащей изображение:

<a id="enter_AR_button" rel="ar" href="model.usdz"> <img src="media/enter_AR_button.png"> </a>

Ссылка должна указывать на ЮСДЗ-ассет, например model.usdz. Изображение должно явно изображать возможность использования режима дополненной реальности, например содержать текст "Дополненая реальность". В примере выше данное изображение находится по пути media/enter_AR_button.png внутри директории приложения.

По нажатию на такую ссылку на устройстве с «АйОС», система определит что имеет дело с ассетом ЮСДЗ и откроет режим «АР Квик Лук», в котором вы можете позиционировать вашу модель, словно она находится в реальном мире:

При использовании пазлов подобная ссылка также может быть создана в процессе работы приложения:

Если же вы ходите создать ЮСДЗ-ассет на лету, вам потребуется следующий набор пазлов:

Отметьте разницу — тут мы используем пазл export to USDZ и назначаем дополнительный атрибут download на ссылку.

Данная функциональность используется в демо-приложении «Дополненная реальность» (качайте в магазине ассетов).

Перемещение в дополненной реальности

При активации режима дополненной реальности создаётся специальная камера, привязанная к устройству. Это означает, что штатные пазлы и режимы управления камерой, назначенные в 3Д-пакетах не работают. Вместо них необходимо привязать камеру в некоему объекту (выполняющему функцию персонажа) и перемещать этот объект. Смотрите описание пазла camera control object чтобы получить больше информации.

Отладка в «Гугл Хроме»

Для ускорения итераций во время разработки вы можете использовать функцию port forwarding браузера «Гугл Хром» для запуска вашего ВР или ДР-приложения в мобильном браузере. Это избавит вас от необходимости каждый раз заново загружать его на удаленный веб-сервер.

Что дальше?

Чтобы узнать, как написать сценарий вашего ВР/ДР-приложения с помощью пазлов, прочитайте следующий раздел. Также ознакомьтесь с руководством по физике если вы собираетесь моделировать реалистичную виртуальную среду со столкновениями объектов и/или персонажем.

Данная функциональность используется в демо-приложении «Снежки» (качайте в магазине ассетов).

Остались вопросы?

Задайте их на нашем форуме!