有 Z-Fighting 问题

Having Z-Fighting Issues

我正在使用 Babylon.js 制作 3D 游戏。我的项目在所有浏览器上都是 运行。然而,当用户在 Firefox 中 运行 时,似乎存在一些 Z-Fighting 问题,其中某些 3d 对象将无法正确呈现或根本无法呈现!我还注意到一些纹理会有条纹接缝 运行 对角线像这样...

我在网上做了一些研究,发现 z-index 属性 用于 。css.我试过这个设置,但它并没有为我解决问题。我愿意接受任何建议来帮助我解决这个问题吗?非常感谢!

鉴于我的评论被证明是有用的,我将在这里重新引用它以允许将此答案标记为已接受。

To take a wild guess, the sharp edges is to do with anti-aliasing, and 3D is relatively new. Try changing any perspective values.

这也可能是 2 天前 here 相关的 firefox 错误。当你设置 antialias:false 时,firefox 还需要 stencil:true 来启用 24 位深度缓冲区。

z-fighting(2020年)

BABYLON.js 自 2015 年以来不断发展,因此以下是我对如何应对 z-fighting 的建议:

  1. material.useLogarithmicDepth = true; 对于场景中的所有材质。看到这个 how to.

  2. 调整 material.zOffset(负值强制向相机进行深度偏移)。看到这个 playground.

请注意,问题中的 z-indexcss 通常对 3D 场景没有影响。它生活在 <canvas> 元素内部的自己的世界中。 3D 对象不是 DOM 元素,每个引擎(BABYLON、THREE 等)都以自己的方式表示它们。