百人计划 图形2.4 传统经验光照模型详解
光照模型
也称为明暗模型,用于计算物体某点处的光强(颜色值)。就算法基础而言,光照模型分为两类:基于物理的渲染(PBR,偏重于物理的度量和统计方法,效果真实,计算复杂实现较为困难)、基于经验模型(对光照的一种模拟,通过实践总结出来的方法,简化了真实光照计算,并且能够达到不错效果)。
为什么要光照模型
现实世界光照是及其复杂的受到诸多因素的影响,有限的计算能力无法达到完全模拟。使用光照模型可以在提高计算速度,效果不错的前提下模拟光照。
光照模型的发展历程
经典光照模型和局部光照模型
经典光照模型
漫反射(什么是漫反射):当光线从光源照射到物体表面时,光线会被均匀反射到各个方向。在漫反射过程中,光线被吸收和散射,因此光线的颜色和方向被改变。
漫反射符合lambert余弦定理(代码如下)
Lambert余弦定理
在光学中通常使用辐射度来量化光。其中光源每秒发射出的能量为辐射通量p,单位面积接收的光量为辐射通量密度(辐照度)P/A。当光源垂直着色的单位面积的辐照度为E1=P/A1。将光束以某个角度照射到更大的平面上的辐照度为E2=P/A2。两者关系为:E2=E1dot(n,l) 即反射光线的强度与表面法线和光源方向之间的夹角的余弦值成正比。
光照公式:
高光反射(镜面反射)
当光线到达物体表面发生了反射,观察视线在反射光线的附近时,便能够观察到高光反射。高光反射描述了光线与物体表面发生的反射(光强不变,方向改变),高光反射的反射率是根据一种叫做菲尼尔效应的物理现象决定。(通常使用对应的反射贴图描述物体表面的反色率,并且使用光泽度描述高光范围的大小)
其中Mglass表示了材质的光泽度,Mspecular表示了材质反射光,R表示反射光线,V表示视线方向。
环境光
在局部关照模型中,由于没有考虑简介光的影响因此为了处理这种间接光照,引入环境光。
通常使用漫反射的反色率来指示环境光照的反射光量,该模型假定场景中发生多次反射和折射,并在是所有方向上均等的射向目标物体。
自发光
物体自身发出射线,通常作为单独的一项假如光照模型。
局部光照模型
局部光照模型只关心直接光照部分,即直接从光源出发在物体表面经过一次反射到达摄像头。
Phong模型
Blinn-Phong
Phong与Blinn-Phong模型的区别
Blinn-Phong模型没有使用反射向量,而是使用半角向量(上图中eye与L的和的一半)与法线的点积结果来计算。
半角向量计算更加简洁,当光源与视线都在物体表面上时,半角向量与法线向量角度永远不会大于90°。(设想一种情况,当材质的反光度非常低,因此物体被光线照射的大部分区域都会发生高光反射。这些区域中的一部分高光部分的反射向量与视线的夹角超过了90°;如果使用Phong模型会导致高光区域一部分缺失。折射由于Phong模型只考虑视线与光照分布在法线两侧的情况,当视线与光照在法线同侧时且高光反射对高度有较大影响时就会发生断层。下图所示)
Flat模型
平面着色模型,计算多边形的单个强度,每个三角形只有一个法线方向。以相同的光强度值显示多边形的所有点。通常适用于lowPoly风格。
作业
1、能量守恒指出射光线的能量永远不会超过入射光线的能量。
能量守恒对于传统模型的作用:引出pbr模型、为了遵守能量守恒需要区分镜面反射和漫反射。
2、基于能量守恒理念,自己写一套完整的关照模型,需要包含环境光照
发布评论