Гайд по виртуальным мирам: AR и VR
С чего начать разработку приложений дополненной и виртуальной реальностей: устройства, платформы для написания кода, языки программирования, онлайн-уроки и курсы.
1. Дополненная реальность (AR)
Дополненная реальность (англ. augmented reality) – это технология, которая расширяет физический мир, накладывая на него слои цифровой информации: звуки, видео, графику.
1.1. Виды AR
Обычно рассматривают четыре типа дополненной реальности:
- на основе маркера (marker-based),
- безмаркерная (markerless),
- на основе проекции (projection-based),
- на основе суперпозиции (superimposition-based).
В marker-based AR требуется конкретный шаблон, маркер, например, QR-код, поверх которого накладывается виртуальный объект.
Как видно из названия, для разработки markerless приложения маркер не нужен. На окружающую среду накладывается сетка и обнаруживаются ключевые точки, к которым привязывается виртуальная модель.
Projection-based AR разработан для того, чтобы сделать заводские предприятия умнее, безопаснее и эффективнее. Проектор устраняет необходимость в бумажных инструкциях, создавая цифровой слой практически на любой рабочей поверхности.
Superimposition-based AR частично или полностью заменяет исходное представление объекта дополненным представлением того же самого объекта.
1.2. Софт для AR
Чтобы создать приложение дополненной реальности, понадобится набор средств разработки (software development kit, SDK). Ниже мы рассмотрели наиболее популярные SDK.
ARKit
ARKit – это SDK для создания приложений дополненной реальности и игр для iPhone и iPad. Для него характерны следующие черты:
- Надежное отслеживание лиц – легко применять эффекты для лица или создавать мимические выражения.
- Отслеживание уровня освещенности среды для корректной постановки светового окружения виртуальных объектов.
- Обнаружение 2D-объектов: горизонтальных, вертикальных и наклонных плоскостей. То есть, к примеру, столов и стен.
- Интеграция с Unity и Unreal Engine.
Reality Composer – редактор для создания 3D-моделей.
RealityKit – рендеринг и анимация.
Поддерживаемые платформы: 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.
Цена: бесплатно.
Lens Studio
Официальный сайт. Возможности:
- Отслеживания лица, шеи, локтей, рук.
- Изменение цвета волос и наложение масок на лица.
- Отложенная публикация «линз».
- Создание 3D-моделей без написания кода в Material Editor.
Поддерживаемые платформы: Snapchat.
Цена: бесплатно
Spark AR
Официальный сайт. Функции:
- Создание масок для Instagram.
- Цветовые фильтры.
- Трекинг лица, частей тела.
Поддерживаемые платформы: Instagram.
Цена: бесплатно
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.
2.2. Типы отслеживания движения
Наиболее распространенный способ отслеживания движений – система Inside-Out с камерами, встроенными в гарнитуру. Такой подход реализован в Oculus Rift S, HTC Vive Cosmos и всех гарнитурах Windows Mixed Reality.
Существует также схема отслеживания Outside-In с размещением базовых станций в углах комнаты, помогающих гарнитуре и контроллерам отслеживать их точное местоположение (HTC Vive Cosmos Elite, Valve Index).
В продвинутых гарнитурах используют одновременную локализацию и построение карты (SLAM), отслеживающую особенности физической среды, окружающей человека.
2.3. Базовые термины и понятия
Поле зрения (FOV). В контексте гарнитур VR поле зрения относится ко всему, что вы можете видеть в виртуальном мире при использовании гарнитуры.
Степени свободы (DoF). Чем больше степеней свободы, тем больше физических движений будет отслеживаться гарнитурой. 3DoF (3 степени свободы) отслеживает только перемещение головы: крен, тангаж, рыскание, но не положение в пространстве по координатам (x, y, z). В современных гарнитурах используется 6DoF, отслеживающий как движения головы, так и ее координаты.
Frames Per Second (FPS) – количество кадров в секунду.
Screen Resolution – количество пикселей, отображаемых на экране.
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-аудио. Вот некоторые из них:
- AR.js – GitHub, MIT.
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
- Вводный курс в дополненную реальность и ARCore
- AR Madness — ваш open source ARKit игровой туториал
- Как использовать Vuforia в Unity для создания AR-приложений
3.2. VR
- Разработка VR вместе с Unity
- C# программирование для разработки игр на Unity
- Blender: основы
- Создание вашей первой VR-игры
- 3D модели для виртуальной реальности
Итак, для разработки AR-приложений основными инструментами являются ARkit и ARCore. Если вы пишете на JavaScript, обратите внимание на AR фреймворки, работающие через веб-браузер. С языками в VR всё очевидно: C# в Unity, C++ в Unreal Engine. Рынок AR и VR будет расти, так что успейте запрыгнуть в поезд, пока он не ушел!