概要
Zemax OpticStudio非序列模式的对象是3D实体,薄膜和散射模型是3D实体的表面特性。本文将从以下几个方向解释如何给非序列元件添加镀膜和散射:
-
非序列对象中“Face number”的概念。
-
如何给不同的Face添加镀膜以及散射模型。
-
从外部导入CAD结构后的一些对镀膜散射性质的处理。
简介
首先,非常感谢Sick AG公司Ingolf Hörsch博士允许我们在本文使用相关光学系统的3D Layout图。非序列模式下的结构是占有一定空间的3D实体,一般情况下可以将非序列元件结构分为两种类型:
-
参数化对象:例如在Standard Lens中可以根据需要自行定义元件的前曲率半径、后曲率半径、中心厚度以及径向孔径。OpticStudio提供了大量的参数化对象,包含全息、衍射、圆柱体以及双锥体等等。
-
由导入的数据文件定义的对象:包含了多边形对象、鳞甲对象以及常见的CAD对象(如STEP、IGES、SAT、STL等格式)。这些对象有可能是多面体也可能是平滑连续曲面(或是两者皆有分布在不同区域)。
不论是何种类型,使用者都需要在这些结构表面上设置薄膜镀层以及散射函数以确保能精确模拟光线的传播。
OpticStudio通过“Face”来描述非序列元件上面的特定区域,这些区域就是我们加镀膜或是散射模型的最小单位。
在参数化对象中,Face的定义通常很明显。举例来说,Standard Lens这个对象可以很简单的知道他的前表面与后表面都是抛光的,而连结两侧的柱状侧面则是未抛光的表面性质。
在由导入的数据文件定义的对象中,“Face”的定义就比较复杂。即使是一个简单的多面镜面,也可能是由很多个小面(facet)组成的。这些特殊曲面的外型也许看起来是连续的一个Face,但可能其实是以复杂的数学描述来完成的。我们加入复杂的CAD对象时,OpticStudio可能会需要处理好几MB的数据,包含平面、曲面、Spline曲面等等。
本文我们将描述如何在一般结构上定义Face,使得接下来可以顺利在该结构上设置镀膜与散射模型。
参数化对象
假设一个Standard Lens结构共有3个Face(编号从0开始),其NSC Shaded Model图如下所示:
所有内建的参数化对象都可以在使用者手册或Help系统中找到该结构的Face定义,这些对象上的Face通常会有一个方便的“名称”。选择任一个Face,你可以决定光线与这个Face相交的三种模式。
-
如果选择“Object Default”,则该Face的反射率由该对象玻璃材料的折射率、该Face另一侧的物质折射率、Face上面的镀膜(稍后更多细节)、入射光波长、偏振态以及入射角决定。也可在该Face上定义散射属性。
-
如果选择“Reflective”,则该Face的表面属性类似于“镜面”。不论光线从这个Face的哪一侧接触,都只会被反射。除此之外,镀膜与散射分布的效应都和往常一样处理。
-
如果选择“Absorbing”,则任意一条入射的光线入射到该面后都会停止追迹。不会应用镀膜以及散射模型。
本文我们都选择“Object Default”。
选择好Face后,任何载入到系统中的镀膜都可以通过Coating下拉菜单设置。OpticStudio有完整的偏振光线追迹以及分析功能。任何偏振态的光源都可以设定,OpticStudio会考虑透射、反射、吸收、偏振态、双向衰减(Diattenuation)以及相位延迟(Retardance)。
镀膜是由任意层数、任意材料组成的,每一层材料都有各自的复折射率以及完整的色散模型。基板材料可以是玻璃、金属也可以由使用者自己设置。OpticStudio可以直接从“The Essential Macleod”或“Film Star”软件以及其他薄膜设计软件中直接导入镀膜定义。OpticStudio会自动在光线从空气到材料以及从材料到空气两种情况之间逆转膜层的顺序,使用者不需要额外定义“镜像”的膜层。
如果无法取得原始的镀膜,我们也可以通过输入不同波长、不同入射角效率的表格信息来定义镀膜。或是使用IDEAL理想膜层来简化定义所有角度与波长的反射与透射。在有详细膜层信息后,我们就可以根据入射光的偏振态、波长以及角度来推算双向衰减率、相位、相位延迟、反射、透射或是吸收等信息。
设定好镀膜后,我们还需要设定散射模型。在OpticStudio中,可用的散射模型包括Lambertian、Gaussian、ABG、ABG File、BSDF、IS Catalog Scatter以及User-Defined。
举例来说,透镜的前表面应该具有良好抛光,而且为了抗反射前表面应该有一层四分之一波长的MgF2镀膜。在OpticStudio预设中就有这样的一个镀膜“AR”。如要在Face 1 (透镜前表面)上面设置AR,可以按下图设置:
Face 0代表侧表面,通常会是无抛光,并且没有镀膜,因此我们可以有如下设置:
CAD对象
以3D CAD软件(如SolidWorks、Creo Parametric、Inventor、CATIA等)设计的实体对象都可以利用一系列的CAD 零件或装配体对象导入。
OpticStudio可以直接与SolidWorks、Creo Parametric、Inventor动态链接导入对象。由于动态链接后会直接存储原始的数学模型因此追迹速度会更快。而且还可以把CAD对象的参数定义为变量套用优化程序。
但是,由于以上这些CAD对象都是外部定义的,因此在分配镀膜、散射特性上都会有一些特殊问题。
首先,CAD对象文件很大(通常会有几个MB大)。再者,CAD软件通常会以不规则的顺序输出对象信息,因此需要使用者花费大量的时间把CAD对象中大量的面(Surface)分类为有意义的Face。让我们看看以下的侦测器系统。
该侦测器系统共包含了178个分离的CAD面(Surface)构成,但是他们并没有依照任何顺序来编号。因此如想要知道编号45的Surface在哪里的话,我们是完全没有线索的。已知该对象是由两个透镜组成。一个提供闪光,用来照亮对象物体。另一个则用来把对象物体成像到系统的探测器上。这两个不同路径都是在序列模式下完成设计,然后在把透镜输出到CAD软件,并与其他相关的机构件结合。完成后同样再利用CAD输出并导入OpticStudio,以进一步模拟光机结合的效率、成像质量、杂散光等信息。
该对象通过注塑成形,生产过程中使用了两种Surface光学处理。第一种是透镜上的Surface为平滑抛光,冷镀膜处理。第二种是其他Surface通过电火花刻蚀处理,表面具有粗糙散射特性。
很明显,没有人会真的想去给这178个CAD Surface逐个设置表面属性!而且和其他CAD文件相比本文CAD文件中的Surface算少了。在OpticStudio中,选项“Surface Mode”可以帮助使用者根据一定的规则快速分类已知Face。“Surface Mode”可以在Object Properties > CAD中找到(只有在外部导入CAD文件时可以看到),Face Mode提供以下几种选项:
-
Use single surface:顾名思义,所有的Surface都会被分配到Face 0。整个对象将只有一个Face。
-
Use angles of normal vectors:对所有的Surface来说,如果两Surface沿着一条长度非零的曲线相接,并且两个Surface在这条曲线上各自的法向量之间的夹角小于使用者指定的角度,则这两Surface的Face编号会被设为相同。使用者指定的角度大小可由同一个设置窗口中的Face Angle菜单栏中设定。这个角度的指定可以让使用者指定要把Surface群组切割到多细。如果Face Angle的值非常大(例如180),则所有的Surface的Face编号都会一样。Face Angles越大,产生的Face就越少。
-
Use all surfaces:所有的Surface都会被单独分配到一个Face编号。
-
Use previously defined surfaces:保留原始导入文件的Face分配方式。有一些CAD对象(例如由OpticStudio所建立的)会在文件中就带有Face编号信息,而这些信息将会被直接使用。如果OpticStudio无法检测Face编号的信息,则会回到“Use all surfaces”的模式。
-
Use single surface per object:CAD对象中个别分离对象上的所有Surface都会被赋予一样的Face编号。此选项在CAD文件中有多个对象,并且刚好每个对象的材料都要分开设定时非常有用。
本范例中我们使用Use angles of normal vectors模式设置Surface,因此理论上所有的Surface都会被独自分配到一个专属的Face编号。本文CAD对象中共有178个Surface,我只想要选择两个特定的Surface,并指定Coating/Scattering属性:其中一个有良好的抛光、低散射、抗反射的特性,另一个则没有镀膜,且高度散射。
要完成这个工作,请回到Object Properties > CAD设定中,点如下:
请注意原本每个CAD的Surface都应该被分配到独一而二的Face编号,但是Face的编号上限是50。如上图,在点选View Current Object之前,我们要先选择“Viewer Highlights: By Surface”,然后点击“View Current Object”后,就可以看到如下画面。
现在我们回到Object Properties设置菜单,按一下Select All,就可以在画面中看到都所有CAD上的Surface现在都被选起来了(变红)。
然后我们点选Change To ->按钮,把所有CAD上的Surface先初步都设为Face 0。
最后再点一下Clear All,这样将会没有任何一个面被选择。现在对象上所有的Surface都有同一个Face编号。但我们要把透镜的抛光表面设为其他的Face编号,这里假设我们要设置为Face 1。在Object Viewer中,左键点击选择Surface,被选择的Surface会同时在Object Viewer以及Object Properties里面高亮起来。
选择好需要的面之后,我们就在Object Properties中的下拉式选单中选择“Face 1”,然后点一下Change To -> ,这样就可以把选取的面都设为Face 1。现在,我们的对象仅包含两个Face,每个不同的Face都可以独立指定不同的镀膜以及散射特性。
其他软件导入的对象
CAD软件导入对象可能是最重要的,但并不是OpticStudio唯一支持的导入对象的软件。OpticStudio同时也支持多边形对象(Polygon Object)以及鳞甲对象Tabulated Object),这些对象都可以通过外部导入的。通常这些都是多面(facted)结构。虽然也有例外,例如Fresnel建立的是旋转对称结构。
对于多边形对象,Face的信息已经在外部数据文件中定义了。使用者可以在Help系统或使用者手册中找到建立多边形对象的细节。每个方形区域(rectangular)或三角区域(triangular)都可以分配一个Face编号。
对于鳞甲对象(Tabulated Object),整个结构仅会被分配到一个Face。
总结
-
CAD对象通常是由好几百个Surface(可能是平面、球体、Spline等)组成,要在每个Surface上都分别手动设定不同的镀膜以及散射模型是不切实际的。
-
我们使用“Face”的概念来把大量的CAD之Surface分开为有意义的群组。
-
通过在3D画面中旋转画面并选择,可以大幅简化“选择Surface并分配Face的流程。
-
多边形结构(.pob)在定义对象外型的同时本身也包含了Face的定义。
-
定义分类好需要的Face后,就可以轻松的在每个Face上设定不同的薄膜镀层以及散射模型。