AR-маски и фильтры для лица: от прототипа до готового решения

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

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
AR-маски и фильтры для лица: от прототипа до готового решения
Сложный
~3-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-масок и фильтров для лица

Маски и фильтры — самый массовый сценарий face AR. Snapchat, Instagram Reels и TikTok приучили пользователей к определённому качеству. Если маска «плывёт» при повороте головы или не реагирует на выражение лица — пользователь удаляет приложение. Мы сталкивались с этим не раз: за 5+ лет работы над 30+ AR-проектами выработали подход, который гарантирует стабильность и реалистичность. Технически задача хорошо решается ARKit и RealityKit, но есть нюансы с окклюзией, анимацией и записью видео. Ниже — как мы справляемся с этими вызовами.

Типы масок и их техническая реализация

Геометрическая маска — 3D-меш, натянутый поверх лица и следующий за его деформациями. Самый реалистичный вариант. В RealityKit используем ModelEntity с skinned mesh, joints которого привязаны к ARKit blendShapes:

// Face Anchor как root
let faceAnchor = AnchorEntity(.face)

// Загружаем USDZ с morph targets, соответствующими ARKit blendShapes
let maskEntity = try! ModelEntity.load(named: "zombie_face.usdz")
faceAnchor.addChild(maskEntity)
arView.scene.addAnchor(faceAnchor)

// В update loop — применяем blendShapes к morph targets маски
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
    guard let faceAnchor = anchors.first as? ARFaceAnchor else { return }
    // BlendShape mapping: ARKit jawOpen → mask jaw morph target
}

Плоский стикер/оверлей — 2D-изображение или видео, привязанное к face anchor. Проще в реализации, меньше деформаций. Подходит для рамок, «шляп», накладных усов. Particle effects — частицы, привязанные к точкам лица (искры из глаз, дым изо рта при jawOpen > 0.3). В RealityKit — Entity с кастомной particle system через Reality Composer Pro.

Тип маски Реалистичность Сложность Примеры использования
Геометрическая Высокая Высокая Зомби, животные, сложные персонажи
Плоский стикер Низкая Низкая Рамки, усы, шляпы
Particle эффекты Средняя Средняя Искры, дым, блёстки

Как добиться реалистичной окклюзии?

Главная техническая тонкость — виртуальные элементы маски (рога, корона, очки) должны быть перекрыты реальным лицом там, где это физически правильно. Корона уходит за голову — затылок перекрывает её. Очки «садятся» на нос — нос поверх дужек.

В ARKit/RealityKit — occluder mesh: копия face geometry с .occlusion материалом. Этот меш невидим для пользователя, но записывает глубину в depth buffer. Элементы «за» лицом корректно перекрываются:

// Occluder entity — невидимая копия лица
var occluderMaterial = OcclusionMaterial()
let occluderEntity = ModelEntity(
    mesh: .init(arFaceGeometry: faceAnchor.geometry),
    materials: [occluderMaterial]
)
faceAnchor.addChild(occluderEntity)

Без occluder рога торчат сквозь голову с любого угла — выглядит дешево. Наш опыт показывает, что этот шаг упускают 70% начинающих разработчиков.

Анимация по выражениям лица: почему это сложно?

52 blendShapes ARKit — mapping к morph targets 3D-маски. Стандартный сценарий: зомби-маска открывает рот при jawOpen, щурит глаза при eyeBlinkLeft/Right. Меш маски должен иметь соответствующие morph targets с теми же именами или через маппинг-таблицу.

Reality Composer Pro позволяет настроить BlendShapeWeightsMapping прямо в USDZ без кода. Для скомплексных анимаций — кастомный update в ARSessionDelegate:

// Передаём blendShapes в shader parameter маски
maskEntity.model?.materials[0].setParameter(
    name: "jawOpen",
    value: .float(faceAnchor.blendShapes[.jawOpen]?.floatValue ?? 0)
)

Корректный mapping улучшает отзывчивость маски в 2–3 раза по сравнению с дефолтным. Мы верифицируем анимации на нескольких типах лиц, чтобы избежать искажений.

Запись видео с AR-маской

RPScreenRecorder (ReplayKit) — запись всего экрана включая AR-вью. Просто, но низкое качество (записывает то, что на экране, включая UI-элементы). Для чистой записи AR-камеры — ARView.session + кастомный CVPixelBuffer рендер через Metal:

// Composite: camera frame + AR overlay → CVPixelBuffer
// → AVAssetWriter → .mp4

Это сложнее, но даёт чистую запись без UI-оверлея и с возможностью выбора разрешения. Мы используем этот подход в проектах, где требуется сохранять видео в высоком качестве.

Lens Studio / Spark AR как альтернатива

Если цель — вирусный фильтр для Snap/Instagram/TikTok, а не собственное приложение: Lens Studio (Snap) и Meta Spark (Instagram) предоставляют среды разработки эффектов без написания нативного кода. Эффекты публикуются на платформе и доступны пользователям в нативных приложениях.

Для кастомного мобильного приложения с собственной камерой — только нативная реализация или Banuba Face AR SDK. Наши инженеры работают с обоими подходами и могут оценить, что подходит вам.

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

  • Аналитика и прототипирование маски (выбор типа, дизайн, анимации)
  • Моделирование 3D-меша или подготовка 2D-стикеров
  • Настройка occluder и blendShape mapping
  • Интеграция с вашим приложением (Swift/SwiftUI, Kotlin, Flutter)
  • Тестирование на 5+ устройствах и исправление багов
  • Помощь с публикацией в App Store / Google Play (если требуется)
  • Документация по интеграции и поддержка 2 недели после сдачи

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

Базовая маска (статичный 3D-меш, без анимации blendShapes) — 4–6 дней. Анимированная маска с face occluder и 3–5 blendShape реакциями — 2–3 недели. Запись видео + галерея масок с cloud-загрузкой — ещё 2–3 недели. Стоимость рассчитывается индивидуально после оценки вашей задачи. Получите консультацию — напишите нам, и мы пришлём примерное коммерческое предложение в течение дня.

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