【问题标题】:Programmatically change webvr camera view以编程方式更改 webvr 相机视图
【发布时间】:2017-12-13 05:19:23
【问题描述】:

我想以编程方式在 webvr 场景中移动视图的位置。为此,我使用了 position.add 方法。

这是我以编程方式移动相机的方法:

 <a-entity position="33 0 -33" rotation="0 180 0" look-controls id="camera" 
       camera="userHeight: 1.6" listener></a-entity>

镜头移到这里:

 var obj3d = document.querySelector("#camera").object3D;
 var angleobj = obj3d.getWorldDirection();
 angleobj.y = 0;
 obj3d.position.add(angleobj.multiplyScalar(0.004*3));

这在正常模式下有效,但在纸板模式下,相机不会移动。如何以编程方式在纸板视图模式下移动相机?

【问题讨论】:

  • 直接旋转包装实体而不是相机。

标签: javascript aframe webvr


【解决方案1】:

据我所知,一旦你切换到“VR模式”,你就可以使用“VR模式”之外的其他相机。

我认为您应该监听 VR 进入/退出事件,并更改相机参考:

this.el.sceneEl.addEventListener('enter-vr',() => {
     obj3d = document.querySelector("#camera").object3D;
}
this.el.sceneEl.addEventListener('exit-vr',() => {
     obj3d = document.querySelector("#camera").object3D;
}


请重新考虑一下,如果有必要,当用户移动他的头,并且相机变得疯狂时,它会变得非常头晕,非常快。

A-frame 的 Diego Marcos 在他的 anwsers 中经常推荐视觉指示,而不是这样的选项。


如果上述方法不起作用,请尝试抓取相机实体,而不是它的 object3D:

var obj3d = document.querySelector("#camera");

并使用 setAttribute() 方法移动它

obj3d.setAttribute("position", {x: _x, y: _y, z: _z});

【讨论】:

  • 我执行了你的建议。检测到 enter/exit-vr 事件,但它仍然无法在完整视图中工作。任何想法如何使这项工作?
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多