Phong和Blinn-Phong光照模型

Phong和Blinn-Phong光照模型_第1张图片
文章内容来自上面这篇 p d f pdf pdf,如有错误,欢迎指正。
Phong和Blinn-Phong光照模型_第2张图片
简要介绍一下 P h o n g Phong Phong B l i n n − P h o n g Blinn-Phong BlinnPhong光照模型的特点。
Phong和Blinn-Phong光照模型_第3张图片
简要介绍一下问题,同时给出了 N 、 L 、 V 、 P N、L、V、P NLVP的意义(之后计算会用到)。
Phong和Blinn-Phong光照模型_第4张图片
0 0 0步,此时最终颜色仅与物体本身的材质有关。
Phong和Blinn-Phong光照模型_第5张图片
1 1 1步,我们可以加上环境光(它能将灯光均匀地照射在场景中每个物体上面)。
Phong和Blinn-Phong光照模型_第6张图片
这里对 K e 、 K a 、 I L a K_e、K_a、I_{La} KeKaILa进行了更加细致的阐述,它们是和波长有关的函数。
Phong和Blinn-Phong光照模型_第7张图片
这里开始引入漫反射 D i f f u s e    r e f l e c t i o n Diffuse\ \ reflection Diffuse  reflection
Phong和Blinn-Phong光照模型_第8张图片

Phong和Blinn-Phong光照模型_第9张图片
2 2 2步,这里给出了漫反射方程, K d K_d Kd是漫反射系数, I L I_L IL是光线的(颜色)强度, N N N是表面的法向量, L L L是指向光源的方向, θ θ θ是二者间的夹角,当 N ∗ L N*L NL(数量积) < = 0 <=0 <=0时, B B B应该等于 0 0 0(免去来自于物体内部的贡献)。
Phong和Blinn-Phong光照模型_第10张图片
接下来是镜面反射(某些物体上的高光),它和观察方向 V V V有关。
Phong和Blinn-Phong光照模型_第11张图片
当角度 φ φ φ增大时,高光会迅速衰减。
Phong和Blinn-Phong光照模型_第12张图片
这里讲的是 P h o n g Phong Phong镜面反射。
Phong和Blinn-Phong光照模型_第13张图片
这里讲的是 B l i n n − P h o n g Blinn-Phong BlinnPhong镜面反射,因为计算反射光线 R R R比较复杂,需要更多时间,所以这里使用了 L 、 V L、V LV的半角向量 H H H作为替代(当然效果也会略差于 P h o n g Phong Phong)。
Phong和Blinn-Phong光照模型_第14张图片
第三步,这次我们加入了 B l i n n − P h o n g Blinn-Phong BlinnPhong镜面反射。
Phong和Blinn-Phong光照模型_第15张图片
方向光。
Phong和Blinn-Phong光照模型_第16张图片
点光源。这里讲到了光强的衰弱(与距离的平方有关)。
Phong和Blinn-Phong光照模型_第17张图片
聚光灯。
Phong和Blinn-Phong光照模型_第18张图片
4 4 4步,加上了光强衰弱,并且现在能够处理多光源的情况了(这个式子是针对聚光灯的)。
Phong和Blinn-Phong光照模型_第19张图片
接下来是针对点光源的式子, I L a I_{La} ILa是全局环境光, I L a , j I_{La,j} ILa,j是每一个独立的光源。同理漫反射 I L d , j I_{Ld,j} ILd,j和镜面反射 I L s , j I_{Ls,j} ILs,j也可以独立出来。从上式镜面反射部分可以看出,这是 B l i n n − P h o n g Blinn-Phong BlinnPhong镜面反射,如果使用 P h o n g Phong Phong镜面反射的话,应该把 N ∗ H N*H NH改为 V ∗ R V*R VR,其中 V V V是视线, R R R L L L的反射光线。在这里说一下 R R R应该怎么计算:
Phong和Blinn-Phong光照模型_第20张图片
先看上图,已知 L ˉ \bar{L} Lˉ O P ˉ \bar{OP} OPˉ,其中 O O O为交点, P P P为点光源的位置, N ˉ \bar{N} Nˉ为法线,现在要求反射光线 R ˉ \bar{R} Rˉ,我们可以向上图一样把 R ˉ \bar{R} Rˉ平移上去搞成一个等腰三角形,那么很容易得到 O H ˉ / 2 = ( L ˉ ∗ N ˉ ) ∗ N ˉ \bar{OH}/2=(\bar{L}*\bar{N})*\bar{N} OHˉ/2=(LˉNˉ)Nˉ(这里再乘 N ˉ \bar{N} Nˉ的原因是前面计算的是两个向量的数量积,结果为一个数值),那么 R ˉ = O H − L ˉ = 2 ∗ ( L ˉ ∗ N ˉ ) ∗ N ˉ − L ˉ \bar{R}=OH-\bar{L}=2*(\bar{L}*\bar{N})*\bar{N}-\bar{L} Rˉ=OHLˉ=2(LˉNˉ)NˉLˉ

Phong和Blinn-Phong光照模型_第21张图片
这里讲了 P h o n g Phong Phong插值(法向量插值),先计算顶点的法线,然后对法线进行插值,最后用它进行着色。

你可能感兴趣的:(图形学)