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

问题描述 投票:1回答:5

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

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

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

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

What is this called?

谢谢堆!

3d rendering polygon papervision3d
5个回答
8
投票

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

我会尝试解释没有图表的问题。

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

当没有足够的插槽可以决定哪个多边形在另一个前面时,会出现问题。

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

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

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

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


1
投票

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


1
投票

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


1
投票

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.