aframe
Элементы управления (компонент)
Поиск…
Вступление
Контроллеры имеют жизненно важное значение для погружения людей в приложение VR. Потенциал VR не выполняется без них, а именно контроллеры, обеспечивающие шесть степеней свободы (6DoF). С контроллерами люди могут протянуть руку и вокруг сцены и взаимодействовать с объектами своими руками.
A-Frame предоставляет компоненты для контроллеров по всему спектру, поддерживаемые их соответствующими браузерами WebVR через API-интерфейс Gamepad. Существуют компоненты для контроллеров Vive, Oculus Touch, Daydream и GearVR.
замечания
Вполне возможно, что вы должны включить gamepadextentions. Вы можете сделать это, используя следующие шаги:
- В Chrome: выберите
chrome://flags
- В Firefox: перейдите к
about:config
- В IE: перейдите в редактор групповой политики на рабочем столе
- В Opera: перейдите к
opera:config
- On Edge: перейти к
about:flags
Элементы управления
Компонент wasd-controls управляет сущностью с клавишами клавиатуры W , A , S и D или стрелкой. Компонент wasd-controls
обычно прикрепляется к объекту с компонентом камеры.
<a-entity camera look-controls wasd-controls></a-entity>
Для азертитных клавиатур вы можете использовать клавиши Z , Q , S и D
Посмотрите контроль
Компонент look-controls:
- Поворачивает объект, когда мы поворачиваем дисплей на головке VR (HMD).
- Поворачивает объект при щелчке мышью.
- Поворачивает объект, когда мы касаемся - перетаскиваем сенсорный экран.
Компонент look-controls обычно используется вместе с компонентом камеры.
<a-entity camera look-controls></a-entity>
Предостережения
Если вы хотите создать свой собственный компонент для контроля взгляда, вам придется скопировать и вставить бит отслеживания HMD в ваш компонент. В будущем у нас может быть система, позволяющая людям легче создавать свои элементы управления.
Добавление взгляда в курсор
Для этого вам нужно добавить компонент курсора к вашей камере
<a-scene>
<a-camera>
<a-cursor></a-cursor>
<!-- Or <a-entity cursor></a-entity> -->
</a-camera>
</a-scene>
Более подробную информацию вы можете найти в теме курсора (компонента) .
Ручной контроль
A-Frame обеспечивает реализацию для поддержки нескольких типов контроллеров 6DoF (Vive, Oculus Touch) через компонент управления вручную. Компонент ручного управления в основном предназначен для контроллеров 6DoF, поскольку он предназначен для взаимодействия с пространственным масштабом, таких как захват объектов. Компонент ручного управления работает поверх обоих контроллеров Vive и Oculus Touch:
Установка элементов управления vive-control и oculus-touch-controls
Переопределение моделей контроллеров с помощью простой ручной модели
Сопоставление специфичных для Vive и Oculus событий, связанных с конкретными событиями, для передачи событий и жестов (например, захват и сведение к выходу)
Чтобы добавить компонент управления вручную:
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
К сожалению, еще нет компонента контроллера 3DoF, который хорошо абстрагирует все типы контроллеров 3DoF (т. Е. Daydream, GearVR). Мы могли бы создать настраиваемый контроллер, который работает с обоими контроллерами. Это было бы довольно легко покрыть, поскольку контроллеры 3DoF не обладают большим потенциалом для взаимодействия (т. Е. Только вращательное отслеживание с сенсорной панелью).
Ручной контроль дает отслеженные руки (с использованием предписанной модели) с анимированными жестами. hand-controls обертывает элементы управления vive-control и oculus-touch-controls, которые, в свою очередь, обертывают компонент отслеживаемых элементов управления. Компонент дает дополнительные события и обрабатывает ручные анимации и позы.
<a-entity hand-controls="left"></a-entity>
<a-entity hand-controls="right"></a-entity>
Отслеживаемые элементы управления
Компонент отслеживаемых элементов управления - компонент базового контроллера A-Frame, который обеспечивает основу для всех компонентов контроллера A-Frame. Компонент отслеживаемых элементов управления:
Захватывает объект Gamepad из API Gamepad с учетом идентификатора или префикса.
Применяет позу (положение и ориентацию) от API Gamepad для чтения движения контроллера.
Ищет изменения в значениях кнопок объекта Gamepad, чтобы обеспечить события при нажатии или при нажатии кнопок и при изменении оси и сенсорных
axischanged
(т.е.axischanged
buttonchanged
,buttondown
,buttonup
,touchstart
,touchend
touchstart
,touchend
).
Все компоненты контроллера A-Frame строятся поверх компонента tracked-controls
управления:
Настройка компонента отслеживаемого контроля на объекте с соответствующим идентификатором Gamepad (например, Oculus Touch (справа)). Например, компонент vive-controls делает
el.setAttribute('tracked-controls', {idPrefix: 'OpenVR'})
tracked-controls
затем подключаются к соответствующему объекту Gamepad, чтобы обеспечить представление и события для объекта.Тестирование событий, обеспечиваемых отслеживанием-контролем. события отслеживаемых контролей являются низкоуровневыми; нам было бы сложно определить, какие кнопки были нажаты, основываясь только на этих событиях, потому что нам нужно было заранее знать сопоставления кнопок. Компоненты контроллера могут заранее знать сопоставления для своих соответствующих контроллеров и предоставлять больше семантических событий, таких как
triggerdown
илиxbuttonup
.Предоставление модели.
tracked-controls
не обеспечивают никакого внешнего вида. Компоненты контроллера могут предоставить модель, которая отображает визуальную обратную связь, жесты и анимацию при нажатии или при нажатии кнопок. Следующие компоненты контроллера активируются, только если они обнаруживают, что контроллер найден и рассматривается как подключенный в API Gamepad.
Компонент tracked-controls
взаимодействует с отслеживаемыми контроллерами. tracked-controls использует API Gamepad для обработки отслеживаемых контроллеров и абстрагируется компонентом управления руками, а также элементами управления vive-control и oculus-touch-controls. Этот компонент выбирает соответствующий контроллер, применяет позу к объекту, наблюдает за состоянием кнопок и испускает соответствующие события.
Обратите внимание, что из-за последних изменений в браузере контроллеры Vive могут возвращаться API-интерфейсом Gamepad с идентификационными значениями «OpenVR Gamepad» или «OpenVR Controller» , поэтому idPrefix
использовать idPrefix
для контроллеров Vive / OpenVR.
<a-entity tracked-controls="controller: 0; idPrefix: OpenVR"></a-entity>
Контроллеры 3Dof и 6Dof
Добавление 3DoF-контроллеров
Контроллеры с 3 степенями свободы (3DoF) ограничены вращательным отслеживанием. Контроллеры 3DoF не имеют позиционного отслеживания, и мы не можем протянуть руку и не сдвинуть руку назад и вперед или вверх-вниз. Наличие контроллера только с 3DoF - это как рука и запястье без руки. Подробнее о степенях свободы для VR.
Компоненты контроллера 3DoF обеспечивают вращательное отслеживание, модель по умолчанию, соответствующую реальному оборудованию, и события для абстрактного отображения кнопок. Контроллеры для Google Daydream и Samsung GearVR имеют 3DoF, и оба поддерживают только один контроллер для одной руки.
Контроллеры Daydream
Компонент Daydream-controls взаимодействует с контроллерами Google Daydream. Он обертывает компонент отслеживаемых элементов управления, добавляя сопоставления кнопок, события и модель контроллера Daydream, которая выделяет нажатые и / или нажатые кнопки (трекпад).
Контроллер Daydream Match, если он присутствует, независимо от руки.
<a-entity daydream-controls></a-entity>
Контроллер Daydream Match, если он присутствует, и для указанной руки.
<a-entity daydream-controls="hand: left"></a-entity>
<a-entity daydream-controls="hand: right"></a-entity>
GearVR-контроллеры
Компонент gearvr-controls взаимодействует с контроллерами Samsung / Oculus Gear VR. Он обертывает компонент отслеживаемых элементов управления, добавляя сопоставления кнопок, события и модель контроллера Gear VR, которая выделяет нажатые и / или нажатые кнопки (трекпад, триггер).
<!-- Match Gear VR controller if present, regardless of hand. -->
<a-entity gearvr-controls></a-entity>
<!-- Match Gear VR controller if present and for specified hand. -->
<a-entity gearvr-controls="hand: left"></a-entity>
<a-entity gearvr-controls="hand: right"></a-entity>
Добавление контроллеров 6DoF
Контроллеры с 6 степенями свободы (6DoF) имеют как вращательное, так и позиционное отслеживание. В отличие от контроллеров с 3DoF, которые ограничены ориентацией, контроллеры с 6DoF могут свободно перемещаться в трехмерном пространстве. 6DoF позволяет нам продвигаться вперед, за спиной, двигать руками по нашему телу или близко к нашему лицу. Наличие 6DoF похоже на реальность, где у нас есть обе руки и руки. 6DoF также применяется к гарнитуре и дополнительным трекерам (например, ногам, реквизитам). Наличие 6DoF является минимальным для обеспечения действительно впечатляющего опыта VR.
Компоненты контроллера 6DoF обеспечивают полное отслеживание, модель по умолчанию, соответствующую реальному оборудованию, и события для абстрактного отображения кнопок. HTC Vive и Oculus Rift с Touch обеспечивают 6DoF и контроллеры для обеих рук. HTC Vive также предоставляет трекеры для отслеживания дополнительных объектов в реальном мире в VR.
Контроллеры Vive
Компонент vive-controls взаимодействует с контроллерами HTC Vive / палочками. Он обертывает компонент отслеживаемых элементов управления, добавляя сопоставления кнопок, события и модель контроллера Vive, которая выделяет нажатые кнопки (триггер, ручка, меню, система) и трекпад.
<a-entity vive-controls="hand: left"></a-entity>
<a-entity vive-controls="hand: right"></a-entity>
Сенсорные контроллеры Oculus
Компонент oculus-touch-controls взаимодействует с контроллерами Oculus Touch. Он включает компонент отслеживаемых элементов управления, добавляя сопоставления кнопок, события и модель контроллера Touch.
<a-entity oculus-touch-controls="hand: left"></a-entity>
<a-entity oculus-touch-controls="hand: right"></a-entity>
Управление мышью
Элементы управления мышью поддерживаются только вне мода VR и могут использоваться для игр без HMD. Для получения дополнительной информации об элементах управления мышью вы можете найти в примере курсора мыши .
<a-scene>
<a-entity camera look-controls mouse-cursor>
</a-scene>