场景:
在我的场景中,我实现了一个顶点着色器,它将xz轴上的平面网格定位在摄像机的位置.因此,如果相机移动,平面网格随之移动.这导致视觉效果,即在移动相机时,平面网格似乎保持固定在适当位置.这似乎工作正常.
问题:
如果我将相机(以及平面网格)移动到一定范围,网格会突然消失.
我意识到平面的消失和大小之间似乎存在关系,即平面越大,我就越能在平面网格消失之前移动相机.
此外,在我的测试场景中,平面网格仅在负x轴,正x轴或负z轴上移动时消失.在正z轴上移动时不会消失.
我认为它与某种削波有关,但可能是错误的.重新计算平面网格的边界框无效.
有任何想法吗?
干杯
小提琴:
我创造了一个显示问题的小提琴:http://jsfiddle.net/p8wZ6/10/
在小提琴中,我添加了一个额外的盒子网格,以更好地可视化相机实际移动.
- 要更改相机移动的轴(默认为负z轴)(取消)勾选方法中的相应代码行.
- 要更改平面的大小,请更改createPlane方法中的大小值.
源代码着色器:
<script id="vertexShader" type="x-shader/x-vertex">
void main() {
vec4 pos = vec4( position, 1.0 );
vec4 wPos = modelMatrix * pos;
wPos.x += cameraPosition.x;
wPos.z += cameraPosition.z;
// standard
// vec4 pPos = projectionMatrix * modelViewMatrix * pos;
// keep fixed
vec4 pPos = projectionMatrix * viewMatrix * wPos;
gl_Position = pPos;
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
void main() {
gl_FragColor.rgb = …Run Code Online (Sandbox Code Playgroud) 移动相机关闭后,我的缓冲测量值会消失.你也可以看到,在drawcalls three.js所例子有TrackballControls.在我看来,这种情况很糟糕.我的点在0到400的距离处消失,我的线条在0到100的距离处消失.我的对象工作正常,具有简单的几何形状,但没有使用缓冲测量法.我发现它与缓冲几何的质心有关.我尝试使用不同的相机,改变相机范围,但它仍然无法正常工作.移动相机后如何阻止物体消失?
更新
通过添加linesMesh.frustumCulled = false;和删除工作geometry.computeBoundingSphere();.谢谢你的帮助.