📜  计算机图形学中的画家算法

📅  最后修改于: 2021-04-23 05:26:18             🧑  作者: Mango

Painter的算法是Hewells1972年提出的算法。

这些算法使用的技术是图像空间对象空间

该算法的名称是Painter的,因为它的工作就像创建油画的画家一样。就像画家绘画一样,他从一块空的画布开始绘画,画家要做的第一件事是为绘画创建一个背景层,在这一层之后,他开始一个一个地创建另一层对象。这样,他可以根据绘画的要求部分或完全覆盖上一层,从而完成绘画。

该算法主要用于通过考虑多边形与查看器的距离来在视图平面中绘制多边形。距查看者较远的多边形将首先绘制。之后,根据需要,开始在较远的多边形上或上方绘制较近的多边形。

在这种算法中,场景中的多边形或表面首先被扫描,然后在帧缓冲区中以距观看者视点递减的距离绘制,从最大深度的多边形开始,或者我们可以说最小的z值。

首先,执行深度排序,其中根据多边形的可见性顺序或深度优先级列出多边形。

由于该算法使用深度优先级的概念,因此也称为深度优先级算法优先级算法

帧缓冲区涂有背景色。之后,最远的多边形进入帧缓冲区。为此,像素信息将被改变,即,具有最远多边形的背景的信息被替换为背景的信息。当我们从一个多边形移动到另一个多边形并以最近的多边形结束时,这将被重复更改。

通常,只要多边形要相互重叠,就会进行比较。用于比较的最常用方法称为mini-max方法。为此,在多边形周围绘制矩形,以使矩形恰好适合多边形。

然后,这些矩形将检查它们是否彼此重叠。如果观察到矩形,因为它们不重叠,则我们认为这些表面也不重叠。如果矩形重叠,则曲面也将重叠,如下图所示:

为了找出要重叠的矩形,我们需要找到要测试重叠的矩形的最小和最大x和y值。如果一个矩形的y的最小值大于另一个矩形的y值,则它们将不会重叠,并且由于矩形不重叠,因此曲面也不会重叠。

将对x坐标执行相同的测试。

如果两个表面重叠,则我们不知道哪个表面应位于另一个表面的顶部。为了找出哪个表面在顶部,两个重叠表面的深度值使用mini-max原理。

例子:

画家方法的算法

以下是此算法的步骤:

  1. 根据深度减小的深度对各个表面进行排序,或者可以说z的最大值。
  2. 现在扫描以按照从最大深度的表面开始的顺序转换各种表面。
  3. 将基于各种重叠表面进行比较,以便用户确定要保持可见的表面。
  4. 在刷新缓冲区中,输入确定的表面(即确定为可见的表面)的强度值。
  5. 对于所有可用表面,将重复上述过程。
  6. 但是,如果观察到重叠,则需要进一步测试。需要进行以下测试: