使用Oculus rift显示Web应用程序输出

时间:2014-12-03 20:33:34

标签: webgl oculus webvr

我有一个使用WebGL生成3D场景的Web应用程序。我想知道是否有可能使用Oculus rift显示这个场景?这有多难?

4 个答案:

答案 0 :(得分:3)

我建议您不要使用第三方软件来访问跟踪数据,而应将实施基于FirefoxChrome自定义版本中提供的实验性WebVR API。

如果WebVR和VR通常获得足够的牵引力,这可能是最安全的选择。

答案 1 :(得分:3)

概述

虽然我意识到这是一个老问题,而且现在有很多关于那里的信息,我还是会发布一个答案,因为之前发布的答案并不是最新的。 / p>

我创建了一个basic plunker,说明了为了让three.js,webvr和oculus一起工作所需要做的事情。注意:我无法完全在plunker下工作,但是如果你在mozilla nightly build下运行带有眼螺纹(OR)的弹药,你会发现头部旋转正在起作用。如果你在plunker之外运行它,你应该能够获得完整的OR VR体验。

我认为另一个好的应用是RiftSketch。这是我第一次学习如何让OR在浏览器下工作(这实际上是由这个问题的原始海报写的应用程序)。

以下是与标准的three.js应用程序不同的相关webvr片段:

this.controls = new THREE.VRControls(this.camera);
this.effect = new THREE.VREffect(this.renderer);
this.effect.setSize(this.width, this.height);

this.vrManager = new WebVRManager(this.renderer, this.effect);

并在渲染函数中:

this.controls.update();

this.renderer.render(this.scene, this.camera); 

if (this.vrManager.isVRMode()) { 
  this.effect.render(this.scene, this.camera);
}
else {
  this.renderer.render(this.scene, this.camera);
}

需要的模块

您需要做的另一件事是提供以下四个库(除了three.js):

  • VRControls.js
  • VREffect.js
  • webvr-manager.js
  • webvr-polyfill.js

VRControls.js和VREffect.js可以从three.js library下的' examples / js / controls'和'例子/ js /特效'分别

更新:我建议您从webvr-boilerplate github.获取所有库,因为three.js似乎没有最新版本。

可以获得另外两个webvr-boilerplate github.

您可以选择直接访问webvr API as described here,但我认为使用支持库要容易得多。

最后的话

你根本不需要处理Oculus Rift SDK。唯一需要直接调用OR SDK API的人是Unity引擎开发人员和Mozilla API开发人员。

WebVR创建了一个通用API,试图为所有HMD设备提供标准化界面,例如Cardboard,OR和(预计将来)Samsung,HTC Vive,leap motion等。如果您选择使用VRControls和VREffects,则可以使用额外的API层来使其更加轻松。它基本上只是一堆样板。最后,我并不了解你在幕后真正发生的事情。你基本上只需要设置一次,再也不要再触摸它。

一旦获得OR支持,那么为您的应用程序开发就像其他任何three.js应用程序一样。

答案 2 :(得分:1)

根据您的经验,这将是多么困难。也就是说,我找到了一个将Rift连接到网络的图书馆(假设你正在进行的方向)可能会有所帮助:Oculus Bridge

来自网站:"该项目的目标是提供一种灵活,简单的方式来访问Oculus Rift的跟踪数据和显示配置,以便与webGL或任何其他基于浏览器的内容一起使用。&# 34;

答案 3 :(得分:1)

渲染Rift有两个主要组件,头部跟踪失真

失真通常由Oculus SDK使用OpenGL或Direct3D完成,但可以在Javascript中实现。您可以看到此here的示例。该页面使用从Oculus SDK中拉出的预先设定的失真顶点集,适用于DK1模型。

头部跟踪要困难得多,因为它需要访问硬件或与硬件通信的运行时。 Mozilla正致力于set of APIs访问头部跟踪,并可能获取失真参数,但它似乎远非稳定。

Three.js似乎有想要支持实验性VR apis的示例,以及使用名为ouclus-rest的示例。

基本上归结为:如果你想用Javascript做VR,你要么必须推出自己的解决方案,尝试击中移动目标,要么有耐心。