重点归纳:
- 如何透视投影范围的定义
- MVP 之后的视口变换
- 何为屏幕
- 何为像素
- 一些绘制设备与显示设备
- 隔行扫描技术
- 帧缓冲
- 光栅化
- 模型的表示
- 采样
- 边界情况
- 如何减小计算规模
- 真实的像素
一、透视投影 (续)
如何定义透视投影的四棱台的范围
- 长宽比 (aspect ratio)
- 垂直的可视角度 (vertical field-of-view)

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

二、视口变换 (Viewport Transform)
在 MVP 变换完成后,无论是正交投影还是透视投影都会得到一个标准立方体
接下来要做的就是把这个标准立方体 (Canonical Cube) 绘制到屏幕上
1. 什么是屏幕?
- 由像素组成的一个数组
- 数组的大小被称为分辨率:1080P、4K
- 屏幕是典型的光栅化显示设备
- 光栅一词来源于德语,在德语中是屏幕的意思
2. 什么是像素?
- 在图形学中,像素被抽象成显示颜色的最小单元
- 像素是红绿蓝 (RGB) 三通道的混合
- 像素是图元 (picture element) 的一种简称
3. 屏幕中像素的坐标表示?
- 以像素左下角的坐标来代表像素的坐标
- 像素中心的坐标需要在 x、y 轴方向偏移 0.5

4. 视口变换 (Viewport Transform)
- 将标准立方体的 x、y 轴坐标缩放到屏幕的分辨率
- z 轴坐标不变
三、绘制设备与显示设备
绘制设备:
- 数控绘制机 (CNC Sharpie Drawing Machine)
- 激光切割机 (Laser Cutters)
- etc..
显示设备:
- 示波器 (Oscilloscope)
- 阴极射线管 (CathodeRay Tube)

隔行扫描技术
- 利用人眼的视觉暂留
- 一张只画奇数行,一张只画偶数行
- 视频压缩也可以采取类似做法
- 缺点:画面可能撕裂
帧缓冲:将内存中的一块区域映射到屏幕上
其他显示设备:
- LCD(Liquid Crystal Display), 液晶显示器,利用偏振过滤光
- LED, 发光二极管,控制发光强度
- 墨水屏,刷新率很低,电极吸附带点墨水
- 视网膜屏幕,分辨率超过人眼的屏幕
四、光栅化 (Rasterization)
光栅化:将模型的网格绘制到光栅显示设备,把多边形拆成多个像素
1. 模型的表示
网格分为多边形网格、四边形网格、三角形网格等
三角形网格的优点
- 三角形,最基本的多边形
- 其他的多边形都可以拆成三角形
- 三角形一定是在一个平面内
- 很好定义内外,且容易叉积求得,不像别的多边形可能有凹陷,有洞
- 可以根据三角形三个顶点的属性得到三角形内部的点的属性 (插值)
四边形网格的优点:方便展 UV 等
2. 采样
空间中的点是连续的,而屏幕上的像素是离散的,那么就在将空间中的三角形绘制到屏幕上时需要进行采样
函数的采样

对像素中心进行采样

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: 采样率不够导致了走样,需要抗锯齿