1

我创建了一个应用程序,它采用 DTED 位置数据并创建一个基本的轮廓网格。启用深度测试后,这可以正常工作,并且我没有简单地渲染地形的问题。

我遇到的问题是,当我将对象放置在地形表面上时,我会遇到很多 z-fighting,从而导致盒子/球体中的视觉损坏。除了修改近剪辑/远剪辑之外,是否有任何方法可以缓解这种情况?

我尝试使用 0.1 的近剪辑和 5000 的远剪辑,但我仍然遭受很多闪烁。请记住,我的地形可能有 100k 单位宽,所以我想保持我的远剪辑足够高,以便一次查看整个地形。我已经解决了与 FX 中的深度缓冲区相关的所有问题,但除了近/远剪辑设置之外,还没有找到任何可以帮助缓解它的问题。

4

2 回答 2

2

我对 JavaFX 也有同样的问题。您的解决方案对我有用,但我很好奇为什么会这样,特别是因为我发现有人遇到同样的问题,但在 Autodesk Maya 中。

这背后的原因当然是深度缓冲精度。当 zFar 平面移开或 zNear 平面靠近时,会损失太多精度。这对 zNear 平面的影响远大于 zFar 平面。

khronos 的 OpenGL wiki 上有一个很好的解释:Depth Buffer Precision

TL;DR:始终将 zNear 平面尽可能远地移动,并将 zFar 平面尽可能地靠近。

于 2017-09-03T21:01:10.817 回答
0

经过大量的修补后,我发现调整我的远剪辑并没有帮助减少闪烁。但是,如果我将近剪辑设置为 1,我可以获得 500k 的远剪辑,几乎没有闪烁。

于 2016-06-15T18:05:35.060 回答