Перед агентством Soft Media Group была поставлена задача по разработке VR-приложения (приложения виртуальной реальности) для дистанционного просмотра объектов недвижимости с эффектом полного погружения. По мере развития сервиса у клиента возникла критическая необходимость в единой системе управления контентом, подписками и клиентскими устройствами.
О проекте
Заказчик проекта
Проект создан для Mramoure — студии, специализирующейся на VR (виар) -дизайне интерьеров, профессиональной 3D-визуализации и разработке интерактивных презентаций для архитекторов, застройщиков, риелторов и туристических агентств для демонстрации объектов в виртуальной реальности.
Задачи проекта
- Создать единую панель администрирования для централизованного управления VR-платформой (платформой виртуальной реальности)
- Обеспечить автоматический биллинг подписок с контролем сроков, продлением и блокировкой доступа
- Реализовать умный механизм обновлений контента с контролем версий и привязкой к подписке
- Разработать стандартизированный REST API (программный интерфейс) для взаимодействия клиента с сервером
- Внедрить модульную архитектуру backend (серверной части) на ASP.NET Core с Docker-контейнеризацией
- Создать интуитивную админ-панель с ролевым доступом и полным аудитом действий

Исходные данные и вызовы
Клиент собирал туры в сторонней десктопной программе, которая была дорогостоящей в обслуживании. Мобильное приложение для очков отсутствовало, а управление контентом осуществлялось вручную: файлы передавались по проводу, версии путались, клиенты получали устаревшие сборки. Подписки велись в разрозненных таблицах, что исключало возможность быстрого контроля доступа. Перед агентством стояла задача создать полноценную экосистему «под ключ» — от графики до биллинга и облачного управления.
Ход работы и реализованные решения
Команда агентства включала разработчиков, backend- и frontend-инженеров (бэкенд и фронтенд), специалистов по инфраструктуре. Проект реализован на стеке Unity с XR Interaction Toolkit (набором инструментов для виртуальной реальности) для клиентской части и .NET 9.0 с ASP.NET Core (платформа для разработки приложений) для серверной.
1. Единая система управления контентом
Разработана административная панель на Razor UI (интерфейсе для .NET), объединившая управление пользователями, подписками, контентом и устройствами в одном окне. Реализованы:
- Централизованная модерация контента с загрузкой туров в формате архивов
- Контроль версий с привязкой к подписке и проверкой актуальности
- Безопасные ссылки на скачивание с прогрессом загрузки
- Ролевой доступ (администратор/менеджер) с полным аудитом действий
2. Автоматический биллинг подписок
Внедрена система управления подписками с проверкой сроков, автоматическим продлением и блокировкой просроченных доступов. Устройство автоматически синхронизируется с сервером по Wi-Fi (Вай Фай), запрашивает статус подписки и получает доступ к контенту. При потере соединения облачный раздел блокируется, но скачанные локально туры продолжают работать в офлайн-режиме.
3. Умный механизм обновлений
Клиенту больше не нужно физически подключать очки по проводу для загрузки туров. Устройство синхронизируется с админкой по Wi-Fi (Вай Фай): при покупке новых очков приложение автоматически делает запрос на сервер, и после активации устройства по идентификатору модератором контент скачивается напрямую в шлем.
4. Модульная архитектура backend (серверная часть)
Серверная часть построена на ASP.NET Core (фреймворк) с модульной архитектурой: надёжные слои авторизации, управления подписками, контента и API (АПИ) для клиента. Использована Docker (Докер)-контейнеризация для единых окружений разработки, тестирования и продакшена (API, PostgreSQL, хранилище). Это обеспечило быстрый запуск и отсутствие проблем с развертыванием.
5. Стандартизированный REST API
Разработан полноценный REST API с JWT-авторизацией (токенами безопасности), мгновенной проверкой подписок, выдачей обновлений, метаданных и файлов. API (АПИ) оптимизировано для слабого интернета — стабильная работа даже в сложных сетевых условиях.
6. VR-приложение (виртуальной реальности) для очков PICO (ПИКО)
Клиентская часть реализована на Unity (движок) с подключением локального Pico OpenXR SDK (набора разработчика). Проект PICO (ПИКО)-ориентирован, но архитектура на Unity XR (Юнити Икс-Ар) позволяет в перспективе адаптировать решение под другие шлемы. Интерфейс спроектирован специально под виртуальную реальность: учтены ограничения поля зрения, минимизированы движения головы, избежаны резкие переходы.
7. Оптимизация работы с графикой 8K
Фото и видео открываются в разрешении 8K и весят колоссально (один тур может достигать 180 МБ). Изначально распаковка убивала производительность. Решение — внедрение системы из двух кешей: тонкий кеш и толстый кеш.
8. Работа со стереоскопией и кубами
Внутри клиентского архива лежат не готовые панорамы, а грани кубов (по 6 штук на каждую панораму: спереди, сзади, лево, право, верх, низ). Алгоритм берёт эти исходные тайлы и собирает их в текстуры. Если в XML (язык разметки) стоит признак стерео, алгоритм собирает уже 12 граней, создавая два куба для левого и правого глаза отдельно. Это обеспечивает эффект полного погружения со стереоскопией и пространственным звуком.

