Blinn光照模型对Phong光照模型高光断层现象的改进

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DdogYuan/article/details/84316988

Phong光照模型的镜面光反射实现

在这里插入图片描述
由于Phong光照模型中,镜面反射光照分量的公式为视角方向V和光线反射方向R的点积,而当V和R的夹角大于90度时,点积为出现负数,实现中我们常常将点积为负数部分设为0。这样的话,当镜面反射的反射度S非常小的时候(例如1),V和R夹角为90的位置的光照强度会发生突变,造成高光断层的现象。
在这里插入图片描述

Blinn光照模型的镜面光反射实现

而Blinn光照模型的实现中,采用了半程向量和法向量的夹角余弦作为因子,与Phong光照模型中采用视角方向与反射光线夹角余弦相比,半程向量与法向量的夹角在平面上方始终在90度以下,这样就避免出现了镜面反射分量发生突变的现象。
例如下图中,计算相同的光照方向L和相同的视角方向V在两种光照模型下的镜面反射分量,Phong光照模型在法向量的左边有许多区域的镜面光分量被置为了0,因为该区域反射光方向与视角方向的夹角均大于90度。而Blinn在整个平面上方都不会出现半程向量与法向量夹角大于90度的现象。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/DdogYuan/article/details/84316988
今日推荐