Ansys Zemax | 如何建模混合模式系统

devtools/2024/9/22 17:36:08/

概述

这篇文章介绍了在OpticStudio中建模混合模式系统的基本流程,混合模式的意思是在一个系统中同时使用了序列模式表面和非序列模式物体。混合模式将把非序列透镜组插入到序列模式中,本文将介绍插入的具体方法和输出端口的参数定义方式。最后提及一些常见错误和注意事项。

引言

OpticStudio支持两种不同的光线追迹模式——序列模式和非序列模式。虽然二者差异很大,但我们经常需要将它们结合起来使用。同时采用两种模式的系统被称为“混合模式系统”或“混合系统”。

混合模式系统指的是序列模式系统中包含一个或多个非序列物体(即NSC组)。要控制光线经过这样的系统,则需要定义输入口和输出口,分别作为NSC组的起点和终点。

 

混合模式的布局

光线先经过一个常规的序列模式系统,随后入射到棱镜或导光管等非序列系统光路中对像面进行照明。下图展示了一个光线在混合模式系统中传输的例子。平行光从输入口进入30-60-90棱镜中,发生数次全反射,并最终由输出口射出。射出后恢复光线追迹,经过一个凸透镜进行聚焦。

图片

混合模式的光线追迹要依靠名为输入口和输出口的端口。二者在混合模式中非常重要,后文将对它们进行详述。使用端口时,光线从OBJ面上定义的视场出射,并以OpticStudio中常见的光学系统参数,如视场位置、光瞳尺寸等定义进入NSC组的光线的属性。

光线仅能从输入口进入非序列系统中,并仅能从输出口从非序列系统中射出。

 

插入NSC组———输入口

光线仅能从输入口 (Entry Port) 进入到NSC组中。首先,我们要在镜头数据编辑器中欲放置NSC组的位置上插入一个表面类型为“非序列组件”的表面。具体操作为:在表面属性 (Surface Properties) 中更改表面类型 (Surface Type) 即可。

图片

用来校正该偏差的透镜材料为聚碳酸酯,前表面表面类型是扩展多项式,后表面类型是标准面。

图片

这个表面定义了NSC组输入口的大小、位置和形状。输入口可以是平面、球面或非球面,我们可以通过定义曲率半径和圆锥系数来控制。输入口(或NSC表面)的中心顶点一般定义在镜头数据编辑器中前一个表面的局部坐标系里。

这个NSC表面支持表面孔径的设置,任何孔径之外的光线都会被阻挡。通过孔径的光线将以非序列模式进行光线追迹。

 

NSC面的参数—输出口

这个NSC面共有9个参数,多数是用来定义输出口相对于输入口的位置的。

图片

如上图所示,这些参数分别是:

  • 显示接口 (Draw Ports?):这个参数仅用于显示目的。有时,在布局图中绘制输入口和输出口是非常有用的。参数为0代表二者都不显示,参数为1代表仅显示输入口,参数为2代表仅显示输出口,默认值3代表两者均显示。

  • 输出口X、输出口Y、输出口Z,输出口X-倾斜 (Exit Loc X, Exit Loc Y, Exit Loc Z)、输出口Y-倾斜、输出口Z-倾斜 (Exit Tilt X, Exit Tilt Y, Exit Tilt Z):这些参数定义了输出口相对于输入口的X、Y、Z位置和倾斜。例如,仅定义输出口Z (Exit Loc Z) 为10,其他参数为0,则输出口将位于NSC所在局部坐标系Z轴上10个单位远处。

图片

OpticStudio将输出口Z (Exit Loc Z) 值默认设置为1,用以区分输入口和输出口。如果它们重合,光线从输入口进入后马上从输出口射出,我们就没办法看到那些定义的非序列物体了。

  • 顺序 (Order):顺序参数代表元件进行倾斜、偏心的顺序,它的工作原理与坐标断点面的顺序参数相同,详情请查看“如何倾斜和偏心一个序列光学元件”。

  • 光线反向 (Reverse Rays):这一参数表示光线离开输出口后的传播方向,如果该参数为0,则OpticStudio将非序列组视作折射镜,输出口传播方向与输入口一致。参数为1,则光线与入射方向相反。

因为输出口的位置是参考NSC表面本身定义的,所以镜头数据编辑器中,NSC表面之后的面将位于输出口的位置,也正是这个面定义了输出口的尺寸和形状。注意:输出口的半径必须由用户定义,OpticStudio不能自动计算。

图片

我们同样可以将输出口的孔径设置为非圆形。当光线到达输出口时,OpticStudio将计算输出口坐标系中光线的坐标和方向余弦,而后在镜头数据编辑器中后续的序列表面中继续追迹。如果后续表面也是一个NSC表面,那么上述全部过程将再次开始,也就是说,我们可以定义多个NSC组,每个组都有自己的输入口和输出口。

 

定义每个NSC组中的物体

到目前为止,我们已经讨论了如何定义非序列元件组的输出口和输出口,那么我们该如何定义这些非序列物体本身呢?

我们可以从OpticStudio编辑器 (Editors) 菜单中的非序列模式 (Non-Sequential)中定义每个非序列元件组中的物体。

图片

与纯非序列元件系统类似,混合模式中的非序列部分中,物体参考特定的物体来确定位置,物体允许嵌套,支持梯度折射率介质,表面可以镀膜等等。特别注意:此时非序列元件编辑器的全局坐标 (0,0,0) 代表输入口的位置,所以这个组内的所有物体都以这个端口的位置为基准。组中的物体数量没有限制,任何光线只要能达到出口,就会恢复序列模式追迹。

