Дополненная реальность в мобильных приложениях: ARKit, ARCore и AR Foundation
AR в продакшне — это не «положить 3D-модель на плоскость». Это борьба с дрифтом трекинга, несовпадением масштабов, освещением, которое делает виртуальный объект нереалистичным, и задержкой рендеринга, из-за которой пользователь чувствует тошноту после 30 секунд использования.
Отслеживание плоскостей и стабильность трекинга
ARKit (iOS 11+) и ARCore (Android) используют алгоритм VIO (Visual-Inertial Odometry) — совместная обработка данных камеры и IMU. Трекинг теряется в трёх предсказуемых сценариях: недостаточное освещение (меньше ~50 lux), текстурно однородные поверхности (белая стена, стеклянный стол), и быстрые движения камеры.
На практике это значит: если продукт предназначен для примерки мебели в жилых интерьерах, добавляем явное UI-предупреждение при ARCamera.TrackingState.limited(.insufficientFeatures). Приложение, которое молча теряет трекинг и не объясняет почему, получает 2-звёздочные отзывы.
Plane detection настраивается через ARWorldTrackingConfiguration.planeDetection = [.horizontal, .vertical]. Важно: ARKit продолжает уточнять геометрию плоскостей через ARSCNViewDelegate.renderer(_:didUpdate:for:) — если не обрабатывать обновления, объект, размещённый на «обнаруженной» плоскости, начнёт плавать при уточнении якоря.
AR Foundation: кросс-платформа с нюансами
Unity AR Foundation — слой абстракции поверх ARKit и ARCore. Решает проблему одной кодовой базы, но привносит свои ограничения. Некоторые ARKit-функции (например, ARBodyTrackingConfiguration для полноценного body tracking) недоступны через AR Foundation и требуют нативного плагина.
Для React Native и Flutter прямой AR Foundation эквивалент отсутствует. Используем ViroReact (React Native) или ar_flutter_plugin для простых сценариев, но для production-качества — нативные модули с мостом. Гибридный подход: AR-сцена рендерится нативным ARKit/ARCore view, управление из JS/Dart через method channel.
Try-on: примерка товаров через AR
Примерка очков, украшений, косметики — отдельный класс задач. Здесь недостаточно plane detection, нужен face tracking.
ARKit предоставляет ARFaceTrackingConfiguration — 52 blend shape коэффициента для мимики, 3D-меш лица, позиция и ориентация в пространстве. Работает только на устройствах с TrueDepth-камерой (iPhone X и новее).
Для Android эквивалент — ML Kit Face Mesh Detection или Google ARCore Augmented Faces (только Pixel и некоторые флагманы). Для кросс-платформенного try-on в нашей практике используем Banuba Face AR SDK — он покрывает оба устройства, даёт готовые маски и стабильный трекинг даже на mid-range Android.
Качество try-on критически зависит от 3D-моделей товаров. Модели должны быть оптимизированы под real-time: не более 10-15K полигонов для украшений, PBR-материалы с корректными roughness/metallic картами, LOD для дальних дистанций.
Освещение и реализм
ARKit с iOS 13 поддерживает Environmental Texturing — автоматическое создание environment map из камеры для реалистичных отражений на виртуальных объектах. Включается через ARWorldTrackingConfiguration.environmentTexturing = .automatic. Без этого металлические и стеклянные материалы выглядят пластиково.
ARCore предоставляет Light Estimation — intensity и color temperature окружающего света, которые применяются к шейдеру виртуальных объектов. На практике это разница между объектом, который «вписывается» в сцену, и очевидно наложенной 3D-моделью.
| Задача | iOS | Android | Кросс-платформа |
|---|---|---|---|
| Plane detection | ARKit | ARCore | AR Foundation, Unity |
| Face tracking | ARKit (TrueDepth) | ARCore Augmented Faces | Banuba, Snap Camera Kit |
| Image tracking | ARKit (Vision) | ARCore Augmented Images | AR Foundation |
| Object detection | ARKit 3D Object Scanning | ARCore | нет единого SDK |
| Persistence (сохранение якорей) | ARKit World Map | ARCore Cloud Anchors | — |
Сроки и оценка
Простая AR-сцена с размещением одной 3D-модели на плоскости — 1-2 недели. Face try-on с каталогом товаров — от 6 недель: 3D-пайплайн для оптимизации моделей, интеграция трекинга, UI выбора и сохранения результата. Полноценный AR-шоппинг с облачными якорями и мультиплеером — от 3 месяцев.







