Как использовать трекпад Oculus Go для перемещения в AFrame

Я тестирую некоторые страницы AFrame с помощью Oculus Go, но не могу заставить трекпад работать для перемещения внутри сцены. Я использую основную версию AFrame, где, по-видимому, поддерживается контроллер Oculus Go. На самом деле этот код например:

<!DOCTYPE html>
<html>
<head>
  <script src="https://rawgit.com/aframevr/aframe/cf15c15/dist/aframe-master.min.js"></script>
</head>
<body>
  <a-scene anti-alias>
    <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow></a-box>
    <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E" shadow></a-sphere>
    <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D" shadow></a-cylinder>
    <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4" shadow></a-plane>
    <a-sky color="#ECECEC"></a-sky>

    <a-entity laser-controls="hand: right"></a-entity>
    <a-entity oculus-go-controls x-button-listener></a-entity>
    <a-entity camera look-controls wasd-controls position="0 1.6 0"></a-entity>
  </a-scene>
</body>
</html>

показывает контроллер на изображении, но, по-видимому, не влияет на используемый трекпад, как я использовал бы wasd в настольной версии (которая довольно хорошо работает при перемещении по сцене).

Итак, в итоге, как я могу использовать трекпад Oculus Go в сцене AFrame для перемещения в нем, как я делал бы на рабочем столе с клавишами wasd? (или, может быть, это еще не поддерживается AFrame?)

[Я знаю, что это похоже на документацию AFrame Oculus Go Controller?, но меня больше интересует, как двигаться.]

2 ответа

Решение

A-Frame не предоставляет трекпад на основе передвижения из коробки. Вы можете посмотреть на дополнительные элементы, в частности на элементы управления движением, в качестве отправной точки для получения своего собственного компонента движения Oculus Go.

Благодаря ответу @diego-marcos я смог написать простой HTML -код, который работал для меня:

<!DOCTYPE html>
<html>
<head>
  <script src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
  <script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v4.1.2/dist/aframe-extras.min.js"></script>
</head>
<body>
  <a-scene anti-alias>
    <a-box position="-1 0.5 -3" rotation="0 45 0" color="#4CC3D9" shadow></a-box>
    <a-sphere position="0 1.25 -5" radius="1.25" color="#EF2D5E" shadow></a-sphere>
    <a-cylinder position="1 0.75 -3" radius="0.5" height="1.5" color="#FFC65D" shadow></a-cylinder>
    <a-plane position="0 0 -4" rotation="-90 0 0" width="4" height="4" color="#7BC8A4" shadow></a-plane>
    <a-sky color="#ECECEC"></a-sky>

    <a-entity movement-controls="fly: true" position="0 0 0">
      <a-entity camera position="0 1.6 0"></a-entity>
    </a-entity>
  </a-scene>
</body>
</html>

Это обеспечивает передвижение камеры из коробки с использованием стабильной в настоящий момент версии AFrame и AFrame Extras.

Когда вы запускаете сцену в браузере в Oculus Go и запускаете VR, вы можете управлять движением камеры, просто осторожно поместив большой палец на трекпад. Камера перемещается в направлении, в котором вы располагаете большой палец, в горизонтальной плоскости и в направлении вашего взгляда. То есть, если вы двигаетесь вперед, но располагаете большой палец в передней части трекпада и смотрите вверх, камера будет двигаться вперед и вверх в направлении вашего взгляда. Помните, что это движется камера, а не сцена, а это означает, что если вы поместите большой палец влево, камера переместится влево, и сцена, кажется, переместится вправо.

Если вертикальное движение не требуется (например, потому что вы моделируете перемещение по горизонтальной плоскости), вы можете удалить fly: true от movement-controls свойства.

Для других свойств movement-controls проверьте его документацию.

Другие вопросы по тегам