Гайд по виртуальным мирам: AR и VR

С чего начать разработку приложений дополненной и виртуальной реальностей: устройства, платформы для написания кода, языки программирования, онлайн-уроки и курсы.

1. Дополненная реальность (AR)

Дополненная реальность (англ. augmented reality) – это технология, которая расширяет физический мир, накладывая на него слои цифровой информации: звуки, видео, графику.

1.1. Виды AR

Обычно рассматривают четыре типа дополненной реальности:

  • на основе маркера (marker-based),
  • безмаркерная (markerless),
  • на основе проекции (projection-based),
  • на основе суперпозиции (superimposition-based).

В marker-based AR требуется конкретный шаблон, маркер, например, QR-код, поверх которого накладывается виртуальный объект.

 Рис. 1. Маркерная ARРис. 1. Маркерная AR

Как видно из названия, для разработки markerless приложения маркер не нужен. На окружающую среду накладывается сетка и обнаруживаются ключевые точки, к которым привязывается виртуальная модель.

 Рис. 2. Безмаркерная ARРис. 2. Безмаркерная AR

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

Superimposition-based AR частично или полностью заменяет исходное представление объекта дополненным представлением того же самого объекта.

1.2. Софт для AR

Чтобы создать приложение дополненной реальности, понадобится набор средств разработки (software development kit, SDK). Ниже мы рассмотрели наиболее популярные SDK.

ARKit

ARKit – это SDK для создания приложений дополненной реальности и игр для iPhone и iPad. Для него характерны следующие черты:

  • Надежное отслеживание лиц – легко применять эффекты для лица или создавать мимические выражения.
  • Отслеживание уровня освещенности среды для корректной постановки светового окружения виртуальных объектов.
  • Обнаружение 2D-объектов: горизонтальных, вертикальных и наклонных плоскостей. То есть, к примеру, столов и стен.
  • Интеграция с Unity и Unreal Engine.

Поддерживаемые платформы: iOS 11.0 и выше.

Цена: бесплатно.

ARCore

На ARKit компания Google ответила своей разработкой – ARCore.

  • ARCore использует камеру телефона для определения функциональных точек и изменения их положения во времени. Визуальная информация комбинируется с данными, полученными от датчиков, для вычисления положения и ориентация телефона в пространстве.
  • Обнаружение плоских и наклонных поверхностей.
  • Автоматическая регулировка освещенности. Например, если вы находитесь в комнате с тусклым освещением, ARCore автоматически скорректирует изображение.
  • Привязка виртуальных объектов (котенок) к физическим объектам (стол). Если выйти из комнаты и вернуться, котенок останется на прежнем месте.
  • Интеграция с Unity и Unreal Engine.

Поддерживаемые платформы: Android 7.0 и выше, iOS 11 и выше.

Цена: бесплатно.

Vuforia

Официальный сайт. Особенности:

  • Распознавание текста и различных типов визуальных объектов (коробка, цилиндр, плоскость).
  • Поддерживает создание маркерных и безмаркерных AR.
  • 3D-сканирование окружения.
  • Обнаружение нескольких объектов.
  • Режим Simulation Play, позволяющий проходить сквозь или вокруг 3D-модели и наблюдать за этим на компьютере.
  • API: C# для Unity, С++ для iOS, Java для Android.

Поддерживаемые платформы: Android 4.4.4 и выше, iOS 11 и выше.

Цена: от 99$/мес.

EasyAR

Официальный сайт. Характеристики:

  • Сканирование среды и генерация 3D-сетки в реальном времени.
  • Совместимость с Android смартфонами, которые ARCore не поддерживает.
  • Отслеживание 3D объектов.
  • Распознавание и отслеживание плоских изображений в режиме реального времени.
  • Запись экрана в форматах H.264/AAC/MP4.
  • Интеграция с Unity.

Поддерживаемые платформы: Android, iOS.

Цена: бесплатно.

2. Виртуальная реальность (VR)

Виртуальная реальность (англ. virtual reality) – компьютерная симуляция альтернативной реальности.

2.1. Виды VR

Автономная VR работает сама по себе, без необходимости использования дополнительного внешнего оборудования (компьютер, консоль), например, Oculus Quest. Всё, что нужно, – это гарнитура и контроллеры VR.

