Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
3d场景中的JavaFX深度测试导致Z-fighting_Javafx_Javafx 8_Javafx 3d - Fatal编程技术网

3d场景中的JavaFX深度测试导致Z-fighting

3d场景中的JavaFX深度测试导致Z-fighting,javafx,javafx-8,javafx-3d,Javafx,Javafx 8,Javafx 3d,我已经创建了一个应用程序,它可以获取DTED位置数据并创建基本轮廓网格。启用深度测试后,效果很好,我不需要简单地渲染地形 我遇到的问题是,当我在地形表面上放置对象时,我会遇到大量的z形格斗,导致长方体/球体中的视觉损坏。除了修改nearclip/farclip外,是否还有其他方法可以缓解这种情况 我试过使用0.1的近距离剪辑和5000的远距离剪辑,但仍然会出现很多闪烁。请记住,我的地形可能有100k单位宽,因此我希望将farclip保持在足够高的位置,以便一次查看整个地形。我已经研究了所有与FX

我已经创建了一个应用程序,它可以获取DTED位置数据并创建基本轮廓网格。启用深度测试后,效果很好,我不需要简单地渲染地形

我遇到的问题是,当我在地形表面上放置对象时,我会遇到大量的z形格斗,导致长方体/球体中的视觉损坏。除了修改nearclip/farclip外,是否还有其他方法可以缓解这种情况


我试过使用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模型的比例,这一点都不重要,但是现在所有的闪烁都消失了。谢谢我知道你的痛苦;)