Table of Contents

Выбор 3D-движка перед разработкой дополненной реальности

Первый шаг в разработке AR — выбрать подходящий 3D-движок. В этой главе объясняется, зачем нужен 3D-движок, какие 3D-движки часто используются в AR-разработке, а также их преимущества и недостатки.

Почему AR нужен 3D-движок

Дополненная реальность — это не простое наложение 2D- или 3D-изображений на изображение камеры, а трехмерная система реального времени. Ее ключевые возможности также могут включать:

  • Моделирование реальной камеры

    Чтобы отрендеренные виртуальные объекты выглядели реалистичнее в реальном мире, необходимо настраивать матрицу проекции камеры в 3D-движке для рендеринга в соответствии с параметрами фактического изображения камеры, такими как внутренние и внешние параметры, модель дисторсии и т. д.

  • Управление пространственной системой координат

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

  • 3D-рендеринг в реальном времени

    Реализация реалистичного перекрытия между виртуальными объектами и средой на основе глубины сцены, оцененной в реальном времени, или реконструированной mesh, а также имитация теней на основе алгоритмов оценки освещения для реалистичного объединения виртуального и реального контента.

  • Управление ресурсами и жизненным циклом

    Управление виртуальными AR-ресурсами и контентом, включая жизненный цикл загрузки, отображения и выгрузки.

Эти возможности составляют основные обязанности типичного 3D-движка. Поэтому выбор подходящего 3D-движка в соответствии с требованиями конкретного проекта является одной из необходимых предпосылок для быстрого создания AR-эффектов.

Распространенные 3D-движки

EasyAR поддерживает несколько 3D-движков, включая распространенные 3D-движки, такие как Unity, Unreal и native-разработка. EasyAR предоставляет примеры и документацию по разработке для Unity и Native.

Unity

Unity позиционируется как универсальный 3D-движок реального времени и сейчас является первым выбором для большинства AR-разработчиков. Unity нативно поддерживает кроссплатформенную разработку для Windows/macOS и iOS/Android/visionOS. Экосистема Unity зрелая, с полной документацией и примерами.

Native

По сравнению с использованием высокоуровневых движков, таких как Unity, прямая AR-разработка на native-графических API, таких как OpenGL, Vulkan и Metal, имеет следующие преимущества: меньше системных зависимостей, крайне упрощенная среда выполнения и глубокая настройка моделей камеры и низкоуровневых алгоритмов. Разработка на native API имеет высокие инженерные и эксплуатационные затраты, не имеет зрелых редакторов и средств отладки, обладает низкой скоростью итераций и сложна для кроссплатформенности. Она не способствует быстрой продуктовой поставке и обычно используется для реализации простых функций.

Web

Web не требует установки и может использоваться прямо в браузере, поэтому стоимость распространения и охвата пользователей крайне низкая. Он естественно кроссплатформенный, подходит для быстрого запуска и массового доступа пользователей, а также имеет относительно низкий порог разработки благодаря зрелой frontend-экосистеме.

В настоящее время Web все еще довольно ограничен в AR-приложениях. Основные ограничения заключаются в том, что производительность ограничена браузерами и security sandbox, поддержка ключевых AR-возможностей, таких как motion tracking, occlusion и точное освещение, недостаточна, доступ к возможностям устройства ограничен, а стабильность и согласованность трудно гарантировать. Поэтому Web AR подходит для легкой демонстрации и маркетинга, но не подходит для сложных AR-приложений с высокой точностью и активным взаимодействием.

Дополнительное чтение