在第二章视图变换后,我们得到了物体映射在屏幕上的顶点信息,但是并没有任何可视的内容。我们需要对顶点信息进行光栅化才可以看见。
光栅化:简单来说就是将物体的顶点信息呈现在屏幕的过程,而屏幕有最小的单位点---像素,所以我们需要考虑如何用像素去逼近物体的构建画面(直线和三角形)
直线绘制是肯定需要的,但是为什么面绘制一定是三角形呢?因为三角形是最基本的多边形,几乎所有的模型面都可以用三角面来表示,任意其它多边形也可以转化为三角形,所以面的绘制我们使用三角形来实现光栅化的过程。
(22条消息) 计算机图形学【GAMES-101】2、光栅化(反走样、傅里叶变换、卷积)_宗浩多捞的博客-CSDN博客
1,屏幕像素的表示
屏幕中的每一个像素点我们都用整数坐标进行表示,最大最小值与分辨率相对应,考虑到每个像素都有一定的面积,我们定义(x+0.5,y+0.5)为该(x,y)像素的中心,如图中黑圈所示。
2,采样
(闫令琪老师原话)所谓采样,给定一个函数(它是连续的),在不同地方(输入)去问这个值是多少(输出)。把一个函数离散化的过程称为采样。我们可以采样时间、位置、方向等等。
如下,给一个函数,输入不同的x求出对应的f(x)这就是采样
- 光栅化输出 = 采样一个函数(屏幕上像素中心点是否在三角形内)(如果在,就上色)
- 定义inside(t,x,y)函数
- 判断像素是否在三角形内
利用顺时针或逆时针点进行叉乘,三者一致正负号则为在里面
比如上面张图
P0P1 ✖️ P0Q => 朝屏幕外 => Q在P0P1的左侧
P1P2 ✖️ P1Q => 朝屏幕外 => Q在P1P2的左侧
P2P0 ✖️ P2Q => 朝屏幕内 => Q在P2P0的右侧
在内部的条件:三个叉积结果符号相同,所以Q不在三角形内部。
(注意三角形三个边的向量要顺时针或者逆时针进行选取)
- 采样结束,得到了每个像素点的数值0 or 1(0在三角形外,1在三角形内)
- 发送给显示设备,给每个像素填充颜色(每个像素只能有一个颜色)
但是很明显,这并不是我们想看见的三角形(出现了走样现象,有锯齿)
这个才是我们需要的 ↓
3 Antialiasing反走样
Artifacts:(图形学黑化)一切不准确或者说不希望的结果称为Artifacts
反走样方法:Blurring(Pre-Flitering) Before Sampling——先模糊后采样
-
为啥先模糊后采样会减少走样现象呢?
先模糊,信号变化频率/幅度会降低些,在采样频率不变的情况下,走样现象会减轻我们知道图像在人眼里面其实并非是连续的,是由一帧一帧画面组成的,连续的图像其实是 人脑采样后利用人眼暂存图像的特性而产生的错觉结果 同样的,顶点信息更新频率如果远高于采样结果,就会造成走样,因为采样后的结果才是看 到的结果,而顶点更新是真实世界。
假设黑色的点是我们的采样点,从上到下函数的更新频率越来越快,但是采样(方法)频率不变,最终造成的结果就是采样点的走势和函数更新走势非常不一样,这就是所谓走样
结论:
采样速度跟不上信号(函数or信息)变化速度会产生走样
还有一种走样就是同样的采样频率采样不同的函数得到相同的结果也称为采样
加设采样点也是变化函数,那么两条函数在我相同的采样频率下产生的结果是一致的,这也是走样的概念