光学设计、仿真这几个词,放在十年前还是一个小众赛道,读光学工程的博士挤破头去镀膜厂、镜头厂做工艺。但这两年风向确实变了——从AR/VR眼镜的衍射光波导,到车载激光雷达的发射与接收光学,再到半导体检测设备的照明与成像系统,几乎所有硬科技赛道都在疯狂挖懂光学设计和仿真的人。我自己带过的团队里,能把Zemax玩明白、能把公差分析做扎实的学生,基本毕业前就被企业预订了。这篇文章我就以光学设计仿真为主线,把从需求拆解、软件操作到问题排查的完整链路掰开揉碎讲一遍,给正在读硕博、想入坑光学设计的你一个可以直接抄作业的参考。
先说清楚这篇文章能帮你解决什么问题:如果你刚接触Zemax OpticStudio,不知道怎么从零搭建一个镜头系统;如果你已经能设计简单镜头,但优化老是陷入局部极小值、公差分析一过就崩;如果你想搞离轴系统、自由曲面却不知道从哪里下手——这篇文章就是为你准备的。我会用自己做过的双胶合消色差透镜和离轴反射系统的真实案例来讲,而不是复读软件手册。
1. 光学设计仿真为什么成了硕博士的必修课
这个话题得从供需两端一起看,单讲技术没有说服力。
需求端的变化非常明显。以前光学设计主要集中在大规模量产的相机镜头、显微镜物镜、投影镜头,市场相对稳定,一个院所有两三个资深工程师就能撑起全部设计任务。但现在消费电子进入光学创新的爆发期,手机多摄、潜望式长焦、屏下摄像头的复杂光学系统迭代周期越来越短;车载领域前装HUD抬头显示、激光雷达、智能车灯都需要定制化的光学方案;光通信里的硅光耦合、beam shaping也在大量起用新的仿真手段。再加上生物医疗里内窥镜、流式细胞仪的光路,半导体制造里的光刻照明与缺陷检测光学,每个细分方向都缺人。我们组去年同时接了四个项目,我自己的感受是:能用光学仿真软件把方案从概念推到可加工状态的工程师,薪酬水平和话语权都在明显上探。
供给端同样在变化。以前学光学设计基本靠师父带徒弟,经验即壁垒。一个初学者坐在老工程师旁边,看他调两天评价函数,不如自己踩一年坑来得快。但现在的软件工具和算力已经大幅降低了入门门槛,Zemax这类商业软件把大部分数学细节封装好了,辅助设计的AI工具也能帮你快速找初始结构。门槛下降意味着参与的人变多,参与的人多了,整个行业对“会用软件但不懂底层逻辑”的从业者反而不满足——企业要的是既能跑仿真,又能判断仿真结果是否可信的人。
这正好解释了为什么现在的招聘JD里,“精通Zemax或CODE V”“熟悉光学设计与仿真验证全流程”几乎成了光学岗标配。学历门槛只是一张入场券,真正的筛选就发生在你能不能把需求翻译成参数、把参数变成可加工的设计、把设计在仿真里验证到量产级别。
2. 整体设计思路与方案选型:先把流程想清楚再碰软件
光学设计仿真这件事,最大的误区就是拿到需求直接开Zemax,一边画镜头一边试。我见过太多学生把系统波长、孔径、视场这些基本量先乱设一通,最后优化一个晚上得到一个看着很漂亮、实际上完全没法加工的镜片。所以在打开软件前,先把这个逻辑链理顺。
一套完整的仿真驱动设计流程大概是这样的:需求拆解 -> 技术指标量化 -> 初始结构选型 -> 像质仿真与优化 -> 公差与稳健性分析 -> 出图与复核。每一步里面都有大量取舍,我这里挑几个关键决策讲。
2.1 需求拆解:把“看得清”翻译成可量化的指标
任何光学设计都是从一句模糊的用户需求开始的,比如“我要一个长焦镜头”“我要激光扩束器”。你需要把它拆成下面这张表里的硬指标,越具体越好:
| 指标项 | 典型值举例 | 备注 |
|---|---|---|
| 有效焦距EFL | 100mm | 决定系统放大率或视场角 |
| F数(光圈) | 2.8 | 影响通光量与衍射极限 |
| 视场角/像高 | ±10°,或像高5.6mm | 与传感器匹配 |
| 工作波段 | 486nm~656nm(可见光)或1550nm | 直接决定玻璃选择 |
| 最大畸变 | 1% | 测量类系统常要求 |
| 后工作距离 | 不小于15mm | 给镜筒和调焦留空间 |
| 环境温度范围 | -20℃~60℃ | 决定是否需要无热化设计 |
这里有一个我特别想让新手记住的点:所有指标之间会互相打架。比如你要大口径(小F数)、大视场同时又要求镜片尽量少、总长尽量短,这就非常考验全局优化的能力和对像差理论的掌握。如果需求方给出的指标相互矛盾,你应该在仿真之前就提出来,而不是硬着头皮去优化。
2.2 初始结构选型:善用现有镜头库而不是从平行平板开始
确定指标之后,第一件事不是用什么高深的算法去“无中生有”,而是先找合适的初始结构。就像写论文先做文献综述,做镜头设计先翻专利库和镜头库是完全合理的。
我自己常用几种找初始结构的路径,按优先级排:
- 内部积累——公司或导师项目里做过的类似系统,改参数最快。
- Zemax自带的镜头示例库(Samples文件夹里就有不少经典结构),直接展开改参数。
- 专利检索——Google Patents和各国专利局搜“lens system + 焦距 + F数”,很多经典专利里会给完整的结构参数。
- 公开资源——Edmund、Thorlabs等公司的产品页面会放一些镜头的设计参数,可以作为出发点。
有一个新手容易犯的错误:把初始结构的波长和像面尺寸直接改成自己的目标,却忘了相机系统的像方数值孔径、光阑位置等都是耦合的。如果初始结构选得不合适,后边优化跑断腿也救不回来。我的习惯是先用近轴光学公式手算一遍系统的关键参数——大致光焦度分配、光阑位置对应的入瞳大小——确认初始结构的大方向是对的,再进软件做局部优化。手算这一步看起来土,其实能帮你过滤掉一半以上明显不合理的结构。
3. Zemax核心操作细节与实操要点:从建模到优化
进入软件实操环节,我会用一套实际跑通的双胶合消色差物镜设计过程作为线索,把建模、优化、像质检查的要点讲透。这套流程不仅适用于常规折射系统,你学会之后可以直接往非球面、离轴系统上迁移。
3.1 系统参数的设置顺序为什么重要
打开Zemax OpticStudio之后,界面上“System Explorer”里那一堆参数,设置顺序其实是有讲究的。如果没有特殊原因,我建议按这个顺序来:
- 先设波长和权重。可见光系统就选F、d、C三色光,权重按应用场景定。激光系统直接设单一波长,省得后面优化时色差操作数干扰。值得一提的是,对于多模激光或在荧光显微镜这种宽谱系统里,波长权重的给定要和实际光源光谱匹配,否则优化结果会偏向权重最大的波长。
- 再设入瞳直径或F数。二者选其一,Zemax会自动联动另一个。记住:如果你发散光了,回来的F数不是自己要的,多半是入瞳位置被孔径光阑限制住了,而不是F数输入错误。
- 接着设视场。用一个视场点先跑通模型,确认没有光线追迹错误之后,再把多视场全部打开。这一点特别重要——我见过有人一上来就设5个视场,结果边缘视场光线全部掉出镜片,50%的光线都失败了,他还盯着评价函数看为什么优化不动。先用轴上视场,把系统结构理顺,再加视场,这是减少排查成本的黄金法则。
- 最后设置物方工作距离。如果物在无穷远,物方厚度设为Infinity,系统自动按平行光处理;如果是有限共轭成像(比如内窥镜近摄),这里一定要填真实物距。
要注意,设置顺序影响的是排错效率,不是数学模型本身。如果你已经熟练了,可以不用死记,但对新手这四步按顺序来能少很多不明原因的发散。
3.2 评价函数设置的两个关键权重
很多人问“为什么我的优化老是跑到一个奇怪的结构”,大部分问题出在评价函数上。Zemax的默认优化是基于RMS波前差或RMS光斑尺寸的,但默认权重并不能适应所有场景,需要手动去卡重点。
我的经验是,在默认评价函数的基础上,强制加入以下几个操作数,并且给它们一个相对较大的权重:
SPHA(球差系数):用于抑制大孔径下的球差残余。COMA(彗差系数):用于控制轴外视场的彗差。ASTI(像散系数):APC系统里特别重要,控制高像散。TOTR(系统总长):如果系统长度有硬性要求,必须有这个约束,否则优化出来的系统总长可能让你怀疑人生。DIST或DIMX(畸变):投影、测量系统里是关键指标。
注意:加太多操作数不等于优化效果好。权重比例失衡的典型症状是,单个像差被压得非常低,但边缘视场MTF上不去。我一般把默认评价函数设为RMS wavefront,然后外加2~3个关键约束操作数,权重设置在0.1~1之间,视情况调整。
3.3 优化策略:先用局部优化摸底线
Zemax里有两类优化器:局部优化和全局优化(锤形优化)。我见过很多学生一上来就点“Global Optimization”,跑一晚上没结果,第二天回来问是不是软件坏了。其实正确的策略是:
- 先用局部优化跑一遍,把变量设为核心曲率半径、镜片厚度、空气间隔。
- 看结果停留在什么水平,是不是远低于自己的预期。
- 如果低于预期,说明初始结构方向有问题,应该回去换初始结构,而不是加大局部优化的迭代次数。
- 只有当前结构已经“差不多”但陷在局部极小值里,才启用锤形优化在周边搜索更好的解。
锤形优化的运行原理是“随机扰动现有结构+局部搜索”,它可以帮你跳出局部极小,但不代表全局最优。所以启用它之后,我通常顺手把最重要的结构参数做边界限制,防止它为了压低一个像差,把镜片曲率推到不合理的极值,导致加工根本做不出来。
3.4 玻璃选择的隐性约束
很多教程会强调玻璃库怎么加载,却很少提醒你玻璃本身的物理和工艺约束。我看到不少新手用S-BSL7、N-SF6这类普通牌号还好,一旦优化出来要用到非常偏门的玻璃,加工周期长且贵,供应商还不一定愿意做。
实践里我的建议是:
- 优先用Schott、Hoya、CDGM(成都光明)的常用目录,这些牌号供应链稳定。
- 尽量不要用折射率差极大的一对玻璃做胶合,热膨胀失配容易导致胶合面开裂。
- 在权重声明里可以把玻璃模型设为“变量”,但其实你真正要优化的是玻璃的替换组合。可以用Zemax的玻璃替换工具去枚举两三种性价比最高的组合,然后在设计评审时让工艺端确认。
4. 仿真验证的核心环节:像质评价与公差分析闭环
设计优化的终点不是评价函数收敛,而是完成像质验证和公差分析,这一步能筛掉至少一半“看起来不错、实际量产报废”的设计。
4.1 从MTF到能量分布:如何判断一个系统是否合格
单一指标容易骗人。我以为评价一套光学系统,最核心的三个角度是:衍射极限对比下的MTF表现、点列图RMS半径、场曲与畸变曲线。三者结合看,才能判断系统到底行不行。
MTF是最直观也最容易被误解的指标。很多新手把“MTF接近衍射极限”当作目标,但实际上,对于摄影类系统,MTF在奈奎斯特频率处能够达到30%以上即可接受。对于机器视觉测量类系统,要求高一些,可能需要50%以上。更重要的观察点是:低频段MTF是否平滑下降,中高频有没有突然掉坑。突然掉坑往往意味着有某个高级像差没校正干净,而不是简单的“分辨率不够”。
点列图看的是几何光线追迹的弥散斑。如果RMS半径已经小于一个像素尺寸,但仍然觉得成像模糊,那问题大概率不在设计而在装配公差或者环境温度。
场曲和畸变曲线则用于判断像面是否平坦、有没有桶形/枕形失真。做工业测量和文字识别的系统,畸变往往是最先被触碰的指标;做目视观察的系统,场曲比畸变更影响体验。
4.2 公差分析:蒙特卡洛跑完才算设计闭环
光学设计里有句话叫“设计图上的一切完美,都不算数;公差分析通过,才算能落地”。我在这上面栽过跟头,所以重点讲。
公差分析的输入项包括:曲率半径公差、厚度公差、空气间隔公差、元件偏心公差、元件倾斜公差、表面不规则度、折射率与阿贝数公差。每一项取值都对应着加工和装配水平。比如普通注塑镜片厚度公差可以到±0.02mm,精密研磨镜片可以更紧,但成本成倍增长。
用Zemax跑公差分析时,建议这样设置:
- 先给默认公差(通常按中等加工水平),跑一次灵敏度分析,找出对像质影响最大的3个参数。
- 对敏感参数单独收紧公差;
- 对不敏感参数适当放宽,平衡成本;
- 最后跑蒙特卡洛模拟,至少500个样本。
实操心得:蒙特卡洛跑出来看90%(或95%)样本的MTF或者RMS光斑,低于设计指标的话,即使标称设计再完美也不能放行。我曾经有一个离轴反射系统,标称MTF在60lp/mm处有0.65,看起来非常好。结果蒙特卡洛分析出来90%的样本只有0.3。后来查原因,主要是两块反射镜的间距公差和倾斜公差太敏感。最后方案换了支撑结构,在镜筒里加了三个定位槽,把倾斜公差从±0.1°收到±0.03°,才终于达标。这就是公差分析的真正价值。
4.3 软硬件耦合验证:仿真到样机的闭环
光学仿真做到最后一步,不是把Zemax关闭,而是把仿真模型和样机测试数据对照验证。我习惯在拿到首轮样机后,用干涉仪测波前,并拍标准靶图测MTF。如果实测MTF略低于仿真,但趋势一致,那说明公差分布正常,可以接受;如果实测和仿真有量级上的差异,比如仿真0.6实测0.2,那大概率是模型里有些假设错了——比如镜片折射率用了标称值,但实际批次偏差很大;或者装配应力导致面形发生了变形。这时要回到Zemax重新建模,而不是怀疑仪器坏了。
5. 常见问题与排查技巧实录
把我和学生踩过的坑整理成一份速查表,你遇到同样问题时可以直接对号入座。
| 常见问题 | 典型原因 | 排查/解决思路 |
|---|---|---|
| 优化发散,评价函数不降反升 | 系统里存在不合理的大角度折射,光线全反射 | 打开3D图查看光线路径,看是否有光线卡在棱镜或弯月透镜里;适当限制曲率范围 |
| 边缘视场MTF崩溃 | 视场权重分配不当或缺少像散约束 | 加ASTI操作数;检查渐晕设置,是否过早斩掉了边缘光束 |
| F数怎么设都对不上 | 孔径光阑放在镜片后面,导致入瞳直径被反向约束 | 检查光阑面位置,确保光阑面在期望的入瞳附近 |
| 优化半天感觉变化不大 | 变量设置太少,或变量里包含了玻璃、曲率但没有厚度 | 把主要曲率半径和空气间隔都选为变量;把玻璃版本替换也打开 |
| 公差分析90%不过 | 存在敏感元件(倾斜或偏心敏感) | 用灵敏度分析排序,找到敏感参数;修改机械结构去约束它 |
| 光斑RMS很小但MTF很差 | 可能存在系统波前误差集中在某一视场 | 抽出波前图看是否出现低级像差残余,检查光线追迹精度 |
| 温度变化后性能急剧下降 | 玻璃热膨胀和折射率温度系数导致的焦移 | 要做无热化设计,选低热差玻璃组合,或加被动补偿结构 |
| 仿真结果在软件里完美,样机一塌糊涂 | 装配误差、镜片面形误差、材料批次偏差 | 复查公差设定是否够紧,做一次灵敏度分析并和实测数据对表 |
表格里每一条我都在项目里遇到过。给你一个最典型的例子:有个做车载镜头的学生,优化出来的设计在仿真里非常好,打样出来树脂镜片在-20℃环境下直接失焦。原因很简单——他用了单一温度下的折射率数据,完全没做热差分析。后来纳入-20℃、20℃、60℃三个温度场,重新优化玻璃选型和镜筒材料,才算解决。
6. 光学设计仿真的学习路线:从入门到能独立做项目
如果你是硕博士,正在纠结怎么系统学习这套东西,我按自己的经验给一个路线,仅代表个人判断。
第一阶段:软件熟练度(2~4周)。选Zemax OpticStudio作为主线工具,理由是市面上教程最多、企业使用率高、和你同学合作时互相调模型最方便。这个阶段只做一件事:完整跑通5个经典案例。单透镜成像、双胶合消色差透镜、三片式Petzval镜头、离轴抛物面反射镜、激光扩束器。不用追求指标多高,重点是把系统参数、评价函数、优化、公差分析这些完整流程走一遍,形成肌肉记忆。
第二阶段:像差理论补课(4~8周)。很多人跳过了像差理论,直接在软件里乱试。这造成后期遇到复杂系统时完全不知道怎么调结构。我的建议是至少把球差、彗差、像散、场曲、畸变、色差这几类的来源和控制方法搞透。推荐书可以看李林老师的《光学设计手册》和Rudolf Kingslake的《Lens Design Fundamentals》。这个阶段看的时候不用全记,遇到一个现象回去翻一个知识,印象最深。
第三阶段:真实项目锻炼(长期)。光学设计是一个极度依赖项目经验的领域,光靠教程是没有用的。找老师或师兄要一个已经结束的项目,拿到它的需求文档、设计图纸、Zemax文件、测试报告,然后自己从头做一遍,再对比原方案,看差距在哪里。这个过程你会学到教科书里永远不写的trade-off——比如为什么某些镜片一定要用玻璃模压而非研磨,为什么有些系统宁可用三片非球面也不肯用多一片球面。
第四阶段:横向融通。如果你的方向是仿真交叉型的,比如电磁场仿真、结构热仿真和光学仿真联合,那么强烈建议学一学Python的接口。用Zemax的API批量改参数、批量跑公差、自动输出分析报告,这一套技能在企业里非常值钱。学会之后,你可以在全体同学还在手搓镜头数据的时候,用脚本把100组镜头设计的MTF曲线全部跑出来,谁好谁坏一眼看出来——这种优势在求职和科研里都是硬通货。
聊聊我对光学设计仿真趋势的体会
文章写到这已经很长了。最后说点我个人实际干活中的感受吧。
光学设计仿真这几年最让我兴奋的变化,不是某个新版本软件多了什么功能,而是“仿真”这件事从辅助工具变成了驱动决策的核心环节。以前设计师在纸面上定方案,仿真只是验证一下;现在从概念阶段就要用仿真去试错,而且要仿真加工、仿真装配、仿真环境适应性,整个产品生命周期的表现都在建模阶段被预判过一遍。这也意味着,如果你只会拖几个镜片进Zemax,跑两个MTF曲线,那远远不够。真正值钱的能力是:拿到需求能判断方案可不可行、仿真结果敢不敢拍板说能量产、出问题了能在模型里定位到具体元件。
所以给读这篇文章的硕博士一个建议:不要把光学设计仿真当成一门软件课,要把整套流程当作未来做任何光学系统的底层习惯。打开一个软件前想清楚系统指标,优化完一定要跑公差,仿真通过后主动和加工方对工艺参数——这三件事全是电脑工作之外的功夫,却恰恰是决定你从“会操作”到“能负责”的分水岭。
最后分享一个小技巧:遇到任何光学仿真不收敛的棘手问题,先把系统的3D光路图画出来看一眼。多数时候,答案一眼就看出来了——不是哪片镜子放反了,就是哪条光线跑到系统外头了。光学设计的麻烦大多长得差不多,能快速辨别它到底是哪一种,已经比多数人强出一截。