光栅化
把3D的物体显示在屏幕上这就是光栅化
实时:
每秒钟能够生成30幅画面或者叫30帧,否则叫离线 (offline)
光线追踪费时, 现在随着技术的发展已经有了实时光线追踪
编程语言不推荐用python, 可以使用C++, 因为python实在是太慢了
线性代数基础
向量点乘
- 默认向量的缺省是列向量
向量的点乘是一个数字
会发现点乘其实是对应的元素位置相乘再相加
点乘可以用在求法线, 求投影夹角上
点乘可以得到一个向量投影到另一个向量的样子:
- 现在是把b向量投影到a向量
- 投影出来有啥用呢?可以把一个向量分解为两个向量,比如b分为平行于a和垂直于a的向量
- 向量的点乘还可以告诉前与后的信息
比如以a为界,落在虚线以上的是forward部分, 下面是backward部分, 如果点乘都是大于0就是方向基本相同, 否则就是方向基本相反, 如果都是单位向量哈可以根据是否接近1来判断接近的程度
向量叉积
从左到右用右手卷判断方向
叉积有什么用处呢?可以通过给定的两个向量来确定第三个向量, 以此构成坐标系
如果在一个坐标系里面x叉乘y得到 了z, 那么我们称这个坐标系是个右手坐标系
叉乘的规则:
- 交换方向相反
- 相同向量叉乘得到的是零向量
- 分配律和结合律仍然存在
叉乘的矩阵表示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DiNvZoec-1637983135268)(https://i.loli.net/2021/11/26/lH5u12rPvNBsOI4.png)]
叉积还有一些用处, 判断左和右, 内与外,这两个其实一个意思
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XiOr07Jh-1637983135269)(https://i.loli.net/2021/11/26/TIBJ9elNxrdARQt.png)]
现在有个平面, a和b构成的, 从图上我可以很明显的看出, b在a的左侧(逆时针旋转),但是假如从向量角度出发就可以判断a叉乘b是否为正向量
假如A, B, C 三个点按逆时针的顺序排列在一起, 判断P点是不是在三角形的内部, 是不是在AB的左侧, 就可以构建从A到P的向量, 假如AB叉乘AP指向外, 那么P点就在AB左侧, 然后判断是CA的左侧,那么P在三角形内
点乘分解坐标
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cD3fgOi2-1637983135270)(https://i.loli.net/2021/11/26/TG9hfBEbMo68HzZ.png)]
矩阵
矩阵的乘积列等于行
转置的性质
点乘可以变换计算方式
左边是点乘, 右边是矩阵乘积
叉乘也可以写成矩阵的形式
其中 A ∗ A^* A∗是一个矩阵, 叫dual matrix
矩阵变换
缩放
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w1R2dGHi-1637983135273)(https://i.loli.net/2021/11/26/3G2mtV7XUZShIqO.png)]
放缩对角线有值, 这个矩阵叫缩放矩阵
对称
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DT4uD6Ke-1637983135275)(F:/%E7%A0%94%E7%A9%B6%E7%94%9F%E6%95%B4%E7%90%86%E4%BF%A1%E6%81%AF/typora_pic/image-20211126163406106.png)]