2017-07-18 100 views
0

我有一个使用ThreeJS的网络应用程序。我目前正试图将WebVR与Gear VR结合使用。如何让应用程序准备'ovrweb'协议(要在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.requestPresent API调用被触发&屏幕分成两部分(在Chrome Canary中可用)。我的应用需要满足哪些需求列表才能通过ovrweb协议进行识别?如果是这样,那是什么?

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

更新:我发现ThreeJS示例链接(例如https://threejs.org/examples/webvr_rollercoaster.html)不能在ovrweb协议上工作。

回答

0

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

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

因此,我所要做的只是简单地触发display.requestPresent,从而将其与2D网站区分开来。

现在display.requestPresent没有某种用户交互(如点击按钮)不起作用。出于安全考虑,其他JS API(例如全屏)也是如此。

但是,它似乎像导航到ovrweb协议上的链接,从而在Carmel Developer Preview中查看它也满足用户交互条件。因此,现在我的VR场景在Gear VR中完美可见。

此解决方案也应该在ThreeJS webvr示例(包括OP中链接的过山车示例)中工作。

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

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