目录
着色频率
Flat shading(平面着色)
Gouraud shading(顶点着色)
Phong shading(像素着色)
如何计算法线
着色频率
大家可以看到下面这三个球是看起来不一样的是吧,但是其实这三个球用的模型是一样,但是着色频率不一样,我们说着色是应用到某个点的,所谓着色频率就是指要将着色应用到哪些点上,左边这个球是平面着色,中间这个是顶点着色,右边这个是像素着色
Flat shading(平面着色)
对于每个平面,我们可以找出它的法线,然后根据这个法线的方向就可以计算出一个shading,然后我们认为这个平面都是这个shading,那么这个平面都是同一个颜色,这个叫flat shading,平面着色
Gouraud shading(顶点着色)
对于每个三角形的顶点,我们可以计算出每个顶点的shading对吧,然后每个三角形顶点都有自己的颜色,那对于三角形内部怎么处理呢,这个可以通过插值的方法来让三角形内部的颜色有一个平滑的过渡,这个叫gouraud shading,顶点着色
Phong shading(像素着色)
还可以对每一个像素进行着色,计算每一个点的shading,这个叫phong shading,像素着色
这几个着色频率不一定说谁的效果就更好,具体还得看这个物体本身采样的面的数量,如果说这个模型足够精细,那实际上平面着色和顶点着色的效果也会很好
如何计算法线
我们刚刚说这个三种着色频率都需要计算这个法线,那么怎么计算呢,三角形平面的法线比较好算,直接两条边向量做一个叉乘就可以得到这个平面的方向向量了
那这个三角形顶点的法线如何计算呢?我们说一个顶点它肯定会是几个三角形的顶点对吧,因为用三角形表示这个物体肯定是闭合的,然后对于一个顶点周围的三角形平面都可以计算出一个法线,那我们取这些法线的平均是不是就可以近似的表示这个顶点的法线,那有的三角形面积大,有的三角形面积小,它们的法线对顶点的法线的影响可能不一样,这里就做一个加权平均就行
还有就是两个顶点之间的像素如何计算法线,是根据重心坐标做插值实现的,这个重心坐标具体后面课程会讲解