2017-07-18 104 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 
}); 
相關問題