如何模拟部分反射和散射的表面

这篇文章介绍了如何模拟一个部分反射的表面,该表面会根据指定的散射分布对一部分入射光能量进行散射。本文介绍的示例包含部分吸收以及部分镜面反射的情况。

作者 Dan Hill

附件下载

文章附件

简介

OpticStudio为用户提供了通过使用镀膜数据使他们的系统尽可能逼真的能力。在非序列模式下,镀膜可以添加到任何物体表面,并进行编辑,使表面具有所需的反射和透射特性。特别地,部分反射(或选择性透射)表面可以被模拟成只将一小部分入射能量以特定的分布方式散射。

本文的示例可以阐述了如何使用朗伯散射和理想膜层来产生所需的效果。

从附件开始,我们将创建和使用一个理想的镀膜,以利用适当的涂层/散射属性,创建一个部分反射表面。

建立系统

假设我们需要模拟一个表面为部分反射(60%反射)的矩形体 (Rectangle Volume) 物体,并且其中80%的反射光会根据朗伯 (Lambertian) 分布发生散射。剩下的20%将发生镜面反射。通过使用三个非序列物体,本文的示例可以阐述了如何使用朗伯散射和理想膜层来产生所需的效果。

我们无需从零开始建立模型,请打开附件中的示例文件。在该文件中,一个单光线光源 (Source Ray) 物体发出的光线入射到矩形体的表面,其中矩形体的材料类型为MIRROR。从光源发出的光线完美的返回到光源并被探测器平面接收。在当前系统中,矩形体的表面没有定义任何膜层或散射属性。

通过不考虑偏振的蒙特卡洛光线追迹,单根光线照明了探测器最中间的像素并且该像素接收到的功率为1W。

Detector_Viewer_1

建立理想膜层

有关在OpticStudio中定义和使用膜层的详细信息,请查看帮助系统中的“Defining coatings in OpticStudio”一节。OpticStudio可以模拟任何类型的薄膜膜层,其中包括多层电介质膜层和金属膜层等。然而在本文中,我们将只讨论如何在OpticStudio中建立和应用简单的理想膜层。

和OpticStudio中的其他膜层相同,理想膜层是通过在膜层文件中定义材料、渐厚层以及膜层等部分的数据来进行定义的。对于一个理想膜层,其定义语法为:

IDEAL <name> <Transmitted Intensity> <Reflected Intensity>

理想膜层只需要定义强度的透射系数和反射系数,并且该系数与波长和入射角无关。吸收系数会根据公式A = 1.0 – T – R来自动进行计算以保持能量守恒。

如果我们想定义一个40%透射60%反射的膜层,并且该系数与波长及入射角无关,我们可以使用以下语句进行定义:

IDEAL 60Reflect 0.4 0.6

这个膜层可以应用在任何使用当前膜层文件的OpticStudio设计当中,您可以在系统选项 (System Explorer) > 文件 (Files) 中查看当前系统的镀膜文件:

Coating_file

COATING.DAT文件是默认的膜层文件,它是ASCII格式的文本文件,其中包括了在OpticStudio中不同类型的膜层数据。用户可以修改该文件来添加用户自定义膜层。如果对膜层文件进行了任何修改或额外的添加,我们建议您将文件另存为一个新的文件名。否则,在OpticStudio进行版本更新时原有的默认膜层文件会被新的默认膜层文件覆盖。

点击数据库 (Libraries) > 膜层工具 (Coatings Tools) > 编辑膜层文件 (Edit Coating File) 打开镀膜文件COATING.DAT。文件中包含多种简单的理想膜层,但是其中并没有符合我们在前文中假设的透射和反射比的膜层。

Edit_Coating

在本例中,我们需要在反射镜表面上定义60%的反射。因此,表面的透过率为40%。我们需要插入一个理想的膜层来定义这个百分比:

Add_new

当新的理想膜层输入到膜层文件后,将文件以适当的名称进行保存,例如MYCOATING.DAT。需要注意的是,文件的扩展名必须为 .DAT文件,并保存在与COATING.DAT文件相同的路径下。

使用理想膜层

如果想要OpticStudio识别新创建的理想膜层,您必须首先在系统选项中的文件选项卡的膜层文件栏中选择新创建的膜层文件。

