华科图形学笔记-照明模型

Phong模型

环境光
光线在场景中经过复杂的传播后,形成了弥漫于整个空间的光线,称为环境光。

  • 特点
    照射在物体上的光来自周围各个方向,又均匀地向各个 方向反射。

  • 近似表示
    I e = I a K a I_e=I_a*K_a
    I a K a I_a为环境光强度,K_a为物体对环境光的反射系数

理想漫反射(Diffuse Reflection )
当光线辐射到一个粗糙的、无光泽的表面上时,光线沿各个方向都作相同的反射,从任何角度看这种表面都有相同的亮度。
用lambert余弦定理可以算出强度值,就是入射光强度 漫反射系数 点光源方向与平面法向夹角三者乘积
在这里插入图片描述
可以看到漫反射的特点,只与入射角有关,与视点无关。
如果把L和N规格化为单位矢量,则 c o s θ = L N cos\theta=L\cdot N 就得到 I d = I p K d ( L N ) I_d=I_pK_d*(L\cdot N)

可能又多个点光源,由于漫反射光强只跟入射光有关,将这几个点光源的漫反射光强计算出来直接相加就好了。

镜面反射(Specular Reflection)
镜面反射遵循反射定律。反射光位于表面法矢两侧。

  • 对于理想的高光泽度反射面,反射角等于入射角时,光线才会被反射。
  • 非理想的反射面,只要其表面是光滑的,在点光源的照射下,也会产生一块特别亮的区域,称为高光点

总之可以看到,不同于漫反射,镜面反射的效果和观察者所在位置非常相关了。

在这里插入图片描述
综合
Phong模型就是将环境光、理想漫反射光强、镜面反射光强相加。
在这里插入图片描述

Phong模型的实现

近似计算
在这里插入图片描述
在这里插入图片描述
近似之后高光区域会变大,通过修改n的值来修正。

多个光源:
在这里插入图片描述

光的衰减
在同一光源的照射下,距光源较近的景色看起来会亮一些,而距光源较远的景物看起来会暗一些。衰减因子如果用1/d^2效果不好,因为变化太快。用下面这个函数
在这里插入图片描述
在漫反射和镜面反射公式中分别加入这个衰减函数。
在这里插入图片描述

选择颜色模型
如果选择rgb模型,可以将环境光,漫反射光和镜面反射光都分解为r g b三个分量。光强和反射系数都可以分解为这三个分量
在这里插入图片描述
按三个分量就可以分别计算三次
在这里插入图片描述

基于Phong模型模拟平行光,点光源和聚光灯效果:
平行光:不加衰减因子
点光源:保留衰减因子
聚光灯:光锥的内圆锥和外圆锥
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

全局光照

又称GI(Global Illumination)或Indirect Illumination间接光照。考虑场景中来自光源以及经过其他物体反射后的光照。因此 全局光照=直接光照+间接光照
间接光照有透射光和反射光两种,涉及到透射光就要用whitted光投射模型了。

要加上投射光和反射光两个部分,
在这里插入图片描述
在这里插入图片描述
光照模型的发展阶段如下
在这里插入图片描述
全局光照不同的实现流派
在这里插入图片描述

光线追踪算法

在这里插入图片描述
定义:追踪光线路径,然后模拟光线与虚拟对象相互作用的方式。

主要思想:从视点向成像平面上的像素发射光线,找到与该光线相交的最近物体的交点。
如果该点处的表面是漫反射表面,则计算光源直接照射该点产生的颜色。
如果该点处表面是镜面或折射面,则继续向反射或折射方向跟踪另一条光线。

如此递归下去,直到达到结束条件(光线与光源相交、逃逸或者达到设定的最大递归深度)

存在的问题
1)表面属性单一:完全看不见折射光?完全没有镜面反射?
2)漫反射作为了结束条件
改进
通过模型的修正来缓解这两个问题
改进后的算法变为:从视点发出一条光线,光线与物体表面相交时根据表面的材质属性继续采样一个方向。(由于表面的多样性可能有多个采样方向)
新的问题:计算量很大
可能的解决方法:蒙特卡洛方法 得到的就是路径追踪算法

猜你喜欢

转载自blog.csdn.net/weixin_42189888/article/details/105465063