Three.js缓冲几何体在将相机移动到靠近位置后消失

7
移动相机靠近后,我的缓冲几何体消失了。您也可以在 Three.js 示例 中查看此情况,该示例具有 TrackballControls。在我的情况下,情况更糟。我的点在距离0到400处消失,而我的线在距离0到100处消失。我的对象使用简单的几何体可以正常工作,但不适用于缓冲几何体。我发现这与缓冲几何体的重心有关。我尝试使用不同的相机,更改相机范围,但仍无法解决问题。如何防止相机移动后对象消失?
更新
通过添加 linesMesh.frustumCulled = false; 并删除 geometry.computeBoundingSphere();,我成功让它工作了。感谢所有的帮助。

这个程序是否有自定义的顶点着色器?如果是的话,请尝试设置yourMesh.frustrumCulled = false; - pailhead
谢谢您的评论,但我没有使用任何自定义顶点着色器。我是从threejs.org/examples/#webgl_buffergeometry_drawcalls示例开始的,然后我添加了自定义位置和Tween动画来控制点和线,现在当我移动相机时,线和点会消失。如果没有动画,只有当我将相机移动到缓冲区几何体的中心时,线条才会消失,就像在Three.js drawcalls示例中一样。 - A. I.
如果你真的想要帮助,你需要让别人帮助你变得容易。 - WestLangley
你的 linesMesh 几何体的边界球半径是多少?为什么? - WestLangley
please accept the answer - pailhead
3个回答

13

Three.js认为你的对象在视锥体之外。添加以下行:

linesMesh.frustumCulled = false;

它应该阻止它消失。


这不需要成为一行,我不确定为什么我的答案被编辑了。 - pailhead

0

我建议您检查相机的.near剪裁参数。靠近相机的物体自然会被剪裁掉。


我尝试过了,但是我的点和线仍然消失了。在http://threejs.org/examples/#webgl_buffergeometry_drawcalls中,您可以看到当您使用相机不断缩放时我得到的结果。在某些相机位置上,线条将会消失。在我的情况下,点也会消失。 - A. I.
这是相机的工作原理。但请注意,你并不是真正地“缩放”——你只是将相机移动得更近(直到与几何体相交)。如果你想在不与场景相撞的情况下进行缩放,请改变视场角(FOV)(并调用 updateProjectionMatrix())。 - bjorke
我的物体在50-100的距离内就已经消失了,这让它看起来像是一个严重的故障。我更喜欢将fov设为45。我的点在+-400的距离内不会被渲染。我的物体是动画的,因此我认为质心与此有关。 - A. I.

0

我在使用BufferGeometry时也遇到了类似的问题,虽然myMesh.frustrumCulled = false;能够解决这个问题,但是myMesh.geometry.computeBoundingSphere();也同样有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接