Реализация распознавания объектов (Object Tracking) в AR-приложении
Object tracking — AR без маркеров. Система распознаёт реальный физический объект по его 3D-форме и удерживает AR-контент привязанным к нему при движении камеры и самого объекта. Это сложнее image tracking, требовательнее к hardware и значительно ограниченнее в плане каталога — но именно это нужно, когда наклеить маркер невозможно или нежелательно.
ARKit Object Detection: сканирование и распознавание
Pipeline в ARKit состоит из двух фаз.
Фаза 1: Сканирование. ARObjectScanningConfiguration — специальная конфигурация только для Xcode-утилиты сканирования (Reality Composer или демо-приложение Apple). Пользователь обходит объект со всех сторон, ARKit строит point cloud. Результат — .arobject файл (~1-50 МБ в зависимости от детализации).
Фаза 2: Detection. ARWorldTrackingConfiguration с detectionObjects = [arObject]. При обнаружении — renderer(_:didAdd:for:) с ARObjectAnchor. Anchor содержит transform объекта в мировом пространстве.
Критическое ограничение: ARKit Object Detection работает только на устройствах A12+ и требует достаточной текстуры объекта. Гладкие монохромные объекты (белый пластиковый корпус, стеклянная бутылка) — не сканируются надёжно. Features points нужны текстурные детали, логотипы, надписи.
Что хорошо трекается, что нет
| Хорошие кандидаты | Плохие кандидаты |
|---|---|
| Игрушки с рисунками/деталями | Монохромные пластиковые корпуса |
| Бытовая техника с панелями | Стеклянные/прозрачные объекты |
| Промышленное оборудование с маркировкой | Металлические полированные поверхности |
| Коробки с упаковкой | Мягкие деформируемые объекты |
| Автомобильные детали | Объекты без постоянной формы |
Стеклянные и зеркальные поверхности — принципиально не поддаются visual feature tracking. Для них — только маркеры или LiDAR mesh matching.
Vuforia Model Targets: альтернативный подход
ARKit Object Detection требует физического сканирования объекта. Vuforia Model Targets — распознавание по CAD-модели (STEP, OBJ, FBX) без физического сканирования. Это принципиальная разница для промышленного применения, где CAD-данные уже есть.
Vuforia Model Target Generator (desktop приложение) компилирует базу данных из CAD-модели. SDK на iOS/Android детектирует объект по силуэту и feature map, сгенерированному из CAD. Точность позиционирования — до 5-10 мм при хорошем освещении.
Лицензия Vuforia Engine от $840/год. Model Targets доступны в Engine + тарифе.
Object Tracking (движущийся объект)
ARKit Object Detection фиксирует статичный объект. Tracking движущегося объекта — принципиально другая задача.
ARKit 2021+ поддерживает ARTrackedRaycast для динамической привязки, но для независимо движущегося объекта (конвейерная деталь, движущийся робот) нужен кастомный подход:
- MediaPipe Object Detection (COCO SSD, EfficientDet) — bounding box объекта в 2D
- Depth estimation (LiDAR) → проецируем 2D bounding box в 3D для получения позиции
- AR-контент следует за объектом с интерполяцией (lerp) для плавности
Это значительно сложнее и менее точно, чем Static Object Detection. Точность tracking при скорости движения > 0.5 м/с деградирует.
Практический кейс
Приложение для сервисного центра: техник наводит на двигатель автомобиля — ARKit распознаёт конкретную модель двигателя по .arobject, поверх появляется схема с подписями к узлам. Аннотации привязаны к конкретным точкам в coordinate space объекта.
Сложность: двигатели в реальном сервисе грязные, частично перекрытые патрубками, с нагаром. Чистый эталонный .arobject не распознаёт грязный двигатель. Решение: сканировать несколько вариантов (чистый / с умеренным загрязнением) и добавлять все в detectionObjects. ARKit выберет наилучшее совпадение.
Сроки
Базовое object detection с одним объектом + статичные аннотации — 1-2 недели (включая сканирование). Несколько объектов, анимированные аннотации, интеграция с базой данных — 3-5 недель. Vuforia Model Targets вместо ARKit scan — аналогичные сроки плюс лицензия. Стоимость рассчитывается индивидуально.







