AR/VR

VR Interaction Design

2016 год. HTC Vive выходит с room-scale tracking. Впервые можно ходить в VR. Valve Index добавляет finger tracking. Meta Quest 3 убирает контроллеры совсем - только руки. Семь лет эволюции - от «держи пульт» до «просто подними руку». Но за каждым жестом стоит инженерия: 6DOF IMU, ML-модели keypoint detection, locomotion компромиссы между immersion и физиологией. Interaction design в VR - это не про эффектные анимации. Это про то, что делает присутствие реальным.

  • Meta Quest: 20+ млн проданных устройств, hand tracking используется в Meta Horizon Worlds и VR-совещаниях
  • Apple Vision Pro: eye tracking + pinch gesture как primary interaction - без контроллеров вообще
  • VR в медицине: хирургическая тренировка с haptic feedback на 7DOF роботе (Fundamental Surgery, Osso VR)
  • Beat Saber: 10+ млн копий проданных именно потому, что нет locomotion - нет sickness

6DOF-контроллеры: анатомия виртуальных рук

2016 год. HTC Vive выходит с room-scale tracking и двумя контроллерами. Впервые руки существуют в VR. Valve Index в 2019-м добавляет finger tracking - каждый палец отслеживается отдельно. Meta Quest 3 в 2023-м предлагает работу вообще без контроллеров. Семь лет эволюции - от «держи пульт» до «просто подними руку». Но контроллеры никуда не ушли: у каждого подхода своя ниша.

**6DOF (six degrees of freedom)** - контроллер отслеживает и позицию (x, y, z), и ориентацию (pitch, yaw, roll). Внутри: **IMU** (инерциальный измерительный блок) - гироскоп + акселерометр для ориентации, и **оптическое отслеживание** для позиции. Два подхода к оптике: **inside-out** (камеры на самом шлеме следят за контроллерами - Meta Quest) и **outside-in** (внешние базовые станции - Valve Index Lighthouse). Внутри корпуса также: тригер, грип, стик, кнопки A/B и **haptic actuator** - LRA (linear resonant actuator), вибромотор с контролем частоты и амплитуды.

**OpenXR** - открытый стандарт от Khronos Group (2019). Единый API для всех платформ: Meta, Valve, Pico, Microsoft HoloLens. До OpenXR каждый вендор имел свой SDK - код под Oculus не работал на Vive. Теперь один `xrCreateSession()` запускается на любом шлеме.

**Unity XR Interaction Toolkit** абстрагирует конкретный контроллер через `InputActionReference`. Вместо `OVRInput.Get(OVRInput.Button.PrimaryIndexTrigger)` используется `triggerAction.action.ReadValue<float>()` - работает на любом OpenXR-совместимом устройстве без изменений.

Какой стандарт позволяет написать VR-приложение один раз и запустить его на Meta Quest, Valve Index и Pico без изменений кода?

Hand Tracking: компьютерное зрение вместо физических кнопок

Hand tracking точнее контроллеров по позиции рук, но хуже по ощущениям - нет тактильной обратной связи, нет физических кнопок. Meta Quest 3 поддерживает оба режима именно потому что у каждого есть ниша. Для медицинских симуляторов - контроллеры с haptics, для коллаборативных пространств - hand tracking. Это не конкуренция, это дополнение.

Технически: depth-камеры на шлеме снимают руки, **ML-модель** (обученная на миллионах примеров) предсказывает положение **21 ключевой точки** скелета руки в реальном времени. **MediaPipe HandLandmarker** - открытая реализация Google, работает на CPU смартфона. **Meta Quest Hand Tracking 2.0** - точность sub-centimeter при 60 fps. Основной жест взаимодействия - **pinch** (большой + указательный палец), аналог клика мышью.

**Ограничения hand tracking**: 1) Окклюзия - руки за спиной или перекрывающие друг друга теряются. 2) Дополнительная задержка 5-10 мс по сравнению с контроллерами. 3) Нет haptics - нет ощущения нажатия кнопки. 4) Точность падает при быстрых движениях. Именно поэтому профессиональные VR-тренажёры с хирургическими манипуляторами используют специализированные контроллеры с force feedback, а не hand tracking.

Почему Meta Quest 3 поддерживает как hand tracking, так и контроллеры - вместо того чтобы полностью перейти на hand tracking?

Locomotion: как перемещаться без укачивания

Teleportation в VR - это не «плохое» решение. Это сознательный компромисс: устраняет locomotion sickness за счёт нарушения присутствия. Большинство успешных VR-игр используют именно teleportation - Lone Echo, Superhot VR, Half-Life: Alyx опционально. Beat Saber решил проблему иначе: полностью убрал locomotion - просто стоишь на месте и машешь саблями. 10+ миллионов копий. Иногда лучшее решение - не делать.

