Camera 在VR模式内部或外部时,如何从鼠标切换到凝视或凝视到鼠标光标? 我要什么?

Camera 在VR模式内部或外部时,如何从鼠标切换到凝视或凝视到鼠标光标? 我要什么?,camera,aframe,raycasting,cursors,Camera,Aframe,Raycasting,Cursors,我将轻松地将鼠标事件从非VR模式下的鼠标光标切换到VR模式下的凝视光标。另请参见下面的伪代码: Example 1 为什么? 根据我第一次使用虚拟现实的人所做的研究,他们更喜欢鼠标光标。进入VR模式时,该光标不可用,通过进一步研究,凝视光标是最佳选择。由于HTC的控制器,Oculus、GearVR和Daydream的用户并不熟悉使用它 结论: 在虚拟现实模式内:凝视光标是最佳选择 在VR模式之外:鼠标光标是最好的选择 我做的 研究 我在文档中找到了更改相机的方法: 切换活动属性时,组件将通

我将轻松地将鼠标事件从非VR模式下的鼠标光标切换到VR模式下的凝视光标。另请参见下面的伪代码:

Example 1 为什么? 根据我第一次使用虚拟现实的人所做的研究,他们更喜欢鼠标光标。进入VR模式时,该光标不可用,通过进一步研究,凝视光标是最佳选择。由于HTC的控制器,Oculus、GearVR和Daydream的用户并不熟悉使用它

结论:

  • 在虚拟现实模式内:凝视光标是最佳选择
  • 在VR模式之外:鼠标光标是最好的选择
我做的 研究 我在文档中找到了更改相机的方法:

切换活动属性时,组件将通知摄影机系统更改渲染器使用的当前摄影机:

var secondCameraEl=document.querySelector(“#second camera”);
secondCameraEl.setAttribute('camera','active',true);
我的代码 这是我写的代码

Example 2
我将制作一台带有组件的相机,该组件将监听屏幕上的enterVR事件

  • 输入VR
    时,在相机中创建光标(或将
    fuse
    设置为
    true
    缩放

    1
  • exitVR
    删除光标时(或将
    fuse
    设置为
    false
    scale
    将其设置为
    0
鼠标光标
组件不需要移除,因为在VR模式下它不相关


对于鼠标点击,请使用以下命令:

我将制作一个带有组件的相机,该组件将监听屏幕上的enterVR事件

  • 输入VR
    时,在相机中创建光标(或将
    fuse
    设置为
    true
    缩放

    1
  • exitVR
    删除光标时(或将
    fuse
    设置为
    false
    scale
    将其设置为
    0
鼠标光标
组件不需要移除,因为在VR模式下它不相关


对于鼠标单击,请使用以下命令:

完成@Piotr回答:以下是我编写的最终代码:

require('aframe-mouse-cursor-component');
var scene=document.getElementById('scene');
scene.addEventListener('enter-vr',function(){
document.getElementsByTagName('a-camera')[0].setAttribute('cursor','maxDistance:1;fuse:true;fuseduration:1500');
document.getElementById('cursor').setAttribute('scale','1');
});
scene.addEventListener('exit-vr',function(){
document.getElementsByTagName('a-camera')[0].setAttribute('cursor','maxDistance:1;fuse:false');
document.getElementById('cursor').setAttribute('scale','0');
});
var-box=document.getElementById('box');
box.addEventListener('单击',函数()){
警报(“点击”);
});

完成@Piotr回答:这是我最后的代码:

require('aframe-mouse-cursor-component');
var scene=document.getElementById('scene');
scene.addEventListener('enter-vr',function(){
document.getElementsByTagName('a-camera')[0].setAttribute('cursor','maxDistance:1;fuse:true;fuseduration:1500');
document.getElementById('cursor').setAttribute('scale','1');
});
scene.addEventListener('exit-vr',function(){
document.getElementsByTagName('a-camera')[0].setAttribute('cursor','maxDistance:1;fuse:false');
document.getElementById('cursor').setAttribute('scale','0');
});
var-box=document.getElementById('box');
box.addEventListener('单击',函数()){
警报(“点击”);
});


你说得对,是从内存中完成的,但我认为这应该是你的解决方案:)你的解决方案大致正确。禁用熔断VR模式。唯一的问题是你又在虚拟现实之外了。当你将凝视光标对准黄色圆柱体,然后点击cude时,它将不起作用。我去更新我的问题以提供更多信息。你是对的,从内存中完成,但我认为这应该是你的解决方案:)你的解决方案大致正确。禁用熔断VR模式。唯一的问题是你又在虚拟现实之外了。当你将凝视光标对准黄色圆柱体,然后点击cude时,它将不起作用。我将更新我的问题以提供更多信息。('camera')[0]是否正常工作?我一直在使用.children[0]。顺便说一句,要使用click events而不将光标放在多维数据集上,请导入鼠标光标组件,无需重新创建:)是否('camera')[0]正常工作?我一直在使用.children[0]。顺便说一句,要使用click事件而不将光标放在多维数据集上,请导入鼠标光标组件,无需重新创建:)