我想使用camera.getWorldDirection()
和访问头戴式显示器的说明。我可以使用之前的 webVR API 做到这一点。当我使用HelioWebXRPolyfill.js
来自 THREE 的新产品时,我无法接收当前位置。
问问题
1167 次
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 回答