Разработка мобильного AR-приложения для музея
Музейный AR работает в условиях, которые невозможно полностью контролировать: разное освещение в залах, витринное стекло перед экспонатами, посетители перекрывают камеру, старые устройства с ограниченным ARKit. Приложение должно быть надёжным в этих условиях — иначе посетитель злится, а не восхищается.
Правильно спроектированный музейный AR — это не просто «смотри на экспонат и видишь анимацию». Это интеграция с экспозицией, навигация по залам, офлайн-работа и доступность.
Технический стек для музейного AR
Два базовых сценария определяют архитектурный выбор:
Image Tracking — наводишь на экспонат или табличку, появляется дополненный контент. ARImageTrackingConfiguration — проще, не требует plane detection, работает через стекло витрины (если нет сильных отражений). Ограничение: нужны физические маркеры или высокотекстурированные изображения.
Location + Plane Detection — навигация по залу с AR-путеводителем. ARWorldTrackingConfiguration + ARGeoAnchor (для улицы) или собственная indoor positioning через Bluetooth Beacon / UWB. Сложнее, но даёт свободу перемещения.
На практике в музеях используют гибрид: image tracking для активации контента у конкретных экспонатов, plane detection + beacons для навигации между залами.
Image Tracking: детали реализации
Каждый AR-маркер — это ARReferenceImage с параметром physicalSize (реальный размер изображения в метрах). Неправильный physicalSize → ARKit неверно оценивает расстояние → контент появляется в неправильной позиции.
let referenceImage = ARReferenceImage(cgImage, orientation: .up, physicalWidth: 0.15) // 15 см
ARImageTrackingConfiguration.maximumNumberOfTrackedImages — ограничение на одновременно отслеживаемые изображения. Максимум: 4–8 (зависит от устройства). В зале с 50 экспонатами нельзя загрузить все 50 сразу. Решение: proximity detection через Bluetooth Beacons — активируем трекинг только для ближайших 5–6 экспонатов.
Качество маркеров: ARReferenceImage.validate() проверяет гистограмму контраста. Таблички с мелким текстом на белом фоне — плохие маркеры. Решение: специальный QR-код рядом с табличкой (высокая уникальность) или нанесение невидимого UV-маркера на рамку экспоната.
Контент: от 3D-моделей до видео
Музейный AR-контент — это не просто 3D-объект. Типичный набор для одного экспоната:
- 3D-реконструкция (как выглядел полностью, в цвете — например, античная статуя)
- Аннотации с фактами (hotspots)
- Анимация (движение механизма, процесс создания)
- Видеофрагмент (архивная съёмка, интервью с куратором)
AR-видео поверх экспоната — через VideoMaterial в RealityKit:
let videoURL = Bundle.main.url(forResource: "artifact_story", withExtension: "mp4")!
let player = AVPlayer(url: videoURL)
let videoMaterial = VideoMaterial(avPlayer: player)
planeEntity.model?.materials = [videoMaterial]
player.play()
Офлайн-работа критична. В музеях часто нет Wi-Fi в залах или он перегружен. Все AR-ресурсы должны быть доступны офлайн. Стратегия: при первом запуске (или при подключении к Wi-Fi) — фоновая загрузка контента для текущей экспозиции. BackgroundTasks framework для iOS, WorkManager для Android.
Размер пакета контента: 20–100 МБ на экспозицию — допустимо для одноразовой загрузки перед визитом.
Доступность и возрастные группы
Музей — публичное учреждение. Приложение должно работать для аудитории от 8 до 80 лет, на устройствах посетителей (не выданных музеем), в том числе старых.
Минимальные требования по устройствам: iOS 14+ (ARKit 4), Android 8.0+ с ARCore. Поддержка iPhone 6s — нет смысла, ARKit требует A9 чип и выше (iPhone 6s — граница поддержки, но plane detection работает плохо). Реальный минимум — iPhone 8 / iOS 14.
Dynamic Type для подписей в AR — через UIFont.preferredFont(forTextStyle:). Пользователи с крупным шрифтом системы должны видеть читаемые аннотации.
Аудиогид как замена AR — для пользователей без совместимых устройств или с ограниченным зрением: кнопка «Послушать» на каждом экспонате без необходимости AR.
Интеграция с музейной системой
CMS музея (обычно Axiell, MuseumPlus или кастомная) хранит данные экспонатов: инвентарные номера, тексты, изображения. Интеграция через REST API: при сканировании маркера — запрос по инвентарному номеру → получаем текст, мультимедиа. Кэшируем локально.
Для редактирования AR-контента без разработчиков — admin panel: куратор загружает 3D-модель, видео, текст → они привязываются к инвентарному номеру → при следующей синхронизации приложения посетители видят обновлённый контент.
Кейс
Исторический музей, 3 тематических зала, 120 экспонатов. Image tracking на QR-кодах рядом с табличками (100 маркеров активных одновременно через lazy loading). Контент: 3D-реконструкции для 30 ключевых экспонатов, текстовые аннотации для остальных. Интеграция с MuseumPlus через REST API. Офлайн-кэш при входе в зал через BLE beacons.
Главная проблема: витринное стекло с anti-reflective покрытием искажало AR-трекинг. Решение: маркеры вынесли на внешние боковые поверхности витрин, а не за стекло.
Сроки
| Объём | Сроки |
|---|---|
| MVP: 1 зал, image tracking, 20 экспонатов | 2–3 месяца |
| Полное приложение: 3+ зала, навигация, CMS-интеграция | 5–9 месяцев |
| Платформа с поддержкой нескольких музеев | 10–16 месяцев |
Стоимость рассчитывается после детального обсуждения экспозиции, требований к доступности и интеграций.