VR на базе ПК – это любые гарнитуры, требующие постоянного подключения к ПК, такие как: PC Oculus Rift S, Valve Index, HTC Vive, Pimax и Windows Mixed Reality.

Когда говорят о VR для консоли, обычно имеют ввиду PlayStation VR для PlayStation 4.

Рис. 4. PlayStation VR
Рис. 4. PlayStation VR

2.2. Типы отслеживания движения

Наиболее распространенный способ отслеживания движений – система Inside-Out с камерами, встроенными в гарнитуру. Такой подход реализован в Oculus Rift S, HTC Vive Cosmos и всех гарнитурах Windows Mixed Reality.

Существует также схема отслеживания Outside-In с размещением базовых станций в углах комнаты, помогающих гарнитуре и контроллерам отслеживать их точное местоположение (HTC Vive Cosmos Elite, Valve Index).

Рис. 5. Отслеживание Outside-In и Inside-OutРис. 5. Отслеживание Outside-In и Inside-Out

В продвинутых гарнитурах используют одновременную локализацию и построение карты (SLAM), отслеживающую особенности физической среды, окружающей человека.

2.3. Базовые термины и понятия

Поле зрения (FOV). В контексте гарнитур VR поле зрения относится ко всему, что вы можете видеть в виртуальном мире при использовании гарнитуры.

Рис. 6. Поле зрения (FOV)
Рис. 6. Поле зрения (FOV)

Степени свободы (DoF). Чем больше степеней свободы, тем больше физических движений будет отслеживаться гарнитурой. 3DoF (3 степени свободы) отслеживает только перемещение головы: крен, тангаж, рыскание, но не положение в пространстве по координатам (x, y, z). В современных гарнитурах используется 6DoF, отслеживающий как движения головы, так и ее координаты.

Рис. 7. Степени свободы 3DoF и 6DoF
Рис. 7. Степени свободы 3DoF и 6DoF

Frames Per Second (FPS) – количество кадров в секунду.

Screen Resolution – количество пикселей, отображаемых на экране.

Spatial Audio (3D аудио) – пространственное звучание (используется для создания звука, который исходит из определенной точки виртуального мира).

Рис. 8. Spatial Audio (3D аудио)
Рис. 8. Spatial Audio (3D аудио)

2.4. VR через веб-браузер

WebGL – кроссплатформенный API для 3D-графики в браузере. Исполняется как элемент HTML5 и поэтому является полноценной частью объектной модели документа (DOM API) браузера. Может использоваться с языками программирования, поддерживающими DOM API: JavaScript, Rust, Java, Kotlin и др.

Для упрощения работы с WebGL существуют различные фреймворки. Все они распространяются под свободной лицензией (MIT, Apache 2 или BSD), написаны на JavaScript и имеют сходный набор функций: работа с геометрией, материалом, светом, анимацией, камерами, шейдерами, текстом и 3D-аудио. Вот некоторые из них:

2.5. Программное обеспечение

Blender

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

Unity

Unity является наиболее распространенным инструментом для разработки VR. С его помощью можно импортировать модели, созданные в Blender, настроить взаимодействие с этими моделями, а также их физику. Для скриптинга используется C# и UnityScript, напоминающий JavaScript. На этом движке можно создавать приложения для WebGL, Oculus Rift и HTC Vive. Также есть интеграция с ARCore, ARKit.

Цена: бесплатно и не требует отчислений с прибыли.

Ограничение: объем привлеченных инвестиций не более 100 тыс. долл. за последние 12 мес.

Unreal Engine

Основное конкурент Unity – Unreal Engine. В нем можно писать на C++ и Blueprints (визуальное программирование). Поддерживаемые платформы: AR (Android, iOS), VR (Google VR, Oculus, Gear VR, SteamVR, Windows MR)

Цена: бесплатно.

Ограничение: 5% от выручки с продаж, если ежеквартальная выручка превышает 3 тыс. долл.

3. Уроки и курсы по AR и VR

3.1. AR

3.2. VR

***

Итак, для разработки AR-приложений основными инструментами являются ARkit и ARCore. Если вы пишете на JavaScript, обратите внимание на AR фреймворки, работающие через веб-браузер. С языками в VR всё очевидно: C# в Unity, C++ в Unreal Engine. Рынок AR и VR будет расти, так что успейте запрыгнуть в поезд, пока он не ушел!

Специально для сайта ITWORLD.UZ. Новость взята с сайта Библиотека программиста