基础光照模型

一、定义

  • 光照模型(illumination model):

    • 也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而方,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的。
  • 基于物理理论的光照模型

    • 偏重于使用物理的度量和统计方法,效果非常真实,但是计算复杂,实现起来也较为困难;
  • 经验模型

    • 是对光照的一种模拟,通过实践总结出简化的方法,简化了真实的光照计算,并且能达到很不错的效果。

二、光照模型

  • 局部光照模型 :

    • 局部光照模型只关心直接光照部分,即直接从光源发出并照射到物体表现并反射至摄像头的光线。
    • 局部光照模型满足叠加原理,可以基本将光线分为四个部分:
    • 漫反射 、高光反射、环境光、自发光。
  • 漫反射:

    • Lambert余弦定律 
    •   理论基础:

              在光学中通常使用辐射度来量化光。

              其中光源每秒发出的能量为辐射通量P

              单位面积接受的光量为辐射通量密度(辐照度)P/A

              当光源垂直照射的单位面积的辐照度为E_{1} = P / A_{1}

              将光束以某个角度照射到更大的平面上的辐射度为E_{2} = P / A_{2}

              可以认为A1与A2的关系是:

                      \cos \theta = \frac{A_{1}}{A_{2}}  E_{2} = \frac{P}{A_{2}} = \frac{P}{A_{1}}\cos\theta = E_{1}\cos\theta = E_{1}dot(n,l)

              简洁的来说:反射光线的强度与表现法线和光源方向之间的夹角的余弦成正比

              光照公式

                       color = C_{light} * albedo * dot(normal,L);

              漫反射效果与观察者位置无关,与光源位置有关

  • 高光反射:

    • 当光线到达物体表现并发生了反射,观察视线在反射光线的附近时,便能够观察到了高光反射 。
    • 高光反射描述了光线与物体表面发生的反射(光强不变,方向改变)
    • 高光反射的反射率是根据一种菲涅尔效应的物理现象决定,通常使用对应的反射贴图描述物体表面的反射率,并且使用光泽度(粗糙度、反光度)描述高光范围的大小。
    • 计算公式:

        C_{specular} = C_{light} * m_{specular} * dot(v,r)^{m_{gloss}}

        r = I - 2 * dot(n,l) * n

  •         其中m_{gloss}表示了材质的光泽度m_{specular}表示了材质的反射光
    • R表示反射光线
    • V表示视线向量
  • 环境光:

    • 在局部光照模型中,由于没有考虑间接光照的影响,因此为了处理这种间接光照,为光照模型引入环境光。

        C_{ambient} = Albedo * Ambient_{light}

  •         通常使用漫反射的反照率来指示环境光照的反射光量,该模型假定场景中发生多次散射和反射,并在所有方向上均等的射向目标物体。
  • 自发光:

    • 物体自身发射的光线,通常作为单独的一项加入光照模型,一般使用一张发光贴图描述物体的自发光。
    • 局部光照模型的整体效果,环境光+高光反射+漫反射+自发光。
  • 经典光照模型:

  • Lambert模型:  

    • 总结:Lambert模型只考虑表面的漫反射部分。             
  • Gourand模型:

    • 总结:Gourand模型计算顶点光照并通过增量法插值计算多边形内部的光强,当顶点密度低时,表现效果很差,对于高光的效果也不尽如意,计算量较小。
    • Gourand模型是以顶点为单位计算光量在通过插值得到每个像素点的光亮度。
    • 在表现物体光滑性上有比较好的表现,但值不再是线性变化的时候,比如镜面高光,由于线性插值导致内插值不可能大于顶点值。因此高光只能出现在顶点。由于使用的颜色插值,会导致镜面高光蔓延到周边。
  • Phong模型:

    • 总结:Phong模型能够较好的呈现镜面高光的效果,也是四种模型中最接近真实的效果,需要计算较复杂的反射向量。
    • Phong模型就是第一个有影响力的光照模型,考虑直接光照的反射作用,使用环境光代替间接光照。

        C_{final} = A_{light} * m_{diffuse} + C_{light} * (m_{diffuse} * dot(n,l) + m_{specular} * dot(v,r)^{gloss})

                        A_{light}                环境光量

                ​​​​​​​        C_{light}                入射光量

                ​​​​​​​        m_{diffuse}           漫反射率

                ​​​​​​​        m_{specular}          镜面反射率

                        l                         指向光源入射光向量

                        n                        物体表面法线

                        r                         反射向量

                        gloss                  光泽度,控制高光反射区域

  • Blinn-Phone模型:

    • 总结:Blinn-Phong模型效果与Phong模型相近,更偏向艺术性的效果,使用方便计算的半程向量代替较为复杂的反射向量,计算量小于Phong,是效果和效率的最佳选择,也是大多数情况下的默认光照模型。
    • Blinn-Phong模型不再依赖于反射向量,而是采用了所谓的半程向量(Halfway Vecotr),即光线与视线夹角一半方向上的一个单位向量。当半程向量与法线向量越接近时,镜面光分量就越大。

        C_{final} = A_{light} * m_{diffuse} + C_{light} * (m_{diffuse} * dot(n,l) + m_{specular} * dot(n,h)^{gloss})

  • Flat模型:

    • 平面着色模型,计算多边形的单个强度,每个三角形只有一个法线方向。以相同的光强度值显示多边形的所有点。通常适用于lowPoly风格的场景。

  • 19
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值