Я пытаюсь создать 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 ... как я могу добиться этого?