我正在致力于将现有的 Three.js 项目移植到 WebVR + Oculus Rift。基本上,这个应用程序采用 STL 文件作为输入,根据它创建一个 THREE.Mesh
并将其渲染在空场景上。我设法让它在 Firefox Nightly 中使用 Three.js 和 VRControls 的 VREffect 插件运行。我遇到的一个问题是 VR 中渲染的模型并不是真正的 3D。也就是说,当我来回移动 HMD 时,事件 3D 模型不会变得更近/更远,而且我看不到模型的不同侧面。看起来模型是一个固定在其位置上的平坦背景图像。如果我将 THREE.AxisHelper
添加到场景中,则在移动 HMD 时它会正确转换。
最初,应用程序中使用了THREE.OrbitControls
,模型可以正确旋转和移动。
源代码数量相当多,因此我将根据需要发布一些片段。
最佳答案
事实证明,技术上没有问题。问题本质上在于我的模型和 Oculus 运动的不同比例。当 VRControls
使用默认设置时,它会报告从 Oculus 读取的 HMD 位置(以米为单位)。因此,我的头部运动范围只能勉强超过 1 m,而我的模型的平均尺寸约为其自身的几十个单位。当我在同一场景中同时使用它们时,就好像观众是一只 Ant 在看着一个巨大的模型。当然, Ant 必须走一段路才能看到模型的另一面。这就是为什么它看起来不像 3D 实体。
幸运的是,VRControls
有一个 scale
属性,可用于调整 HMD 移动的比例。当我将其设置为 30 左右时,一切都运行良好。
感谢@brianpeiris的评论,我决定再次检查模型和相机的坐标,以确保它们没有相互交织在一起。而且,它引导我找到了解决方案。
关于javascript - 如何使用 WebVR 使 THREE.Mesh 看起来有立体感?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912722/