gpt4 book ai didi

3d - 如何对3D引擎的三角形进行Z排序?

转载 作者:行者123 更新时间:2023-12-04 17:05:08 25 4
gpt4 key购买 nike

我正在为正在开发的游戏构建小型3D引擎。我已经整理了基本知识:带有背面剔除的纹理三角形。然而,事实证明深度分类是一个困难的问题。

我正在通过平均构成三角形面的3个点来计算面Z。较长的面有时会与较小的面重叠,因为它们的Z值较大,因此在深度排序的显示列表中会升高。

我该如何解决?如果我只能在编程时得到一些实际的帮助,我敢肯定有已知的深度排序技术。我自己构建了渲染管道,因此可以访问所有必需的数据-三角形,点,纹理,UV坐标等。

在3D程序中渲染的大教堂

在我的3D引擎中渲染的大教堂

最佳答案

您需要分割三角形,以使它们的大小都大致相同-无论您自己进行排序还是使用z缓冲区。当然,除非z缓冲区算法还为您拆分了细长的三角形。

问题是,如果您有一些小的紧实三角形和一些长的细三角形(例如),该算法将经常会错过对长的细三角形进行分类的机会。如果使用三角形的中点,将会有视点被视为更紧凑的三角形的“前面”,而实际上实际上是在后面。采取此俯 View ,其中+代表中点。

            o

-+- 1
-----+------ 2
-+- 3

*

*o来看,大三角形(2)可以解释为位于小三角形(3)的前面,因此可以绘制在其上方。

如果将(2)分成3个或4个较小的三角形,则z缓冲将在更多时间工作。

关于3d - 如何对3D引擎的三角形进行Z排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3739454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com