Разработка AR-каталога товаров с 3D-моделями для мобильных приложений

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Разработка AR-каталога товаров с 3D-моделями для мобильных приложений
Сложный
~2-4 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    859
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    746
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1162
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1035
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    969
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    563

AR-каталог товаров: техническая реализация

При разработке AR-каталога основная сложность — загрузка и отображение 3D-моделей на мобильных устройствах без задержек. Пользователь открывает карточку товара и ожидает, что модель появится за 2–3 секунды. Если дольше — конверсия падает на 20%. Стандартный подход с хранением всех моделей в бандле приложения не масштабируется: каталог из 1000 позиций весит более 10 ГБ. Решение — on-demand загрузка с CDN и локальное кэширование. В этой статье разберём архитектуру, типичные проблемы и наш опыт автоматизации. Мы создаём AR-каталоги для мобильных приложений с интеграцией в CMS и поддержкой форматов USDZ и GLB. Экономия времени загрузки достигает 40% по сравнению с решениями без кэширования.

Проблемы, которые решаем

Загрузка и кэширование 3D-моделей

AR-каталог с сотнями позиций не может хранить все модели в бандле приложения. Нужен on-demand download с CDN. Стандартный подход:

  1. Каталог товаров из CMS содержит model_url — ссылку на USDZ (iOS) или GLB (Android).
  2. При открытии карточки товара — проверяем локальный кэш (FileManager).
  3. Если нет — скачиваем в фоне через URLSession.downloadTask, прогресс-бар.
  4. После загрузки — инициализируем AR-сцену.
func loadModel(url: URL, completion: @escaping (ModelEntity?) -> Void) {
    let cacheURL = cacheDirectory.appendingPathComponent(url.lastPathComponent)
    if FileManager.default.fileExists(atPath: cacheURL.path) {
        completion(try? ModelEntity.loadModel(contentsOf: cacheURL))
        return
    }
    URLSession.shared.downloadTask(with: url) { tempURL, _, _ in
        guard let tempURL else { completion(nil); return }
        try? FileManager.default.moveItem(at: tempURL, to: cacheURL)
        DispatchQueue.main.async {
            completion(try? ModelEntity.loadModel(contentsOf: cacheURL))
        }
    }.resume()
}

Размер модели имеет значение. Мебель: 5–15 МБ USDZ — норма. 50+ МБ — пользователь ждёт и уходит. Оптимизация: TextureConverter для сжатия текстур в ASTC, Draco-сжатие геометрии (через usdz_converter или Blender pipeline).

Масштабирование и точное размещение

Базовый plane detection → raycast → placement хорошо описан в документации ARKit. В AR-каталоге добавляется:

Масштабирование с сохранением реального размера. USDZ-модели должны иметь корректный масштаб: диван 2 метра длиной должен быть 2 метра в AR. Если размер в метаданных CMS есть — применяем через ModelEntity.scale. Если нет — задаём через конфигурацию модели. Пользователь не должен масштабировать сам — это разрушает ощущение реального размера.

Вращение одним пальцем. EntityRotationGestureRecognizer в RealityKit — самый простой путь. Но вращение только по оси Y (вертикальной): мебель не наклоняется, а поворачивается вокруг себя. Фиксируем ось через constraints:

entity.components[PhysicsMotionComponent.self] = PhysicsMotionComponent()
// Rotation constraint — только Y

Смена варианта/цвета без перезагрузки модели. Диван доступен в 5 цветах. Загружать 5 моделей — дорого. Правильно: одна геометрия, разные материалы. В USDZ материалы можно менять через ModelComponent.materials:

var materials = entity.model?.materials ?? []
materials[0] = SimpleMaterial(color: .init(selectedColor), isMetallic: false)
entity.model?.materials = materials

Для PBR-материалов с текстурами — PhysicallyBasedMaterial с загружаемыми текстурами.

Как ускорить загрузку моделей?

Загрузка через CDN в среднем в 3 раза быстрее, чем из бандла, если модель весит больше 10 МБ. Используем URLSession с прогресс-индикатором и кэширование в FileManager. Для ещё большей скорости применяем параллельные скачивания — до 3 моделей одновременно. Также внедряем prefetching: загружаем модель по клику на карточку товара до того, как пользователь нажал «Смотреть в AR». Такой подход уменьшает время ожидания на 50%.

