Реализация фотограмметрии объектов для AR (Object Capture)
Apple Object Capture API появился в macOS 12 и позволяет создавать высококачественные 3D-модели из серии фотографий через фотограмметрию. Снял объект с 20–200 ракурсов на iPhone — получил USDZ с текстурой 4K и геометрией, готовой для AR. Без ручного моделирования, без 3D-редактора.
Но «просто сфотографируй» работает только в идеальных условиях. На практике — масса ограничений.
Как работает Object Capture
PhotogrammetrySession из RealityKit анализирует пересечение фотографий, строит point cloud, восстанавливает геометрию (depth estimation + multi-view stereo) и генерирует меш с текстурой.
import RealityKit
let session = try PhotogrammetrySession(input: folderWithImages)
try session.process(requests: [
.modelFile(url: outputURL, detail: .medium)
])
for try await output in session.outputs {
switch output {
case .processingComplete:
print("Готово")
case .requestProgressInfo(_, let info):
print("Прогресс: \(info.fractionComplete)")
default:
break
}
}
detail — уровень детализации: .preview (быстро, грубо), .reduced, .medium, .full, .raw (максимум, только на Mac Pro). Для мобильного AR обычно .medium — баланс между качеством и размером файла.
Важно: PhotogrammetrySession работает только на Mac с Apple Silicon или Intel Mac с macOS 12+. На iPhone нет — только съёмка, обработка на Mac.
Что делает результат хорошим или плохим
Освещение. Фотограмметрия ненавидит резкие тени и блики. Идеал: рассеянный свет в пасмурный день или лайтбокс. Прямое солнце — жёсткие тени, которые «запекаются» в текстуру как артефакты. Глянцевые поверхности (металл, стекло, пластик с лаком) — алгоритм не восстанавливает геометрию из-за зеркального отражения.
Покрытие ракурсов. Нужны перекрывающиеся снимки с разных точек: горизонтальный ряд вокруг объекта (каждые 15°), ещё два ряда под углом 30° и 60° вверх, плюс съёмка сверху. Итого: 100–200 фото для объекта среднего размера. Меньше — дыры в меше. Больше — избыточно, время обработки растёт.
Размер объекта. Object Capture работает лучше всего для объектов 10–50 см. Мелкие предметы (монеты, украшения) — нужны макро-фото с высоким разрешением. Крупные объекты (мебель, автомобиль) — нужна специальная съёмочная стратегия с перекрытиями.
Текстура объекта. Однородные поверхности (белый шар, чистый металлический цилиндр) — фотограмметрия не находит feature points, геометрия восстанавливается неверно. Решение: временно нанести матированный порошок (chalk spray) для добавления текстуры, смыть после съёмки.
Пайплайн от съёмки до AR
-
Съёмка на iPhone. Приложение типа
Reality Composerили специализированные сторонние (PolyCam, Luma AI) для контроля покрытия. PolyCam показывает heat map покрытия в реальном времени — наглядно видно, где не хватает ракурсов. -
Передача на Mac. AirDrop или iCloud Drive. Папка с HEIC/JPEG фото.
-
Обработка через Object Capture. Время: 20–60 минут для 100 фото на M1 Mac. Detail level
.medium. Mac Pro —rawdetail за то же время. -
Оптимизация USDZ. Выходной файл из Object Capture —
.fullили.raw— может весить 200–500 МБ. Для AR нужно:- Уменьшить полигонаж через Blender Decimate (50 000–100 000 полигонов)
- Сжать текстуры через
TextureConverter - Целевой размер для мобильного AR: 5–20 МБ
-
Валидация и публикация. Quick Look на iPhone, проверка масштаба, загрузка на CDN.
Альтернативы на телефоне
Luma AI / Polycam — приложения, которые делают 3D-реконструкцию на телефоне или в облаке. Luma использует Neural Radiance Fields (NeRF) — результат мягче и с меньшими артефактами на сложных поверхностях. Но NeRF-меш нужна дополнительная обработка перед AR (конвертация из облака точек в USDZ). Polycam — LiDAR-сканирование для iPhone Pro + фотограмметрия.
ARCore Geospatial Creator и Gaussian Splatting — новые подходы для объёмных сцен, но ещё не готовы для продакшн AR-каталогов из-за сложности интеграции.
Кейс
Антикварный магазин, 80 предметов для AR-каталога. Фотосъёмка в магазине — лайтбокс 60×60 см, iPhone 14 Pro. Скрипт автоматической обработки: папка с фото → Object Capture → Blender Python для децимации и сжатия текстур → USDZ на CDN. Из 80 объектов 12 имели глянцевые поверхности — обрабатывали отдельно с chalk spray. Среднее время от съёмки до готовой AR-модели: 2.5 часа (включая обработку на M2 MacBook Pro).
Сроки
| Задача | Сроки |
|---|---|
| Настройка съёмочного пайплайна + обучение | 2–3 дня |
| Автоматизация Object Capture → оптимизация | 1 неделя |
| Обработка 50–100 объектов | 2–4 недели |
Стоимость рассчитывается после оценки типов объектов и требуемого качества.







