GAMES101 现代计算机图形学入门(五)(六)
主要讲的是三角形的光栅化
光栅化是什么意思呢,就是说前面已经讲到一些基础的变换,还有一些三维物体如何在屏幕上呈现的问题
- Viewing transformation
- View(视图)/Camera transformation
- Projection(投影) transformation
- Orthographic(正交) projection
- Perspective(透视) projection
透视投影要转换成正交投影

我们需要定义宽高比、垂直可视角度
MVP变换做完了后,所有的正交投影都被转换到了-1到1的立方体内,如果是透视投影的话,也可以先将透视投影转换为正交投影,然后再转换到-1到1的立方体内。
我们知道了这个-1到1的立方体,该把这个立方体画到哪儿呢?当然是画到屏幕上。
屏幕由像素点构成,是离散的,二维的。
计算机生成图像中,最基本的二维元素是三角形,对其的离散化操作就是生成图像的重点。
平时经常提到的Raster在德语中就是屏幕的意思,那Rasterize光栅化,就是将物体画在屏幕上的意思。
与z轴即深度无大关系,就是将这个-1到1的平方映射到屏幕的宽高比中

现在我们得到了一个二维的场景的照片了,然后我们要做的就是将这个多边形打碎,告诉我每一个像素应该是什么样的,这样才能将屏幕上的图像绘制的最好。
简单介绍下不同的光栅显示设备
示波器
Cathode Ray Tube CRT 阴极射线管的设备
他们通过一种扫描的方式来绘制图像,一行一行的绘制图像(隔行扫描)
frame buffer:memory for a raster display 内存中的一块区域映射到屏幕上
flat panle displays 现在用的都是这种平板显示设备
LCD(liquid crystal display) pixel: 光线通过光栅后,通过液晶扭曲将光的方向给扭曲了
LED Array Display Light emmitting diode array 发光二极管
Rasterization:Drawing to Raster Displays
三角形是最最基础的多边形
任何多边形都可以拆成三角形
三角形的内部一定是平面的
三角的内外的定义是很明确的
根据三角形中的点和顶点的位置,三角形内部的点都是可以渐变的,都可以做插值。

把三角形变成像素,光栅化中的最重要的一部分,就是判断一个像素点和三角形的关系。
最简单的一个方法,就是通过采样的方法来做光栅化。
什么是采样,有一种简单的理解就是,给你一个连续函数,然后我在不同的地方,问这个地方函数的值是多少,采样其实就是将一个函数离散化的过程。我们这里提到的采样,就是利用像素的中心对屏幕空间进行采样。我们需要某一个函数,在不同的像素空间上他的值是多少。
我们需要知道的就是,这个点是否在三角形内

回忆一下,我们可以用向量的叉乘来判断一个点是否在三角形内。
边界问题是可以自己定义的,当然在一些图形学api中,有着严格定义的,被称作top-left rule。

难道要为了判断一个三角形遍历所有的像素点? 显然没有必要,我们可以用bounding box找到这个三角形的最大约束,减少不必要的运算。
只是单纯的采样,我们可以看到图中的这样的锯齿,这样就是采样率不够高,就会发生走样的现象,这是光栅化图形学中要去克服的问题。
反走样和深度缓冲
Artifacts :图形学中对于一切不爽的东西就这么称呼
采样产生各种各样的问题,比如说锯齿,摩尔纹,wagon wheel illusion(马车车轮错觉)



对原来的图像做一个模糊,再进行采样图像会很不错
但是如果采样后再做模糊,那会更模糊
正弦波和余弦波有不同的频率,傅里叶级数展开,傅里叶变换
频率变化越高越需要快速的采样
同样的一个采样方法我们去采样两个函数,结果我们没有办法区分它们,这样就是走样。


滤波就是去掉一些频率信息,可以将滤波视为做卷积也可以视为做平均

时域上的卷积可以视为在频域上做乘积,频域上的卷积可以视为时域上的乘积

看图就能理解,采样就是重复原始信号的频谱
为什么会有走样的现象呢,就是引起不同频谱的重叠

采样率增加或者做反走样
什么是反走样?


