2. Zemax非序列模式基础

杂散光分析的核心战场并非序列模式下的透镜数据编辑器,而是Zemax的非序列(Non-Sequential)模式。在序列模式中,光线按照用户定义的表面顺序依次传播;而在非序列模式中,光线在三维空间中与物体(Object)发生物理交互,遵循反射、折射、散射和吸收定律,光线可以任意顺序击中物体,甚至多次击中同一物体。这种自由度是杂散光仿真成为可能的前提。本章将系统拆解非序列模式的界面布局、非序列编辑器(NSC Editor)的核心操作、物体树(Object Tree)的层级逻辑,以及探测器(Detector)的关键概念,为后续的杂散光路径分析打下坚实基础。

Zemax非序列模式核心架构关系图 界面布局 • 菜单栏/工具栏:模式切换 • 导航窗格:项目/系统/物体 • 3D视图:光线追迹可视化 • 文本/表格窗口:数据输出 • 状态栏:追迹进度/警告 非序列编辑器 (NSC) • 物体类型/注释/参考面 • X/Y/Z位置与倾斜 • 材料/镀膜/散射模型 • 光源/探测器/机械件 • 程序/布尔运算/阵列 物体树 (Object Tree) • 层级结构:组/子组/物体 • 布尔运算组 (Boolean) • 阵列组 (Array) • 派生物体 (Derived) • 显示/追迹属性控制 探测器 (Detector) • 矩形/圆形探测器面 • 像素数/数据格式 • 辐照度/强度/相干 • 颜色/灰度/伪彩色 • 光线分裂/散射收集 数据流:界面布局 → NSC编辑器定义物体 → 物体树管理结构 → 探测器接收光线并输出分析数据

上图展示了非序列模式四大核心模块之间的数据流关系。界面布局是操作入口,NSC编辑器是定义物体属性的核心表格,物体树负责管理物体的层级与组合关系,而探测器则是光线追迹的终点和数据采集窗口。理解这四者的协作逻辑,是掌握非序列仿真流程的第一步。

2.1 核心原理:非序列模式与序列模式的本质差异

在序列模式中,光线严格按照表面顺序(Surface by Surface)传播,每个表面被击中一次,且顺序固定。这种模式适用于共轴光学系统的像差优化。然而,杂散光分析面对的是非共轴、多次反射、散射、衍射等复杂路径,光线可能从任意方向入射到任意物体表面,甚至多次反弹。非序列模式采用光线追迹引擎,在三维空间中根据物体的几何形状、材料属性和表面特性,实时计算光线与物体的交点,并依据物理定律决定光线的下一状态(透射、反射、吸收或散射)。

非序列模式的核心优势在于:

  • 任意光线路径:光线可以击中任何物体,顺序不受限制,支持多次反射和散射。
  • 真实物理模型:支持BRDF(双向反射分布函数)、BSDF(双向散射分布函数)等散射模型,模拟粗糙表面的杂散光。
  • 三维实体建模:物体可以是标准几何体(球、柱、矩形)、CAD导入的复杂实体,甚至布尔运算组合体。
  • 探测器直接响应:探测器作为物体的一种,直接接收光线并生成辐照度图、强度图等分析数据。

关键认知:序列模式是“设计”工具,非序列模式是“分析”工具。杂散光分析必须在非序列模式下进行,因为只有非序列模式才能模拟光线在机械结构、镜筒内壁、镜片边缘等非光学表面的多次反射和散射路径。

2.2 界面布局:从序列到非序列的切换与导航

Zemax的界面布局在序列与非序列模式之间切换非常直观。在菜单栏的“File”或“System”选项中选择“Non-Sequential Mode”,即可进入非序列环境。界面主要分为以下几个区域:

界面区域 功能说明 杂散光分析中的典型用途
菜单栏/工具栏 模式切换、文件操作、追迹控制 启动光线追迹、设置追迹参数(如光线数、波长)
导航窗格(Project Explorer) 显示系统树、物体树、探测器列表 快速定位物体、查看探测器数据、管理多层结构
3D视图窗口 三维可视化显示物体和光线路径 直观检查光线与物体的交点,发现意外反射路径
文本/表格窗口 显示追迹日志、物体数据、探测器统计 查看光线数量、能量损失、探测器总功率
状态栏 显示追迹进度、警告信息 监控追迹是否完成、是否有光线“逃逸”或“丢失”

在杂散光分析中,3D视图窗口是最重要的可视化工具。建议开启“Shaded Model”显示模式,以便更真实地观察物体的表面材质和光线交互。同时,在“Ray Tracing”选项中,可以开启“Split Rays”和“Scatter Rays”功能,以追踪分裂光线和散射光线,这是杂散光分析的关键设置。

2.3 非序列编辑器(NSC Editor):物体定义的“控制台”

非序列编辑器是定义所有物体属性的核心表格,每一行代表一个物体,每一列代表物体的一个属性。与序列模式的透镜数据编辑器不同,NSC Editor的列数更多,且属性更加灵活。以下是关键列的解释:

  • Object Type:物体类型,包括标准几何体(Standard Lens、Rectangle、Cylinder、Sphere等)、光源(Source Ray、Source File等)、探测器(Detector Rectangle、Detector Color等)、机械件(CAD Part、Torus等)以及布尔运算组(Boolean)。
  • Comment:注释列,建议为每个物体添加清晰的中文或英文注释,便于后期维护。
  • Ref Object:参考物体,定义当前物体的位置参考系。默认是全局坐标(Global),也可以参考其他物体,实现相对定位。
  • X/Y/Z Position:物体在参考坐标系中的位置偏移。
  • Tilt About X/Y/Z:物体绕X、Y、Z轴的倾斜角度(度)。
  • Material:材料属性,可以是光学玻璃(如BK7)、金属(如Aluminum)、或自定义材料。对于杂散光分析,材料的反射率和吸收率至关重要。
  • Coat/Scatter:镀膜和散射模型。镀膜定义表面的反射/透射特性,散射模型定义表面的粗糙度引起的散射分布。这是杂散光分析的核心设置项。

