Выбор 3D-движка перед разработкой дополненной реальности
Первым шагом в разработке AR является выбор подходящего 3D-движка. В этой главе объясняется, почему нужен 3D-движок, рассматриваются распространенные 3D-движки для AR и их преимущества с недостатками.
Почему AR требует 3D-движок
Дополненная реальность — это не просто наложение 2D- или 3D-изображений поверх видеопотока камеры. Это система реального времени в трехмерном пространстве, чьи ключевые возможности также могут включать:
Моделирование реальной камеры Чтобы виртуальные объекты выглядели реалистично в реальном мире, необходимо корректировать матрицу проекции камеры в 3D-движке в соответствии с параметрами реальной камеры (например, внутренние и внешние параметры, модель искажений).
Управление системой пространственных координат Единое управление положением и ориентацией между устройством, средой и AR-контентом. Ответственность за выбор, настройку и преобразование мировых координат, координат камеры и координат устройства.
Рендеринг в реальном времени в 3D Достижение реалистичного эффекта слияния реального и виртуального за счет:
- Реализации реалистичного взаимного перекрытия виртуальных объектов и среды на основе оценки глубины сцены или реконструированной сетки в реальном времени.
- Моделирования теней на основе алгоритмов оценки освещения.
Управление ресурсами и жизненным циклом Управление виртуальными AR-ресурсами и контентом, включая их загрузку, отображение и выгрузку на протяжении всего жизненного цикла.
Эти возможности составляют основу типичного 3D-движка. Следовательно, выбор подходящего 3D-движка в соответствии с конкретными требованиями проекта является одним из необходимых условий для быстрой реализации AR-эффектов.
Распространенные 3D-движки
EasyAR поддерживает различные 3D-движки, включая популярные, такие как Unity, Unreal или нативную разработку (Native). EasyAR предоставляет примеры и документацию для Unity и Native.
Unity
Unity позиционируется как универсальный движок для 3D в реальном времени и в настоящее время является основным выбором для большинства разработчиков AR. Unity изначально поддерживает кроссплатформенную разработку для Windows/macOS, а также iOS/Android/visionOS. Экосистема Unity зрелая, документация и примеры хорошо проработаны.
Нативная разработка (Native)
По сравнению с использованием высокоуровневых движков, таких как Unity, преимущества разработки AR напрямую на основе нативных графических API (таких как OpenGL, Vulkan, Metal) можно обобщить следующим образом: меньше системных зависимостей, возможность создания крайне оптимизированной среды выполнения, глубокая кастомизация модели камеры и низкоуровневых алгоритмов. Однако разработка на нативных API имеет высокую стоимость создания и поддержки проекта, недостаток зрелых редакторов и инструментов отладки, низкую эффективность итераций, сложности с кроссплатформенностью, что затрудняет быструю поставку продуктового решения. Обычно используется для реализации простых функций.
Web
Web-решения не требуют установки, работают в браузере, что обеспечивает крайне низкую стоимость распространения и доступности. Естественная кроссплатформенность делает их подходящими для быстрого запуска и обслуживания большого числа пользователей. Порог входа в разработку относительно низок, фронтенд-экосистема зрелая.
В настоящее время Web-технологии в AR-приложениях все еще довольно ограничены. Основные проблемы: производительность ограничена браузером и песочницей безопасности, недостаточная поддержка ключевых возможностей AR (таких как отслеживание движения, перекрытие объектов, точное освещение), ограниченный доступ к возможностям устройства, сложности с обеспечением стабильности и согласованности. Следовательно, Web AR подходит для "легких демонстраций и маркетинга", но не для сложных AR-приложений с высокой точностью и интенсивным взаимодействием.