Apply

我们要在矩形体的前表面使用该膜层。首先打开物体2的物体属性 (Object Properties),选择膜层/散射 (Coating/Scattering) 选项卡。该选项卡下的第一项输入栏为物体的表面 (Face)。对于矩形体物体来说一共包含三个表面组:0,表示侧面;1,表示前面;2,表示后面。

Choose_face

因此,物体的不同表面可以定义不同的膜层和散射属性。对于本例来说,选择表面1,前表面。

默认情况下,物体的任何表面都没有定义膜层。对于矩形体的前面,通过下方的膜层 (Coating) 下拉菜单选择新创建的理想膜层60REFLECT

Select coat

在选择了合适的膜层之后,点击OK将膜层添加到物体表面上并退出物体属性菜单。为了证实膜层已经被使用并正确工作,我们可以运行光线追迹(勾选使用偏振 (Use Polarization) 选项)来进行验证。

Ray_trace_control

如我们预期的一样,此时探测器接收到的总能量降低到初始能量的60%:

Detector_Viewer_2

对表面添加散射效应

与膜层的定义类似,散射属性也是在物体属性中的膜层/散射选项卡里进行定义的。在当前示例中,重新打开矩形体的物体属性,在膜层/散射选项卡中选择表面为1,前面。

在OpticStudio中内置了多种散射模型;默认情况下,表面不会定义任何散射。这里我们选择朗伯散射模型。在选择朗伯散射模型后会激活两个关键的数据输入栏:光线数 (Numbers of Rays)散射函数 (Scatter Fraction)。散射函数必须在0(表示入射光能量的0%会发生散射)到1(表示入射光能量的100%会发生散射)之间。OpticStudio如何使用这两个参数取决于每个特定分析功能是否开启了光线分裂 (Ray Splitting) 功能。详细信息请参考帮助系统中的“Scattering”一节。

对于本例来说,分别设置散射函数和光线数为0.8和5。因此,当开启光线分裂功能时,散射能量(在考虑膜层首先造成的损耗之后,入射光能量的80%)将平均的分配到5根散射光线上。而对于镜面反射的光线,其能量为入射光线的总能量的(1-散射函数)%。

Scatter

关闭物体属性菜单。

为了验证矩形体前表面的属性已经改变,我们可以打开非序列3D视图 (NSC 3D Layout) 工具,在设置中勾选光线箭头 (Fletch Rays)光线分裂 (Split Rays)光线散射 (Scatter Rays) 使用偏振 (Use Polarization) 选项。需要注意的是,初始光源光线被散射为5根光线(根据朗伯散射分布),因此一共有六根光线入射到探测器上。

Layout

并且,如果我们执行另一次蒙特卡罗光线追迹,这些光线(5根散射光线都落在探测器上时)的总能量将始终为0.6W,也就是入射光能量的60%。注意:布局图光线是随机散射的,所以探测器和3D布局图看起来可能会略有不同。只要你有正确的射线数,你就做了正确的一切。

Ray_trace_control_2

Detector_Viewer_3

并且,当追迹光线数量增加至250万根并提高探测器分辨率后,我们可以观察到辐射强度最高的地方依然是正入射的情况,也就是镜面反射的这部分光线。

DetView

 可以看到我们已经在OpticStudio中完成了部分反射和散射表面的创建。在本例中使用的工具和概念可以应用到更复杂的系统之中,其中使用到的定义膜层和散射属性的基本方法都是相同的。

将膜层/散射应用到其他物体

假设我们想在矩形体的侧面和后面也添加相同的膜层和散射属性以用于后续的分析。我们可以使用物体属性中膜层/散射选项卡中的保存 (Save) 功能,将当前表面的设置参数保存,并快速应用到其他表面上。

当完成了当前表面的膜层/散射设置后,点击保存按钮即可完成设置参数的保存。

NSC_editor

在弹出的对话框中,您可以将该设置参数命名为其他名称:

Partial_save

保存成功后,您可以在矩形体的其他表面上使用这些参数设置:

Profile

KA-01353

这篇文章有帮助吗?
2 人中有 2 人觉得有帮助

评论

0 条评论

登录写评论。