Aframe 有没有办法在WebVR-a-Frame上模拟VR输入设备?

Aframe 有没有办法在WebVR-a-Frame上模拟VR输入设备?,aframe,webvr,oculus,htc-vive,webxr,Aframe,Webvr,Oculus,Htc Vive,Webxr,我目前正在使用A-Frame构建WebXR(WebVR)应用程序 我并不总是能够让控制器(Oculus Touch、Vive Control)与我一起测试它们。有没有办法“模拟”不同控制器发出的事件 我不确定较低的级别,但我有一个较高级别的想法: 如果您有vive控制器,并且想要测试oculus touch事件,您可以进行一些映射 我会做一个组件,截取原始事件,并发出具有相同细节的新事件: AFRAME.registerComponent("event-mapper", { init: fu

我目前正在使用A-Frame构建WebXR(WebVR)应用程序
我并不总是能够让控制器(Oculus Touch、Vive Control)与我一起测试它们。有没有办法“模拟”不同控制器发出的事件

我不确定较低的级别,但我有一个较高级别的想法: 如果您有vive控制器,并且想要测试oculus touch事件,您可以进行一些映射

我会做一个组件,截取原始事件,并发出具有相同细节的新事件:

AFRAME.registerComponent("event-mapper", {
  init: function() {
    let viveEvents = ["menuup", "menudown"]
    let oculusEvents = ["gripdown", "gripup"]
    viveEvents .forEach((event, index) => {
      this.el.addEventListener(event, (e) => {
        this.el.emit(oculusEvents [index], {detail: e})
      })
    })
  }
}
如果希望它是“动态的”,可以使用一个实Map()而不是两个数组,但在这里它似乎是多余的

此外,通过在发出的事件中包含
细节
,所有细节、值和目标也会随新事件一起传递。
因此,当您希望您的实体对映射的事件做出反应时,您只需执行以下操作:

<a-entity event-mapper></a-entity>

(将一些鼠标事件映射到合成的事件上)

有趣的方法:)。很有可能,发出的事件会提供原始设备的确切输出。我的意思是,他们会输出原始gripdown事件的键和值吗?(或者它们是一样的?)我忘记了最重要的部分:D我已经更新了我的fiddle+anwser(事件发出的方式)它目前模拟的是一个旧版本的WebVR API,但这可能对你有用:谢谢:)我有办法用API模拟来模拟控制器吗?