如果你第一次打开 Zemax,大概率会看到一大堆面板:系统工具栏、镜头数据编辑器、文本报告窗口、各种图形分析结果,左上角可能写着 OpticStudio。一个很常见的场景是:结构工程师或硬件工程师手里有一个 LED 光源,想设计一个准直透镜,让光束平行打出去,于是他打开软件,想先找个“画透镜”的地方,结果搜出来的教程要么太细,要么直接跳到镜头优化,看了一半还不知道第一步该点什么。
其实第一步该点什么,远没有你理解这台工具在解决什么问题重要。Zemax 不是一个画图软件,也不是“把想象变成仿真图”的万能按钮机。它真正的价值,是把光学设计从“凭经验试错”变成一套可计算、可优化、可评估、可交付的工程流程。你一旦理解了这个定位,就不会被界面吓住,也不会停留在“我把光路画出来了,但它到底行不行”的阶段。
下面我会用一条主线来拆解这套软件:系统约束是怎么定的,序列模式和非序列模式分别解决什么问题,优化是怎么发生的,公差和交付为什么重要,以及新手最常踩的坑。这不是一篇面面俱到的参考手册,而是一张能让你少走弯路的地图。
1. 先建地图:Zemax 在光学设计流程里到底解决什么
1.1 光学仿真和光学设计,差在“目标函数”
很多人提到 Zemax,第一反应是“光学仿真”。这个说法不算错,但容易误导。仿真强调的是对已有系统做计算验证:给一个结构,算成像质量、能量分布、杂散光。而 Zemax 在工程实践里更核心的用法,是“设计”:从一个使用需求出发,在边界条件的限制下,找到一组可行的几何和材料方案。
翻译成实际操作,就是你需要先回答三个问题:
- 系统要接受哪几个波长的光,主波长是谁。
- 入瞳或孔径有多大,像面尺寸是多少。
- 视场范围是多少,允许的最大畸变和最小分辨率是多少。
这三个问题一旦确定,软件才有资格开始计算。否则即便你在界面里画出一个漂亮的双胶合透镜,也很难判断它是不是真的符合需求。这就像你让一个设计师“随便设计一个杯子”,如果不说容量、口径、材质、是否隔热,产出的方案只能叫“一个形状”,不叫“一个设计”。
所以 Zemax 真正训练人的地方,不是让你会点菜单,而是让你学会把光学需求翻译成系统参数。这个能力在任何光学软件里都通用。
1.2 序列模式与非序列模式,不是版本区别,而是两类问题
Zemax OpticStudio 里最基础的一对概念,是序列模式(Sequential)和非序列模式(Non-Sequential)。
序列模式的特点是,光线按照你在镜头数据编辑器里定义的面的顺序,一个一个地折射、反射、穿过,不会“回头”。这对传统成像镜头非常合适:相机镜头、望远镜、显微镜、车载镜头,基本都是这个逻辑。你在序列模式里可以快速计算点列图、波前、MTF、色差、场曲,设置变量和评价函数之后还能让软件自动优化镜头结构。
非序列模式则不同。光线发射后在三维空间里自由传播,可能与任意物体相交多次,可能被反射回来,也可能被部分吸收或散射。它适合照明系统、导光结构、杂散光分析、光学天线等有“能量路径不止一条”的场景。
用一句话记住两者的差异:序列模式处理的是“光线按顺序走过一条确定的路径”,非序列模式处理的是“光线在世界里到处跑,路径不唯一”。
这不是一个参数设置的区别,而是计算模型的区别。很多新手在序列模式里好不容易做出一个镜头,然后想当然地把元件挪到非序列环境里,结果发现光路完全不对或者效率低得离谱,原因就在这里。
1.3 为什么行业愿意把它当作“标准工具”之一
Zemax 从早期版本发展到现在,逐渐并入 Ansys 产品线,常见名称变成了 Ansys Zemax OpticStudio。这背后不是简单的品牌变化,而是说明它在光学设计工具体系里的位置越来越靠中间:它不只是算个光线,而是可以和结构、热、工艺、跨部门数据流发生耦联。
行业里有很多光学设计工具,但 Zemax 的认知度和覆盖率一直很高,核心原因不是它有某一个独占功能,而是它把设计过程中的几件事打包得很完整:
- 初始结构的建立和编辑。
- 像差分析、图像仿真、物理光学传播。
- 优化:局部优化、全局优化、锤击优化。
- 公差分析:灵敏度分析和蒙特卡洛模拟。
- 与 CAD、其他仿真工具的交互。
也就是说,你可以在一个环境里完成从“概念”到“可制造性评估”的主干流程。这不是说其他工具不好,而是说这类工具的出现,让光学工程师有了一个标准化的项目推进框架。
2. 第一次跑通一个小系统:从系统参数到评价函数
2.1 别急着放透镜,先定义系统顶层参数
我见过很多初学者打开 Zemax 后,第一件事是在镜头数据编辑器里输入一个“标准面”,然后输入曲率半径和厚度,指望它能像 CAD 建模那样直接显示一个 3D 实体。结果发现界面里的数据看不懂,默认单位也不清楚,软件还提示这个面没有材料属性。
更建议的顺序是先处理系统顶层参数。在一个新系统中,通常有几个入口需要正视:
- 孔径类型:是入瞳直径、像空间 F 数,还是物方锥角。
- 视场定义:是视场角、物高,还是近轴像高。
- 波长:至少要给定一个主波长,如果是白光系统则需要给出波长范围和权重。
- 单位:毫米还是英寸,这会影响整个系统的一致性。
这些参数设置的顺序本身不重要,但它们决定了后续所有计算的含义。比如一个无限共轭的望远镜系统,你关心的是角度分辨率,入瞳直径和视场角要比像高更重要;而一个有限共轭的工业镜头,你更关心倍率和物高。
这里有一个容易踩的坑:把单位混用。数据和材料库之间如果单位不一致,会出现一个看似合理但实际完全错误的结果,而且这种错误很难一眼看出。遇到异常结果时,最先查的一定是系统单位、波长单位和孔径口径。
2.2 用镜头数据编辑器搭“骨架”,而不是画光路
在序列模式里,镜头数据编辑器是最常驻的面板。每一行代表一个面,每一列描述这个面的属性:曲率半径、厚度、材料、半口径、二次曲面系数、非球面系数,以及这个面是否被设置为变量。
一个最小的成像系统可能只有两个面:一个光阑面和一个像面。但实际镜头至少要有一个能承担光焦度的折射面,也就是曲率半径不为零、材料有折射率的面。常见的做法是先从一个已知初始结构开始,比如双胶合透镜或者库克三片式,然后把曲率半径、厚度设为变量,让软件去优化。
初学者的误区在于,以为软件能“从一张白纸长出镜头”。实际上,Zemax 的优化器更擅长在已有结构附近寻找更优解,而不是凭空发明结构。这就是为什么很多教程会强调:先找一个接近需求的初始结构,再导入软件优化,效率远高于从零开始。
这个特性和传统 CAD 完全不同。你在 SolidWorks 里可以画任何没有物理意义的形状,但在 Zemax 里,每个面的位置、间隔、材料组合,都直接影响光线路径是否可追迹。如果你的初始结构本身连光线都追不完,优化根本无从谈起。
2.3 评价函数:你知道“什么算好”,软件才能算下去
光学系统好不好,不能靠主观感受,需要一个数值化的评价函数。Zemax 的优化本质上是在一个目标函数上做迭代搜索,这个函数通常由你定义得多项描述组成。
最常见的做法是使用评价函数生成器。你可以告诉它:我要优化 RMS 波前,或者 RMS 光斑尺寸,考虑哪些视场、哪些波长,权重怎么分配。它会自动生成一组操作数,把目标转换成软件能计算的数字。
不要小看这一步。评价函数的设计,决定了优化方向。你要大视场。可你却权重设得太低,那软件一定会优先保证中心视场,最终结果自然偏掉。同样,如果你只看点列图尺寸,忽略了畸变,那最终系统可能有很锐利的像,但图像边缘像被“吹气球”一样变形。
所以在跑优化前,你需要想清楚:
- 这个镜头的关键指标是分辨率,还是畸变,还是能量集中度。
- 哪些视场的误差不可接受。
- 波长加权是平均,还是偏向可见光峰段。
优化器本身不聪明,它只是在你的评价函数方向上前进。你定义错了目标,它只会更高效地把系统带向错误。
2.4 判读结果:不要只看一张点列图
优化完成后,系统会生成一堆分析结果:二维光路图、点列图、MTF、场曲畸变、波前图、衍射能量包围圈。很多人看到点列图觉得“点子聚在一起就成功了”,这个判断不完整。
点列图描述的是几何光斑,但没有完整地告诉你系统在不同频率下对对比度的保持能力。MTF 则更接近成像系统的真实感受,它同时考虑了衍射、像差和像素采样需求。一个镜头如果 MTF 在对应传感器截止频率处已经掉到很低,点列图再漂亮,成片效果也不会好。
另一个容易被忽略的是主光线或者边缘视场的“渐晕”。有些优化会让视场边缘自然变暗,以换取更均衡的像差。如果系统规格里要求边缘相对照度必须大于某个值,那你需要在评价函数里加入相关操作数,而不是等结果出来后再补救。
这一段的核心经验是:分析图不要单独看,要把它们当成一组证据互相印证。光路图告诉你结构是否有问题,点列图告诉你几何像差水平,MTF 告诉你整个系统的高频响应,能量包围圈告诉你光能集中度。四张图放在一起,才能判断这个设计是否真的过关。
建议:第一次跑系统时,不要一上来就追求复杂结构和超低像差。先让一个简单镜头能成功优化、能稳定追迹、能分析出结果,再一步一步增加复杂性。这个“最小闭环”会给你节省大量时间。
3. 进入非序列世界:从 LED 光束准直开始理解照明仿真
3.1 为什么 LED 准直这类问题必须切非序列模式
照明系统的核心是能量,不是像差。当你关心“从 LED 发出的光有多少能进入最终的光斑”,就要考虑光源的发散角、透镜表面的反射、吸收、材料体吸收、杂散光路径,甚至多次反射。这条光线路径不是按固定顺序走的,序列模式处理不了。
用一个很常见的例子:一个 LED 光源发出发散角很大的光,经过一个全内反射透镜,一部分光从透镜侧面进入后如果角度不合适,会发生侧漏,再经过结构件反射后落到探测器上。这种光路在序列模式里根本不会出现,因为你只定义了某个固定路径。
所以在 LED 光束准直、车灯光学、导光板、背光源这类场景里,你需要切换到非序列模式,让光线在空间里“自由发挥”。
3.2 一个最小可执行的 LED 准直建模流程
围绕“LED 光束准直”,比较典型的工作流是这样:
- 建立光源模型。不要直接用理想点光源,至少要给出发光面的尺寸和发光角度分布。实际工程中,可以把 LED 厂商提供的光源文件导入,或者用朗伯体、角度强度分布函数近似。
- 建立准直透镜结构。常见方案是一个非球面透镜,让 LED 位于透镜后焦点附近。你可以先用序列模式做一个近轴设计,得到透镜焦距、口径和位置关系。
- 切换到非序列模式,把透镜实体放到 LED 前方,设置材料属性。
- 在目标位置设置一个探测器,通常是矩形探测器或者接收屏。
- 设置光线追迹参数,先跑少量光线验证光路合理,再增加光线数获得平滑的能量分布结果。
- 观察探测器上的光能分布,计算准直角度和光能利用率。
- 如果效果不达标,把透镜曲率、厚度、非球面系数设成变量,用评价函数继续优化。
很多初学者会在第 5 步翻车:一开始就把光线数拉到千万级别,跑一次要等很久,还可能因为探测器网格设置太密导致内存占用过高。更稳妥的方式是先跑 10 万到 50 万条光线,确认光斑形状和能量量级没问题,再提高光线数做定量分析。
3.3 菲涅尔损耗:为什么光会“少掉一截”
“菲涅尔损耗”是热搜里反复出现的一个词,它指的是光从一种介质进入另一种介质时,部分光在界面上被反射回来,导致透射的能量不是 100%。
一个未镀膜的空气-玻璃平面,单次界面反射大约会损失 4% 左右。如果是两个面的透镜,一次穿过至少要经过两个界面,总损耗可能超过 8%。这还没有计算菲涅尔反射下来的光会在系统内部怎么反射。
在 LED 准直系统里,菲涅尔损耗不仅降低能量利用率,还可能成为杂散光的来源。反射光打回结构件、再反射到探测器,会产生不该有的光斑。
因此,仿真时需要在镜片表面设置一层或多层增透膜,让界面透射率更接近实际状态。如果你只看“全透射”,优化结果会高估系统的能量输出,导致实际测试时发现光线暗了一截。
3.4 非序列分析里的“慢”是物理现实
非序列模式慢,很多人误以为是电脑不够好。实际上,每条光线在非序列环境里要做大量求交测试,遇到复杂物体时,计算量会呈指数级上升。这是物理模型的代价,不是软件缺陷。
处理这种慢的方法通常有三个:
- 分阶段追迹:先用少量光线验证光路朝向,再增加光线数。
- 简化模型:把对光学影响不大的结构件先隐藏或简化为吸收体,等关键路径分析清楚后再加回来。
- 合并探测器网格:不要一开始就开 2000×2000 的网格,先用 128×128 看趋势,锁定光斑位置后再细化。
这些看似“偷懒”的操作,恰恰是照明仿真工程化的核心。你没有能力在一个白天里跑完千万光线数的复杂模型,但你可以通过合理的简化,在几分钟内完成一个可靠的迭代循环。
4. 从“能追迹”到“能交付”:公差、黑盒与跨工具流转
4.1 公差分析:光学设计如果不看公差,等于没设计
一个光学系统在软件里表现再好,如果实际生产时任意一片镜片的曲率半径偏移一点、厚度漂移零点几毫米、镜片间有装配偏心,整个系统可能直接失焦。
公差分析正是用来回答这些问题的:给每个制造参数设定一个允许波动范围,然后计算系统在波动下的成像性能分布。
在 Zemax 里,常见做法是先做灵敏度分析,也就是一次只改变一个参数,看它对评价指标的影响有多大。之后再做蒙特卡洛模拟,让所有参数同时随机波动,生成一组虚拟的装配样本,统计满足设计指标的概率是多少。
这个环节的意义,是把“设计漂亮”和“制造出来依然稳定”之间拉上一条线。很多新手镜头设计得很好,但一旦做公差分析,发现良率只有 20%,然后被迫回去重新降低像质要求或加强约束。设计阶段越早意识到公差问题,后期返工越少。
4.2 黑盒文件:在保护设计的同时完成协同
在供应链环境下,你可能需要把一个镜头设计交给客户验证,或者把某个关键光学部件给合作方做结构集成。但如果把完整的 .zmx 文件给出去,对方能看到你的全部设计思路、材料型号、曲率半径和内部参数,知识产权就不好保护了。
这时可以用黑盒机制。把需要保护的元件或系统封装成黑盒后,合作方还能用它做光线追迹,模拟光学系统行为,但无法查看内部结构、材料、非球面系数等细节。这有点像给对方一个“只能开车,不能打开发动机盖看缸体设计”的样车。
使用黑盒文件时,有一个工程建议:导出前先在本地保存原始完整文件,并记录清楚版本号。因为黑盒文件是基于特定光学设计软件版本生成的,接收方如果版本过低或环境不同,可能无法正确使用。即便是合作交付件,你也要写清楚黑盒的适用范围和限制,避免对方在错误的场景里调用。
提醒:黑盒文件更多是交付和协作场景里用来保护设计资产,并不适合用来代替正常的项目评审。项目组内部还是要保持完整设计的可读、可查、可迭代。
4.3 跨工具流转:Zemax 转 LightTools 之类的坑
有些项目需要在 Zemax 里做镜头设计,在 LightTools 里做照明系统或杂散光分析。两个工具各有强项,但数据流转并不像“另存为”那样干净。
最常见的坑有几个:
- 几何格式只保留实体形状,材料参数、镀膜参数不会自动携带。导入 STEP、IGES、SAT 后,通常需要在目标工具里重新指定材料。
- 光源参数容易丢。厂商光强分布文件、功率、波长权重等,通常需要在目标工具里重新设置。
- 坐标原点不一致。导入后如果出现旋转角度错位,多半是导出导入时坐标系设置没有对齐。
- 评价指标不同。Zemax 里看的是像差和 MTF,LightTools 里看的是照度均匀性和光能利用率,两者不能只靠导入结果做结论。
所以在转换工具后,一定要做一轮“等价性验证”。选一个已知的基准场景,比如平行光入射到一个平面上,比较两边系统计算出的能量分布和光路长度;或者选一个简单透镜,对比主光线角度。如果这组基准数据对不上,后面再计算复杂系统也缺乏可信度。
这不是说“Zemax 不如 LightTools”或反过来,而是说每种工具有它适合的计算模型。跨工具协作越提前做验证,后面越省心。
5. 新手容易踩的坑,以及一条可复用路径
5.1 常见踩坑清单
下面这些是我在不同项目里见过比较多的现象,也是新手最容易反复踩的问题:
| 现象 | 常见原因 | 建议排查方向 |
|---|---|---|
| 光线追迹不完整或半路终止 | 入射光线角度超出全反射临界角,或初始结构不合理 | 先用二维光路图看光线路径,检查入射角和面曲率 |
| 优化半天结果没有改善 | 变量没设好,或评价函数缺少足够的约束 | 确认镜头数据编辑器里变量标记存在,并且评价函数里包含关键视场和波长 |
| 数据看起来正常但实际制造出来很差 | 没有考虑公差、镀膜、材料吸收 | 跑一轮灵敏度分析和蒙特卡洛模拟 |
| 非序列模式下能量明显偏低 | 光源功率设置不对,或表面没设透射膜 | 检查光源总功率和探测器的单位,再确认材质光学属性 |
| 跨软件导入后光路错乱 | 坐标系、单位或材料库不匹配 | 导入后用简单基准模型做等价性验证 |
| 版本差异导致打不开文件 | 高版本保存的格式,低版本软件无法读取 | 确认双方软件版本和文件兼容策略 |
这张表不能覆盖所有情况,但它指向了一个底层逻辑:光学系统出问题时,不要急着怀疑软件和优化器,先检查输入、边界和模型简化是否合理。
5.2 一条可以从头用到后期的推进路径
真正能让你在 Zemax 里快速上手的,不是背菜单,而是一套稳定的工作顺序:
- 最小闭环:先用最简单的模型跑通整个流程,确认光线能正常追迹,能生成分析图。
- 单点优化:只优化一个目标,比如 RMS 光斑半径,确认优化链路有效。
- 完整分析:加入多视场、多波长,观察 MTF、畸变、能量集中度,确认评价函数定义合理。
- 公差评估:加入制造误差范围,确认设计在实际波动下仍然保持可用。
- 交付与流转:按需要导出黑盒文件、工程图,或者转换到其他工具做多物理场协同。
每一步都有明确的出口条件。不要在没有把上一步结果看明白之前,就跳到下一步。比如优化结果连点列图都异常,就不要急着做公差分析;自己做出来的数据都不稳定,转给下游只会制造更多返工。
5.3 适用边界:什么场景不适合直接套用 Zemax
Zemax 虽强,但它不是万能的。理解它的边界,也是理解这个工具的一部分。
如果你要做很严格的微纳结构、超表面、亚波长光栅这类强衍射元件,OpticStudio 的物理光学传播和相关功能能处理一部分,但很多情况下需要更专业的电磁场仿真工具来配合。
如果你主要做的是散热、结构应力、光源驱动电路,Zemax 不是你的主力软件,它更适合属于光学部门的那一部分职责。跨领域问题,更常见的是 Zemax 与 Ansys 其他模块或其他仿真软件组成联合工作流。
如果是快速原型验证,不追求精确光学指标,只想看一个大概光路效果,其实也可以先用简单的几何光学工具。Zemax 的学习成本和配置成本都不低,杀鸡不用牛刀。
所以,选择 Zemax 之前,先问自己一个问题:我的项目是否需要量化评估成像质量、优化镜头结构、评估制造公差,或者分析照明能量?如果答案都是“需要”,那它值得投入;如果只是偶尔看一下光路,或许有更轻量的替代。
回到最开始的那个判断:Zemax 真正改变的不是“画图”这个动作,而是让光学设计变成了一个可以反复迭代、可以被量化、可以被下游接住的工程过程。你不需要在第一天就学会所有面板和所有操作数。你要做的,是从一个最小模型开始,跑通一次“参数设置、建模、优化、分析、公差、交付”的完整链路。这条路走通一次之后,后续所有新项目,都是在同一个框架里填充新的约束和结构。
下一次再打开软件时,别问“我该先画什么”。先问自己:这个系统的主波长、孔径、视场、判决指标是什么?把这些写清楚,你的 Zemax 生涯就已经走上正轨了。