3d场景中的JavaFX深度测试导致Z-fighting
我已经创建了一个应用程序,它可以获取DTED位置数据并创建基本轮廓网格。启用深度测试后,效果很好,我不需要简单地渲染地形 我遇到的问题是,当我在地形表面上放置对象时,我会遇到大量的z形格斗,导致长方体/球体中的视觉损坏。除了修改nearclip/farclip外,是否还有其他方法可以缓解这种情况3d场景中的JavaFX深度测试导致Z-fighting,javafx,javafx-8,javafx-3d,Javafx,Javafx 8,Javafx 3d,我已经创建了一个应用程序,它可以获取DTED位置数据并创建基本轮廓网格。启用深度测试后,效果很好,我不需要简单地渲染地形 我遇到的问题是,当我在地形表面上放置对象时,我会遇到大量的z形格斗,导致长方体/球体中的视觉损坏。除了修改nearclip/farclip外,是否还有其他方法可以缓解这种情况 我试过使用0.1的近距离剪辑和5000的远距离剪辑,但仍然会出现很多闪烁。请记住,我的地形可能有100k单位宽,因此我希望将farclip保持在足够高的位置,以便一次查看整个地形。我已经研究了所有与FX
我试过使用0.1的近距离剪辑和5000的远距离剪辑,但仍然会出现很多闪烁。请记住,我的地形可能有100k单位宽,因此我希望将farclip保持在足够高的位置,以便一次查看整个地形。我已经研究了所有与FX中深度缓冲区相关的问题,除了近/远距设置之外,还没有找到任何有助于缓解该问题的方法。经过大量修补,我发现调整远距设置从来没有帮助减少闪烁。但是,如果我将nearclip设置为1,我可以得到500k的farclip,几乎没有闪烁。我在JavaFX上也遇到了同样的问题。您的解决方案对我很有效,但我很好奇为什么会这样,特别是因为我发现有人在Autodesk Maya中有相同的问题 当然,这背后的原因是深度缓冲精度。随着zFar平面移开,或zNear平面靠近,会丢失太多的精度。这对zNear平面的影响远大于zFar平面 khronos的OpenGL wiki上有一个很好的解释:
TL;DR:始终将zNear平面移动到尽可能远的地方,将zFar平面移动到尽可能近的地方。我确信您已经在这样做了,但是,请检查一下,您是否使用创建场景?是的,没有深度测试渲染顺序由场景图中的节点顺序决定,因此对象会奇怪地重叠。我看到的行为是当深度测试打开时。谢谢!!我花了几个小时寻找一个解决方案,但老实说,我并没有想到将nearclip设置得更高。我不得不将我的设置为100左右,但是考虑到3D模型的比例,这一点都不重要,但是现在所有的闪烁都消失了。谢谢我知道你的痛苦;)