【问题标题】:Having Z-Fighting Issues有 Z-Fighting 问题
【发布时间】:2023-03-09 23:05:01
【问题描述】:

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

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

【问题讨论】:

  • 我们需要一些代码才能继续,如果可能的话,使用babylon playground 并将我们链接到它。大胆猜测一下,锐利的边缘与抗锯齿有关,而 3D 相对较新。尝试更改任何透视值。
  • @jaunt 是的!我发现 .js 类可以处理与相机设置有关的所有事情。我玩了一些价值,似乎它开始解决一些z-fighting问题。我马上就修好。谢谢!

标签: javascript html css webgl babylonjs


【解决方案1】:

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

大胆猜测,锐利的边缘与抗锯齿有关,而 3D 相对较新。尝试更改任何透视值。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      z-fighting(2020 年)

      BABYLON.js 自 2015 年以来一直在发展,因此以下是我对如何应对 z 战的建议:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多