垂直的可视角度,这样可以描述一个相机侧面的视野的大小,使用field-of-view(fovY)来形容
如何使用可视角度来形容l,r,b,t?如图:
-
MVP
- Model transformation 放置物体
- View transformation 放置相机
- Projection transformation
- 正交变换 转到 [ − 1 , 1 ] 3 [-1,1]^3 [−1,1]3
- 视图变换 物体转到正交变换
-
MVP变换之后要转移到屏幕上
- 屏幕:像素构成、有一定分辨率
- 光栅: 屏幕
光栅化
:投影到屏幕
-
定义屏幕空间
-
像素这里表示和 z z z轴无关,我们只要把 x y xy xy平面[-1,1]转换到[0,width],[0,height]
-
矩阵变换为:
为什么选择三角形:
-
最基本的多边形
- 构成其他多边形
-
独特的性质(和多边形比较)
- 内部一定是平面,不能折叠成多个平面
- 三角形内部外部定义的很清晰
- Well-defined method for interpolating values at vertices over triangle
-
采样函数
- 通过采样离散化一个函数
- 采样在图形学中是一个很核心的概念
- We sample time (1D), area (2D), direction (2D), volume (3D)
-
判断像素是否在三角形中
-
通过右手定则判断一个点在三角形的左侧、右侧。比如 P 0 P 1 P_0 P_1 P0P1 P 0 Q P_0Q P0Q 中
-
在边上的点,是做处理还是不处理。这个自己定义即可,本书假定该点不做处理。在OpenGL有特别的规定。
-
如果全部做光栅化的话,这样的话,很容易造成浪费。我们可以先确定其边界。
-
也可以直接确定三角形的上下边界来确定:
-
如果我们想要发送如下图需要表示的采样信号:
我们会得到如下图的情况:
锯齿十分明显,如何解决锯齿问题,也是光栅化一直在处理的情况。