Разработка приложений виртуальной и дополненной реальности — Софт Эйт Софт
Description: Узнайте, как добавлять функции дополненной и виртуальной реальности в приложения Вердж3Д.

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

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

## Содержание

- Виртуальная реальность (ВР)
  - Настройки
  - Создание ВР-приложений
  - Перемещение в виртуальной реальности
- Дополненная реальность (ДР)
  - Настройки
  - Создание ДР-приложений для «Андроида» и WebXR Viewer
  - Создание ДР-приложений на основе формата USDZ
  - Перемещение в дополненной реальности
- Отладка в «Гугл Хроме»
- Что дальше?

#

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

#

### Настройки

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

WebXR требует безопасного контекста. Приложения «Вердж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Д» на мобильных устройствах с операционными системами «Андроид» и «Ай ОС»/«Айпад ОС».

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

#### «Андроид»

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

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

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

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

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

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

#

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

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

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

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

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

#

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

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

#### Подготовка USDZ-ассета в процессе выполнения

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

#### Подготовка USDZ-ассета в пакете моделирования

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

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

Для пользователей «Мак ОС», «Ай ОС», «Айпад ОС» имеется ряд утилит доступных для загрузки с сайта «Эпл». С их помощью вы можете конверировать модели из форматов OBJ/FBX/glTF/USD в USDZ.

#### Загрузка USDZ

Чтобы просмотреть USDZ созданный заранее в пакете моделирования (или с использованием конвертера) вам нужно создать HTML-элемент в виде ссылки, содержащей изображение:

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

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

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

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

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

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

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

#

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

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

#

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

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

#

## Что дальше?

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

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

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

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