Как получить вектор направления контроллера Oculs Go в A-Frame - PullRequest
0 голосов
/ 13 апреля 2019

Кто-нибудь знает, как получить вектор ориентации контроллера Oculus Go в A-Frame?

Я хочу получить ориентацию контроллера Oculus Go и использовать его в игре.Я понимаю, что свойство "direction" компонента raycaster, используемого элементами управления лазером, имеет это значение, и попробовал следующий код.

<a-scene>
  <!-- laser-controls for Oculus Go controller -->
  <a-entity id="ctl" laser-controls></a-entity>
  <!-- a-text for debug -->
  <a-text id="txt" value="" position="0 2 -2" align="center"></a-text>
</a-scene>

<script>
  const ctl = document.getElementById("ctl");
  const txt = document.getElementById("txt");
  ctl.addEventListener("triggerdown", (evt) => {
    const ray = ctl.getAttribute("raycaster");
    txt.setAttribute("value", JSON.stringify(ray.direction));
  });
</script>

Но значение всегда было {"x": 0, "y": 0," z ": -1} (значение по умолчанию).Пожалуйста, сообщите мне!

1 Ответ

0 голосов
/ 16 апреля 2019
  1. Получить точку в локальном пространстве контроллера.
  2. Преобразовать ее в мировое пространство.
  3. Вычесть векторы точки и положение контроллера.

    var point = new THREE.Vector3(0, 0, -1);
    controllerEl.object3D.localToWorld(point);
    var worldDirection = point.sub(controllerEl.object3D.position);
    

worldDirection - это вектор от контроллера, обращенного прямо от контроллера, в мировом пространстве.

...