1、法向量:垂直于平面的向量,包括两个方向 在真正的模型顶点数据就会存储法向量,在存储过后,它抛弃了在数学概念上的两个方向的法向量 只保留了正方向的法向量 https://img-blog.csdn.net/20180106022905579 2、这里有一个很简单的示意图,蓝色是从顶点引出垂直于平面的法向量, 黄色的是从外部射向表面的光向量 https://img-blog.csdn.net/20180106023102478 💡 光的方向是相反的,一定是从模型指向光 光向量也会被形象理解为,光在距离顶点很远的位置,这个向量的长度很长

Screenshot 2023-03-19 at 11.49.09 PM.png

那么它和我们的计算有没有关系呢 3、对于两个向量求点击,它们有一个很明显的几何意义,就是能够得到这两个向量之间夹角的大小 也就是求的余弦值cos 对于v1和v2求点积,其实就等于v1和v2的模长相乘再乘上它们之间夹角的余弦值 反过来说求夹角的余弦值其实,就是用点积的结果除以v1v2模长的乘积 结合上图,如果光向量的长度很长,那就必须求的它的模长,还要求的法向量的模长,只有两个向量模长得到之后,才能求得准确的余弦值 反三角函数求具体的角度在这里不需要应用,但是有些情况下可能会需要求解具体的角度 一般情况下角度如果大于90度,cos值是小于0的, 在这样的情况下,我们正好就可以考虑如果两个向量之间的夹角是小于90度的,它们点积的结果就应该是0~1之间的范围 https://img-blog.csdn.net/20180106023314454 如果能够让v1和v2能够把它们做到是一个单位向量,那么它们模长相乘结果就为1 也就是说两个这样的两个向量它们之间的夹角就是两个向量之间的点积

Screenshot 2023-03-20 at 12.07.11 AM.png

💡 对于光的计算需要两个向量 1.关于法向量 2.关于顶点指向光源的光向量 3.再把这两个向量做到归一化的时候,夹角的余弦值就是两个向量点积的结果 💡 利用这个点积值0~1之间,就可以拿来进行着色 夹角越小光照亮度越亮

法向量的计算

使用U和V两个向量,它们不一定要垂直,它们描述的是U和V所在的一个平面 https://img-blog.csdn.net/20180106023832606 用U和V进行一个左手方向的差积,就可以得到一个垂直于平面方向的法向量N

Screenshot 2023-03-20 at 12.21.26 AM.png

5、根据左手坐标系,下方的向量计算,如果是V1*V2垂直的法向量是朝着屏幕里面的, 为了得到垂直于V1V2所在平面的正确的法向量,应该v2乘以v1,这样法向量的朝向是朝向屏幕外边的,也就是朝向观察者的方向,这样才可以通过夹角计算光照,并得到正确的光照效果

Screenshot 2023-03-20 at 12.22.45 AM.png

https://img-blog.csdn.net/20180106024119317 6、所以对于下方的三角形,在计算法向量是,和顶点的顺序是密不可分的,例如要计算正确的法向量,那么就要计算V1和V2的向量,一个是B-A另一个是C-A, 如果ABC对于的顺序分别是0、1、2 V1和V2向量也就是
[1]-[0]和[2]-[0] 那么这样子的话就必须要保证顶点遍历的顺序,如果是其他的顺序,就会得到错误的法线方向 https://img-blog.csdn.net/20180106024522498