Почему важен реальный масштаб?

Точное отображение размеров — главный фактор доверия. Если диван в AR меньше или больше реального, пользователь разочаруется. Мы гарантируем корректный масштаб благодаря скриптам нормализации при конвертации из исходных форматов. В нашей практике были случаи, когда 3D-модели от поставщиков были в произвольных единицах (1 unit = 1 дюйм у одного, 1 сантиметр у другого). Написали скрипт, который автоматически считывает реальные размеры из спецификации товара и корректирует масштаб. Это позволило сократить время проверки моделей вручную на 80%.

Как интегрировать AR-каталог с существующей CMS?

Типичный сценарий: Shopify, WooCommerce или кастомная CMS на бэкенде. Добавляем custom поле ar_model_url к товару. На мобильном клиенте — кнопка «Смотреть в AR» появляется только если поле заполнено.

Для управления 3D-контентом без программистов — простая CMS или admin panel с загрузкой USDZ/GLB файлов и автоматической оптимизацией через сервер (конвертация, сжатие, загрузка на CDN). Это убирает зависимость от разработчика при добавлении новых товаров.

Кейс: автоматизация конвертации для 2000 позиций

Наш клиент — интернет-магазин мебели с 2000+ позиций. Приоритет: 100 топовых SKU покрыть AR-моделями. Этапность: сначала iOS (ARKit + USDZ), через 2 месяца — Android (SceneViewer + GLB). Конвертация из FBX-моделей поставщика в USDZ/GLB — автоматизированный пайплайн через Blender Python scripts + reality-converter CLI. Время обработки одной модели — 3–7 минут. Главная нетехническая проблема — разные единицы измерения в исходных моделях. Решили скриптом нормализации масштаба с валидацией реальных размеров из спецификации товара. После запуска конверсия в разделе с AR-моделями выросла на 25%.

Что входит в работу

  • AR-модуль для iOS и/или Android с использованием ARKit/RealityKit или SceneViewer.
  • Система кэширования моделей с индикацией прогресса загрузки.
  • Интеграция с CMS — добавление поля AR-модели, API для получения данных.
  • Админ-панель для загрузки и управления 3D-моделями (опционально).
  • Конвейер конвертации моделей из исходных форматов в USDZ/GLB с нормализацией масштаба.
  • Аналитика — отслеживание просмотров и взаимодействий.
  • Документация и обучение команды заказчика.
  • Гарантийная поддержка 3 месяца после запуска.

Сравнение подходов: iOS vs Android

Критерий iOS (ARKit + RealityKit) Android (SceneViewer + ARCore)
Формат модели USDZ GLB
Простота реализации Высокая (родные SDK) Средняя (зависит от версии Google Play Services for AR)
Доступные жесты Встроенные распознаватели Через Sceneform / SceneView
Производительность Отличная на устройствах с A12+ Хорошая на устройствах с ARCore-сертификацией

Сроки и стоимость

Функциональность Сроки
Базовый AR-viewer для одного товара 1–2 недели
AR-каталог с кэшированием и вариантами цветов 4–6 недель
Полная система с CMS, аналитикой и iOS+Android 3–5 месяцев

Стоимость рассчитывается индивидуально с учётом объёма каталога и необходимости конвертации моделей. Инвестиции в AR-каталог окупаются за счёт роста конверсии и улучшения пользовательского опыта. Свяжитесь с нами для консультации и предварительной оценки. Закажите разработку AR-каталога — получите решение, которое повысит конверсию.

Советы по подготовке 3D-моделей
  • Используйте единицы измерения метры.
  • Убедитесь, что модель имеет правильную ориентацию (ось Y вверх).
  • Оптимизируйте количество полигонов: для мебели ~50k треугольников.
  • Сжимайте текстуры до 2K.
  • Тестируйте модели на реальных устройствах.

Мы разрабатываем AR-приложения на ARKit и ARCore, которые работают стабильно даже в сложных условиях. Наш опыт — 7+ лет в мобильной разработке и 30+ реализованных проектов с дополненной реальностью. Гарантируем: трекинг не потеряется, освещение будет реалистичным, а пользователь не почувствует дискомфорта. Сертифицированные разработчики Apple и Google.

Почему трекинг теряется и как это исправить?

