如何使用 WebVR 使 THREE.Mesh 看起来立体?

How to make THREE.Mesh look volumetric with WebVR?

我正在努力将现有的 three.js 项目移植到 WebVR + Oculus Rift。基本上,这个应用程序将一个 STL 文件作为输入,基于它创建一个 THREE.Mesh 并在一个空场景上渲染它。我设法使用 three.js 和 VRControls 的 VREffect 插件使其在 Firefox Nightly 中运行。我遇到的一个问题是在 VR 中渲染的模型并不是真正的 3D。也就是说,当我来回移动 HMD 时,活动的 3D 模型不会得到 closer/farther,而且我看不到模型的不同侧面。看起来该模型是固定在其位置上的平坦背景图像。如果我将 THREE.AxisHelper 添加到场景中,当 HMD 移动时它会正确转换。

最初,THREE.OrbitControls在应用程序中使用,模型已正确旋转和移动。

有相当多的源代码,所以我会 post 按需提供一些片段。

事实证明,技术上没有问题。问题本质上是我的模型和 Oculus 运动的不同比例。当 VRControls 与默认设置一起使用时,它会报告从 Oculus 读取的 HMD 的位置(以米为单位)。因此,我的头部运动范围几乎不会超过 1 米,而我的模型的平均尺寸大约是它们自己的几十个单位。当我在同一个场景中同时使用它们时,就好像观众是一只蚂蚁在看着一个巨大的模型。自然地,蚂蚁必须走一段时间才能看到模型的另一面。这就是为什么它看起来不像是3D体。

幸运的是,有一个 scale 属性 of VRControls 应该用于调整 HMD 运动的比例。当我将它设置为大约 30 时,一切正常。

感谢@brianpeiris的评论,我决定再次检查模型和相机的坐标,以确保它们没有相互交织。而且,它引导我找到了解决方案。