Есть ли способ имитировать устройства ввода VR на WebVR - A-Frame?

В настоящее время я использую A-Frame для создания приложений WebXR (WebVR), и не всегда у меня есть возможность взять с собой контроллеры (Oculus Touch, Vive Controls) для их тестирования. Есть ли способ «симулировать» события, которые испускают разные контроллеры?


person Jose A    schedule 01.06.2018    source источник
comment
В настоящее время он эмулирует более старую версию API WebVR, но вам может подойти этот вариант: chrome.google.com/webstore/detail/webvr-api-emulation/   -  person Don McCurdy    schedule 01.06.2018
comment
Спасибо :) Есть ли способ эмулировать контроллеры с эмуляцией API?   -  person Jose A    schedule 01.06.2018


Ответы (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>

Проверьте это в моей скрипке (сопоставили некоторые события мыши с выдуманными)

person Piotr Adam Milewski    schedule 01.06.2018
comment
Интересный подход :). Если случайно, испускаемые события дают вам точный вывод с исходных устройств. Я имею в виду, будут ли они выводить ключи и значения из исходного события захвата? (Или они одинаковые?) - person Jose A; 01.06.2018
comment
Блин, я забыл о самой важной части: D Я обновил свою скрипку + ответ (способ создания события) - person Piotr Adam Milewski; 01.06.2018