Основные паттерны: **Teleportation** - дуговой луч указывает точку, мгновенный перенос, snap rotation для разворота. Устраняет sickness, жертвует immersion. **Smooth locomotion** - стик для движения, как в FPS. Максимальный immersion, максимальный риск sickness. **Arm-swinger** - размахивание руками имитирует ходьбу, меньше sickness чем smooth. **Redirected walking** - система незаметно поворачивает виртуальное пространство пока идёшь прямо, позволяя обходить комнату-«беговую дорожку» в ограниченном физическом пространстве.

**Правило комфорта от Oculus**: всегда предлагать оба варианта (teleport + smooth locomotion) с настройками. Comfort vignette - затемнение периферии при движении - снижает sickness на 30-40% для большинства пользователей при smooth locomotion. Snap rotation (45-градусные шаги) вместо smooth поворота - ещё одно стандартное решение.

Beat Saber продался тиражом 10+ миллионов копий без каких-либо проблем с locomotion sickness. Как игра решила эту проблему?

Cybersickness: физиология дискомфорта и инженерные решения

2016 год, первые демо HTC Vive. 30% пользователей испытывали тошноту через 5-10 минут. Cybersickness - не психологическая слабость. Это физиологический ответ на конфликт между вестибулярной системой (ты не движешься) и зрительной (глаза видят движение). Мозг интерпретирует это несоответствие как отравление и включает защитный рефлекс. Quest 3: motion-to-photon latency 12 мс. Valve Index: 11 мс при 144 Гц. Каждая миллисекунда - разница между комфортом и тошнотой.

Четыре основных источника sickness: **Vection** - зрительное ощущение движения без реального перемещения тела. **Latency** - задержка >20 мс между движением головы и обновлением картинки. **FOV** - периферийное зрение особенно чувствительно к движению, широкий FOV при locomotion усиливает конфликт. **Flicker** - частота обновления <90 Hz создаёт мерцание, воспринимаемое на периферии. Решения: статичные comfort frames (элементы HUD, привязанные к голове), сужение FOV во время движения (vignette), snap rotation, 90+ Hz дисплей, корректная IPD-калибровка.

**IPD калибровка**: IPD (Inter-Pupillary Distance) - расстояние между зрачками, среднее ~63 мм, но диапазон 54-74 мм. Неправильная IPD приводит к двоению, головной боли и усилению sickness - даже при правильном framerate и latency. Meta Quest 3 имеет механическую регулировку IPD в трёх позициях. Valve Index - плавная настройка. Перед длительными сессиями - обязательная калибровка.

VR sickness проходит с практикой - достаточно «привыкнуть»

Адаптация снижает некоторые симптомы, но не устраняет физиологический конфликт. Дизайн должен устранять первопричину (visual-vestibular mismatch), а не рассчитывать на адаптацию пользователя.

Некоторые пользователи действительно адаптируются к mild sickness. Но тяжёлые случаи не проходят, а полагаться на адаптацию означает потерять 20-30% аудитории ещё при первом запуске. Дизайн-решения (teleport, vignette, snap rotation) работают сразу для всех - без периода «привыкания».

Что является основной физиологической причиной cybersickness в VR?

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

  • **6DOF-контроллер** = IMU (ориентация) + оптическое отслеживание (позиция) + haptics. **OpenXR** - единый API для всех платформ.
  • **Hand tracking** точнее по позиции, но проигрывает контроллерам по haptics и надёжности при окклюзии. Meta Quest 3 поддерживает оба режима.
  • **Locomotion** - компромисс: teleportation устраняет sickness ценой immersion; smooth locomotion максимизирует присутствие за счёт комфорта. Beat Saber решил задачу, убрав locomotion совсем.
  • **Cybersickness** - visual-vestibular mismatch. Порог latency: 20 мс. Решения: vignette, snap rotation, 90+ Hz дисплей. Адаптация пользователя - не дизайн-решение.

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

VR interaction design строится на рендеринге, computer vision и опирается на знания предыдущих уроков AR/VR.

  • Введение в XR: AR, VR, MR — Базовые понятия XR - фундамент для interaction design
  • AR Tracking — Технологии отслеживания (inside-out, outside-in) используются и в VR-контроллерах
  • Spatial Computing — Spatial UI паттерны прямо применяются в VR interaction
  • VR Rendering — Latency и framerate напрямую влияют на cybersickness
  • Computer Vision — Hand tracking основан на CV: keypoint detection, MediaPipe, depth cameras
  • Computer Graphics — Post-processing эффекты (vignette, comfort frames) - часть графического пайплайна

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

  • Apple Vision Pro полностью убрал физические контроллеры, сделав eye tracking + pinch основным методом ввода. Какие категории приложений от этого выигрывают, а какие проигрывают по сравнению с Quest-контроллерами?
  • Redirected walking позволяет незаметно поворачивать виртуальное пространство, пока пользователь идёт прямо. Каков предел «незаметности» и как это ограничение влияет на размер виртуальных пространств, которые можно исследовать в комнате 4x4 метра?
  • Beat Saber решил проблему locomotion sickness, полностью убрав перемещение. Какие жанры игр принципиально требуют locomotion - и существуют ли для них альтернативные дизайн-решения, или comfort всегда будет компромиссом?

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

  • cg-01
VR Interaction Design

0

1

Войти