Lambertian 反射(也叫理想散射)

(总结整合几篇blog和一些国外图书的内容)

常见的反射类型分为:Lambertian反射、理想镜面反射、Lambertian反射与镜面反射相结合

1.Lambertian反射(也叫理想散射)

Lambertian表面是指在一个固定的照明分布下从所有的视场方向上观测都具有相同亮度的表面,Lambertian表面不吸收任何入射光.Lambertian反射也叫散光反射,不管照明分布如何,Lambertian表面在所有的表面方向上接收并发散所有的入射照明,结果是每一个方向上都能看到相同数量的能量.




维基百科的解释:http://en.wikipedia.org/wiki/Lambertian

在计算机图像学中,Phong光照模型:http://www.cnblogs.com/dosomething/archive/2011/10/20/2218369.html


SurfaceColor = Emissive + Ambient + Diffuse + Specular 

最终表面   = 放射光  + 环境光  +  漫反射 + 镜面反射

放射光:

  Emissive = Ke               

  Ke为材质放射的颜色

环境光:

  Ambient = Ka * GlobalAmbient        

  Ka为材质环境光反射系数;GlobalAmbient为全局环境光的颜色

 

漫反射:

  Diffuse   = Kd * LightColor * max( dot(N, L), 0)

  Kd为材质漫反射颜色;LightColor为漫反射光的颜色;N是规范化后的表面法向量;L是规范化后指向光源的向量;

  max(x, y)函数返回x和y的最大值;dot(x, y)函数返回x向量和y向量的内积

 

镜面反射:

  Specular = Ks * LightColor * pow( max(dot(N, H), 0), fShinines )

  Ks是材质镜面反射的颜色;LightColor是镜面反射光的颜色;N是规范化后的表面法向量;H是规范化后的L和V的中间向量(即规范化后的L+V),其中V是规范化后指向视点的向量

  pow(x, y)函数返回x的y次方;

 

  这里dot(N, L)如果小于等于0,即Diffuse为0,则Specular为0。确保了镜面反射的高光不会出现在背向灯光的地方

  



  • 12
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要用matlab模拟光线的散射,可以利用光线追踪(ray tracing)的方法。光线追踪是一种基于物理光原理的计算机图形学算法,可以模拟光线的传播和相互作用。 首先,需要定义一个场景,包括光源、物体和相机。光源可以被建模为一个点光源或者平行光源,物体可以表示为几何图形如球、立方体等,相机则决定了我们观察场景的视角。 接下来,需要定义光线的传播规则。光线从光源发出,然后穿过场景中的物体,与物体发生相互作用,如散射、折射或反射,最终到达相机。 对于散射现象,可以使用经典的散射模型,如Lambertian散射、Phong散射等。经典的模型可以根据物体的表面法线、入射光线和观察方向来计算散射光线的强度。这些模型可以通过物体的材质属性参数来定义。 在模拟过程中,可以使用迭代的方式来逐个像素地计算散射光线的颜色。从相机的视角出发,沿着每条光线,判断是否与场景中的物体相交。如果相交,则根据散射模型计算出散射光线的颜色,并进行累积。如果没有相交,则根据背景颜色或者环境纹理来确定光线的颜色。 最后,将计算得到的每个像素的颜色渲染到屏幕上,就可以看到光线的散射效果。 总之,使用matlab可以很方便地模拟光线的散射现象。通过定义场景、光线传播规则和散射模型,以及使用光线追踪算法,我们可以实现逼真的光线散射效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值