OpenGL之光照明模型、Phong光照模型与Blinn-Phong光照模型

1.1 光照效果
通过光照,能反映模型的空间几何形态,通过光照明模型,计算模型表面任一点被光照后投射到观察者眼中的光亮度的大小。光照的计算就是计算投射到观察者眼中的光,这部分光与物体与光源的位置、物体与视点、物体表面的材质,物体的法相等因素相关。
在这里插入图片描述
在这里插入图片描述

1.2 光照明模型(Illumination Model)

  • 通过数学的方法,光照的计算抽象为一个数学表达式,来模拟光照效果。
  • 通过对光的分解,分而治之的解决每种光的模拟,主要分为环境光(间接光)漫反射光高光(镜面反射光)

1.3 漫反射光(Diffuse reflection)

  • 粗糙表面的光会向四周均匀反射;
    在这里插入图片描述
  • 入射光相对于物体表面越斜,反射光越弱。
    在这里插入图片描述
  • 对上述现象抽象为数学表达:采用cos函数,cos函数在0 - 90度是一个递减的函数,与实际递减的情况也相符合,因此Lamert‘s Cosine Law就采用了如下数学模型,是一个经验值模型,而不是一个准确的物理模型;
    在这里插入图片描述

1.4 镜面反射光(Specular reflection)
在这里插入图片描述

  • Phong提出了模拟的经验公式:V为视线方向向量。
    在这里插入图片描述
    图中指数n为高光指数,它用来控制物体表面的光滑程度,如下图,n的值与放射出的光量的关系。
    在这里插入图片描述

1.5 环境光(Ambient light)

  • 三种光里面最难进行模拟的一种光;
  • Phong 模型中只采用一个常数来表示环境光。
    在这里插入图片描述

1.6 Phong Illumination Model(Phong光照明模型)与Blinn-Phong Model(Blinn-Phong光照明模型)
将各种光加起来,就形成了光照明模型。
在这里插入图片描述

  • 从公式中,镜面反射光与视点有光,而其他两项与视点无关,当视点发生变化时,整个光照都需要重新计算。
  • 光照参数: I a I_a Ia I l I_l Il L L L;L是光线方向;
  • 材质参数: K a , K d , K s , n , N K_a,K_d,K_s,n,N Ka,Kd,Ks,n,N,K是反射系数;n是高光指数,N是法向量;
  • R的计算:
    在这里插入图片描述
    • 实际使用中,由于R的计算较复杂,因此常采用 ( N . H ) (N.H) (N.H)代替 ( R . V ) (R.V) (R.V);H为沿L和V的角平分线的单位向量;
      在这里插入图片描述
    • 这就是Blinn-Phong Model,它效率更高,因此也比较常用;
      在这里插入图片描述
      1.7 光亮度的表达
  • 采用R,G,B三个分量来表示颜色,因此可以采用上述公式对每个分量进行计算,就能得到最终的颜色。
    在这里插入图片描述
  • 多光源的情况
    在这里插入图片描述

1.8 OpenGL中的光照明模型
OpenGL中的光照模型就是Blinn-Phong模型,在其基础上,OpenGL考虑了自发光,整体环境光与每盏灯的环境等,以及每盏灯的衰减系数,聚光灯等各种因素。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值