AR/VR

Архитектура XR-системы: рендеринг, трекинг, ввод

Apple Vision Pro стоит 3500 долларов. Его R1-чип обрабатывает входящее видео за 12 миллисекунд - вдвое быстрее человеческого восприятия. Meta потратила 20 миллиардов долларов на Metaverse за три года. Это не просто дорогие очки - это новая платформа с собственной архитектурой, отличающейся от любой прошлой.

  • Quest 3: 120fps stereo рендеринг с ASW и foveated rendering на Snapdragon XR2 Gen 2
  • Apple Vision Pro: R1-чип обрабатывает 12 camera streams + sensor fusion за 12мс
  • Meta Presence Platform: scene understanding строит 3D карту комнаты для AR якорей
  • OpenXR 1.0: поддерживается Meta, Valve, Microsoft, Sony - один API для 95% рынка XR

Rendering Pipeline в XR: stereo, reprojection, foveated

Meta Quest 3 рендерит 120 кадров в секунду для каждого глаза отдельно. 2560x2832 пикселей суммарно. Всего у системы 8.3мс на один кадр. Это меньше, чем один frame на 144Hz мониторе. И при этом нельзя уронить ни одного кадра - иначе тошнота.

**XR Rendering Pipeline** отличается от обычного 3D рендеринга по трём ключевым пунктам: рендеринг двух перспектив (stereo), компенсация движения головы между кадрами (reprojection), и адаптивное качество по области взгляда (foveated rendering).

**Asynchronous SpaceWarp (ASW) / ATW** - технология, спасающая кадры при провале FPS. Если приложение не успевает отрендерить кадр за 8.3мс, runtime перепроецирует предыдущий кадр с учётом нового положения головы. Пользователь видит 120fps, приложение рендерит 60fps. Работает только для движений головы, но не для движений объектов в сцене.

**Multiview Rendering** - расширение Vulkan/OpenGL, позволяющее рендерить обе перспективы за один draw call. Вместо двух отдельных рендер-пассов GPU обрабатывает обе камеры параллельно. Экономия CPU overhead: 40-50%. Поддерживается на всех современных XR GPU начиная с Mali-G78.

Что такое Asynchronous Spacewarp (ASW) в XR системах?

Системы трекинга: inside-out, hand и eye tracking

**Inside-out tracking** - гарнитура отслеживает себя сама, без внешних камер. Quest 3 использует 4 монохромные камеры по 1MP каждая + IMU (акселерометр + гироскоп). SLAM алгоритм строит карту помещения в реальном времени и находит гарнитуру в ней. Никаких маяков, никакой настройки - работает где угодно.

**Hand Tracking** - отслеживание 26 суставов каждой руки без контроллеров. Quest использует те же 4 камеры + нейросеть (MediaPipe Hands) для детекции и предсказания позиции суставов. 30fps на встроенном Snapdragon, 60fps на Quest 3. Ограничение: работает хуже при плохом освещении и самозакрытиях (occlusion).

**Eye Tracking** - отслеживание точки взгляда для foveated rendering и social presence. Apple Vision Pro использует инфракрасные диоды и камеры для определения gaze direction с точностью 5 градусов. Применений несколько: (1) foveated rendering экономит 40% GPU, (2) аватары смотрят в глаза в MR-конференциях, (3) accessibility для людей с ограниченными возможностями.

Чем inside-out tracking отличается от outside-in tracking (как в PS Move)?

Input System: контроллеры, жесты и голос

**XR Input** сложнее обычного 3D input: пользователь находится в 3D пространстве, его руки - это 6DoF манипуляторы, а интерфейс может быть на любой поверхности мира. OpenXR стандартизирует это через абстракцию Action - независимо от платформы и контроллера.

**Ray casting vs near-field interaction.** Для объектов вдали - луч из контроллера (ray casting, Unity XR Ray Interactor). Для близких объектов - физическая имитация касания (near-field, Direct Interactor). Переключение между режимами происходит автоматически по расстоянию. Apple Vision Pro добавил третий режим - eye+pinch: взгляд выбирает объект, щипок подтверждает.

Почему OpenXR важен для разработки XR приложений?

Платформенный стек: Meta, Apple, OpenXR

2024 год. Три крупных XR платформы с несовместимыми SDK. Meta SDK - Snapdragon-специфичные оптимизации, scene understanding, social API. Apple visionOS - spatial computing, SharePlay, EyeSight. OpenXR - наименьший общий знаменатель, но портируемость. Выбор платформы = выбор ограничений.

**visionOS** вводит новую концепцию: **spatial computing** вместо VR/AR. Окна приложений существуют в физическом пространстве, не блокируя его. Нет понятия "сессии" - приложения всегда embedded в реальный мир. SwiftUI с 3D расширениями (RealityKit) + ARKit для anchor placement. Главное ограничение: нет сайдлоадинга, строгий App Store.

VR/AR разработка требует совершенно другого стека чем обычная 3D разработка

XR разработка строится на тех же движках (Unity, Unreal) и концепциях 3D, добавляя специфичные API для трекинга, стерео-рендеринга и ввода

Unity XR Plugin Framework и Unreal XR система абстрагируют XR-специфику. Разработчик 3D игр может начать XR разработку, изучив только OpenXR Input, stereo camera setup и performance budgets.

Какую стратегию разработки рекомендуют для поддержки нескольких XR платформ?

Ключевые идеи

  • XR frame budget: 8.3мс при 120fps - stereo, foveated rendering, lens distortion correction
  • ASW/ATW: репроекция предыдущего кадра для сохранения плавности при просадках FPS
  • Inside-out tracking: SLAM на 4 камерах + IMU, 6DoF без внешних маяков
  • OpenXR: кроссплатформенный стандарт - один код для Quest, PSVR2, SteamVR
  • Eye tracking + foveated rendering = 40% экономия GPU при неизменном качестве

Связанные темы

XR система архитектурно связана с GPU, трекингом и платформенными API.

  • GPU архитектура — Stereo rendering и foveated rendering - GPU-intensive операции на XR платформах
  • Трекинг и SLAM — 6DoF трекинг головы и рук - основа любой XR системы
  • Производительность XR — Frame budget и оптимизации рендеринга определяют дизайн системы

Вопросы для размышления

  • Почему для XR нельзя использовать conventional temporal anti-aliasing (TAA) без модификаций?
  • Как scene understanding (построение 3D карты комнаты) отличается от SLAM? Для каких XR применений нужно именно scene understanding?
  • Что такое 'compositor' в XR стеке и почему приложения не рендерят напрямую на дисплей?

Связанные уроки

  • arvr-14 — Производительность XR - фундамент для понимания требований системы
  • arvr-04 — VR рендеринг определяет требования к rendering pipeline
  • arvr-03 — Трекинг - ядро XR системной архитектуры
  • arch-15-gpu-architecture — GPU архитектура лежит в основе XR rendering pipeline
  • arvr-16 — Знание системы - необходимо для собеседования
  • sd-01-intro
Архитектура XR-системы: рендеринг, трекинг, ввод

0

1

Войти