我正在尝试开发一个网络-ar体验,允许用户在整个体验中在前后摄像头之间切换,同时使用SLAM/6 6dof同时使用后台摄像机。理想情况下,我想使用PlayCanvas,但无法让前摄像头工作。我已经在一个框架内实现了一些温和的成功,但许多事情正在破裂。
我找不到任何关于启用前置摄像机的PlayCanvas特定文档,并且使用XR.stop(),其次是XR.run({canvas: document.getElementById('camerafeed'),cameraConfig:{direction: XR.XrConfig.camera().FRONT})没有任何效果。
在一个框架内,我正在做类似的一系列事件,但我看到了一些结果。前面的摄像机被激活了,但是日志中有错误,3D对象不会呈现(当我们开始前摄模式时,它们会呈现出来),并且尝试切换相机再次显示“哎呀,出了问题!”屏幕。
至于切换SLAM/6dof,我一直收到一个错误,在执行disableWorldTracking后无法更改XR.run。即使我运行了XR.stop函数并侦听了stopxr事件。
一帧功能,应该切换到前面的摄像机(只是重要的部分):
init: function() {
this.el.sceneEl.addEventListener('stopxr', event => {
console.log("AR has been stopped.");
const videoCanvas = document.querySelector('canvas.a-canvas');
XR.XrController.configure({disableWorldTracking: true});
XR.run({canvas: videoCanvas, cameraConfig: {direction: XR.XrConfig.camera().FRONT}});
});
},
switchToFace: function() {
this.el.sceneEl.emit('stopxr');
//XR.stop();
},在场景运行时更改disableWorldTracking参数的正确方法是什么?当场景运行时,有什么适当的方法来交替前后摄像机?
发布于 2019-09-16 20:59:57
在与第8版开发工具交谈后,他们确认每页只支持一个XR会话,因此在XR.stop之后,不能再次调用XR.run。然而,有另一种方式之间切换的前和后相机,它的工作与SLAM启用。
onCameraStatusChange事件并获取对stream和video元素的引用。XR.pause()暂停第8墙。stream中的所有痕迹。navigator.mediaDevices.getUserMedia(constraints);获取所需相机的流。video元素。playing事件,并调用XR.resume();有一件事要注意: SLAM只有在你从后摄像头开始的时候才能工作。在切换到前面的摄像头后,SLAM将不再工作。
发布于 2020-10-01 18:05:33
现在可以停止并恢复XR会话(从前一段时间开始的13.1版本)。您可以调用XR8.stop(),然后是XR8.run(),然后传入新的所需的摄像机方向。
如果您在AFrame项目中使用第8墙,您可以简单地从<a-scene>中删除xrweb组件以停止XR,然后将其添加回(如果需要的话,使用新的cameraDirection param )重新启动。
以下是几个演示如何翻转相机方向的项目:
https://stackoverflow.com/questions/57930664
复制相似问题