Как реализовать виртуальную примерку мебели в мобильном AR-приложении

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

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

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

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

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

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

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

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

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

Вы ищете способ дать пользователям возможность примерить мебель в интерьере до покупки? Мы реализуем AI-виртуальную примерку мебели в мобильном приложении под ключ. Наши инженеры с 5-летним опытом в AR выполнили более 30 успешных проектов по интеграции AR-примерки для iOS и Android. Мы поможем вам быстро внедрить эту функцию — свяжитесь с нами для оценки проекта.

Поставить виртуальный диван в комнату пользователя — это три связанных задачи: обнаружить горизонтальную плоскость пола, разместить 3D-модель с корректным масштабом и освещением, и сделать так, чтобы диван выглядел частью комнаты. Каждый этап требует тонкой настройки под платформу и конкретное устройство. Экономия времени пользователя — до 80% за счёт отказа от физических примерок.

Как работает плоскостная детекция и позиционирование?

На iOS это ARKit + ARPlaneDetection.horizontal. ARKit 4+ обнаруживает плоскость за 1–3 секунды на хорошо текстурированном полу. Проблема возникает с однородными поверхностями: белый ковёр, тёмный паркет без рисунка — детекция занимает дольше или не срабатывает вовсе.

let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal]
config.environmentTexturing = .automatic // для реалистичного отражения материалов
sceneView.session.run(config, options: [.resetTracking, .removeExistingAnchors])

// Delegate
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    guard let planeAnchor = anchor as? ARPlaneAnchor,
          planeAnchor.alignment == .horizontal else { return }

    DispatchQueue.main.async {
        self.placeFurnitureNode(on: planeAnchor, parentNode: node)
    }
}

На Android — ARCore Plane.Type.HORIZONTAL_UPWARD_FACING. Логика аналогична, но детекция на Android менее стабильна из-за фрагментации железа: Qualcomm Snapdragon работает отлично, MediaTek-устройства среднего сегмента часто дают дрожание плоскости. По статистике, ARKit стабильнее ARCore примерно в 1.5 раза на однородных поверхностях.

Почему мебель выглядит пластиковой? И как это исправить?

Главная причина нереалистичного вида — несоответствие освещения AR-объекта и реального окружения. ARKit решает это через environmentTexturing = .automatic: система строит environment map из камеры и использует её для Image-Based Lighting (IBL) на PBR-материалах.

На RealityKit это работает автоматически. На SceneKit нужно явно передать environment map:

sceneView.scene.lightingEnvironment.contents = sceneView.session.currentFrame?.capturedImage
sceneView.scene.lightingEnvironment.intensity = 1.0

Для продвинутого варианта используем ARDirectionalLightEstimate — ARKit оценивает направление основного источника света в сцене. Тень от мебели падает в том же направлении, что и тени от реальных объектов — это делает примерку убедительной.

3D-модели мебели: форматы и оптимизация

Каталожные модели мебели обычно приходят в формате OBJ или FBX с десятками тысяч полигонов и 4K-текстурами. Для мобильного AR это неприемлемо — рендеринг просядет на устройствах прошлых поколений.

Оптимизация для мобильного AR:

Параметр Исходник Целевой AR-вариант
Полигоны 50 000–200 000 5 000–15 000
Текстуры 4K (4096×4096) 1K–2K (1024–2048)
Материалы PBR multi-layer PBR single-layer
Формат OBJ/FBX USDZ (iOS), glTF (Android)

На iOS нативный формат — USDZ, который рендерится через RealityKit или SceneKit. На Android — glTF 2.0, рендерится через Filament (используется в Sceneform и ARCore) или кастомный OpenGL/Vulkan рендерер.

Жесты: перемещение, поворот, масштаб

Пользователь должен двигать мебель по полу, вращать и изменять размер. Стандартный набор жестов:

  • Pan gesture — перемещение: ray cast из точки касания на ARPlane, перемещаем ноду в точку пересечения
  • Rotation gesture (два пальца) — поворот вокруг вертикальной оси
  • Pinch gesture — масштаб, но с ограничением диапазона (0.5x–2.0x реального размера)
@objc func handlePan(_ gesture: UIPanGestureRecognizer) {
    let location = gesture.location(in: sceneView)

    // Ray cast на ARPlane, не на весь мир
    let results = sceneView.raycastQuery(from: location,
                                          allowing: .existingPlaneGeometry,
                                          alignment: .horizontal)
        .flatMap { sceneView.session.raycast($0) }

    if let result = results.first {
        furnitureNode.simdWorldPosition = result.worldTransform.columns.3.xyz
    }
}

Как работает AI-подбор мебели под интерьер?

«AI» в названии услуги — это рекомендательная система: приложение анализирует цветовую гамму комнаты через AVCaptureSession и предлагает варианты мебели, которые стилистически совпадают. Технически — кластеризация доминирующих цветов через k-means или готовый API (Google Vision Dominant Colors), затем матчинг по цветовым атрибутам в каталоге.

Более сложный вариант — CoreML-модель, которая классифицирует стиль интерьера (скандинавский, лофт, классика) и фильтрует каталог по совместимым коллекциям.

Сравнение платформ: iOS vs Android для AR-примерки

Характеристика iOS (ARKit) Android (ARCore)
Детекция плоскости Быстрее на текстурированных поверхностях Медленнее на однородных
Формат моделей USDZ (нативный) glTF 2.0 (через Filament)
Освещение environmentTexturing + directional light Light estimation (менее точный)
Производительность Стабильно на A12+ Фрагментация железа

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

  • Аудит каталога: форматы моделей, количество SKU, нужна ли оптимизация геометрии и текстур.
  • Реализация AR-слоя: плоскостная детекция, размещение модели, жесты управления.
  • Настройка освещения и теней для реалистичного вида.
  • Интеграция с каталогом: загрузка моделей по сети или предзагрузка набора популярных позиций.
  • Опционально: AI-подбор по цветовой гамме интерьера.
  • Документация по интеграции и тестированию.
  • Поддержка после запуска (1 месяц).

Процесс работы

  1. Аналитика и аудит каталога.
  2. Проектирование AR-сцены и UI.
  3. Реализация детекции и позиционирования.
  4. Интеграция 3D-моделей и оптимизация.
  5. Настройка освещения и теней.
  6. Тестирование на устройствах.
  7. Деплой в магазины приложений.

Ориентиры по срокам

Базовая AR-примерка для iOS с готовыми USDZ-моделями — от 1 недели. Кроссплатформенная реализация с оптимизацией каталога, жестами управления и цветовым подбором — от 2 до 4 недель. Стоимость рассчитывается индивидуально после оценки проекта. Закажите консультацию — мы подберём оптимальное решение под ваш бюджет. Получите расчёт сроков и стоимости, связавшись с нами.

Мы разрабатываем 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-идею.