3D渲染 - 这个问题叫什么?

时间:2009-04-22 08:49:09

标签: 3d rendering polygon papervision3d

希望这次是一个明智的问题......

在图片中看到上半部分的纹理看起来是否正常,但是下半部分(在旋转一点之后)纹理分解了,你可以看到形状的内部?多边形已经消失了吗?

这个问题叫什么?我需要知道,所以我知道在修理它时需要注意什么!

顺便说一句,我在Papervision中这样做了。如果你有机会知道修复(或者是否有可能),如果你能指出我正确的方向,我会允许你对自己感觉特别好。

What is this called?

谢谢堆!

5 个答案:

答案 0 :(得分:8)

我们称之为“z-fighting” - 但更常见的术语是z排序或z缓冲问题。

我会尝试在没有图表的情况下解释问题。

3D渲染器通过从后向前绘制多边形来工作。它通过将每个多边形分配给离散数量的位置之一来完成此操作。这适用于大多数场景。

如果没有足够的插槽可以决定哪个多边形位于另一个多边形之前,则会出现问题。

要解决它 - 它将取决于你的应用程序,但有许多事情应该是所有人共同的:

  1. 确保世界的边界框尽可能小。
  2. 增加显示器的颜色深度。 OpenGL和Direct3D都可以将z槽的数量与显示器的分辨率联系起来。
  3. 增加/减小三角形的大小。较小的三角形受此影响较小 - 但会降低性能,因为还有更多的要绘制。
  4. 如果您在Windows上运行,则应将桌面设置为最高的颜色分辨率。您的应用程序可能会将其选为默认设置。

    您可以在OpenGL和Direct3D渲染之间切换吗?如果是这样,那么试试两者,可能会比另一种更好。

答案 1 :(得分:1)

不知何故,似乎是一个Z缓冲区问题。我不熟悉你在那里使用的东西,所以我可能无法提供帮助。

答案 2 :(得分:1)

它被称为linear mapping,它是一种在多边形上映射纹理的方法。但是这种方法没有经过透视校正,导致在极端角度下纹理破碎。

Linear Mapping Perspective Corrected texture mapping

线性纹理贴图(向上)和透视校正纹理贴图(向下)。

唯一的解决方法是添加更多多边形,这会影响性能(请参阅this演示)。

答案 3 :(得分:1)

在我看来,更像是贴花而不是z-fighting。 Z战斗通常有一些锯齿状的边缘。该特定三角形的投影矩阵可能是错误的(考虑到问题的严重程度取决于相机的位置)。

答案 4 :(得分:0)

你有多个叠加的纹理和/或多边形吗?

从这里看,当你有完全重合的曲面时,你会遇到问题,但浮点误差意味着你不能始终看到正确的曲面。