Создание 3D-модели по фотографиям прямо на мобильном устройстве — задача, которая ещё недавно казалась фантастикой. Сегодня, благодаря NeRF и 3D Gaussian Splatting, это реально. Большинство решений для фотограмметрии требуют мощных десктопных GPU и не адаптированы под мобильный UX — мы закрываем этот разрыв, предлагая готовый пайплайн с guided capture и облачной обработкой. Мы разрабатываем такие решения под ключ для iOS и Android. Наш опыт — 5+ лет в мобильной разработке и 30+ проектов по компьютерному зрению. Гарантируем точность реконструкции и полную поддержку на всех этапах. Закажите разработку прямо сейчас — получите решение, готовое к публикации.
Какую проблему мы решаем?
Ручное моделирование 3D-объектов занимает часы и требует навыков. Автоматическая реконструкция часто даёт артефакты из-за плохого покрытия или низкого качества снимков. Мы устраняем эти проблемы с помощью guided capture и оптимизированного пайплайна на базе NeRF и 3D Gaussian Splatting. Пользователь просто обходит объект, следуя подсказкам, а остальное делает наша система. Особенно сложны сцены с бликующими или однородными поверхностями — для них мы используем адаптивную стратегию съёмки.
Что выбрать: NeRF, Gaussian Splatting или фотограмметрия?
Три технологии решают одну задачу: 3D-объект из фотографий. Разница принципиальная:
| Метод | Скорость обучения | Время рендера | Качество | Редактируемость |
|---|---|---|---|---|
| Классический NeRF | Часы–дни | Медленный | Высокое | Плохая |
| InstantNGP/Nerfacto | 5–30 мин | Быстрый | Хорошее | Средняя |
| 3D Gaussian Splatting | 10–40 мин | Реальное время | Отличное | Хорошая |
| Photogrammetry (Metashape, COLMAP) | 30 мин–несколько часов | Мгновенный (mesh) | Зависит от фото | Отличная |
Для мобильных приложений сегодня 3D Gaussian Splatting — лучший баланс скорости и качества. Он в 3–5 раз быстрее классического NeRF при сопоставимом качестве. Для быстрого превью в AR подходит фотограмметрия с современным COLMAP-пайплайном.
Как работает 3D-реконструкция на мобильном?
On-device reconstruction возможна только в ограниченных сценариях (например, Apple Object Capture API — только на Mac с Apple Silicon). Практичная архитектура для мобильного:
- Съёмка с подсказками — guided capture с AR-оверлеем (ARKit/ARCore) собирает 20–60 фото и метаданные camera poses.
- Валидация на устройстве — проверка покрытия, резкости, количества кадров.
- Загрузка в облако — сжатые изображения и метаданные отправляются на GPU-инстанс.
- Построение облака точек — COLMAP SfM (если нет poses) или импорт метаданных.
- Обучение 3D Gaussian Splatting — 10–40 минут на T4/A100.
- Экспорт — .glb для AR Quick Look, .splat для web-просмотра.
- AR-просмотр — загрузка модели и рендер через RealityKit/SceneViewer.
Технические требования к облачному GPU
Для обучения Gaussian Splatting рекомендуется NVIDIA GPU с 8+ GB VRAM (T4, A10G, A100). Время обучения от 10 до 40 минут в зависимости от количества кадров и разрешения. Используем контейнеризацию (Docker + NVIDIA Container Toolkit).Guided capture на iOS с ARKit
Ключевой UX: пользователь должен обойти объект правильно, иначе реконструкция будет с артефактами.
class GuidedCaptureSession: NSObject { private var arSession: ARSession private var capturedFrames: [(UIImage, simd_float4x4)] = [] // image + camera transform private let targetFrameCount = 40 private let minAngleBetweenFrames: Float = 8.0 // градусы func shouldCaptureFrame(currentTransform: simd_float4x4) -> Bool { guard let lastTransform = capturedFrames.last?.1 else { return true } // Угловое расстояние от последнего захваченного кадра let angularDistance = computeAngularDistance(currentTransform, lastTransform) return angularDistance >= minAngleBetweenFrames } var captureProgress: Float { // Оцениваем покрытие орбиты вокруг объекта let coveredAngles = estimateOrbitCoverage(capturedFrames.map { $0.1 }) return min(coveredAngles / 360.0, 1.0) } } AR-оверлей показывает «орбиту» вокруг объекта: зелёные дуги — уже снятые ракурсы, серые — нужно снять. Это снижает процент неудачных реконструкций из-за неполного покрытия.
Требования к качеству снимков — ai 3d реконструкция
До отправки в облако — базовая валидация на устройстве:
func validateCaptureSet(_ frames: [(UIImage, simd_float4x4)]) -> ValidationResult { // Минимальное количество кадров guard frames.count >= 20 else { return .insufficientFrames(current: frames.count, required: 20) } // Покрытие углов (нужно хотя бы 270° из 360°) let orbitCoverage = estimateOrbitCoverage(frames.map { $0.1 }) guard orbitCoverage >= 0.75 else { return .insufficientCoverage(coverage: orbitCoverage) } // Средняя резкость кадров let avgSharpness = frames.map { sharpnessScore($0.0) }.reduce(0, +) / Float(frames.count) guard avgSharpness >= 60.0 else { return .blurryImages } return .valid } Backend: обучение 3D Gaussian Splatting
Метаданные ARKit (camera poses) — упрощают COLMAP SfM, сокращая время обработки. Если poses отсутствуют, запускаем SfM из nerfstudio.
# nerfstudio + gsplat pipeline from nerfstudio.cameras.cameras import CameraType from nerfstudio.pipelines.base_pipeline import Pipeline def run_gaussian_splatting( images_dir: Path, camera_poses: list[np.ndarray] | None = None, output_dir: Path = Path("output") ) -> Path: """ Если camera_poses переданы (из ARKit) — пропускаем COLMAP SfM. Это сокращает время обработки с 15-20 мин до 3-5 мин. """ config = SplatfactoModelConfig( num_downscales=2, # уменьшаем для скорости use_scale_regularization=True, max_gauss_ratio=10.0, ) trainer = Trainer(config, output_dir=output_dir) trainer.train() # ~10-40 мин на GPU (A100: 10 мин, T4: 25 мин) # Экспорт в web-friendly формат export_gaussian_splat(output_dir / "splat.ply") export_glb(output_dir / "model.glb") # для AR Quick Look / SceneViewer return output_dir Отображение результата в AR
// iOS: RealityKit Quick Look для .usdz / .glb import RealityKit import ARKit class ModelViewerViewController: UIViewController { func presentARModel(modelURL: URL) { let arView = ARView(frame: view.bounds, cameraMode: .ar) let anchor = AnchorEntity(plane: .horizontal) ModelEntity.loadModelAsync(contentsOf: modelURL) .sink( receiveCompletion: { _ in }, receiveValue: { [weak self] entity in entity.generateCollisionShapes(recursive: true) anchor.addChild(entity) arView.scene.anchors.append(anchor) // Pinch to scale, pan to move arView.installGestures([.scale, .translation, .rotation], for: entity) } ) .store(in: &cancellables) } } Сроки и что входит в работу
| Этап | Длительность | Результат |
|---|---|---|
| Анализ и проектирование | 3–5 дней | Техническое задание и архитектура |
| Guided capture + валидация | 5–7 дней | Модуль съёмки с AR-оверлеем |
| Облачный backend | 5–10 дней | API для загрузки и обучения |
| AR-просмотр | 3–5 дней | Интеграция RealityKit / SceneViewer |
| Тестирование и деплой | 3–5 дней | Приложение в App Store / Google Play |
Отметим: что входит: полная документация, исходные коды, инструкция по развёртыванию облачного сервиса, поддержка на 3 месяца.
Почему стоит доверить разработку нам?
Мы сертифицированные специалисты по iOS и Android. За 5+ лет реализовали 30+ проектов с компьютерным зрением и AR. Гарантируем соблюдение App Store Review Guidelines (Section 4.2/5.1) и стабильную работу с push-уведомлениями, deep linking и in-app purchase. Предоставляем полный цикл: от идеи до публикации. Получите консультацию инженера — мы поможем выбрать оптимальный пайплайн для вашей задачи.
Свяжитесь с нами — оценим ваш проект в течение дня. Ответим на вопросы и предложим оптимальное решение под ключ.







