В настоящее время я использую A-Frame для создания приложений WebXR (WebVR), и не всегда у меня есть возможность взять с собой контроллеры (Oculus Touch, Vive Controls) для их тестирования. Есть ли способ «симулировать» события, которые испускают разные контроллеры?
Есть ли способ имитировать устройства ввода VR на WebVR - A-Frame?
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
Интересный подход :). Если случайно, испускаемые события дают вам точный вывод с исходных устройств. Я имею в виду, будут ли они выводить ключи и значения из исходного события захвата? (Или они одинаковые?)
- person Jose A; 01.06.2018
Блин, я забыл о самой важной части: D Я обновил свою скрипку + ответ (способ создания события)
- person Piotr Adam Milewski; 01.06.2018