Впервые на русском: Документация Oculus для разработчиков. Руководство ПК SDK для разработчика. Контроллеры Oculus Touch

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

Документация Oculus для разработчиков:

  1. Введение в рекомендации
  2. Бинокулярное зрение, стереоскопическая визуализация и индикаторы глубины
  3. Поле зрения и масштаб
  4. Методы рендеринга
  5. Движение
  6. «Болезнь симуляции»
  7. Пользовательский интерфейс
  8. Пользовательский ввод и навигация
  9. Заключение
  10. Введение в SDK для ПК
  11. Руководство разработчика
  12. Руководство по началу работы с ПК SDK
  13. Руководство ПК SDK для разработчика. Интеграция LibOVR
  14. Инициализация и перечень сенсоров
  15. Рендеринг в Oculus Rift
  16. Расширенная настройка рендеринга
  17. Управление связью с виртуальной реальностью
  18. Система безопасности Oculus Guardian
  19. Аудио Oculus Rift
  20. Контроллеры Oculus Touch

Чтобы оставаться в курсе новостей о виртуальной реальности, подписывайтесь на наш Telegram!

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

Примечание: Для того, чтобы просмотреть требования к приложениям, перейдите на страницу https://developer.oculus.com/distribute/latest/concepts/publish-rift-app-submission/

Основы ввода, рук и контроллеров

При разработке приложений, использующих Oculus Touch, рассмотрите следующее:

  • Если ваше приложение поддерживает несколько методов ввода (например, Oculus Touch, контроллер Xbox 360 и Oculus Remote), используйте ovrControllerType_Active для того, чтобы определить, какой из них используется. Вы также можете использовать эту функцию для того, чтобы определить, используется один или оба сенсорных контроллера. Некоторые приложения отображают сенсорные контроллеры по-разному (например, как руки или контроллеры) в зависимости от состояния их использования. Для получения дополнительной информации см. этот раздел и https://developer.oculus.com/doc/1.14-libovr/_o_v_r___c_a_p_i_8h.html.
  • Если у вас в приложении нет необычного варианта использования, используйте Avatar SDK для отображения рук и/или контроллеров высокого качества в вашем приложении.
  • Используйте кнопку захвата для того, чтобы произвести действие хватания и удержания. Несмотря на некоторые исключения из правила (особенно с использованием бросков), новый пользовательский интерфейс и большинство приложений вынуждают пользователей использовать кнопку таким образом. Если вы не оправдываете это ожидание, не забудьте обучить своих пользователей.
  • Предпочитайте использовать модели контроллера, особенно для того приложения, которое предполагает социальное взаимодействие или выбор предметов.
  • Руки и контроллеры, входящие в приложение, должны максимально приближаться к реальным аналогам пользователя в отношении позиции и ориентации. Мы называем это «регистрацией» и рекомендуем Avatar SDK в качестве примера. При тестировании вашего приложения один из методов должен заключаться в том, чтобы держать руки перед лицом и слегка поднять шлем виртуальной реальности для того, чтобы вы могли сравнить свои руки в реальном мире и свои виртуальные руки.
  • Полностью анимируйте все руки и контроллеры в игре для того, чтобы отразить то, что делает пользователь. Пользователи будут ожидать, что смогут захватить, направить и показать собственные пальцы в виртуальной реальности своими реальными руками. Они ожидают анимированных джойстиков контроллера, кнопок и триггеров при использовании. У нас есть демоверсии с полным кодом и чертежами для этого в UE4 и Unity.
  • Для поддержки праворуких игроков и левшей мы рекомендуем проектировать объекты таким образом, чтобы они были комфортны для использования любой рукой. Например, если игрок собирается использовать двойной нож с вращающимся колесом для открывания банки в виртуальной реальности, убедитесь, что ручка режущего диска обращена также и к другой руке.
  • Когда контроллеры зеркалированы, убедитесь, что элементы управления идентичны. Когда у контроллеров разные функции, убедитесь, что вы создали доминирующую и не доминирующую руку (вместо того, чтобы использовать только правую руку). Например, в демоверсии Toy Box игроки обычно используют свою не-доминанту для того, чтобы держать рогатку, и свою доминирующую руку для того, чтобы вытащить держатель боеприпасов.
  • Если это не имеет глобального значения для пользовательского опыта, не делайте создавайте дополнительные части тела, кроме рук, в одиночных играх. Хотя обратная кинематика (т.е. экстраполяция положений частей тела, основанная на том, как тело может и не может двигаться), представляется заманчивым решением для того, чтобы изображать больше тела игрока, оно становится менее точным, когда вы пытаетесь имитировать больше частей тела. Несоответствие может оказаться отвлекающим и по иронии менее погружаемым и иммерсивным.
  • Для многопользовательских игр вы можете рендерить руки от первого лица и полные тела других игроков.
