一、定义视锥
1.宽高比(Aspect ratio)
宽高比 = 宽 / 高
2.可视角度(fov)
当可视角度足够小,可以忽略其透视看作是正交投影
tan(垂直可视角度(fovY)/ 2) = 半程高(t)/ 相机距近端平面距离(|n|)
二、将立方体“画”在屏幕上
1.定义屏幕
屏幕就是一个像素组成的二维数组
2.Raster
Raster在德语中就是屏幕
Rasterize--画在屏幕上
3.像素(Pixel)--图像元素的缩写
一个像素内的颜色不会有差异(暂时)。
一个像素内的颜色都可以由RGB的强度决定。
4.屏幕空间
屏幕上的像素索引从(0,0)开始,例如图上蓝色像素的索引为(2,1)
屏幕上像素的索引从(0,0)一直到(屏幕宽度 - 1,屏幕长度 - 1)结束
像素(x,y)的中心在(x + 0.5,y + 0.5)
屏幕的覆盖面积从(0,0)到(屏幕宽度,屏幕长度)
5.将立方体“画”在屏幕上
5.1 视口变换(viewport)
通过视口变换将立方体xoy平面先缩放到屏幕大小,再将其平移到屏幕上,而z轴方向不做改变。
5.2 光栅化三角形
为什么是三角形?--最简单,最好,具有很多独特性质。。。
通过采样的方法来判断像素中心点是否在三角形内,如果在三角形内返回则填充这一像素,反之不做处理。如果中心在三角形边上,则可作可不作。转换为函数即:
同时,不需要对屏幕上的所有像素进行判断:
对于图中三角形,只需要遍历蓝色区域内的像素即可,即“包围盒”
除此之外,还可以通过找一个三角形中像素的最左和最右的像素来加速三角形的光栅化,如下图:
5.3 锯齿
如果将采样点的像素填充出来,则会直接得到以下图形:
显然,该图存在很多锯齿,与原图相去甚远,即发生了“走样”。如何抗锯齿是计算机图形学需要研究的。