概述
这篇文章旨在向新用户介绍OpticStudio非序列模式下的分析功能。其中包括混合模式的使用、光源的设置、复杂几何体的创建、探测器的设置及分析功能。本文还会讨论光线追迹过程中的分裂、散射以及相应的非序列分析。
介绍
非序列模式突破了序列模式的限制,提供了更加灵活的光线追迹功能。
非序列光线追迹意味着在光线追迹过程中,不存在预先定义好的一系列表面。光线与物体表面的接触点仅由它的物理位置、物体的属性和光线的方向来决定。光线可以入射到非序列物体的任意部位,也可以多次入射到相同的物体或一次也不接触。而在序列光线追迹中所有的光线都必须以相同的次序通过相同的一系列表面,两种模式有着显著的区别。
在OpticStudio的序列模式下,光线的传播过程中通过的表面都是在局部坐标系下进行定义的。而在非序列模式中,光学元件以真正的三维物体创建,它可以以表面或实体的形式存在。每个物体都是以全局坐标系中的x、y、z坐标进行定义,并且每个物体坐标和方向的定义相互独立。
OpticStudio中的非序列光线追迹功能不受序列模式光线追迹中的限制。由于光线能以任意的次序通过光学元件,因此您可以模拟包含全内反射的光路。序列模式只能对成像系统和无焦系统进行分析,而非序列模式能够分析成像和非成像系统中的杂散光、散射和照明问题等。简而言之,只要一个光学系统能够用使用光线追迹来描述,我们就能够在OpticStudio的非序列模式中进行建模。
非序列光线追迹
在很多光学应用中,简单的序列表面模型不能很好的描述一些光学元件,我们需要使用实际的三维模型来更好地描述它们的光学性质。其中,需要使用非序列光线追迹才能进行建模的光学元件包括:复杂棱镜、角立方棱镜、导光管、多面体元件、在CAD中创建的元件以及相互重叠的元件(例如一些位于其他元件内部的元件)等。
在OpticStudio中,您可以用以下两种模式来进行非序列光线追迹模拟:
-
纯非序列模式
-
序列/非序列混合模式
当您使用纯非序列模式时,所有光学元件都处在同一个非序列元件组中。其中,光源和探测器均在元件组中进行设置,用来发射和记录光线。在OpticStudio的非序列模式中,光源的设置比在序列模式中更加的多样。在序列模式中只能在物面上设置点光源,或利用序列模式中的图像分析功能,在物面上设置平面扩展光源。而在非序列光线追迹中,光源可以设置在非序列组中的任意位置和方向处,甚至可以被放置在其他物体的内部。光源的类型可以为简单的点光源(和序列模式中的类似)或者为具有复杂三维分布的光源。在OpticStudio旗舰版中,我们提供了一个包含上百种光源的实测分布数据的数据库供您使用。您也可以将从供应商或者其他文件中获取真实的光源数据,并导入到OpticStudio中。
从非序列光源发射出来的光线,被称之为NSC (Non-Sequential Component) 光线,光线入射到光学元件时可以发生分裂或散射,也可以在使用相位描述的元件或表面上发生衍射。在NSC光线追迹时,您可以评估探测器上的辐射强度数据,或者查看储存在光线数据库文件中的光线数据。探测器可以是平面、曲面或者是一个三维物体。非序列模式中探测器的数据支持多种显示类型,其中包括:非相干照度 (Incoherent Irradiance)、相干照度 (Coherent Irradiance)、相干相位 (Coherent Phase)、辐射强度 (Radiant Intensity)、辐亮度 (Radiance) 以及真彩色 (True Color) 结果。光线数据库中储存着每条光线的历史追迹数据,您可以通过字符串过滤的方式,在布局图窗口中只展示入射到特定探测器的部分光线。高级路径分析还提供了按特定标准(例如总的光通量)保存光线路径的功能。上述功能极大的扩展了非序列光线追迹在鬼像分析、杂散光分析和许多照明等需求中的应用。
当您使用序列/非序列混合模式进行光线追迹(也称为混合模式光线追迹)时,非序列元件将在非序列组中进行设置。该非序列组是上一级序列系统的组成部分。序列模式追迹的光线通过一个入射端口进入非序列组,最后再通过一个出射端口从非序列组中出射,继续在序列系统中传播。您可以在同一个序列系统中定义多个不同的非序列组,每组中可以设置任意数量的元件。基于该功能,您可以将多面镜、屋脊棱镜或者CAD元件等非序列元件整合到一个序列模式设计中。该模式适用于模拟那些本身结构就是序列设置的系统,但在系统中包含了一个或多个使用三维模型进行建模更方便的元件。
混合模式
在这个示例中,我们将通过示例文件展示在混合模式下进行光线追迹。点击文件 (File) 选项卡中的打开 (Open) 按钮,打开文件
Zemax\Samples\Non-sequential\Reflectors\Toroidal faceted reflector.zmx
如果在配置选项中勾选了使用Session文件 (Use Session Files),则在打开文件时透镜数据编辑器和非序列元件编辑器会和一些分析窗口一起出现在屏幕上。其中靠右边的3D视图显示了从物面上的点光源发射出来的光线的追迹结果。
使用技巧:您可以双击浮动窗口的标题栏来放大窗口,也可以拖动边缘来放大锁定状态的窗口。
点击3D视图窗口菜单栏中的设置 (Settings) 按钮,勾选光线箭头 (Fletch Rays) 选项并点击确认。OpticStudio将使用箭头来标明光线的传播方向。这个设置在很多非序列系统中非常有用,因为一些系统中的光线路径非常复杂。
光线首先从左至右传播,并进入到非序列组中,入射到一个多面镜上(非序列元件编辑器中的物体1),经过反射后向左传播,从非序列组中出射后入射到一个在序列模式下设计的透镜上(透镜数据编辑器中的表面3和表面4)。您可以用Page-Up、Page-Down和键盘方向键旋转3D视图,从不同的角度观察模型的结构。
使用技巧:您可以使用鼠标滚轮缩放分析窗口的大小,或者在窗口内拖动鼠标划出方框来放大您感兴趣的区域。您可以尝试在3D视图中,划出一个包含反射镜的方框来进行放大。您可以点击菜单栏中的整屏显示 (Reset Zoom)按钮,或者点击右键,在下拉菜单中选择整屏显示来恢复原来的视图比例。
现在您可以更清晰的观察反射镜中每个独立的镜面。在OpticStudio的非序列模式中,您还可以构建很多其他类型的多面物体,包括超环形表面 (toroidal surfaces)、径向和多项式非球面镜以及菲涅尔透镜等。
几何图像分析窗口显示了这个系统在透镜左侧的像面上所形成的独特而复杂的光线分布情况。
这也是一个展示序列/非序列混合模式的示例文件。光线从一个无限远的序列元件开始进行追迹,通过表面1的光阑,经过一个非序列的棱镜系统,最终到达序列模式下的像面上。
实体模型图中显示了中间棱镜的屋脊面,旋转模型使屋脊面正对着屏幕。可以看到,屋脊面由两个互相垂直并像屋脊一样倾斜的表面构成。它的作用类似一个平面镜,但是反射光线从屋脊轴线的一侧反射到另一侧,增加了光程并使所成的像沿着屋脊面的轴线发生了翻转。您可以在实体模型视图中放大以及旋转图像来更详细地查看这三个棱镜。
使用技巧:上图中棱镜的半透明效果是在实体模型图的设置参数中的透明度 (Opacity) 中进行设置的。
在分析菜单中偏振 (Polarization) 的下拉菜单中选择偏振光瞳图 (Polarization Pupil Map) 工具,查看所生成偏振光瞳图结果,它展示了屋脊棱镜对序列模式追迹光线的偏振状态的改变。
在OpticStudio中提供了很多类型的棱镜模型。棱镜可以在文本文件中,通过给定每一个表面的x,y,z坐标的形式来进行定义。这类棱镜称为多边形物体 (Ploygon Object, POB)。棱镜和多面物体也可以通过导入STL文件的方式进行创建,大多数CAD软件都可以生成该格式的文件。需要注意的是,在OpticStudio中通过POB和STL格式生成的物体都是实际的多面物体。
光源模拟
现在让我们查看另一个OpticStudio非序列模式中的示例。示例文件联系工作人员获取。该示例文件展示了从三个灯丝光源发出的光线入射到三个探测器上的情况。在分析选项卡中打开3D视图,在窗口中对其中一个灯丝进行放大,您可以看到灯丝光源的螺线型结构。
选择分析 (analyze) 选项卡中的光线追迹 (Ray Trace),打开光线追迹控制 (Ray Trace Control) 对话框,您可以在这里追迹、筛选或保存非序列分析中使用的光线。点击清除&追迹 (Clear & Trace),清空探测器中已有的结果并重新追迹新的光线,这会生成一系列新的随机的光线并追迹到探测器上。在光线追迹完成后,点击退出 (Exit) 离开控制对话框。
您可以点击分析选项卡中的探测器查看器 (Detector Viewer) 打开一个探测器视图窗口来观察光线追迹的结果。探测器查看器默认对应非序列编辑器中的第一个探测器物体,在该示例中为物体10。
如果要想改变需要查看的探测器,点击窗口工具栏中的设置按钮,在设置里将探测器从探测器物体10更改为其他探测器物体的编号,点击确认 (OK) 按钮即可。
使用技巧:如果您想查看一个探测器的位置和方向,在非序列元件编辑器中,点击探测器所对应的行,相应的探测器会在布局图中以橙色高亮显示。下图中显示了当物体11被选中时布局图中的情况。
在这个示例中,每个光源都发出了上万条光线进行追迹。每个光源追迹的光线数目可以在非序列元件编辑器中进行设置。在编辑器中选中对应灯丝光源的物体(物体3,6或9),然后按右方向键把光标移动到标题栏为#分析光线条数 (#Analysis Rays) 的一列。与镜头数据编辑器一样,非序列元件编辑器具有“动态”的标题,根据您选中的物体类型的不同,标题也会产生相应的变化,显示出对于当前物体类型有哪些可设置的参数。
在本例中,光源物体的#输出光线条数 (#Layout Rays) 只设为一个较小的数值。布局图光线条数和分析光线条数是分开设置的,这使得我们不必在布局图中显示上万条分析光线,光线数目太多导致彼此重叠在一起会使布局图无法清晰显示详细信息。每当您在布局图窗口中双击鼠标,或者点击菜单栏中的更新 (Update) 按钮时,OpticStudio会重新根据所设置的分布,在布局图中显示一系列随机的光线。
实体模型图窗口能够显示分析光线追迹后的结果。您可以在窗口对应的设置选项中更改探测器选项进行设置。当您选择像素颜色为由上一次分析结果决定 (Color pixels by lase analysis) 时,OpticStudio会根据上一次光线追迹的分析结果绘制布局图中的探测物体。
OpticStudio的光源类型支持简单的几何体 (点光源、椭圆盘等) ,也支持使用测量得到的光源数据进行定义。OpticStudio旗舰版还提供了一个包含上百个光源测试数据的数据库供您使用。您可以在数据库 (Libraries) 选项卡中选择RSMX光源模型 (Radiant Source Models) 的下拉菜单中选择下载RSMX光源文件 (Download Radiant Souce Models),查看所有可用的光源文件。
使用技巧:有关纯非序列模式光线追迹系统和关于构建复杂光源的详细信息,包括如何使用测量的光源数据,请联系工作人员获取。
创建复杂的几何体
现在我们来介绍如何在OpticStudio非序列模式中创建复杂的几何体。
OpticStudio内置了许多种物体类型,您可以根据这些类型创建各种几何结构。在前文中我们展示了其中几类结构。当然您想要的结构可能无法使用OpticStudio内置的物体类型创建。
其中一个解决方案是在CAD软件中绘制您所需的几何结构,再导入到OpticStudio中。有两种方法可以实现这一操作:静态导入和动态导入。静态导入是指以常用的CAD文件格式,如STP, SAT, IGS, STL等进行导入。您可以在OpticStudio中导入这些格式的文件,并设置相应的光学性质然后进行模拟。通过这种方法导入的物体只能做等比例缩放,不能对其形状进行修改,因此称为静态导入。动态导入是指通过CAD链接的形式 (只在旗舰版中可用) 导入用SolidWorks、Autodesk Inventor或者PTC Creo等软件构建的零件或装配体,导入物体的参数可以进行相应的修改。动态导入功能需要您事先安装相应版本的CAD软件。下图展示了一个导入到OpticStudio中的SolidWorks零件。
另一个方案是利用布尔物体来创建。布尔物体可以使物体进行一系列的布尔运算,进行布尔运算的非序列三维物体数量最多为10个。最后得到的布尔物体仍然可以通过调整源物体的参数来对结构进行修改。
打开文件
Zemax\Samples\Non-sequential\Geometry Creation\Boolean example 4- a lens mount.zmx。该示例文件展示了如何使用布尔物体来构建复杂的几何结构。
从非序列元件编辑器中可以看到该文件总共定义了4个物体(一个立方体和三个圆柱体)。此外还定义了一个布尔物体。选中布尔物体,向右移动到显示物体A,物体B等的位置,此处用来定义您将要进行布尔运算的物体。
如图所示,其中物体A为立方体(物体1),另外三个圆柱体(物体2-4)分别为物体B,C和D。
回到非序列元件编辑器的左侧,找到布尔物体对应的标注栏。在标注栏中显示了上述物体进行布尔操作的类型。
如图所示,其中物体A为立方体(物体1),另外三个圆柱体(物体2-4)分别为物体B,C和D。
回到非序列元件编辑器的左侧,找到布尔物体对应的标注栏。在标注栏中显示了上述物体进行布尔操作的类型。
该示例展示了使用布尔减法运算得到的布尔物体,您还可以利用加法、交集以及异或运算来创建几何体。
使用技巧:有关创建复杂几何体的详细信息,请联系工作人员获取。
光线的分裂和散射
现在我们来展示非序列模式中的光线分裂功能。打开文件Zemax\Samples\Non-sequential\Ray splitting\Beam splitter.zmx。
该示例文件展示了如何用两个斜面重叠的棱镜(使用多边形物体类型创建)来模拟一个立方体分束镜。在默认情况下,光线入射到多边形物体时会直接透射穿过多边形物体。我们可以通过在物体表面上设置一个部分反射/透射的膜层,来同时得到反射光线和透射光线。膜层的性质在物体属性对话框的膜层/散射 (Coat/Scatter) 选项卡下进行设置。打开非序列元件编辑器中物体3的物体属性设置菜单中的膜层/散射选项卡。所有关于膜层性质的设置都是在这个界面下完成。
使用技巧:有关膜层设置的详细信息,请联系工作人员获取。
在该示例中,分束器的所有表面都设置了膜层。其中,所有的立方体外侧的表面都设置了抗反射膜层,而中间的分束面则设置了50%透射50%反射的膜层。在3D视图中可以看到入射到立方体的光线分成了两束。
打开3D视图的设置对话框,确保NSC光线分裂 (Split NSC Rays) 和使用偏振 (Use Polarization) 两个选项已经勾选。
在OpticStudio中,光线分裂需要进行偏振计算。因此您需要确保勾选了这两个选项。取消勾选该选项并点击确认,您将会看到光线不再分开,只有一束光线从左向右穿过了立方体。
在分析光线追迹过程中同样也可以考虑光线分裂。在光线追迹控制器中必须同时勾选光线分裂和偏振计算两个选项。
使用技巧:OpticStudio还支持一种简单的光线分裂选项。启用该选项时,光线在经过一个分束面时,透射光线和反射光线中只有一条光线会被追迹,不会同时追迹两条光线。追迹光线的选择则是随机的,并且选择概率正比于分束面的反射/透射比。启用该选项能够加快很多光学系统的追迹模拟速度。
接下来我们将介绍光线的散射。打开文件Zemax\Samples\Non-sequential\Scattering\ABg Scattering Surface.zmx。该示例文件同时展示了光线在非序列模式中的分裂和散射。
当布局图设置中勾选了NSC散射光线 (NSC Scatter Rays) 选项时,3D视图中会显示光线在物体2(一个平整的方形镜)上发生的散射。此时没有开启光线分裂功能,因此每条入射光线经过物体2后将得到一条散射光线。实体模型图中同时显示了光线的分裂和散射(同时勾选NSC光线分裂和NSC光线散射选项)。
当在散射系统中开启光线分裂功能时,OpticStudio会生成多条分裂的散射光线,光线的条数取决于散射表面/物体的物体属性对话框中膜层/散射选项卡下中光线数 (Number of Rays) 设置的数值。查看物体2中对应的表面,您可以看到此时光线数设置为每一条入射光线将生成5条散射光线。
OpticStudio支持的散射模型包括Lambertian,Gaussian,ABg,BSDF,IS库和用户自定义散射模型。其中IS库为常用的商用材料的散射数据库。在示例文件物体2的膜层/散射选项卡中可以看到,物体2使用了ABg散射模型(在ABg模型中选择TP_TEST文件)。
在ABg模型中,散射能量的比例是ABg模型中的一个可选参数。如果想要查看ABg模型的具体散射性质,选择数据库菜单中的ABg散射库 (ABg Scatter Catalogs),并在文件名处选择TP_TEST文件。
一个尺寸较小的探测器(物体3)放置在尺寸较大的探测器(物体4)前的中心位置,它用来收集正常反射的光线。只有把布局图窗口放大到很大的时候您才能看到这个小探测器。尺寸较大的探测器则用来收集散射光线。打开探测器查看器,在设置中选择探测器为物体4并点击确认按钮,在分析窗口的下方可以看到散射光线的能量大小。
使用技巧:使用OpticStudio的过滤字符串也可实现在单独一个探测器上对散射和未散射光线的能量进行区分。
高级功能
虽然OpticStudio中的序列模式和非序列模式中都可以模拟衍射光学元件,但是非序列模式的光线分裂功能更利于模拟光线的衍射。
打开文件
Zemax\Samples\Non-sequential\Diffractives\Diffraction grating multiple orders.zmx
可以看到每一条入射的光线都分裂为5条光线。
在这个示例中,光线并不是由于膜层或散射的原因发生分裂,而是因为物体2的物体类型为衍射光栅,光线的能量分裂到不同衍射级的衍射光线上。这个光栅的基本性质(光栅周期,单位线数目/微米)可以在该物体相应的参数栏中进行定义。本例中使用的衍射光栅物体实际上相当于在标准透镜物体的参数上添加光栅周期(刻线/μm)的数据。
在物体属性中的衍射 (Diffraction) 选项卡中对光线的分裂进行设置。
在衍射选项卡中,可以定义每个衍射级之间的相对能量关系。
使用技巧:OpticStudio同样支持使用自定义的衍射DLL文件来定义能量在各衍射级之间的能量比。这个DLL文件还可以用来定义衍射后光线的所有性质,包括相对能量、方向角、电场的方向和幅值等。
OpticStudio中另外一个高级功能是模拟光的相干性。打开文件
Zemax\Samples\Non-sequential\Coherence\A Simple Interferometer.zmx。这个非序列示例文件展示了如何在非序列模式下对光的相干性进行建模。
文件模拟了一个干涉仪。光线从左上方的矩形光源中出射,并在多边形物体2上透射和反射,其中物体2的表面设置了50%透射50%反射膜层层。然后光线分别沿着干涉仪的两臂到达布局图中右下方的探测器(物体6和7)。其中,在探测器前的两条光路,通过第二个具有50%透射50%反射膜层的多边形物体(物体5)重新合为一路。干涉仪左下方一路的反射镜(物体3)沿x轴存在额外的0.005度倾角,这使得两束光在到达探测器表面时的光程差不再相等。
在探测器的相干设置中,OpticStudio根据每条光线到达探测器表面时的幅值和相位,计算它们相干叠加的结果。该功能可以使OpticStudio定性地模拟干涉仪的干涉条纹。如要看到这样的效应,您需要在探测器查看器设置的显示数据 (Show Data) 选项中,选择相干照度或者相干相位:
打开探测器查看器,在设置中选择探测器物体6。设置显示数据选项为相干照度并点击确认按钮。观察因为反射镜(物体3)额外的0.005度倾角所插上的倾斜条纹。
再次打开探测器查看器的设置对话框,设置显示数据为非相干照度 并点击确认按钮。可以看到,由于探测器不考虑光线的相干性,分析窗口中不再显示干涉条纹。
使用技巧:在非序列模式中,您还可以看到由光栅不同衍射级的衍射光线互相干涉的现象。示例文件
Zemax\Samples\Non-Sequential\Diffractives\Diffracting grating fringes.zmx 对此进行了展示。
最后,我们查看光线在材料中的体吸收现象。打开文件
Zemax\Samples\Non-sequential\Miscellaneous\Voxel detector for flash lamp pumping.zmx。
在前文中,我们使用的探测器类型为矩形探测器物体。它们是平面探测器。而OpticStudio同样能模拟更复杂的探测器,例如曲面探测器或者三维的体探测器。
该示例展示了如何在一个简易的激光泵浦系统中使用体探测器物体。其中,谐振腔由一对分处两端的环面镜 (toroidal mirror) 构成(物体3和4)。在靠近每个镜子的位置设置有一个线光源(物体1和2)来发射光线。在谐振腔的中间有一个体探测器(物体6)来模拟谐振腔中的增益晶体。
需要注意的是,体探测器(物体5)覆盖了图中的圆柱体。
体探测器是一个包含由三维像素点阵组成的立方体,我们把每个像素点称为体元 (Voxel)。OpticStudio能够在每个体元上记录入射进来的光通量。当体探测器在空间上覆盖了另外一个定义了透射数据的三维物体时,OpticStudio就能够记录在体探测器里的每个体元上,被吸收的光通量。在这个示例中,被覆盖的圆柱体的材料为BK7玻璃,该玻璃型号的透射数据已经在材料数据库中进行了定义,您可以在数据库选项卡的材料库 (Materials Catalog) 中查看。
点击在非序列元件编辑器中物体5对应的行,向右找到有关探测器体积的设置参数。可以看到体探测器沿着X、Y方向各有101个像素点,而沿着Z方向则有25个像素点。
查看已打开的探测器查看器,可以看到它显示了体探测器中的吸收光的通量。另外在分析窗口的底部列出了所在Z平面位置的信息。探测器查看器只能以二维的形式显示数据,因此探测器查看器每次只能查看其中一个切面的数据。Z平面设置能够让您调节Z方向像素点位置(本例中为1到25),并查看相应XY切面的数据。
您可以在探测器查看器的设置中改变Z平面的位置,或者直接用键盘上的左右方向键进行更改。
使用技巧:在OpticStudio中有很多类型的物体都可以被转换为体探测器。这使您可以更方便的模拟复杂的表面或壳层结构的探测器物体。
小结
您可以随意查看非序列文件夹中的其他示例文件继续探索OpticStudio中的非序列分析功能。
在您学习探索的过程中,OpticStudio的帮助系统 (Help System) 是非常好的学习资源。您可以在帮助菜单中打开它。