如何使应用程序为'ovrweb'协议做好准备(在Gear VR中查看)?



我有一个使用ThreeJS的Web应用程序。我目前正在尝试将WebVR与Gear VR一起使用。

我知道我需要使用ovrweb协议链接到该网络应用程序才能在 Gear VR 中打开它。我的问题是它没有。

每当我使用window.location.href = "ovrweb:http://my-app-url"时,都会要求我将设备连接到Gear VR。但是一旦我这样做,屏幕仍然是黑色的。我注意到每当我使用一些非VR网页作为URL时都会发生同样的事情(如ovrweb:https://www.google.com(。 但是,ovrweb协议在某些URL上按预期工作正常 - 例如ovrweb:https://playcanv.as/p/VNTAx5Eu/

我不确定我错过了什么。我的应用有一个VR按钮,点击该按钮时,display.requestPresentAPI调用将被触发,屏幕将一分为二(适用于Chrome Canary(。我的应用需要满足才能通过 ovrweb 协议识别的任何要求列表吗?如果是这样,这些是什么?

我浏览了Oculus文档,但没有找到任何可以帮助我的东西。如何让我的应用程序通过 ovrweb 协议运行?

更新:我发现 ThreeJS 示例链接(例如 https://threejs.org/examples/webvr_rollercoaster.html(也无法通过 ovrweb 协议工作。

好的,自己找到了解决方案。

每当我们尝试使用 ovrweb 协议时,设备都会尝试打开其 Carmel 开发者预览浏览器中提供的 URL(不同于在 Oculus Home 体验中可以使用的"互联网浏览器"(。 现在,Carmel 开发者预览版仅支持"3D"网站。Carmel 开发人员预览版目前不支持导航到 2D 网站。(https://developer.oculus.com/documentation/vrweb/latest/concepts/carmel-launching-content/(。这就是为什么我自己的网络应用程序以及 google.com 等链接显示为黑色的原因。

因此,我所要做的就是在一开始就触发display.requestPresent- 从而将其与2D网站区分开来。

现在,如果没有某种用户交互(例如单击按钮(,display.requestPresent将无法工作。出于安全考虑,其他 JS API(例如全屏(也是如此。

但是,似乎通过ovrweb协议导航到链接,从而在Carmel开发人员预览中查看它也满足了用户交互条件。因此,现在我的VR场景在Gear VR中完全可见。

这个解决方案也应该适用于 ThreeJS webvr 示例(包括 OP 中链接的过山车示例(。

所有需要做的就是在页面加载时触发此代码片段。

display.requestPresent( [ { source: canvas } ] )
.then(function() {
// Presenting to WebVR display
}, function(e) {
// On error
});

相关内容

  • 没有找到相关文章

最新更新