禁用网络VRView中的陀螺仪/设备方向读数



我有一个用于虚拟房屋参观的web应用程序。目前,我正在使用VRView进行这些旅行,它运行得很好,但我遇到了陀螺仪的问题,我需要尽快解决。

VRView将根据用户设备的方向自动旋转相机。当用户转动手机时,虚拟房屋之旅也会转动,因此用户能够"环视"房屋。这对于大多数用例来说都很好,但是低端设备在处理此类更改时会出现问题。我需要一种方法让用户禁用自动旋转,只需在手机上滑动即可四处查看。

我尝试过权限api,并试图撤销对陀螺仪的访问,但由于浏览器与该api的兼容性,它不起作用。我在VRView库中也找不到任何关于这方面的文档。非常感谢您的帮助。

tldr

你说得对,这似乎不能通过他们的API获得。看起来您可能需要分叉库并进行一些调整。如果你想走这条路,我建议你分叉repo,看看你是否能成功禁用运动发射器,然后看看你是否可以使用webvr polyfill来启动拖动控制。也可以通过webvr polyfill直接禁用基于陀螺仪的旋转。

更深入的解释:

运动信息被发布到两个位置的VR View iframe(我相信它会将它们提供给webvr polyfill控件(:https://github.com/googlearchive/vrview/blob/bd12336b97eccd4adc9e877971c1a7da56df7d69/scripts/js/device-motion-sender.js#L35https://github.com/googlearchive/vrview/blob/bd12336b97eccd4adc9e877971c1a7da56df7d69/src/api/iframe-message-sender.js#L45

当浏览器的UA(用户代理(标志指示它不能使用陀螺仪控件时,您需要在中包含一个禁用此功能的标志(或禁用iframe中的侦听器(。

通常,为了启用拖动旋转,我认为您需要为拖动事件的开始和结束编写一个监听器,将这些事件转换为相机旋转。(类似于此人的建议:https://github.com/googlearchive/vrview/issues/131#issuecomment-289522607(

然而,控件似乎是通过web vr polyfill导入的。窗口。"WebVRConfig"对象来自web-vr-polyfill,如果我正确地遵循了这一点的话。请参见此处:https://github.com/googlearchive/vrview/blob/bd12336b97eccd4adc9e877971c1a7da56df7d69/src/embed/main.js#L77

上面的代码看起来像是VR View在检测到某个标志(在本例中为"YAW_ONLY"属性(时正在调整WebVRConfig。我相信你也必须做类似的事情。

https://github.com/immersive-web/webvr-polyfill

有关YAW_ONLY属性,请参见此处:https://github.com/immersive-web/webvr-polyfill/blob/e2958490653bfcda4df83881d554bcdb641cf45b/src/webvr-polyfill.js#L68

有关调整webvr polyfill中控件的示例,请参见此处:https://github.com/immersive-web/webvr-polyfill#using

最新更新