1

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

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

这个问题叫什么?我需要知道,所以我知道修复它时要寻找什么!

顺便说一句,我正在 Papervision 中执行此操作。如果你有机会知道解决方法(或者如果可能的话),如果你能指出我正确的方向,我会允许你对自己感觉特别好。

这个叫什么?

多谢!

4

5 回答 5

8

我们称之为“z-fighting”——但更常见的术语是 z-ordering 或 z-buffer 问题。

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

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

当没有足够的插槽来决定哪个多边形在另一个多边形前面时,您会遇到问题。

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

  1. 确保世界的边界框尽可能小。
  2. 增加显示器的颜色深度。OpenGL 和 Direct3D 都可以将 z 槽的数量与显示器的分辨率联系起来。
  3. 增加三角形的数量/减小三角形的大小。较小的三角形受此影响较小 - 但会降低性能,因为要绘制更多。

如果您在 Windows 上运行,则应将桌面设置为最高颜色分辨率。您的应用程序可能会将其作为默认使用。

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

于 2009-04-22T08:58:03.107 回答
1

不知何故,似乎是 Z 缓冲区问题。不过,我不熟悉你在那里使用的东西,所以我可能帮不上什么忙。

于 2009-04-22T08:52:00.407 回答
1

它被称为线性映射,它是一种将纹理映射到多边形上的方法。但是这种方法没有进行透视校正,这会导致极端角度的纹理被破坏。

线性映射 透视校正纹理映射

线性纹理映射(上)和透视校正纹理映射(下)。

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

于 2009-04-22T09:01:59.727 回答
1

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

于 2009-04-22T10:46:22.143 回答
0

您是否有多个重叠的纹理和/或多边形?

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

于 2009-04-22T08:57:56.383 回答