我有一个用于虚拟房屋游览的Web应用程序。目前,我正在使用VRView进行这些游览,并且效果很好,但是我遇到了陀螺仪的问题,需要尽快解决。
VRView将根据用户设备的方向自动旋转摄像机。当用户转动电话时,虚拟房屋游览也将转动,因此用户可以“环顾四周”房屋。这对于大多数用例来说非常有用,但是低端设备在处理此类更改时会遇到问题。我需要让用户禁用自动旋转的方法,只需在手机上滑动即可环顾四周。
我尝试了权限api并试图撤消对陀螺仪的访问权限,但由于该API与浏览器兼容,因此无法正常工作。我也没有在VRView库中找到与此有关的任何文档。非常感谢您的帮助。
答案 0 :(得分:1)
tldr;
您是对的,这似乎无法通过其API获得。看来您可能需要分叉库并进行一些调整。如果您想走这条路,建议您分叉存储库,看看是否可以成功禁用运动发射器,然后查看是否可以使用webvr-polyfill来启动拖动控件。直接通过webvr-polyfill禁用基于陀螺仪的旋转也是有可能的。
更深入的解释:
运动信息将发布到两个位置的VR View iframe(我相信然后将它们提供给webvr-polyfill控件): https://github.com/googlearchive/vrview/blob/bd12336b97eccd4adc9e877971c1a7da56df7d69/scripts/js/device-motion-sender.js#L35 https://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导入的。如果我正确遵循的话,“ window.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