Отслеживание

Ниже приведены основные советы по отслеживанию:

  • Для приложений с фронтальной ориентацией сохраняйте выполнения действия перед пользователем. Не поощряйте пользователей делать то, что нарушит видимость между контроллерами и сенсорами, что приводит к ухудшению отслеживания.
  • Не требуйте от пользователя взаимодействия с элементами в виртуальной реальности вблизи от пола или над их головами. Удалите эти объекты или позвольте сократить расстояние. Если вы решите разрешить взаимодействие на расстоянии, убедитесь, что объект доступен с помощью подсветки, свечения, тряски, тактильности или другого механизма.
  • Избегайте тех взаимодействий, которые побуждают пользователей оказываться слишком близко или слишком далеко от одного или нескольких сенсоров для отслеживания позиции.
Большие игровые зоны

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

  • Наше пользовательское описание «стоячих» приложений включает в себя то, что они «могут требовать совершение шага в любом направлении». Даже если ваше приложение использует много места, если оно будет представлено как «стоячее» приложение, оно должно соответствовать этому описанию. Кроме того, «стоячие» приложения должны полностью использовать зону отслеживания 2 м x 1,5 м.
  • Если ваше приложение требует много места, используйте границы пользователя Guardian для того, чтобы убедиться, что вы размещаете игровые объекты в доступных областях. Для получения дополнительной информации см. раздел «Система Oculus Guardian».
  • Приложения могут изменять поведение рецентра таким образом, чтобы это имело смысл для приложения. Например, приложение может фиксировать положение рецентра внутри игровой зоны на некоторое количество отступов так, что все элементы игрового процесса будут в зоне доступа. Или оно может выбрать игнорирование компонента поворота для того, чтобы поддерживать ориентированную по оси игровую зону. Если приложение существенно нарушает ожидания пользователей, оно должно информировать пользователя о том, что происходит. Для получения дополнительной информации см. раздел «Управление связью с виртуальной реальностью».
  • Приложения могут также использовать вышеупомянутые функциональные возможности рецентра для установки оптимального положения центра (переопределения исходного положения пользователя) при запуске. Вы можете использовать поведение рецентра по умолчанию в последующих запусках приложения пользователем или продолжать использовать изменённую логику рецентра.
  • Если игровая зона пользователя не определена, создайте свою собственную игровую зону вокруг рецентра/исходной точки пользователя. Эта предполагаемая игровая зона не должна превышать 2 м х 1,5 м (рекомендуемый размер игровой зоны). Если ваше приложение может использовать меньшее пространство, установите его по умолчанию.
  • Если ваше приложение требует высокого или низкого отслеживания, учитывайте форму усечённого конуса зоны отслеживания сенсоров. Например, приложение, ориентированное на анфас пользователя, которое включает в себя прицеливание в баскетбольное кольцо, захочет удержать пользователя в направлении задней части игровой зоны, где конусы отслеживания находятся выше. Для получения дополнительной информации о диапазоне поля зрения сенсора и диапазонах отслеживания см. раздел «Инициализация и перечисление датчиков».
  • У некоторых пользователей может не быть полного 2 м x 1,5 м рекомендованного игрового пространства, но он всё равно будет использовать вашу игру, несмотря на предупреждения. Если вашему приложению требуется полный объем пространства, выберите лучший способ обратной связи. Возможные решения:
  1. Как правило, лучше выходить за пределы от сенсоров, но не уходить в сторону, так как отслеживание лучше отходит назад (а ближе вы можете пропустить положение сенсора).
  2. Пользователи могут попытаться использовать рецентр для доступа к игровым зонам, которые в противном случае были бы недоступны.
  • Данные контроллера

Oculus SDK предоставляет API, который возвращает позицию и состояние для каждого контроллера Oculus Touch.

  • Ручное слежение

Сенсор-созвездие, используемый для отслеживания положения головы в Oculus Rift, также отслеживает позицию рук контроллеров Oculus Touch.

  • Состояние кнопки

Состояние кнопки ввода сообщается на основе HID-прерываний, поступающих на компьютер, и может быть получено путем вызова ovr_GetInputState.

  • Состояние кнопки Oculus Touch

В дополнение к кнопкам контроллеры Oculus Touch могут определять, касаются ли пальцы пользователя каких-либо кнопок или находятся в определенных положениях.

  • Тактильная обратная связь

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

  • Эмуляция ввода геймпада с Oculus Touch

Oculus Touch могут частично эмулировать Microsoft XInput API геймпада без каких-либо изменений кода. Однако вы должны учитывать недостающие логические и эргономические эквивалентности между двумя типами контроллеров.

 

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

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