非序列元件编辑器的标题栏表示对应于镜头数据编辑器中的哪个NSC表面:

图片

这意味着非序列元件编辑器中所列出的物体,是镜头数据编辑器中特定表面的一部分。我们可能会定义多个NSC组,所以也就需要多个非序列元件编辑器。OpticStudio只能同时显示一个非序列元件编辑器,但我们可以通过编辑器顶端的箭头按钮来方便地切换。

图片

例如,我们在镜头数据编辑器中把表面4和表面8定义为NSC组,则你可以分别在“非序列元件编辑器:元件组在表面4”和“非序列元件编辑器:元件组在表面8”中定义所需物体。

 

注意事项

OpticStudio在Zemax根目录下 > Samples > Non-Sequential > Prisms 路径中内置了许多混合模式的示例文件。在熟悉混合模式系统时,你可以打开这些文件,观察里面的非序列物体定义、输出口位置参数、序列模式孔径定义等等。

此外,以下有几个有关混合模式系统的关键点:

  • 在混合模式系统中,仍然可以使用所有常用的Zemax-Opticstudio序列分析功能,如光扇图、点图、OPD图等。但需要注意的是,许多序列模式的功能都是采用近轴数据来计算的(如计算OPD图所需参考球面半径的近轴出瞳位置)。因为一个NSC组可能不能分解成一个个等效的近轴系统,所以许多近轴计算将毫无意义。混合模式系统中最常用和最有意义的分析功能是点列图和几何图像分析,因为它们不需要任何近轴数据。

  • 镜头数据编辑器中的NSC表面支持玻璃材料定义,可用于定义NSC物体所处环境的材料和折射率。如果定义了材料,则输入口和输出口会成为材料的边界。

  • 由序列系统孔径定义的光线(序列光线)无法在NSC组中的探测器上看到,同样的NSC中的光源发出的光,也无法离开NSC组。因此,来自非序列光源的光不能应用在序列分析功能中。

序列模式的光线不能在NSC组中分裂,因为光线分裂会增加到达像平面的光线数量,而像平面不能接收多于发射光线数量的光线,否则会在优化时不收敛。

 

总结

这篇文章介绍了混合模式的基础。OpticStudio的混合模式能将一组非序列物体放置在序列模式系统中。定义端口,可以让序列模式视场出射的光线在NSC组中进行非序列追迹。光线仅能通过输出口离开NSC组,并同时恢复序列模式光线追迹。


http://www.ppmy.cn/devtools/90422.html

相关文章

网安新声 | 微软蓝屏事件安全启示录

网安加社区【网安新声】栏目,汇聚网络安全领域的权威专家与资深学者,紧跟当下热点安全事件、剖析前沿技术动态及政策导向,以专业视野和前瞻洞察,引领行业共同探讨并应对新挑战的策略与可行路径。 2024年7月19日,微软发…

Excel列名转换

这段时间工作中需要用到Excel的列名转换&#xff0c;如列A&#xff0c;转为1或索引0&#xff0c;AA转为27或索引26。于是开发了个代码解决这个问题&#xff0c;简单记录下来。以C#代码为例&#xff1a; /// <summary>/// 电子表格相关转换工具/// </summary>public…

企业定制AI智能名片微信小程序在私域流量运营中的应用与策略

摘要&#xff1a;随着2022年私域运营市场步入冷静期&#xff0c;企业逐渐从盲目模仿向精准化、个性化的运营模式转变。在这一背景下&#xff0c;企业定制AI智能名片微信小程序凭借其独特的智能化、便捷化特性&#xff0c;成为企业构建私域流量池、深化用户关系、实现高效转化的…

多人同屏渲染例子——3、生成VAT资源

Unity引擎制作万人同屏效果 大家好&#xff0c;我是阿赵。 之前介绍了怎样去用Shader播放顶点动画VAT。但这里有一个前提&#xff0c;就是这张顶点动画的贴图&#xff0c;是怎样生成的呢&#xff1f; 由于是先说明了Shader的写法&#xff0c;所以可能会有一种先入为主的想法&am…

【AI绘画】fal/AuraFlow-v0.2出现 delete the irrelevant ones 错误

由于AuraFlow模型比较大&#xff0c;我就下在本地/hf_hub,结果运行Huggingface上README.md的代码 from diffusers import AuraFlowPipeline import torchpipeline AuraFlowPipeline.from_pretrained("/hf_hub/fal/AuraFlow-v0.2",torch_dtypetorch.float16,variant…

C#中const和readonly区别

编译时常量 vs. 运行时常量: const 定义的是编译时常量&#xff0c;这意味着它的值在编译时就已经确定&#xff0c;并且在程序的整个生命周期内都不会改变。const 字段通常是静态的&#xff0c;并且必须在声明时初始化。readonly 定义的是运行时常量&#xff0c;它的值可以在运…

Unity强化工程 之 SpriteRender

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1.SpriteRenderer是什么 渲染精灵用的&#xff0c;是渲染的核心组件&#xff0c;有许多重要参数所以要详细讲一讲 Spri…

哈尔滨等保测评——为工业网络安全保驾护航新航标

哈尔滨&#xff0c;这个以冰雪和美丽闻名世界的城市&#xff0c;现在又树立了一个全新的行业标准&#xff0c;那就是“等保”&#xff0c;正在掀起一场新的安全革命&#xff0c;保卫着这个智能时代&#xff01; ❄️【哈尔滨新视野】❄️ 哈尔滨是一块充满创新活力的土地&…