如何给非序列结构添加镀膜和散射?

2018-01-17

概要

ZemaxOpticStudio非序列模式的对象是3D实体,薄膜和散射模型是3D实体的表面特性。本文将从以下几个方向解释如何给非序列元件添加镀膜和散射:

  • 非序列对象中“Facenumber”的概念。

    如何给不同的Face添加镀膜以及散射模型。

    从外部导入CAD结构后的一些对镀膜散射性质的处理。

简介

首先,非常感谢SickAG公司IngolfH.rsch博士允许我们在本文使用相关光学系统的3DLayout图。非序列模式下的结构是占有一定空间的3D实体,一般情况下可以将非序列元件结构分为两种类型:

参数化对象:例如在StandardLens中可以根据需要自行定义元件的前曲率半径、后曲率半径、中心厚度以及径向孔径。OpticStudio提供了大量的参数化对象,包含全息、衍射、圆柱体以及双锥体等等。

由导入的数据文件定义的对象:包含了多边形对象、鳞甲对象以及常见的CAD对象(如STEP、IGES、SAT、STL等格式)。这些对象有可能是多面体也可能是平滑连续曲面(或是两者皆有分布在不同区域)。

不论是何种类型,使用者都需要在这些结构表面上设置薄膜镀层以及散射函数以确保能精确模拟光线的传播。

OpticStudio通过“Face”来描述非序列元件上面的特定区域,这些区域就是我们加镀膜或是散射模型的最小单位。

在参数化对象中,Face的定义通常很明显。举例来说,StandardLens这个对象可以很简单的知道他的前表面与后表面都是抛光的,而连结两侧的柱状侧面则是未抛光的表面性质。

在由导入的数据文件定义的对象中,“Face”的定义就比较复杂。即使是一个简单的多面镜面,也可能是由很多个小面(facet)组成的。这些特殊曲面的外型也许看起来是连续的一个Face,但可能其实是以复杂的数学描述来完成的。我们加入复杂的CAD对象时,OpticStudio可能会需要处理好几MB的数据,包含平面、曲面、Spline曲面等等。

本文我们将描述如何在一般结构上定义Face,使得接下来可以顺利在该结构上设置镀膜与散射模型。

参数化对象

假设一个StandardLens结构共有3个Face(编号从0开始),其NSCShadedModel图如下所示:


图1.参数化结构的NSCShadedModel图

所有内建的参数化对象都可以在使用者手册或Help系统中找到该结构的Face定义,这些对象上的Face通常会有一个方便的“名称”。选择任一个Face,你可以决定光线与这个Face相交的三种模式。


图2.选择Face

如果选择“ObjectDefault”,则该Face的反射率由该对象玻璃材料的折射率、该Face另一侧的物质折射率、Face上面的镀膜(稍后更多细节)、入射光波长、偏振态以及入射角决定。也可在该Face上定义散射属性。

如果选择“Reflective”,则该Face的表面属性类似于“镜面”。不论光线从这个Face的哪一侧接触,都只会被反射。除此之外,镀膜与散射分布的效应都和往常一样处理。

如果选择“Absorbing”,则任意一条入射的光线入射到该面后都会停止追迹。不会应用镀膜以及散射模型。

本文我们都选择“ObjectDefault”。

选择好Face后,任何载入到系统中的镀膜都可以通过Coating下拉菜单设置。OpticStudio有完整的偏振光线追迹以及分析功能。任何偏振态的光源都可以设定,OpticStudio会考虑透射、反射、吸收、偏振态、双向衰减(Diattenuation)以及相位延迟(Retardance)。

镀膜是由任意层数、任意材料组成的,每一层材料都有各自的复折射率以及完整的色散模型。基板材料可以是玻璃、金属也可以由使用者自己设置。OpticStudio可以直接从“TheEssentialMacleod”或“FilmStar”软件以及其他薄膜设计软件中直接导入镀膜定义。OpticStudio会自动在光线从空气到材料以及从材料到空气两种情况之间逆转膜层的顺序,使用者不需要额外定义“镜像”的膜层。

如果无法取得原始的镀膜,我们也可以通过输入不同波长、不同入射角效率的表格信息来定义镀膜。或是使用IDEAL理想膜层来简化定义所有角度与波长的反射与透射。在有详细膜层信息后,我们就可以根据入射光的偏振态、波长以及角度来推算双向衰减率、相位、相位延迟、反射、透射或是吸收等信息。

设定好镀膜后,我们还需要设定散射模型。在OpticStudio中,可用的散射模型包括Lambertian、Gaussian、ABG、ABGFile、BSDF、ISCatalogScatter以及User-Defined。

举例来说,透镜的前表面应该具有良好抛光,而且为了抗反射前表面应该有一层四分之一波长的MgF2镀膜。在OpticStudio预设中就有这样的一个镀膜“AR”。如要在Face1(透镜前表面)上面设置AR,可以按下图设置:


图3.如何设置Face1的镀膜

