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

时间:2018-06-01 16:02:18

标签: aframe webvr oculus htc-vive webxr

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

1 个答案:

答案 0 :(得分:1)

我不确定较低级别,但我对更高级别有所了解: 如果你有你的vive控制器,并想测试oculus触摸事件,你可以做一些映射。

我做了一个组件,拦截了原始事件,并发布了具有相同细节的新事件:

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()而不是两个数组,但这里似乎是多余的。

此外,通过在发出的事件中包含detail,所有细节,值,目标也会与新事件一起传递。

<小时/> 因此,当您希望实体对映射的事件做出反应时,您可以这样做:

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

在我的fiddle中查看(将一些鼠标事件映射到已组成的事件)