画家算法

17 Mar 2025 | 阅读 2 分钟

它属于列表优先级算法的范畴。它也被称为深度排序算法。在这个算法中,对象可见性的排序完成了。如果对象以特定的顺序反转,那么就会得到正确的图片结果。

对象按 z 坐标递增的顺序排列。渲染按照 z 坐标的顺序进行。较远的物体会遮挡较近的物体。后一个物体的像素会覆盖较远物体的像素。如果两个对象的 z 值重叠,我们可以从 Z 值确定正确的顺序,如图 (a) 所示。

如果 z 对象如图 (b) 所示相互重叠,则可以通过分割对象来保持正确的顺序。

Painter Algorithm

深度排序算法或画家算法由 Newell, sancha 开发。它被称为画家算法,因为帧缓冲区的绘制是按照距离递减的顺序进行的。距离是从观察平面开始的。距离较远的物体首先绘制。

这个概念借鉴了画家或艺术家的颜色。当画家作画时,首先他会用背景色绘制整个画布。然后添加更远的物体,如山脉、树木。然后将后方或前景物体添加到图片中。我们将使用类似的方法。我们将根据 z 值对表面进行排序。Z 值存储在刷新缓冲区中。

深度排序中执行的步骤

  1. 根据 z 坐标对所有多边形进行排序。
  2. 查找任何歧义,查找 z 坐标是否重叠,必要时分割多边形。
  3. 按照 z 坐标递增的顺序扫描转换每个多边形。

画家算法

步骤1: 开始算法

步骤 2: 通过 z 值对所有多边形进行排序,将最大的 z 值放在最前面。

步骤 3: 以这种顺序扫描转换多边形。
                应用测试

  1. 如图 (a) 所示,A 在 Z 维度上是否位于 B 的后面且不重叠?
  2. 如图 (b) 所示,A 在 z 轴上是否位于 B 之后,并且在 x 或 y 轴上没有重叠?
  3. 如图 (c) 所示,如果 A 在 Z 轴上位于 B 之后,并且相对于观察平面完全位于 B 之外?
  4. 如图 (d) 所示,如果 A 在 Z 轴上位于 B 之后,并且 B 相对于观察平面完全位于 A 之内?

任何与单个重叠多边形测试的成功都允许绘制 F。

Painter Algorithm
下一个主题扫描线算法