主讲老师:闫令琪,此处仅做个人笔记使用。如果我的分享对你有帮助,请记得点赞关注不迷路。
课程链接如下:GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili
课程分为四部分:光栅化、几何、光线追踪、模拟
图形学依赖于数学、物理学(光学力学等)、信号处理(反走样)、数值分析、美学等等等等。
一、线性代数
向量、矩阵。
表示空间中的一个点,并平移,旋转等操作。都涉及到向量好矩阵的计算。
向量(矢量):表示的是一个方向,A的坐标减去B的坐标,得到的就是一个向量。你平移这个向量,只要指向同一个方向,那就还是同一个向量。
向量两个重要的属性:方向、长度。
【向量点乘】在图形学里最重要的作用就是找到两个向量(方向)之间的夹角,或者说是余弦夹角。
常用于:
- 光从哪一个方向进来,物体表面的法线是什么方向的,我们从哪个方向去看。这些方向之间互相的夹角的计算,都是通过点乘来运算的。
- 一个向量投影到另一个向量上是长什么样。↓
图形学里向量常见应用及好处:
点乘的结果是一个标量。
点乘的公式是:a·b = |a||b|cosθ
点乘可以用来计算两个向量(两个方向)有多么接近。根据两个向量点乘的结果就可以判断两个方是接近还是远离。也可以计算关于前与后的信息(方向基本一致,方向基本相反或方向垂直):如果a、b向量比较接近,那么计算点积的时候得到的结果就比较接近1,如果方向渐渐远离,远离到垂直,结果数值就会渐渐变为0。再远离,数值会渐渐变为-1,再转360回去就又会回归为1。
应用: 一束光打在镜面上,大家都知道有镜面反射定律。如果眼睛(摄像机)就是从出射光的角度看进去,呢么就会看到非常亮的光斑反射 。如果错开一点点,就看不到反射。金属材质同理,离得角度在一个区间内看到的就是另一个金属感强的折射效果,我们需要通过计算两个向量是否接近及远离,来定义具体的区间,并对其做出相应的调整和实现。
【向量叉积】会输入a、b两个向量,会计算出第三个向量c(差积结果),和原本的两个向量都要垂直
叉积(又称叉乘)的结果是一个向量。
叉乘的公式是a×b = |a||b|sinθ * c(其中c是垂直于a和b所在平面的单位向量)
右手螺旋定则:计算a向量和b向量的差积,就是伸出右手(拇指与其余四指垂直),从a的方向弯曲手指转到b方向。拇指的朝向就是差积c的方向。(a叉乘b得到正c就说明是右手螺旋定则)
注意,叉乘没有交换律,如果要交换记得加个负号。一个向量叉乘它自己,结果是0(长度为0的向量)。
向量的叉乘可以表示成矩阵模式
叉积可以用来在图形学里判定左和右。如图,想判定b在a的左侧还是右侧(想左逆时针旋转还是向右顺时针旋转),用a叉乘b,会发现z是正的(拇指朝屏幕外),就可以判断b在a的左边。
叉积可以用来在图形学里判定内与外(重点)。 如图有ABC三个点,它们是逆时针排列的。我们想判定如图P点是否在三角形内,我们可以做这样的叉积:先看AB叉乘AP,得到结果是向外的,可得P点在AB的左侧。BC叉乘BP,可得P点在BP的左侧,CA叉乘CP,可得P点在CP的左侧。叉乘都在左侧可得点在三角形内,否则至少有一边点在右侧。
应用:如果过我们要做三角形光栅化,上述判断内与外就是基础。我们要判断三角形覆盖了哪些像素,我们至少要知道这个点是不是在该三角形内部,这样我们好给他进行着色。(如果得到结果是0,如何判断是内部还是外部呢?自己说了算进行啦哈哈哈,是内是外都可以)
定义一个坐标系的好处,(例如右手坐标系)是可以把任意的向量进行分解,分解到坐标系的三个轴上去(会用到前面介绍的向量的投影)。投影的计算方式就是点积。
【未完待续】如果我的分享对你有帮助,请记得点赞关注不迷路。