Unity AR Foundation: кроссплатформенное AR-приложение под ключ

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Unity AR Foundation: кроссплатформенное AR-приложение под ключ
Сложный
~5 дней
Часто задаваемые вопросы

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    744
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1160
  • 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
    562

Мы не раз сталкивались с проектами, где разработчики пытались встроить AR в приложение через прямую интеграцию ARKit и ARCore, а в итоге получали код, который работал только на половине устройств. AR Foundation — кросс-платформенная абстракция Unity поверх ARKit и ARCore. Один код, два билда. Но это не значит, что функциональность идентична: LiDAR-окклюзия работает только на iOS Pro-устройствах, Depth API по ML-модели — Android-эксклюзив на чипах без ToF. Писать AR Foundation без понимания этих различий — получать runtime exceptions на половине устройств. Наш опыт показывает: проверка возможностей через descriptor и fallback-механизмы спасают от 90% крашей. Мы предлагаем комплексное решение — от аудита до публикации — с гарантией качества и поддержкой на всех этапах. Свяжитесь с нами для консультации по вашему проекту.

Как AR Foundation решает проблему кроссплатформенности?

AR Foundation версии 6.x (последняя LTS-версия Unity) покрывает все ключевые фичи обеих платформ: plane detection, image tracking, face tracking, mesh classification, point clouds. Но реализация под капотом разная, и некоторые флаги работают только если поддерживает платформенный бэкенд. Ниже — типичный проверочный код:

[SerializeField] AROcclusionManager occlusionManager;

void Start()
{
    if (occlusionManager.descriptor?.supportsEnvironmentDepthImage == true)
    {
        occlusionManager.requestedEnvironmentDepthMode = EnvironmentDepthMode.Fastest;
        occlusionManager.requestedOcclusionPreferenceMode = OcclusionPreferenceMode.PreferEnvironmentOcclusion;
    }
    else
    {
        occlusionManager.enabled = false;
    }
}

Без проверки descriptorNotSupportedException на Pixel 5, у которого нет ToF. Наши инженеры всегда включают такие проверки.

Почему архитектура сцены критична для стабильности?

AR Foundation строится на компонентах, привязанных к ARSession и XROrigin:

  • ARPlaneManager — обнаружение и трекинг плоскостей
  • ARRaycastManager — стрельба лучами по tracked geometry
  • ARTrackedImageManager — маркерный tracking
  • ARAnchorManager — управление anchor lifecycle

Правильное размещение объекта по тапу через ARRaycastManager:

[SerializeField] ARRaycastManager raycastManager;
[SerializeField] ARAnchorManager anchorManager;
[SerializeField] GameObject prefabToPlace;

private List<ARRaycastHit> hits = new List<ARRaycastHit>();

void Update()
{
    if (Input.touchCount == 0) return;
    var touch = Input.GetTouch(0);
    if (touch.phase != TouchPhase.Began) return;

    if (raycastManager.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon))
    {
        var hitPose = hits[0].pose;
        var anchor = anchorManager.AttachAnchor(
            hits[0].trackable as ARPlane,
            hitPose
        );
        Instantiate(prefabToPlace, anchor.transform);
    }
}

AttachAnchor привязывает объект к конкретной плоскости — если плоскость обновит свою геометрию (ARKit постоянно уточняет форму), объект останется на ней. Без привязки к anchor объект дрейфует.

Image Tracking: референсная библиотека

Изображения компилируются в XRReferenceImageLibrary через Unity Editor. Ограничения: ARKit допускает до 100 изображений в библиотеке с одновременным трекингом до 4. ARCore — практически без ограничений по числу, но одновременно тоже до 20 штук максимум.

[SerializeField] ARTrackedImageManager trackedImageManager;

void OnEnable() => trackedImageManager.trackablesChanged.AddListener(OnImageChanged);
void OnDisable() => trackedImageManager.trackablesChanged.RemoveListener(OnImageChanged);

void OnImageChanged(ARTrackablesChangedEventArgs<ARTrackedImage> args)
{
    foreach (var added in args.added)
    {
        SpawnContent(added.referenceImage.name, added.transform);
    }
    foreach (var updated in args.updated)
    {
        SetVisible(updated.referenceImage.name, updated.trackingState == TrackingState.Tracking);
    }
}

Производительность: Unity + AR = осторожно

Unity не самая лёгкая среда для AR. Типичные проблемы:

Garbage collector паузы. GC в .NET/Mono останавливает мейн-треад. При 60 FPS AR-сессии пауза в 16ms — это пропущенный кадр и дёргание объектов. Решение: использовать List<T> с предварительно выделенной ёмкостью (передавать в Raycast), избегать new внутри Update().

DrawCall overhead. Каждый AR-объект без batching — отдельный drawcall. GPU Instancing в материале + Static batching там где объекты не двигаются. На Android — Vulkan backend вместо OpenGLES для меньшего CPU overhead.

Texture Compression. ASTC для iOS и ETC2 для Android. В AR Foundation проект под оба таргета — настраивать Override for platform в Texture Import Settings. ASTC на Android требует GPU поддержки (есть на всех ARCore-совместимых).

Проблема Решение
GC паузы Pre-allocated List, избегать new в Update
DrawCall overhead GPU Instancing, Static batching, Vulkan на Android
Texture Compression ASTC для iOS, ETC2 для Android, Override for platform

Сборка и публикация

AR Foundation требует отдельных настроек в Player Settings:

  • iOS: Camera Usage Description обязателен (требует App Store), ARKit capability
  • Android: CAMERA permission в AndroidManifest, com.google.ar.core в dependencies

ARCore проверяет наличие AR Services при запуске — нужна обработка ARUnavailableException. Без неё — молчаливый краш на несовместимых устройствах.

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

При заказе интеграции AR Foundation под ключ вы получаете:

  • Анализ требований и выбор стека (Unity LTS, AR Foundation 6.x, StoreKit 2 / Billing 6 для покупок)
  • Реализация с проверкой возможностей устройств и fallback-логикой
  • Оптимизация производительности (GC, batching, текстуры)
  • Настройка сборки и публикации (App Store Connect / Google Play Console)
  • Документация по API и конфигурации
  • Обучение команды и поддержка в течение 2 недель после релиза

Наша команда — сертифицированные Unity-разработчики с 10+ лет опыта и более 50 реализованных AR-проектов. Получите консультацию по вашему проекту — напишите нам.

Сроки

Базовая интеграция AR Foundation с plane detection и размещением объектов (iOS + Android): от 5 дней. Маркерный AR с библиотекой изображений и кастомными анимациями: 1–2 недели. Полное решение с окклюзией, face tracking и публикацией в обе платформы: 3–6 недель.

Как избежать типичных ошибок при интеграции AR Foundation?

  • Не проверяли descriptor — краш на устройствах без ToF.
  • Залили ASTC-текстуры на Android без поддержки — чёрные текстуры.
  • Использовали new внутри Update — микрофризы каждые 10-20 секунд.
  • Не обработали ARUnavailableException — молчаливый вылет на старых Android.
  • Не указали Camera Usage Description — App Store rejected.

Сравнение AR Foundation с другими подходами

Подход Время разработки (iOS + Android) Кодовая база Производительность
Прямая интеграция ARKit + ARCore 2-3 недели 2 кодовые базы Максимальная
AR Foundation 5-14 дней Единый C# 95-98% от нативной
Vuforia 7-10 дней Единый C# + лицензия 80-90%

AR Foundation лучше прямой интеграции тем, что снижает время разработки примерно на 40-50% при минимальной потере производительности. Свяжитесь с нами для расчета стоимости интеграции — оценим задачу и предложим решение.

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