【问题标题】:Camera control on phone not working for babylonjs vr手机上的摄像头控制不适用于 babylonjs vr
【发布时间】:2019-12-27 07:39:23
【问题描述】:

我无法让相机控制在使用巴比伦的手机上工作defaultVRExperience

我不明白缺少什么。我已经尝试了所有我能想到的东西,但我找不到任何在 babylonjs 操场之外工作的例子。

只需几行代码即可在巴比伦游乐场完美运行的示例:https://www.babylonjs-playground.com/#VIGXA3#38

相同代码在巴比伦之外不起作用的示例:http://jsfiddle.net/dr3k5oqb/

这是我在一篇关于为带有巴比伦的手机制作 vr 东西的文章中找到的一些东西的示例。也不起作用:https://jsfiddle.net/2cdLw0tk/2/

电话:一个one+ 5 与oxygenOS 9.0.9

浏览器: Chrome 版本 79.0.3945.93

任何帮助都将不胜感激......

【问题讨论】:

  • 你用的是什么手机?

标签: javascript virtual-reality babylonjs


【解决方案1】:

我假设您使用的是 iphone safari。

故事是苹果正准备推出一个新的 安全/隐私设置,以防止网站能够访问 设备的加速度计和陀螺仪,这意味着其中一些 VR/AR 您在网上遇到的物品可能不会很好用,直到 您明确允许这样做。 full article

为了使用虚拟现实,我们应该要求用户使用以下代码允许访问运动和方向:

function onClick() 
{
    if (typeof DeviceMotionEvent.requestPermission === 'function') 
    {
        DeviceMotionEvent.requestPermission()
        .then(permissionState => {
            if (permissionState === 'granted') 
            {
                // DeviceMotionEvent.requestPermission() has been granted
            }
        })
        .catch(console.error);
       }
}

这里是jsfiddlebabylon iphone 在操场外工作的 vr 示例。

在您的手机中打开这个demo link

【讨论】:

  • 看来我的问题是我没有在 https 上运行,如果我将示例链接更改为 https 他们开始工作,你知道为什么吗?
  • @Bobbzorzen 通过 http 加载外部库可能会出现问题
  • 原来 DeviceMotionEvent 在 chrome 76+ chromestatus.com/feature/5688035094036480 中被删除了 http 调用,这意味着巴比伦在手机上处理相机控制的方式只适用于 https 感谢您的帮助,非常感谢它跨度>
  • 附带说明 - babylon 已经将 requestPermission 调用集成到当前处于测试阶段的最新版本 (4.1) 中
【解决方案2】:

Chrome v76 及更高版本已删除对 http 的 DeviceMotionEvent 的使用,这意味着 Chrome 的 vr 加速度计控制仅在使用 https 时有效

来源:https://www.chromestatus.com/feature/5688035094036480

这可以通过将我的示例链接切换到 https 来确认,然后他们开始在我的手机上使用 chrome。

如果你想支持 safari,Mudin 的回答可能会很好。

【讨论】:

  • 完美,你找到了
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
相关资源
最近更新 更多