aframe相机在退出vr和enter vr之间切换

时间:2017-07-05 09:20:12

标签: three.js camera virtual-reality aframe webvr

如何在桌面和VR之间切换? 我想在桌面上使用鼠标光标,当我进入VR时,它应该切换到另一个带有光标融合的相机。

这是我的代码:

<a-entity id="cam-desktop" camera="userHeight: 1.6; zoom:1 " look-controls mouse-cursor>
</a-entity>


<a-entity id="cam-vr" camera="userHeight: 1.6; zoom:1 " look-controls>
    <a-animation begin="cursor-fusing" delay=" 3000" attribute="camera.zoom" from="1" to="4" dur="1000"></a-animation>
  <a-animation begin="click" delay="500" attribute="camera.zoom" from="4" to="1" dur="1000"></a-animation>
    <a-entity cursor="fuse: true; fuseTimeout:4000" geometry="primitive: ring; radiusInner: 0.02; radiusOuter: 0.03; thetaLength: 360; thetaStart: 0" rotation="0 0 90" position="0 0 -1" material="color: black; side: double; shader: flat">
    <a-animation begin="cursor-fusing" attribute="geometry.thetaLength" from="360" to="0" easing="linear" dur="3000"></a-animation>
    <a-animation begin="mouseleave" attribute="geometry.thetaLength" from="360" to="360" dur="0"></a-animation>
    </entity>
</a-entity>
非常感谢你!

1 个答案:

答案 0 :(得分:1)

您可以创建一个组件,该组件可以监听“enter-vr”和“exit-vr”事件,并相应地设置活动摄像头:

AFRAME.registerComponent('scenelistener',{
   init:function(){
      let vrcam = document.querySelector("#cam-vr");
      let dcam = document.querySelector("#cam-desktop");
      let  vrmode = false;
      this.el.sceneEl.addEventListener('enter-vr',function(){
           if(!vrmode){
               dcam.setAttribute('active',false);
               vrcam.setAttribute('active',true);
               vrmode!=vrmode;
           }
      }
      this.el.sceneEl.addEventListener('exit-vr',function(){
           if(vrmode){
               dcam.setAttribute('active',true);
               vrcam.setAttribute('active',false);
               vrmode!=vrmode;
           }
      }
  }
});

实际上,您可以将听众粘贴到任何地方,而且您可以只听取任何事件并根据收到的事件做相应的事情,我只想向您展示这个概念。我不知道如果2会发生什么+相机处于活动状态,因此我在更改时将其设为假 的更新
我没有看到摄像机是实体,而不是基元,所以你必须设置这样的属性:setAttribute('camera','active',true)
我对光标有一些问题,所以我根据vr状态使其可见和不可见 工作小提琴(至少是相机开关)here