操作建议:在定义物体时,务必先设置“Ref Object”为全局坐标,再通过X/Y/Z Position和Tilt调整位置。对于复杂系统,建议使用“Boolean”组将多个物体组合为一个整体,便于统一移动和复制。

2.4 物体树(Object Tree):层级管理与布尔运算

物体树是Zemax非序列模式中管理物体层级结构的核心工具。它位于导航窗格中,以树状结构显示所有物体。物体树不仅用于显示,还支持以下关键操作:

  • 组(Group):将多个物体归入一个组,便于整体显示/隐藏、追迹/不追迹。在杂散光分析中,可以将光学件、机械件、光源、探测器分别分组,便于管理。
  • 布尔运算组(Boolean):通过布尔运算(并集、交集、差集)将多个物体组合成一个新的实体。例如,用差集在镜筒上打孔,或创建带有中心孔的反射镜。
  • 阵列(Array):创建物体的线性或矩形阵列,例如微透镜阵列或散热孔阵列。
  • 派生物体(Derived):基于已有物体创建副本,并可以独立修改属性。

物体树的层级关系直接影响光线追迹的效率。建议将不参与追迹的物体(如参考线、辅助图形)设置为“Ignore”,以减少计算量。同时,利用“Object Tree”的右键菜单,可以快速查看物体的属性、复制物体、或删除物体。

2.5 探测器概念:从光线到数据的转换

探测器是非序列模式中用于接收光线并生成分析数据的物体。它本身不参与光线交互,而是记录到达其表面的光线能量分布。探测器类型多样,最常用的是Detector Rectangle(矩形探测器)和Detector Color(彩色探测器)。

探测器的主要属性包括:

  • 像素数(# Pixels):定义探测器的分辨率,例如128×128像素。像素数越高,空间分辨率越高,但计算量也越大。
  • 数据格式(Data Type):包括辐照度(Irradiance)、强度(Intensity)、相干辐照度(Coherent Irradiance)等。杂散光分析通常使用辐照度。
  • 颜色/灰度(Color/Grayscale):定义显示方式,伪彩色便于观察能量分布。
  • 光线分裂(Split Rays):允许探测器接收分裂光线,即光线在到达探测器之前已经经历了多次反射/折射。
  • 散射光线(Scatter Rays):允许探测器接收散射光线,这是杂散光分析的关键。

常见误区:初学者常将探测器放置在光学系统的焦平面上,但杂散光分析中,探测器应放置在需要评估杂散光影响的特定位置,例如像面、传感器表面、或关键机械结构表面。同时,务必开启“Split Rays”和“Scatter Rays”,否则探测器只会记录直接到达的光线,遗漏杂散光路径。

2.6 实战场景:搭建一个简单的杂散光分析模型

假设我们需要分析一个卡塞格林望远镜系统中,次镜支架的散射光对像面探测器的影响。这是一个典型的杂散光分析场景,涉及机械结构(支架)的散射。

步骤1:定义光源。在NSC Editor中添加一个“Source Ray”物体,设置光线方向为沿Z轴正方向,波长为550nm,光线数为10000条。

步骤2:定义主镜和次镜。使用“Standard Lens”或“Torus”定义主镜和次镜的反射面,材料设置为“Mirror”,镀膜设置为“Ideal Mirror”(理想反射)。

步骤3:定义次镜支架。使用“Rectangle”或“CAD Part”定义支架的几何形状,材料设置为“Aluminum”,散射模型设置为“Lambertian”(朗伯散射),散射系数设置为0.1(表示10%的入射光被散射)。

步骤4:定义探测器。在像面位置添加“Detector Rectangle”,设置像素数为256×256,数据格式为“Irradiance”,开启“Split Rays”和“Scatter Rays”。

步骤5:执行光线追迹。在“Analysis”菜单中选择“Ray Trace”,设置追迹光线数为10000,点击“Trace”。追迹完成后,打开探测器查看器,观察辐照度分布。

结果分析:如果支架的散射光显著,探测器图像上会出现非预期的光斑或背景噪声。通过对比开启/关闭散射模型的结果,可以量化支架散射对像面杂散光的影响。

复盘经验:在实际项目中,支架的散射模型需要根据表面粗糙度实测数据来设定,不能随意使用朗伯散射。同时,建议在支架表面添加“Black Paint”镀膜(高吸收率),以降低散射影响。通过这种“建模-追迹-分析-优化”的闭环流程,可以系统性地抑制杂散光。

2.7 常见误区与总结复盘

在非序列模式的学习和实践中,以下误区需要特别警惕:

  • 误区1:将序列模式的设计直接导入非序列模式。序列模式中的表面定义不能直接转换为非序列物体,需要重新建模。
  • 误区2:忽略物体的“Ignore”属性。未设置为“Ignore”的辅助物体(如坐标轴、参考线)会参与追迹,导致计算变慢甚至错误。
  • 误区3:探测器像素数设置过高。像素数过高会导致内存溢出和计算时间过长,应根据实际需求合理设置。
  • 误区4:忘记开启散射光线。如果探测器未开启“Scatter Rays”,散射光不会被记录,杂散光分析将失去意义。

总结:非序列模式是杂散光分析的基础环境,其界面布局、NSC编辑器、物体树和探测器构成了完整的仿真工作流。掌握这些基础概念后,下一步将深入探讨光源类型的选择与设置,这是控制仿真输入条件的关键环节。