Основные сложности, которые удалось преодолеть
- Тяжёлый кеш 8K давил на память и процессор — решено через асинхронные потоки, фоновую генерацию и двухуровневую систему кеша
- Стартовые зависания из-за тяжёлого пути хранения/кеша — вынесен каталог в асинхронный лёгкий проход, превью и размеры сделаны ленивыми/событийными
- Разрешения PICO OS (ПИКА ОС) — операционная система очков не парсит тур самостоятельно, вся распаковка реализована на уровне приложения с учётом специфики Android external storage (внешнее хранилище)
- Офлайн-режим — при потере интернета облачные туры блокируются, но локальные продолжают работать без перебоев
- Стереоскопия — необходимость обработки 12 граней куба для двух глаз отдельно с оптимизацией под ограниченные ресурсы очков

Результаты в цифрах и фактах
- Единая панель администрирования для централизованного управления приложением
- Надёжное взаимодействие клиента с backend (бэкенд)-сервисом через унифицированный REST API (РЕСТ АПИ)
- Автоматизация биллинга — контроль подписок, продление, блокировка просрочки, полный аудит
- Умные обновления — контент, подписки и доступы обновляются централизованно и мгновенно, версионирование гарантирует актуальность материалов
- Модульная архитектура на .NET 9 с Docker (НЕТ 9 с Докер) обеспечивает стабильность, простое развёртывание и масштабируемость
- Безопасность — ролевые модели и логирование обеспечивают прозрачность действий, система стабильно работает даже при высокой нагрузке
- Оптимизация 8K — двухуровневый кеш позволяет работать с тяжёлыми турами без зависаний
- Сокращение ручных операций: экономия десятков рабочих часов каждую неделю
Бизнес-эффект для клиента
- Демонстрация объектов в любое время и месте — риелторы и застройщики могут показывать объекты без зависимости от логистики, не нужно организовывать поездки или ждать физического доступа к строящемуся объекту
- Снижение операционных расходов — меньше личных встреч, меньше повторных показов, нет необходимости в постоянных выездных фотосъёмках. Ручные процессы сведены к нулю
- Расширение географии бизнеса — клиент может презентовать объекты инвесторам, арендаторам и покупателям из других городов и стран. Это открывает доступ к глобальному капиталу, который раньше был недоступен из-за удалённости
- Повышение лояльности клиентов — опыт со стереоскопией и пространственным звуком на голову выше традиционных 2Д-фото или простых моноскопических туров. Такое качество сервиса мгновенно выделяет клиента на фоне конкурентов и повышает его статус в глазах покупателей
- Масштабируемая платформа — благодаря модульной архитектуре решение можно быстро адаптировать под смежные рынки: музеи и галереи, туризм, образование, автосалоны. В перспективе возможна интеграция с нейросетями для виртуальных примерочных
- Фундамент для роста — клиент получил не разовое решение, а полноценную экосистему, которую можно лицензировать как самостоятельный продукт

