Games101-Lecture 05 Rasterization 1 (Triangles)

重点归纳:

  1. 如何透视投影范围的定义
  2. MVP 之后的视口变换
    • 何为屏幕
    • 何为像素
  3. 一些绘制设备与显示设备
    • 隔行扫描技术
    • 帧缓冲
  4. 光栅化
    • 模型的表示
    • 采样
      • 边界情况
      • 如何减小计算规模
  5. 真实的像素

一、透视投影 (续)

如何定义透视投影的四棱台的范围

- 长宽比 (aspect ratio)
- 垂直的可视角度 (vertical field-of-view)

水平可视角度和垂直可视角度的互相转换

二、视口变换 (Viewport Transform)

在 MVP 变换完成后,无论是正交投影还是透视投影都会得到一个标准立方体Cube[1,1]3\large Cube [-1 , 1]^3

接下来要做的就是把这个标准立方体 (Canonical Cube) 绘制到屏幕上

1. 什么是屏幕?

- 由像素组成的一个数组
- 数组的大小被称为分辨率:1080P、4K
- 屏幕是典型的光栅化显示设备
- 光栅一词来源于德语,在德语中是屏幕的意思

2. 什么是像素?

- 在图形学中,像素被抽象成显示颜色的最小单元
- 像素是红绿蓝 (RGB) 三通道的混合
- 像素是图元 (picture element) 的一种简称

3. 屏幕中像素的坐标表示?

- 以像素左下角的坐标来代表像素的坐标
- 像素中心的坐标需要在 x、y 轴方向偏移 0.5

4. 视口变换 (Viewport Transform)

- 将标准立方体的 x、y 轴坐标缩放到屏幕的分辨率
- z 轴坐标不变

Mviewport=(width200width20height20height200100001)\large M_{viewport}=\left(\begin{array}{cccc} \frac{width}{2} & 0 & 0 & \frac{width}{2} \\ 0 & \frac{height}{2} & 0 & \frac{height}{2} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right)

三、绘制设备与显示设备

绘制设备:

- 数控绘制机 (CNC Sharpie Drawing Machine)
- 激光切割机 (Laser Cutters)
- etc..

显示设备:

- 示波器 (Oscilloscope)
- 阴极射线管 (CathodeRay Tube)

隔行扫描技术

- 利用人眼的视觉暂留
- 一张只画奇数行,一张只画偶数行
- 视频压缩也可以采取类似做法
- 缺点:画面可能撕裂

帧缓冲:将内存中的一块区域映射到屏幕上

其他显示设备:

- LCD(Liquid Crystal Display), 液晶显示器,利用偏振过滤光
- LED, 发光二极管,控制发光强度
- 墨水屏,刷新率很低,电极吸附带点墨水
- 视网膜屏幕,分辨率超过人眼的屏幕

四、光栅化 (Rasterization)

光栅化:将模型的网格绘制到光栅显示设备,把多边形拆成多个像素

1. 模型的表示

网格分为多边形网格、四边形网格、三角形网格等

三角形网格的优点

- 三角形,最基本的多边形
- 其他的多边形都可以拆成三角形
- 三角形一定是在一个平面内
- 很好定义内外,且容易叉积求得,不像别的多边形可能有凹陷,有洞
- 可以根据三角形三个顶点的属性得到三角形内部的点的属性 (插值)

四边形网格的优点:方便展 UV 等

2. 采样

空间中的点是连续的,而屏幕上的像素是离散的,那么就在将空间中的三角形绘制到屏幕上时需要进行采样

函数的采样

对像素中心进行采样

indise(t, x, y)=\\{\begin{array}{cc}1 & \text{Point(x,y) in triangle t}\\ 0 & otherwise\end{array}
for (int x = 0; x < xmax; ++x)
    for (int y = 0; y < ymax; ++y)
    image[x][y] = inside(tri,x + 0.5, y + 0.5);

边界情况

使用叉积来计算一个点是否在三角形内部,如果该点在边界上,则自己定义其在内部还是在外部,一般遵循 top-left rule

减小计算规模

使用 AABB 包围盒 (Axis-Aligend Bounding Box) 来减少需要检查的像素数量

也可以使用增量三角形遍历的方式

五、真实的像素

像素内部结构

- 并非一个方块
- bayer pattern
- 绿色的密度最高,人眼最能分辨绿色

Q: 这幅图有什么问题? A: 采样率不够导致了走样,需要抗锯齿

构建自己的 AUR 软件包
Games101-Lecture 04 Transformation Cont