我正在为正在制作的游戏构建一个小型3D引擎。我有我的基本排序:带背面剔除的纹理三角形。然而深度分类被证明是一个难题。如何为3D引擎Z排序三角形?
我通过平均构成三角形脸部的3点来计算脸部Z.较长的面有时与较小的面重叠,因为它们具有较大的Z值,因此在深度排序的显示列表中上升。
我该如何解决这个问题?如果我只能在编程时获得一些实际的帮助,我肯定有深度的排序技术。我已经建立了渲染管线自己,所以我有机会获得所有需要的数据 - 三角形,点,纹理,UV坐标等
大教堂在3D节目
呈现大教堂呈现在我的3D引擎
有没有什么办法可以使Z排序例程偏向于考虑三角形区域,而不必拆分tris? – 2010-09-18 17:58:22
不正确。这正是Z缓冲解决的问题。 Z缓冲是每个像素和独立的多边形大小(它发生在管道甚至知道)。 您描述的问题只适用于多边形排序,或者如果您渲染非不透明的多边形。精度问题与z缓冲有关,这里有一个很好的介绍:http://www.sjbaker.org/steve/omniv/love_your_z_buffer.html – Justicle 2010-09-18 22:11:52
Justicle说。此外,如果您需要z-排序(例如透明度),z-sort的计算有效方法是使用BSP树。 – Kos 2011-11-21 18:08:46