Создание 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. Предоставляем полный цикл: от идеи до публикации. Получите консультацию инженера — мы поможем выбрать оптимальный пайплайн для вашей задачи.
Свяжитесь с нами — оценим ваш проект в течение дня. Ответим на вопросы и предложим оптимальное решение под ключ.







