7

我想使用camera.getWorldDirection()和访问头戴式显示器的说明。我可以使用之前的 webVR API 做到这一点。当我使用HelioWebXRPolyfill.js来自 THREE 的新产品时,我无法接收当前位置。

4

4 回答 4

1

根据 WebXR Device API,这应该使用XRViewerPose 对象来完成。

此功能仅在使用 HTTPS 时有效。

于 2020-01-25T11:54:44.237 回答
0

全局变量

var cameraVector = new THREE.Vector3();  //define once and reuse it!

在你的渲染循环中

let xrCamera = renderer.xr.getCamera(camera);
xrCamera.getWorldDirection(cameraVector);
//heading vector for webXR camera now within cameraVector
于 2020-08-05T20:17:36.913 回答
0

我想出了一个简单的解决方法。只需将一个盒子作为相机的父级,并使用相机盒子代替相机。

camera.add( camerabox );

这不起作用:

var direction = new THREE.Vector3();
camera.getWorldDirection( direction );

这确实有效:

var direction = new THREE.Vector3();
camerabox.getWorldDirection( direction );
于 2020-01-20T19:41:38.687 回答
0

似乎调用renderer.xr.getCamera()并没有完全复制camera.getWorldDirection()期望找到的各种相机成员属性。我不确定这个问题的根源(也许是 polyfill?),但你可以通过自己计算方向来解决它:

        let xrCamera = this.renderer.xr.getCamera(sceneCamera)
        let e = xrCamera.matrixWorld.elements
        let direction = new THREE.Vector3(-e[8], -e[9], -e[10]).normalize()
于 2020-01-10T18:20:18.117 回答