Face0代表侧表面,通常会是无抛光,并且没有镀膜,因此我们可以有如下设置:


图4.如何设置Face0的镀膜

CAD对象

以3DCAD软件(如SolidWorks、CreoParametric、Inventor、CATIA等)设计的实体对象都可以利用一系列的CAD零件或装配体对象导入。


图5.如何导入CAD文件

OpticStudio可以直接与SolidWorks、CreoParametric、Inventor动态链接导入对象。由于动态链接后会直接存储原始的数学模型因此追迹速度会更快。而且还可以把CAD对象的参数定义为变量套用优化程序。

但是,由于以上这些CAD对象都是外部定义的,因此在分配镀膜、散射特性上都会有一些特殊问题。

首先,CAD对象文件很大(通常会有几个MB大)。再者,CAD软件通常会以不规则的顺序输出对象信息,因此需要使用者花费大量的时间把CAD对象中大量的面(Surface)分类为有意义的Face。让我们看看以下的侦测器系统。


图6.侦测器系统的NSCShadedModel图

该侦测器系统共包含了178个分离的CAD面(Surface)构成,但是他们并没有依照任何顺序来编号。因此如想要知道编号45的Surface在哪里的话,我们是完全没有线索的。已知该对象是由两个透镜组成。一个提供闪光,用来照亮对象物体。另一个则用来把对象物体成像到系统的探测器上。这两个不同路径都是在序列模式下完成设计,然后在把透镜输出到CAD软件,并与其他相关的机构件结合。完成后同样再利用CAD输出并导入OpticStudio,以进一步模拟光机结合的效率、成像质量、杂散光等信息。

该对象通过注塑成形,生产过程中使用了两种Surface光学处理。第一种是透镜上的Surface为平滑抛光,冷镀膜处理。第二种是其他Surface通过电火花刻蚀处理,表面具有粗糙散射特性。

很明显,没有人会真的想去给这178个CADSurface逐个设置表面属性!而且和其他CAD文件相比本文CAD文件中的Surface算少了。在OpticStudio中,选项“SurfaceMode”可以帮助使用者根据一定的规则快速分类已知Face。“SurfaceMode”可以在ObjectProperties>CAD中找到(只有在外部导入CAD文件时可以看到),FaceMode提供以下几种选项:


图7.SurfaceMode及其选项

Usesinglesurface:顾名思义,所有的Surface都会被分配到Face0。整个对象将只有一个Face。

Useanglesofnormalvectors:对所有的Surface来说,如果两Surface沿着一条长度非零的曲线相接,并且两个Surface在这条曲线上各自的法向量之间的夹角小于使用者指定的角度,则这两Surface的Face编号会被设为相同。使用者指定的角度大小可由同一个设置窗口中的FaceAngle菜单栏中设定。这个角度的指定可以让使用者指定要把Surface群组切割到多细。如果FaceAngle的值非常大(例如180),则所有的Surface的Face编号都会一样。FaceAngles越大,产生的Face就越少。

Useallsurfaces:所有的Surface都会被单独分配到一个Face编号。

Usepreviouslydefinedsurfaces:保留原始导入文件的Face分配方式。有一些CAD对象(例如由OpticStudio所建立的)会在文件中就带有Face编号信息,而这些信息将会被直接使用。如果OpticStudio无法检测Face编号的信息,则会回到“Useallsurfaces”的模式。

Usesinglesurfaceperobject:CAD对象中个别分离对象上的所有Surface都会被赋予一样的Face编号。此选项在CAD文件中有多个对象,并且刚好每个对象的材料都要分开设定时非常有用。

本范例中我们使用Useanglesofnormalvectors模式设置Surface,因此理论上所有的Surface都会被独自分配到一个专属的Face编号。本文CAD对象中共有178个Surface,我只想要选择两个特定的Surface,并指定Coating/Scattering属性:其中一个有良好的抛光、低散射、抗反射的特性,另一个则没有镀膜,且高度散射。

要完成这个工作,请回到ObjectProperties>CAD设定中,点如下:


图8.设置步骤

请注意原本每个CAD的Surface都应该被分配到独一而二的Face编号,但是Face的编号上限是50。如上图,在点选ViewCurrentObject之前,我们要先选择“ViewerHighlights:BySurface”,然后点击“ViewCurrentObject”后,就可以看到如下画面。


图9.选择“ViewerHighlights:BySurface”,点击“ViewCurrentObject”后的画面

现在我们回到ObjectProperties设置菜单,按一下SelectAll,就可以在画面中看到都所有CAD上的Surface现在都被选起来了(变红)。


图10.回到ObjectProperties设置菜单,按一下SelectAll

然后我们点选ChangeTo->按钮,把所有CAD上的Surface先初步都设为Face0。


图11.CAD上的Surface先初步都设为Face0

分享到:
相关阅读
文章评论
© 2018 一灯头条 t.ledcax.com 一灯网 浙ICP备17043565号
违法和不良信息举报:lixuda@ledcax.com