Unity基础光照(入门精要6)

标准光照模型

标准光照模型只关心直接光照(直接从光源照射到物体表面后。经物体表面一次反射直接进入摄像机的光线)
我们可以将进入到摄像机的光线分为4个部分,分别是

  • 自发光 c e m i s s i v e c_{emissive} cemissive
  • 高光反射 c s p e c u l a r c_{specular} cspecular
  • 漫反射 c d i f f u s e c_{diffuse} cdiffuse
  • 环境光 c a m b i e n t c_{ambient} cambient

环境光

在标准光照模型中,我们可以通过一个全局变量来近似模拟环境光,场景中所有物体都使用此环境光即可。

自发光

全局光照中,自发光会照亮范围内的其他物体。

漫反射

在漫反射中可以认为光在任何方向上的反射都是相同的,所以漫反射与视角无关,只与入射光线的角度有关(这一点是不同于高光反射的)
漫反射光照符合兰伯特定律:反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比。
在这里插入图片描述

如上图,我们可以将漫反射强度看作正方形表面接收到的光照强度,左图正方形接受到了全部的6根光线,右图正方形因为旋转了60°的缘故只接受到了3根,由此可以看出反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比。漫反射部分的计算公式如下: c d i f f u s e = ( c l i g h t ⋅ m d i f f u s e ) m a x ( 0 , n ^ ⋅ l ^ ) c_{diffuse}=(c_{light}\cdot m_{diffuse})max(0,\hat{n}\cdot \hat{l}) cdiffuse=(clightmdiffuse)max(0,n^l^)其中, c l i g h t c_{light} clight是光源颜色和强度, m d i f f u s e m_{diffuse} mdiffuse 是材质的漫反射颜色, n ^ \hat{n} n^ 是表面法线, l ^ \hat{l} l^ 是指向光源的单位矢量,因为夹角超过90°的部分不会受到光照,但向量点积为负值,所以计算时需要截取到0。

高光反射

这里的高光反射并不完全符合真实世界中的高光反射现象。
高光反射可以看作镜面反射,当视角方向与反射方向接近时才会看到高光。
计算高光反射我们需要知道表面法线 n ^ \hat{n} n^ ,视角方向 v ^ \hat{v} v^ ,光源方向 l ^ \hat{l} l^ ,反射方向 r ^ \hat{r} r^
其中反射方向可以通过表面法线与光源方向计算得出,这里给出公式: r ^ = 2 ( n ^ ⋅ l ^ ) n ^ − l ^ \hat{r}=2(\hat{n} \cdot \hat{l})\hat{n} -\hat{l} r^=2(n^l^)n^l^

Phong模型

在这里插入图片描述

在Phong模型中,我们使用计算所得到的 r ^ \hat{r} r^和视角 v ^ \hat{v} v^ 可以得到高光反射部分公式: c s p e c u l a r = ( c l i g h t ⋅ m s p e c u l a r ) m a x ( 0 , v ^ ⋅ r ^ ) m g r o s s c_{specular}=(c_{light}\cdot m_{specular})max(0,\hat{v} \cdot \hat{r})^{m_{gross}} cspecular=(clightmspecular)max(0,v^r^)mgross
其中 m g r o s s m_{gross} mgross 是材质的光泽度,简单来看就是控制高光区域的亮点大小,量化来说就是通过一个指数来控制 v ^ ⋅ r ^ \hat{v} \cdot \hat{r} v^r^ 余弦值的衰减速度。 m g r o s s m_{gross} mgross 的值越大越陡,使得高光衰减越快,画面上导致高光区域变小,也就是亮点变小。

Blinn模型

可以看出,我们在Phong模型中计算 r ^ \hat{r} r^ 还是蛮复杂的,在Blinn模型中就提出了一个简单的修改方法得到类似的效果。
在这里插入图片描述

Blinn模型引入了半程向量 h ^ \hat{h} h^ ,也就是对 l ^ \hat{l} l^ v ^ \hat{v} v^ 取均值后归一化得到的向量。
在这里 h ^ = v ^ + l ^ ∣ v ^ + l ^ ∣ \hat{h}=\frac{\hat{v}+\hat{l}}{\vert\hat{v}+\hat{l}\vert} h^=v^+l^v^+l^
之后我们再通过 n ^ \hat{n} n^ h ^ \hat{h} h^之间的夹角进行计算,可以得到Blinn模型的公式: c s p e c u l a r = ( c l i g h t ⋅ m s p e c u l a r ) m a x ( 0 , n ^ ⋅ h ^ ) m g r o s s c_{specular}=(c_{light}\cdot m_{specular})max(0,\hat{n} \cdot \hat{h})^{m_{gross}} cspecular=(clightmspecular)max(0,n^h^)mgross

到此我们的光照部分就结束了,通常我们将上述标准光照模型成为Bilnn-Phong光照模型。但这种基于经验的光照模型还存在很多局限性,之后将学习到基于物理的光照模型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值