首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在前后摄像头之间切换应用程序?

有没有办法在前后摄像头之间切换应用程序?
EN

Stack Overflow用户
提问于 2019-09-13 21:44:00
回答 2查看 1.1K关注 0票数 6

我正在尝试开发一个网络-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事件。

一帧功能,应该切换到前面的摄像机(只是重要的部分):

代码语言:javascript
复制
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参数的正确方法是什么?当场景运行时,有什么适当的方法来交替前后摄像机?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-16 20:59:57

在与第8版开发工具交谈后,他们确认每页只支持一个XR会话,因此在XR.stop之后,不能再次调用XR.run。然而,有另一种方式之间切换的前和后相机,它的工作与SLAM启用。

  1. 侦听onCameraStatusChange事件并获取对streamvideo元素的引用。
  2. 当启动相机交换时,使用XR.pause()暂停第8墙。
  3. 停止你从第一步抓起的stream中的所有痕迹。
  4. 使用navigator.mediaDevices.getUserMedia(constraints);获取所需相机的流。
  5. 将新流分配给步骤1中获取的video元素。
  6. 侦听视频元素以触发playing事件,并调用XR.resume();

有一件事要注意: SLAM只有在你从后摄像头开始的时候才能工作。在切换到前面的摄像头后,SLAM将不再工作。

票数 2
EN

Stack Overflow用户

发布于 2020-10-01 18:05:33

现在可以停止并恢复XR会话(从前一段时间开始的13.1版本)。您可以调用XR8.stop(),然后是XR8.run(),然后传入新的所需的摄像机方向。

如果您在AFrame项目中使用第8墙,您可以简单地从<a-scene>中删除xrweb组件以停止XR,然后将其添加回(如果需要的话,使用新的cameraDirection param )重新启动。

以下是几个演示如何翻转相机方向的项目:

https://www.8thwall.com/8thwall/camera-shaders

https://www.8thwall.com/playground/swap-dof

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57930664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档