【GPU Gems 学习笔记】Iridescence : Simulating Diffraction_1

佐手、 提交于 2019-11-29 06:31:45

一. 光学现象

物体表面受光呈现七彩色,且会随着光照方向或观察视角的不同而改变,这是一种光学现象,比如说常见的彩虹。

彩虹是由于水滴中光的反射、折射和色散引起的。因为空气中存在的小水珠对各种频率的光具有不同的折射率,使各种色光的传播方向在进入和离开小水珠时各发生一次不同程度的偏折,使复色光分解为单色光,从而形成光谱产生的。

再比如混合了油的水和肥皂泡也有"彩虹"现象,这是由于薄膜干涉引起的。薄膜干涉是由两个或者多个半透明表面对光线进行多次反射,使光线之间产生光程差并且发生干涉,通过放大或者削弱某些光频率而产生的。

除了干涉,衍射同样也能产生该现象。比如CD,DVD光盘。光盘用于存储数据,因此表面被用激光刻上了很多不同间距的凹槽和刻线,这样光盘的表面就类似于光栅表面,当光线照射到光盘表面时,光线发生衍射,不同波长的光波衍射的角度不同,形成了衍射光谱。

一些动植物的表面也会有这种现象,比如光与昆虫表面的微结构形成的衍射光栅发生作用。

二. 光波

光具有波粒二象性,人们常常将光建模为其中一种。大多数的阴影模型将光看做均匀粒子粒子的合集,它们的表现就像打台球一样沿直线传播,当光线射向表面时,它会以相同的入射角反射。这些表面就像理想的镜子完美地反射光线。我们称之为"镜面反射"。

在现实中,大多数物体表现出另一种类型的反射。当一束光照射到表面时,它会分散在各个方向,这赋予物体一种统一且分散的颜色。不同于"完美的镜面反射"那样只能在特定角度观察到反射光,观察者能从各个方向看到反射光。我们称其为”漫反射“。

我们常见的Lambert光照模型,和Blinn-Phong反射模型,就分别解释模拟了漫反射与镜面反射现象,但同样也是把光看做粒子的集合。基于粒子的建模固然能解决许多问题,然而它却模拟不了“彩虹”现象。

原因是将光视为粒子这种大规模简化的做法,使光受到了额外因素的影响。如果两束光照射到观察者,他们的强度就会增加。表面发出的射线越多,它就越亮,而事实上并非如此。如果两束光照射到观察者,最终的颜色是取决于他们的波是如何相互作用的。下面展示了两个简单的正弦波如何根据相位放大或相互抵消。

当两波处于相位时,意味着它们的波峰和波谷是完全一致的:在这种情况下,产生的波被放大。当相反的情况发生时,他们会互相抵消。这意味着,如果在某些情况下,两束光击中了观察者,会像完全没有收到任何光一样。

波的相互作用并不奇怪,只是大多时候我们习惯于把光做为粒子看待了。在之前的文章中就提到过使用波函数来模拟水面,也展示了波之间的叠加效应(增强或者削弱)。

不同波长的光对应不同的颜色,一般人的眼睛可以感知的电磁波的波长在400~760nm之间,当复合光照射到某些物体表面,不同波长的光的相互作用,放大了其中一些颜色,削弱了其他颜色,从而出现了“彩虹”。

 

三. 衍射

当我们把光看成是一种波时,由于波之间会相互叠加,因此一些新的行为就出现了。其中一个叫做干涉,一个叫做衍射。

  • 衍射与干涉

光的干涉是指两束或者有限束光的叠加,使得某些区域震动加强,某些区域减弱,形成明暗条纹,且每束光线都按几何光学直线传播;

光的衍射是指光遇到障碍物时偏离原来直线传播的物理现象。衍射现象其实是无数个子波叠加时产生干涉的结果,即衍射现象的本质也是干涉现象

干涉是有限,衍射是无限,本质都是相干。从数学角度来看,干涉是求和,涉射则是积分。

在实际问题中,纯干涉是不存在的,通常都是干涉和衍射的综合效应。但在许多教科书和资料中,总是把纯干涉问题称为干涉,而将纯衍射,干涉和衍射的混合问题统称为衍射。事实上干涉和衍射的区别是很难定义的,只是术语用途的问题,不过一般来说,“干涉”指代有限多个波束“相加”的结果,而“衍射”则是无限多个波束“积分”的结果。

干涉衍射都是光的波动性的表征。

单缝衍射
双缝干涉

  • 衍射光栅

波在传播时,波阵面上的每个点都可以被认为是一个单独的次波源;这些次波源再发出球面次波,则以后某一时刻的波阵面,就是该时刻这些球面次波的包络面。

从一个光源发射的光波通常近似于平面波,当一个平面波穿过一个小孔,或者反射到一个凸起上时,会在障碍物处形成新的球面波前,这意味着光会像漫反射一样分散在各个方向。如果整个材料的表面是不规则的,那么产生的球面波会随机分布,波之间的干涉作用没有规律可循,在宏观上也就没有干涉图样的表现。

那么形成干涉图样的必要条件之一,就是反射表面具有规律性的结构。结构的规律性使得波面以非随机的方式相互作用,由此产生的相互作用产生一种重复的干涉模式,一些波长的光将被大大地放大,而另一些则会被抵消,由于不同的波长对应不同的颜色,在宏观上的表现就是衍射图样。

比如说CD/DVD光盘的“彩虹”现象,就是因为具有大量等宽等间距的平行狭缝构成的结构;而在自然界中,昆虫的外骨骼和鸟类的羽毛也以一种重复的模式排列。像这些结构我们都可以把它看做为衍射光栅。


  • 衍射图样

我们假设存在一个由等间距为 

 的狭缝组成的衍射光栅,当波长为 

 的平面波入射于光栅时,每条狭缝上的点都扮演了次波源的角色;从这些次波源发出的光线沿所有方向传播(即球面波)。假设入射光线和表面法线之间的角度是 

;对于观察者来说,他们接收的是角度为 

 的所有反射光线。

因为某一特定观察方向的光场是由从每条狭缝出射的光相干叠加而成的。在发生干涉时,由于从每条狭缝出射的光的在干涉点的相位都不同,它们之间会抵消或者加强。光束之间的光程差导致了它们到达目标点时的相位差。下图展示了两束光线在到达观察者之前行进不同距离的移动。

在两束光线到达物体表面之前。第二束光线多走了

经物体表面反射后,第一束光线多走了

干涉发生时,有两种极端情况分别为:波的相位相同,波叠加后振幅达到最大;当相位差为波长的一半时,波彼此抵消,振幅为0。一般而言,干涉的结果处于两个极端情况之间。

显然对于模拟现象而言效果最明显的第一种情况才是我们感兴趣的,即光程差为波长 

 的整数倍:

                                                                      

                                                                            

那么当光线以 

 的入射角发出,以 

 的角度进入人眼时,观察者看到的是 

 整数倍大小的波长所对应的可见光颜色值。

由于 n 值是任意的,但可见光范围是可以确定的,那么可以提前计算好搜索空间,只关注有效范围内的 

 值即可。

参考

       https://developer.nvidia.com/gpugems/GPUGems/gpugems_ch08.html
       https://www.alanzucconi.com/2017/07/15/the-nature-of-light/
       https://zh.wikipedia.org/wiki/%E8%A1%8D%E5%B0%84
       https://zh.wikipedia.org/wiki/%E8%A1%8D%E5%B0%84%E5%85%89%E6%A0%85

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!