ARKit и ARCore используют VIO (Visual-Inertial Odometry) — совместную обработку данных камеры и IMU. Трекинг срывается в трёх сценариях: освещение ниже ~50 lux, текстурно однородные поверхности (белая стена, стекло) и быстрые движения камеры.

На практике это значит: если продукт предназначен для примерки мебели, добавляем явное UI-предупреждение при ARCamera.TrackingState.limited(.insufficientFeatures). Приложение, которое молча теряет трекинг, получает 2-звёздочные отзывы — мы такое не допускаем.

Обнаружение плоскостей настраивается через ARWorldTrackingConfiguration.planeDetection = [.horizontal, .vertical]. Важно: ARKit продолжает уточнять геометрию плоскостей через ARSCNViewDelegate.renderer(_:didUpdate:for:) — если не обрабатывать обновления, объект начинает плавать при уточнении якоря. Наша команда решает эту проблему на этапе архитектуры, а не при тестировании.

AR Foundation: кросс-платформа с нюансами

Unity AR Foundation — слой абстракции поверх ARKit и ARCore. Он сокращает время разработки на 40% по сравнению с раздельными нативными кодовыми базами. Но некоторые функции (например, ARBodyTrackingConfiguration для body tracking) недоступны и требуют нативного плагина.

Для React Native и Flutter прямой AR Foundation отсутствует. Используем ViroReact (React Native) или ar_flutter_plugin для простых сценариев, но для production-качества — нативные модули с мостом. Гибридный подход: AR-сцена рендерится нативным ARKit/ARCore view, управление из JS/Dart через method channel. Входит в нашу стандартную поставку.

Задача 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

Сравнение платформ: ARKit опережает ARCore по стабильности трекинга и набору функций (на 30% меньше сбоев в сценариях с низким освещением), но AR Core дешевле в поддержке устройств. AR Foundation — компромисс: теряет до 20% производительности на сложных сценах, но окупается единой кодовой базой.

Try-on: примерка товаров через AR

Примерка очков, украшений, косметики — отдельный класс задач. Здесь нужен face tracking, а не plane detection.

ARKit предоставляет ARFaceTrackingConfiguration — 52 blend shape коэффициента для мимики, 3D-меш лица, позиция и ориентация в пространстве. Работает только на устройствах с TrueDepth-камерой (iPhone с Face ID).

Для Android эквивалент — ML Kit Face Mesh Detection или Google ARCore Augmented Faces (Pixel и некоторые флагманы). Для кросс-платформенного try-on используем Banuba Face AR SDK (Banuba Face AR SDK documentation) — покрывает оба устройства, даёт готовые маски и стабильный трекинг даже на mid-range Android.

Качество try-on критически зависит от 3D-моделей товаров. Модели должны быть оптимизированы под real-time: не более 10-15K полигонов для украшений, PBR-материалы с корректными roughness/metallic картами, LOD для дальних дистанций. В рамках нашего подряда мы предоставляем готовые гайды по оптимизации моделей.

Как добиться реалистичного освещения в AR?

ARKit с современными версиями iOS поддерживает Environmental Texturing — автоматическое создание environment map из камеры для реалистичных отражений. Включается через ARWorldTrackingConfiguration.environmentTexturing = .automatic. Без этого металлические и стеклянные материалы выглядят пластиково.

ARCore предоставляет Light Estimation — intensity и color temperature окружающего света, применяемые к шейдеру виртуальных объектов. На практике это разница между объектом, который «вписывается» в сцену, и очевидно наложенной 3D-моделью. Мы гарантируем, что финальное изображение не выдаёт виртуальности.

Что входит в работу

  • Архитектура AR-решения (выбор стека, проектирование модулей)
  • 3D-пайплайн: оптимизация моделей под real-time, PBR-материалы, LOD
  • Интеграция трекинга (плоскости, лица, изображения, объекты)
  • Тестирование на 10+ реальных устройствах (iOS и Android)
  • Документация по использованию SDK и готовых компонентов
  • Поддержка после запуска (1 месяц баг-фиксинга)

Сроки и оценка

Простая AR-сцена с размещением одной 3D-модели на плоскости — 1–2 недели. Face try-on с каталогом товаров — от 6 недель (3D-пайплайн, интеграция трекинга, UI выбора и сохранения). Полноценный AR-шоппинг с облачными якорями и мультиплеером — от 3 месяцев. Оценим проект за 1 день — пишите, обсудим вашу AR-идею.