光照模型(经验模型)

经典的光照模型(不是基于物理的,是基于经验的,因为看起来像) ,分成三部分,高光,漫反射和环境光

反射向量

反射向量计算公式的推导,红色的向量就是我们想求的反射向量,做出入射向量的延长线,这时反射向量的值为v+2B,B等于法线向量与入射光在标准化法线向量上的投影的乘积,由于入射光线的方向相反所以要取负值dot(v,n)*n,所以 反 射 向 量 = v − 2 ∗ d o t ( v , n ) ∗ n 反射向量=v-2*dot(v,n)*n =v2dot(v,n)n
在这里插入图片描述

Lambetian模型

也叫漫反射模型 L d = k d ( I / r 2 ) m a x ( 0 , n ∗ l ) L_d=k_d(I/r^2)max(0,n*l) Ld=kd(I/r2)max(0,nl)
其中 k d k_d kd是系数,不同的材料会有不同的系数, I I I是光照强度, r 2 r^2 r2是距离, I / r 2 I/r^2 I/r2是光照的强度。根据光照的方向也会有个强度,当光照为负向的时候,漫反射为0.
在这里插入图片描述
除了漫反射还有环境光(ambient),使场景更加真实: L a = k a I a L_a=k_aI_a La=kaIa

Phong模型

在 Lambetian的基础上,phong加入了高光(specular)高光通常用在类似金属这种材料上: L s = k s ( I / r 2 ) m a x ( 0 , v ∗ R ) p L_s=k_s(I/r^2)max(0,v*R)^p Ls=ks(I/r2)max(0,vR)p计算反射光和眼看向物体的角度的偏移。高光项最后的系数是为了让高光范围更小,突变更明显。
在这里插入图片描述

Blinn-Phong模型

phong模型中反射光的计算量较大,Blinn-Phong使用了所谓"半程向量“进行了优化:: h = b i s e c t o r ( v , l ) = v + l ∣ ∣ v + l ∣ ∣ h=bisector(v,l)=\frac{v+l}{||v+l||} h=bisector(v,l)=v+lv+l使用法线和视角方向入射方向三个量进行计算就会比较简单,改成了:
L s = k s ( I / r 2 ) m a x ( 0 , n ∗ h ) p L_s=k_s(I/r^2)max(0,n*h)^p Ls=ks(I/r2)max(0,nh)p
在这里插入图片描述
我们现在常用的光照模型是就是Blinn-Phong模型,使用公式:
L = L a + L d + L s = k a I a + k d ( I / r 2 ) m a x ( 0 , n ∗ l ) + k s ( I / r 2 ) m a x ( 0 , n ∗ h ) p L=L_a+L_d+L_s=k_aI_a+k_d(I/r^2)max(0,n*l)+k_s(I/r^2)max(0,n*h)^p L=La+Ld+Ls=kaIa+kd(I/r2)max(0,nl)+ks(I/r2)max(0,nh)p

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值