在Three.js中访问虚拟现实耳机方向

在Three.js中访问虚拟现实耳机方向,three.js,webxr,Three.js,Webxr,如何访问Three.js中的VR耳机方向?WebXRManager似乎没有提供这样做的方法。您可以从用于渲染场景的摄影机中提取方向。演示时请尝试以下操作: const position=new THREE.Vector3(); 常量旋转=新的三个四元数(); const scale=新的3.Vector3(); //下一行提取世界空间中的位置、旋转和缩放 摄像机。矩阵世界。分解(位置、旋转、比例); 谢谢!Three.js Discord服务器上的某个人帮我找到了这个解决方案,这个解决方案同样有

如何访问Three.js中的VR耳机方向?WebXRManager似乎没有提供这样做的方法。

您可以从用于渲染场景的摄影机中提取方向。演示时请尝试以下操作:

const position=new THREE.Vector3();
常量旋转=新的三个四元数();
const scale=新的3.Vector3();
//下一行提取世界空间中的位置、旋转和缩放
摄像机。矩阵世界。分解(位置、旋转、比例);

谢谢!Three.js Discord服务器上的某个人帮我找到了这个解决方案,这个解决方案同样有效:
let xrCamera;如果(renderer.xr.isPresenting==true){const cameraVector=new THREE.Vector3();xrCamera=renderer.xr.getCamera(camera);xrCamera.getWorldDirection(cameraVector);}
我很惊讶
getWorldDirection()
可以工作,因为它强制重新计算相机的世界矩阵,然后导致一个已知的bug:它对我来说工作正常。也许是因为我对动画循环中的每一帧都这样做?我正努力在Three.js中找到有关访问此类耳机数据的更多信息。文档没有提供太多帮助,而且似乎不完整。例如,我仍然不知道如何找到耳机在地板上的高度。你不能从上面的
位置
向量中提取
y
分量吗?相机是“用户”装备的一部分,因此
y
分量随用户对象的位置而变化。我想访问设备的地板高度,这样用户就不会穿过地板。另外,您的方法返回的旋转值与我上面提到的方法返回的旋转值不同,并且您的方法返回的值在我的飞行控制中不起作用。我想开放这些第一人称控件的源代码,这样其他人就不必经历我正在经历的事情。如果你愿意看一看并给我一些建议,我可以给你发一个链接。