AR/VR

Spatial Computing: Vision Pro

В 2007 году iPhone убрал кнопки и сделал экран главным инпутом. В 2024 Vision Pro убрал экран и сделал пространство главным инпутом. Это не итерация - это другая парадигма вычислений, где ОС существует в трёх измерениях.

  • **Хирурги Mayo Clinic** используют Vision Pro для визуализации МРТ в 3D прямо над пациентом во время операции
  • **Lufthansa** тестирует Vision Pro для обучения пилотов - тренажёр без физического кабины
  • **Foveated rendering** в Vision Pro экономит до 60% GPU-нагрузки - та же технология переходит в игровые GPU следующего поколения

Spatial OS: операционная система пространства

Первый день после выхода Vision Pro: пользователи запускают Safari - и браузер просто висит в воздухе перед диваном. Его можно сдвинуть, масштабировать, разместить рядом с окном. Это не трюк - это принципиально другая операционная система. **visionOS** - первая ОС, где «рабочий стол» является трёхмерным пространством комнаты.

В отличие от iOS и macOS, где окна живут на плоском экране, visionOS строит **Shared Space** - единое пространство, в котором одновременно работают несколько приложений. Каждое приложение получает свой объём (volume) или плоскость (window), которые якорятся к реальной геометрии комнаты через ARKit. Система понимает, где стол, где стены, и не позволяет окнам «провалиться» сквозь физические объекты.

Архитектура трёхуровневая: **SwiftUI** описывает логику и 2D-интерфейс, **RealityKit** рендерит 3D-объекты и физику, **ARKit** отслеживает пространство и предоставляет якоря. Три фреймворка взаимодействуют через единый граф сцены, и разработчику не нужно вручную синхронизировать координаты между ними.

**Ключевое отличие от HoloLens:** Microsoft создала отдельную ОС (Windows Holographic) поверх Windows. Apple встроила пространственность в саму ОС - visionOS это не «AR-режим», а базовая парадигма системы.

В visionOS несколько приложений одновременно работают в режиме Shared Space. Что обеспечивает якорение их окон к физическому пространству?

Immersive Spaces: уровни погружения

Apple придумала термин «Dial of Immersion» - регулятор погружения. Vision Pro не переключается между «реальным миром» и «VR» резко, как хлопнуть дверью. Вместо этого - плавный спектр от полностью открытой реальности до полного VR.

С точки зрения кода, **ImmersiveSpace** - это отдельная сцена (Scene) в App. Переход в неё осуществляется через `openImmersiveSpace` Environment action. Система гарантирует, что в один момент активна только одна ImmersiveSpace - нельзя одновременно запустить полный VR из двух приложений.

**Immersion style** задаётся декларативно через `.immersionStyle(selection: $style, in: .mixed, .progressive, .full)`. Modifier `.upperLimbVisibility(.hidden)` скрывает руки пользователя в full-режиме - по умолчанию они всегда видны для безопасности.

Два приложения пытаются одновременно открыть ImmersiveSpace в full-режиме. Что произойдёт?

Passthrough: реальность через камеру

Vision Pro не имеет прозрачных линз - снаружи нет оптики, которая пропускала бы свет напрямую. Вместо этого камеры снимают реальный мир, изображение обрабатывается, и результат выводится на дисплеи перед глазами. Этот процесс называется **video passthrough** (или VST - Video See-Through). Задержка от захвата до отображения составляет около 12 мс - именно это число Apple называла на WWDC, обосновывая отсутствие тошноты.

Для разработчиков passthrough управляется через **ARKitSession** с `WorldTrackingProvider`. Приложение не имеет прямого доступа к raw-кадрам камер по соображениям приватности - вместо этого ARKit предоставляет абстракции: меш комнаты, плоскости, якоря. Доступ к изображению с камеры возможен только в специфических сценариях через `CameraFrameProvider` (требует entitlement от Apple).

**EAC - Eye Accurate Correction:** passthrough автоматически компенсирует параллакс между позицией камер (снаружи устройства) и позицией глаз (внутри). Без этой коррекции объекты вблизи выглядели бы смещёнными, что разрушает иллюзию.

Почему разработчики visionOS не могут напрямую получить сырой кадр с камер passthrough?

Eye Tracking: взгляд как основной инпут

Vision Pro отказался от контроллеров. Главный инпут - взгляд плюс щипок пальцами. Система знает, куда смотрит пользователь, с точностью до нескольких градусов, и когда он сжимает пальцы - это интерпретируется как «нажатие» на то, на что смотрит взгляд. Это делает интерфейс принципиально других: не нужно двигать рукой, чтобы попасть в кнопку.

Eye tracking реализован через инфракрасные светодиоды и камеры, направленные на глаза пользователя. Во время настройки устройства проходит калибровка - пользователь смотрит на ряд точек, и система строит персональную модель его глаз. Данные о направлении взгляда никогда не покидают устройство - это явная политика Apple, связанная с тем, что направление взгляда является биометрией.

**Foveated rendering:** система знает, куда смотрит глаз, и рендерит центральную область (фовеа) с максимальным качеством, а периферию - с меньшим разрешением. Это экономит GPU до 60% мощности без видимого ухудшения картинки.

Vision Pro - это VR-гарнитура с AR-режимом

visionOS - это пространственная ОС. По умолчанию пользователь видит реальный мир через passthrough; VR (full immersive) - это опциональный режим для конкретных сценариев

Apple намеренно позиционировала Vision Pro не как «VR», а как «spatial computer». Приложения по умолчанию работают в Shared Space (в реальном мире), а полное погружение требует явного перехода в ImmersiveSpace

Почему данные eye tracking не покидают Vision Pro и недоступны приложениям напрямую?

Spatial Computing: Vision Pro

  • visionOS - первая ОС с трёхмерным рабочим столом (Shared Space), где окна якорятся к реальной геометрии через ARKit
  • ImmersiveSpace предоставляет спектр погружения от mixed до full VR; только одно пространство активно одновременно
  • Passthrough - video see-through через камеры с задержкой ~12 мс; прямой доступ к кадрам ограничен по соображениям приватности
  • Eye tracking + pinch - основной инпут без контроллеров; данные взгляда не покидают устройство
  • Foveated rendering рендерит фовеальную зону с полным качеством, периферию - с меньшим разрешением

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

Vision Pro строится на фундаменте AR/VR концепций из предыдущих уроков:

  • ARKit: фундамент трекинга — ARKit обеспечивает world tracking и якоря для visionOS
  • Mixed Reality и passthrough — Концепция VST passthrough раскрыта в контексте MR
  • Рендеринг в XR — Foveated rendering и оптимизации GPU

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

  • Какие сценарии использования выигрывают от отсутствия физических контроллеров, а какие проигрывают?
  • Если eye tracking является биометрией и не передаётся приложениям - как это влияет на возможности accessibility?
  • Passthrough с задержкой 12 мс против оптических линз без задержки: в каких задачах разница критична?

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

  • sd-01-intro
Spatial Computing: Vision Pro

0

1

Войти