我有一个使用WebGL生成3D场景的Web应用程序。我想知道是否有可能使用Oculus rift显示这个场景?这有多难?
答案 0 :(得分:3)
答案 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可以从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,你要么必须推出自己的解决方案,尝试击中移动目标,要么有耐心。