跟着闫令琪老师的课程学习,总结本身学习到的知识点html
计算机图形学是一门将模型转化到屏幕上图像的一门基础学科,主要分为:Rasterization(光栅化)、Curves and Meshes(几何表示)、Ray Trancing(光线追踪)、Animation/Simulation(动画和模拟)
图形学与计算机视觉的简单界限:
(1) 计算机视觉是将屏幕上的图片转化为模型的过程;
(2) 计算机图形学是一门将模型转化到屏幕上图像的一门基础学科。
每一个类别的知识框架以下图:
框架
点乘在图形学的应用
(1) 求两个向量之间的夹角:
$$\cos(\theta) = \frac{(\vec{a} \cdot \vec{b})}{\lVert a \lVert \lVert b \lVert}$$
能够判断两个向量的距离、分向量与判断向量先后
(2) 投影
一个向量在另外一个向量上的投影
ide
[1] 右手坐标系
右手坐标系
叉乘在图形学中的应用
(1) 判断一个向量在另外一个向量的左右,叉乘为正(与右手方向一致),则为目标在本身右方,反之亦然;
(2) 在性质(1)的基础上,若是一个点在包围他的全部线的同一侧,那么能够说明该点在这个图形内,反之亦然。
学习
(1) 矩阵A、B乘积的转置等于B的转置矩阵乘A的转置矩阵动画
(2) 矩阵AB的逆等于B的逆乘A的逆spa
三维变化与二维变换矩阵相似3d
Scale:code
Rotation:orm
Translation:
矩阵变换把先变化的矩阵放到右边:矩阵运算是从右向左
Rodrigue's Rotation Formula: Raotation by angle \(\alpha\) around axis \(\vec{n}\)
In the formula
I :Identity matrix
最后乘积的结果是一个3*3的矩阵
引用博客:MVP变换
对模型进行模型变换时,须要注意坐标系是在世界坐标系原点。当绕模型中心进行变换时,首先要将模型的中心点移动到世界坐标系的原点,以后在进行模型变换,以后移回到原来的位置。
矩阵描述为:$$M=M_t^{-1} M_r M_s M_t$$
这个过程是将肯定相机的位置:将相机的位置经过下面的过程移动到固定的点和方向。
(1) 相机的位置固定在世界坐标系的原点: \(\vec{e}\)
(2) 相机的朝向 \(-\vec{Z}\): \(\hat{g}\)
(3) 相机的向上方向\(\vec Y\): \(\hat t\)
基于上述过程,要求视图变换矩阵\(M_{view}\)分别求相机的平移矩阵\(T_{view}\)、旋转矩阵\(R_{view}\)
求旋转矩阵时,直接求相机旋转到原点的矩阵不容易求解,但求原点到相机位置的旋转矩阵容易求。
因此先求原点到相机的旋转矩阵:Z To \(-\hat{g}\)、Y To \(\hat{t}\)、最后保证\(\vec{X}\) To \((\hat g \times \hat t)\) 朝向的方向,缘由是保证符合右手坐标系。
由于\(R_{view}^{-1}\)是正交矩阵,因此逆矩阵和旋转矩阵相同。
因此
我的理解投影变换的终极目的是让物体挤压在一个单位大小的平面(空间)内。缘由先挖个坑。
简单理解就是将物体的忽略z坐标,将模型经过Scale To [-1,-1]^2平面内。
真正的操做:
(1) 移动模型的位置到原点
(2) 缩放模型到空间[-1,1]^3中
正视投影的光线能够当作是一个立方体,如上图。透视投影的光线能够当作一个视锥,以下图。
透视变换能够分为两个步骤进行:
(1) 将视锥挤压到立方体内\(M_{persp->ortho}\)
(2) 将挤压后的视锥进行正视投影变换$M_{ortho}
挤压时的变换矩阵\(M_{persp->ortho}=\begin{bmatrix} n&0&0&0\\ 0&n&0&0\\ 0&0&n+f&-nf\\ 0 & 0&1&0 \end{bmatrix}\)
因此投影变换矩阵
将通过MVP变换后获得的单位空间模型变换到屏幕上,屏幕左边是左下角为原点。
因此视口变换的矩阵
主要是将已经通过视口变换的模型画在屏幕空间上。
主要过程有:
(1) 采样
(2) 判断像素中心的位置与三角形的关系
由于屏幕空间自己分辨率已经给出,因此像素点的数量也已经确认了,可是对咱们能够经过如下方法提升效率,将可能有用的像素点选取出来:
1.Bounding Box
2.Incremental Triangle Traversal
主要应用的原理是利用向量的叉乘判断点是否在三角形内。
伪代码以下
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)
(1) Jaggies(Staircase Pattern)
缘由:空间采样产生的锯齿
(2) Mpire
缘由:图片欠采样
(3) Wagon Wheel Effect
缘由:时间上采样产生
(1) 提升采样率:不实用
(2) 反走样
反锯齿的思路是先模糊,后采样,顺序不能够调换。
走样的缘由:采样频率知足奈奎斯特采样定律,即采样频率高于二倍的最高频率。
频率图:越靠近中心点,表示的频率越低
滤波器的种类大体分为四类:
(1) 低通滤波:应用的效果是模糊
(2) 高通滤波:应用效果是提取边缘信息
(3) 带通滤波:也能够绘制出图像的边缘信息
时域卷积、频域相乘
时域卷积,频率图向两边拓展。
经过MSAA方法能够首先模糊的效果。
步骤以下:
(1) 将每一个像素点再进行细分
(2) 判断一个像素点里有几个细分的点在三角形内
(3) 将像素点根据在三角星内部细分点不一样程度的着色,表示已经模糊。
上述过程的流程图以下:
上述过程在频率上的过程至关于低通滤波
每一个像素都有一个z值表明像素点的深度、z值越大,说明该点越远。
Z-Buffer 算法伪代码
Initalize depth buffer to \(\infty\)
for(each trangle T) for(each sample(x,y,z) in T) if(z<zbuffer[x,y]) //closeet samnple so far zbuffer[x,y]=z; //update color framebuffer[x,y]=rgb; //update depth
本周主要是完成光栅化的过程。其中比较重要的几个知识点:向量点乘和叉乘的几何意义、齐次坐标系下的矩阵变换、MVP变换、视口变换、光栅化、反走样、Z-Buffrer深度缓冲等等基础概念。