• 1.摘要
  • 2.综述
  • 3.基本实现方法
  • 3.1.变换
  • 3.2.裁剪
  • 3.3.扫描变换
  • 4.加速技术
  • 4.1.后向剔除
  • 4.2.空间数据结构
  • 5.进一步改进
  • 5.1.纹理映射
  • 5.2.环境映射
  • 5.3.凸凹纹理映射
  • 5.4.细节层次
  • 5.5.阴影
  • 6.硬件加速

栅格化

栅格化是将向量图形格式表示的图像转换成位图以用于显示器或者打印机输出的过程。

综述

总体上来说,栅格化这个术语可以用于任何将向量图形转换成位图的过程。

在通常的应用中,这个术语用来表示在计算机上显示三维形状的流行渲染算法。栅格化目前是生成实时三维计算机图形最流行的算法。实时应用需要立即响应用户输入,并且通常需要至少每秒 24 帧的速率。

与辐射着色、光线跟踪等其它渲染技术不同,栅格化的速度非常快,但是由于它不是根据光传输的物理规律进行处理的,所以无法正确模拟许多复杂真实光照环境。

基本实现方法

最基础的栅格化算法将多边形表示的三维场景渲染到二维表面。多边形由三角形的集合表示,三角形由三维空间中的三个顶点表示。在最简单的实现形式中,栅格化工具将顶点数据映射到观察者显示器上对应的二维坐标点,然后对变换出的二维三角形进行合适的填充。

变换

通常使用矩阵运算进行变换,另外也可以用四元数运算但那不是本文讨论的范围。在三维顶点中添加一个齐次变量成为四维定点然后左乘一个 4 x 4 的变换矩阵,通过这种方法就可以对三维顶点进行变换。主要的变换有平移、缩放、旋转以及投射。

平移变换是点在三维空间中从一点移动到固定偏移的另外一点的过程,平移可以用下面的矩阵表示:

image

X、Y 与 Z 分别是三维空间中的偏移。

缩放变换通过在顶点位置上乘以一个标量值实现,这样就将顶点相对于原点的位置进行缩放。缩放变换可以用下面的矩阵表示:

image

其中 X、Y 与 Z 是三维坐标中每一维所乘的数值。通过使用不同的 X、Y、Z 值可以实现不对称缩放。

旋转变换是绕着一个轴线对每点进行旋转。

绕 X 轴旋转:

image

绕 Y 轴旋转:

image