闫令琪教授计算机图形学
Shading(着色)
A Simple Shading Model(简单的着色模型)
Blinn-Phong Reflectance Model:
漫反射
已知1:光照强度和光照方向与法线方向间夹角的余弦值成正比:
已知2:漫反射:对于一个点光源来说,向外各个地方传播的光强度和距离的平方成反比:
推论可知当光源距离着色点距离为L、与法线距离呈现一定角度时,着色点处的光照强度(注意:max(0,L)表示,这个点乘可以为负数,为负数时是折射的光,在此仅讨论反射光;且漫反射应该和观察方向V没有任何关系,这一点在式子中也体现出来了):
Specular Term(高光向量)
因此知高光向量与入射光线夹角的一半为法线向量,如果半程向量(即观测法相和入射方向夹角的一半)与法线向量十分接近,则说明观测方向与高光向量十分接近:
注意 :对于上图的指数p,是便于判断是否处于高光区使用的,例如下图,当指数较低时,容忍度太高,就算到了45度余弦值也为0.5;而达到了64时,余弦值的容忍度就大大降低(正常情况在Blinn-Phong模型中指数在100~200之间):
Ambient Term(环境光照)
环境光照与入射光照方向无关(因为其接收到的是来自四面八方反射或者非反射的光),也和观测方向无关(不论观测点在哪,对于某个物体的特定点来说显现的样子颜色都是不变的),因此环境光照实际上就是一个常量,其作用就是:保证物体没有一个地方是黑的,把所有的物体颜色相关的项相加并提升一个亮度展现出来
最终的Blinn-Phong Reflection Model
将之前讨论的漫反射项、高光向量、环境光照全部相加得到的模型:
Shading Frequencies(着色频率)
逐面(Flat shading )渲染,按照每个面(e.g.三角形块),求其法线与入射光向量的关系,逐一渲染:
逐顶点(Gouraud shading):
注意 :如何找到每个顶点的向量:1、知道球心,直接连接球心和该顶点;2、将周围包含该顶点的所有面的法线方向求平均(简单平均或者加权平均)
逐像素(Phong shading):