光栅化
把3D的物体显示在屏幕上这就是光栅化
实时:
每秒钟能够生成30幅画面或者叫30帧,否则叫离线 (offline)
光线追踪费时, 现在随着技术的发展已经有了实时光线追踪
编程语言不推荐用python, 可以使用C++, 因为python实在是太慢了
线性代数基础
向量点乘
- 默认向量的缺省是列向量
向量的点乘是一个数字
会发现点乘其实是对应的元素位置相乘再相加
点乘可以用在求法线, 求投影夹角上
点乘可以得到一个向量投影到另一个向量的样子:
- 现在是把b向量投影到a向量
- 投影出来有啥用呢?可以把一个向量分解为两个向量,比如b分为平行于a和垂直于a的向量
- 向量的点乘还可以告诉前与后的信息
比如以a为界,落在虚线以上的是forward部分, 下面是backward部分, 如果点乘都是大于0就是方向基本相同, 否则就是方向基本相反, 如果都是单位向量哈可以根据是否接近1来判断接近的程度
向量叉积
从左到右用右手卷判断方向
叉积有什么用处呢?可以通过给定的两个向量来确定第三个向量, 以此构成坐标系
如果在一个坐标系里面x叉乘y得到 了z, 那么我们称这个坐标系是个右手坐标系
叉乘的规则:
- 交换方向相反
- 相同向量叉乘得到的是零向量
- 分配律和结合律仍然存在
叉乘的矩阵表示
叉积还有一些用处, 判断左和右, 内与外,这两个其实一个意思
现在有个平面, a和b构成的, 从图上我可以很明显的看出, b在a的左侧(逆时针旋转),但是假如从向量角度出发就可以判断a叉乘b是否为正向量
假如A, B, C 三个点按逆时针的顺序排列在一起, 判断P点是不是在三角形的内部, 是不是在AB的左侧, 就可以构建从A到P的向量, 假如AB叉乘AP指向外, 那么P点就在AB左侧, 然后判断是CA的左侧,那么P在三角形内
点乘分解坐标
矩阵
矩阵的乘积列等于行
转置的性质
点乘可以变换计算方式
左边是点乘, 右边是矩阵乘积
叉乘也可以写成矩阵的形式
其中 A ∗ A^* A∗是一个矩阵, 叫dual matrix
矩阵变换
缩放
放缩对角线有值, 这个矩阵叫缩放矩阵
对称
切变(shear)
比如拉着图向右拉, 这个和平行四边形是不一样的, 因为这里y是一点都不动的
这里最上面的边移动的距离是a, 下面的距离是0, 这里假设最高为1, 也就是1对应a, 0对应0, 那么任何一个y对应的就是y*a