在3D场景中的JavaFX深度测试导致Z战斗

时间:2016-04-05 19:01:38

标签: javafx javafx-8 javafx-3d

我创建了一个应用DTED位置数据并创建基本轮廓网格的应用程序。通过深度测试,这可以正常工作,我只是简单地渲染地形。

我遇到的问题是,当我在地形表面上放置物体时,我会遇到很多z-fighting,导致盒子/球体中的视觉腐败。除了修改nearclip / farclip之外,还有什么方法可以缓解这种情况吗?

我尝试使用.1的近距离和5000的远程按钮,我仍然遭受了很多闪烁。请记住,我的地形可能是100k单位宽,所以我想保持我的挡板高度足以一次查看整个地形。我已经完成了与FX中深度缓冲区相关的所有问题,并且除了近/远程设置之外还没有找到任何有助于缓解它的问题。

2 个答案:

答案 0 :(得分:1)

我遇到了与JavaFX相同的问题。你的解决方案对我有用,但我很好奇为什么会这样,特别是因为我找到了一个有同样问题的人,但在Autodesk Maya。

这背后的原因当然是深度缓冲精度。当zFar平面移开或zNear平面靠近时,会丢失太多精度。这比zFar平面更多地影响zNear平面。

一个很好的解释是关于khronos的OpenGL wiki:Depth Buffer Precision

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

答案 1 :(得分:0)

经过大量的修补后,我发现调整我的挡风板从未帮助减少闪烁。但是,如果我将近距离设置为1,我可以使用500k的远程按钮,几乎没有闪烁。