回顾上节课;
每次着色是在一个shading point,如果我们要得到一张图,我们需要进行多次着色。也就是这节课要讲到的着色频率。
我们继续看这个公式:(Blinn--Phong模型,因为半程太好算了,两个相加,在转单位向量就完事了)
我们接收的光照能量和夹角余弦有关系,。
现在我们看高光:
高光往往是镜面反射导致的,看到高光就是我们看的方式和镜面反射方向接近的时候就会出现。
当我们我们也可以看出,如接近高光区,那也就意味着半程向量和平面法向量十分的接近,如图所示(高光就相当于折射角,是被法向量平分的)
也就是说我们看不看得到高光可以看他的半程向量是否和法向量接近。
为什么要有个p次方呢,是因为余弦变化的太慢了,加上指数可以缩小高光的范围,也变得敏感(正常我们吧p记作100+)
实际对比
下面看环境光:
环境光特别复杂,所有我们做出一个假设,所有点的环境光的大小是一样的
环境光和方向什么的都没关系,可以理解为一个常数,(深入以后再说)
下载我们吧所有光加一起来
环境光+漫反射光+高光项
使用公式
因为这个是对一个点的操作,下一步是对所有的进行操作,在这里我们吧不管你距离物体多远,观察物体的光都是一样的,不会衰减(虽然我们远看会变暗)。现在还不足以解释该问题。
下面我们考虑这个这是三个相等的模型,但是着色后确实不同的,
这个就涉及到了着色频率了,图一是一个平面只做一次shading。图二我们是直对顶点进行着色,内部我们使用差值形式过度,最后一个应用于每一个像素。
每一个三角形着色:(Flat shading)
不考虑三角形内部变化
对每一个顶点着色(Grouraud shading)
(问题,怎么求顶点的法向量之类的)
对每一个像素着色(Phong shading)
下面我们看。难道第一种方法一定垃圾吗?
从这可以看出,在模型面数足够高的情况下,其实差距没那么大,其实就是一个空间和时间作斗争,互相均衡的一个情况。
现在求一个顶点的法向量,,如果是一个球很简单,
如果不是呢:
中间哪一个可以当作四个面的法向量平均,且求一个加权平均(面积)
20201109 21:22份到此结束