Gouraud着色

2025年3月17日 | 阅读 3 分钟

Gouraud 着色方案,由 Gouraud 开发,通常被称为 Gouraud 着色,通过线性插值表面上的强度值来渲染多边形表面。每个多边形的强度值与沿着公共边的相邻多边形的值协调,从而消除了在平面着色中可能发生的强度不连续性。

使用 Gouraud 着色渲染每个多边形表面,方法是执行以下计算

  1. 确定每个多边形顶点的平均单位法向量。
  2. 将光照模型应用于每个顶点,以确定顶点强度。
  3. 在线性上插入多边形表面的顶点强度。

在每个多边形顶点处,我们通过平均所有以该顶点为起点的多边形的表面法线来获得法向量,如图所示

Gouraud shading

因此,对于任何顶点位置 V,我们通过计算获得单位顶点法向量

Gouraud shading

一旦我们有了顶点法向量,我们就可以从光照模型中确定顶点的强度。

以下图表演示了下一步: 沿多边形边缘插值强度。对于每条扫描线,扫描线与多边形边缘的交点处的强度会从边缘端点的强度进行线性插值。例如: 在图中,扫描线与端点顶点位于位置 1 和 2 的多边形边缘相交于点 4。获得点 4 处强度的一种快速方法是仅使用扫描线的垂直位移在强度 I1 和 I2 之间进行插值。

Gouraud shading
Gouraud shading

同样,该扫描线的右交点处的强度(点 5)是从顶点 2 和 3 处的强度值插值得出的。一旦为扫描线建立了这些边界强度,则从点 4 和 5 处的边界强度插值出一个内部点(例如上图中的点 P),如下所示

Gouraud shading

增量计算用于获取扫描线之间连续的边缘强度值,并获取沿扫描线的连续强度,如图所示

Gouraud shading

如果边缘位置 (x, y) 处的强度插值为

Gouraud shading

然后,我们可以获得下一条扫描线 Y-1 沿该边缘的强度,如下所示

Gouraud shading

类似的计算用于获取沿每条扫描线的连续水平像素位置的强度。

当要在颜色中渲染表面时,将在顶点处计算每个颜色分量的强度。Gouraud 着色可以与隐藏表面算法连接,以填充沿每条扫描线的可见多边形。使用 Gouraud 方法着色的对象的示例显示在下图中

Gouraud shading

Gouraud 着色消除了与恒定着色模型相关的强度不连续性,但它也有一些其他缺陷。表面上的高光有时会显示出异常的形状,并且线性强度插值会导致表面上出现称为匹配带的明亮或黑暗的强度条纹。可以通过将表面划分为更多数量的多边形面或使用其他方法(例如 Phong 着色)来减少这些影响,这需要更多计算。


下一个主题Phong 着色