Впервые на русском: Документация Unity для разработчиков. Пользовательские интерфейсы для виртуальной реальности

Продолжаем публикацию эксклюзивной информации для разработчиков Unity. Новый раздел посвящён пользовательским интерфейсам для виртуальной реальности.

  1. Документация Unity для разработчиков:
    1. Обзор виртуальной реальности
    2. Проекты сэмплов для виртуальной реальности
    3. Начало работы с VR Development. Основы
    4. Утилиты Oculus Unity
    5. Начало работы с VR Development. Создание первого проекта виртуальной реальности
    6. Начало работы с VR Development. Полезная информация для разработки виртуальной реальности
    7. Обзор VREyeRaycaster, VRInput и VRInteractiveItem
    8. Обзор SelectionRadial и SelectionSlider
    9. Примеры взаимодействия в VRSampleScenes. Взаимодействия в Menu scene
    10. Примеры взаимодействия в VRSampleScenes. Взаимодействие в Лабиринте
    11. Примеры взаимодействия в VRSampleScenes. Взаимодействие Лётчика
    12. Примеры взаимодействия в VRSampleScenes. Взаимодействие в Тире 180 и Тире 360
    13. Вращение и позиционирование головы в виртуальной реальности
    14. Взаимодействие с тачпадом и клавиатурой во время игры в виртуальной реальности
    15. Примеры VRInput в VR Samples
    16. Пользовательские интерфейсы для виртуальной реальности
    17. Взаимодействие с пользовательским интерфейсом
    18. Свободное сглаживание текста для виртуальной реальности
    19. Движение в виртуальной реальности
    20. Движение в сценах VR Sample
    21. Старт проекта виртуальной реальности. DK2
    22. Старт проекта виртуальной реальности на Gear VR
    23. Публикация в магазине Oculus
    24. Оптимизация виртуальной реальности в Unity. Введение

При разработке пользовательских интерфейсов для виртуальной реальности есть ряд вещей, которые следует учитывать, которые, возможно, не были выявлены в традиционных сценариях проектирования контента. Здесь мы рассмотрим некоторые проблемы и возможности, предоставляемые вам в качестве разработчика виртуальной реальности, и обсудим некоторые из аппаратных практик проектирования используемых интерфейсов для нового носителя.

Разрешение и внешний вид пользовательского интерфейса

Поскольку разрешение на DK2 составляет 1920×1080 (960×1080 для каждого глаза), а у Gear VR –  2560×1440 (1280×1440 для каждого глаза), это может привести к некоторой заметной пикселизации для всего, что занимает несколько пикселей по ширине или высоте.

Особо следует отметить элементы пользовательского интерфейса; имейте в виду то, как они будут отображаться на экране. Один из подходов – использование больших или полужирных шрифтов и проектирование пользовательского интерфейса без тонких линий, которые могут стать неровными при просмотре в виртуальной реальности.

Типы пользовательского интерфейса
Не диегетический интерфейс

В проектах, отличных от виртуальной реальности, пользовательский интерфейс часто накладывается поверх экрана, чтобы показывать такие параметры, как здоровье, показатели игры и т.д. Это то, что мы часто называем HUD («лобовой» дисплей). Это также известно как не диегетический интерфейс – он не существует в реальном мире, но имеет смысл для игрока в контексте просмотра игры.

Этот термин также используется в фильмах для такой вещи, как не диегетический звук – это может быть музыка в фильме или телешоу. В то время как диегетический звук является тем, что имеет смысл услышать на основе того, что вы видите, например, на основе диалога персонажа или звуковых эффектов.

В Unity добавление пользовательского не диегетического интерфейса обычно выполняется с помощью Screen Space -> Overlay или Screen Space – режимов рендеринга камеры на UI Canvas.

Этот подход обычно не работает в виртуальной реальности – наши глаза не могут сосредоточиться на чем-то таком близком, а Screen Space-Overlay не поддерживается в Unity VR.

Пространственный интерфейс

Вместо этого нам обычно нужно позиционировать наш пользовательский интерфейс в самой среде, используя режим рендеринга World Space Canvas. Это позволит нашим глазам сосредоточиться на пользовательском интерфейсе. Это называется пространственным интерфейсом.

Размещение интерфейса в мире также требует некоторого внимательного рассмотрения. Размещение его слишком близко к пользователю может вызвать напряжение глаз, а слишком далеко – может показаться, что всё сосредотачивается на горизонте – это может работать в наружной среде, но не в маленькой комнате. Вам также необходимо соответствующим образом масштабировать размер пользовательского интерфейса и, возможно, размещать динамически в зависимости от ваших потребностей.

Если возможно, лучше разместить свой пользовательский интерфейс на удобном расстоянии чтения и соответствующим образом масштабировать его. Смотрите пример интерфейса пользователя в главном меню: он расположен на расстоянии нескольких метров, а текст и изображения большие и удобные для просмотра.

Если вы позиционируете пользовательский интерфейс на определенном расстоянии от пользователя, вы можете найти обрезку пользовательского интерфейса в других объектах. Взгляните на Сетку в разделе «Взаимодействие в виртуальной реальности», где сказано о том, как изменить шейдер, чтобы рисовать тени поверх других объектов, или можно просто использовать шейдер, включенный в VR Samples. Этот шейдер может использоваться с текстом, если вам также необходимо предотвратить его срез.

Многие разработчики сначала присоединяют пользовательский интерфейс к камере, таким образом, когда игрок перемещается вокруг пользовательского интерфейса, он останется в фиксированном положении. Хотя это может быть удобно для сетки или чего-то малого, к случае с более крупными элементами пользовательского интерфейса это часто приводит к эффекту, будто у вас газета перед лицом, когда вы смотрите вокруг, что может привести к дискомфорту пользователя или даже вызвать тошноту. Взгляните на пользовательский интерфейс в Тире 360 (Shooter 360 (Target Arena)), где пользовательский интерфейс будет перемещаться в поле зрения после короткой задержки, позволяя пользователю осмотреться и ознакомиться с окружающей средой без элемента пользовательского интерфейса, закрепленного в их поля зрения, скрывая интерфейс от просмотра.

Хотя виртуальная реальность предоставляет нам возможность исследовать захватывающие 360-градусные среды, иногда вам может потребоваться указать пользователю, что он должен смотреть в строго определённом направлении. В некоторых наших сценах мы используем стрелки в виртуальном мире, чтобы помочь привлечь внимание пользователя к нужному направлению. Стрелки исчезают в зависимости от направления, к которому прибегает пользователь.

Стрелки можно найти в сборнике GUIArrows и легко использовать повторно. Они работают, сравнивая угол местоположения головы по сравнению с желаемым направлением. Если голова находится за пределами предопределенного угла (см. Show Angle в GUIArrows  на картинке), тогда стрелки будут исчезать. Когда пользователь будет в нужном направлении двигаться, стрелки начнут исчезать.

Диегетический интерфейс

Альтернативой пространственному интерфейсу является тот, в котором элементы в самой среде отображают информацию для пользователя. Это могут быть рабочие часы на стене, телевизор, компьютерный дисплей, мобильный телефон или голографический дисплей на футуристическом пистолете. Это называется диегетическим интерфейсом.

Взгляните на пользовательский интерфейс на корабле в сцене Лётчика (Flyer) или на пистолете в сценариях Тира (Shooter (Target)):

Хотя это не может считаться строго диегетическим пользовательским интерфейсом, наличие интерфейса, прикрепленного к объекту, дает разумное понимание того, как в Unity могут работать диегетические пользовательские интерфейсы.

Подробный анализ обоих типов пользовательского интерфейса – без ссылки на виртуальную реальность – можно найти в этой статье на GamaSutra.

 

Примечание: Данный материал представлен для ознакомления, при перепечатывании ссылка на оригинал обязательна. Если вы хотите принять участие в помощи проекту, пишите на editor@vrgeek.ru

Если вы разработчик и вы хотите продолжить свою карьеру в лучших компаниях России, пишите на editor@vrgeek.ru с пометкой «Работа мечты», и мы поможем вам с этим.