WebXR Опыт с отслеживанием только ориентации? - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь создать WebXR Experience, который в основном представляет собой панорамный вид c Просмотрщик изображений

Одна из особенностей этого приложения заключается в том, что система координат вращается, так что плоскость XY является полом, вектором вверх быть + я Так что в основном это вращение на -90 ° вокруг оси х. Кроме того, пользователю разрешено телепортироваться в различные фото сферы с помощью контроллера raycaster, так что в основном это мое XRSpace:

get myReferencespace() {

    this.positionOffset.copy(this.mainView.currentImage.location); // use current pano center as position offset

    this.orientationOffset = THREE.Quaternion()
      .setFromAxisAngle(new THREE.Vector3(1, 0, 0), THREE.Math.degToRad(-90));

    const offsetTransform = new (window as any).XRRigidTransform(this.positionOffset, this.orientationOffset);

    return this.hmdSpace.getOffsetReferenceSpace(offsetTransform); // HMDSpace is of type local for oculus quest/htc vive

}

По крайней мере, так я понимал относительные пространства XR. Но это не работает вообще. Положение камеры слишком далеко, и контроллеры находятся либо выше меня, либо около 0,0,0 в сцене ...

Итак, в myAnimation Frame мне все еще приходится вручную устанавливать камеру в положение FIXED ( камера не должна двигаться, потому что это может нарушить обзор фото сферы, поскольку вы должны находиться в ее центре)

Есть ли какое-либо объяснение этому в WebXR Spe c? Как и все режимы, кроме просмотра, позволяют вам двигаться, также изменение позы перевода. Но что мне нужно, так это ФИКСИРОВАННАЯ (только ориентация, без перевода) камера и пространства контроллеров, все еще правильно расположенные относительно hmd ... как я могу добиться этого?

...