这几年我跟不少做光学方向的硕博士聊天,发现大家绕不开同一个东西:光学设计和仿真。无论是传统镜头成像、车载激光雷达、AR/VR显示,还是这两年很热的超表面、微纳光学,工作流里都离不开Zemax、CODE V、LightTools这类仿真软件。以前仿真在论文里只是辅助手段,现在越来越多的课题和岗位,直接把"会不会做光学设计仿真"当成硬条件。这篇文章我想把我这些年做项目、带学生、看招聘需求积累下来的经验整理出来,从为什么仿真成了趋势,到具体怎么做、怎么避坑,尽量说得实在一点,给正在读书或者刚入行的朋友一些参考。
1. 为什么光学设计仿真正在成为行业的新门槛
1.1 从"试错制造"到"数字先行"的设计范式变化
先说一个最现实的问题:光学系统一旦进入加工阶段,成本和时间压力会非常大。一枚普通球面透镜从设计到打样,单件费用少则几百、多则几千,如果是非球面透镜或者自由曲面反射镜,开模具的费用动辄几万甚至几十万。以前很多团队喜欢"先做出来再看效果",但光学样本做出来之后如果像质不合格,改设计、重新加工、再测试,一个循环就是几周甚至几个月,项目直接被拖垮。
仿真的价值就在这里:把试错的成本从物理世界转移到数字世界。你在软件里建一个模型,可以快速看到光线怎么传播、像差有多大、MTF有没有达到衍射极限,甚至可以模拟镜片装偏、镜片厚度差了0.02毫米会带来什么影响。这些信息在加工之前就能拿到,设计师只需要在电脑上多试几轮,省下的钱和时间是很可观的。我在企业里接触过好几个项目,前期靠仿真把能够发现的问题都杀掉了,真正开模加工时一次通过率明显提升,这就是数字先行带来的好处。
1.2 计算能力与优化算法让仿真从"验证"变成"设计"
很多人对光学设计软件的理解还停留在"画个光路、看个spot图"这种验证工具,但实际上现在主流的Zemax OpticStudio、CODE V等软件早就把优化当成核心能力了。优化是什么意思?就是你告诉软件"我要一个焦距50毫米、F数2.8、视场半角18度的镜头",然后给定镜片材料、玻璃数量、厚度边界条件,软件会在几十个变量组成的多维空间里自动寻找让像质最好的组合。
这套优化算法背后是阻尼最小二乘法、全局优化、锤击法这些东西,本质上是数学上找极值的问题。十几年前受限于CPU算力,一次全局优化可能要跑一晚上,现在一台普通工作站几分钟就能收敛,这就让仿真从"我把设计好的方案验证一遍"变成了"我让算法帮我找到更好的方案"。我自己的感受是,设计阶段的自由度一下子打开了,你可以大胆地尝试非球面、反常设计,反正仿真是个数字游戏,不行就改参数再来。
1.3 下游产业爆发倒逼人才技能升级
还有一个不能忽略的原因是需求端变了。自动驾驶要激光雷达、要车载摄像头,消费电子要AR/VR光学模组,半导体制造要光刻物镜和缺陷检测系统,基因测序、医疗内窥、工业机器视觉全都在抢光学工程师。这些岗位出来之后,几乎都要求在简历里体现"熟悉Zemax/CODE V仿真、会公差分析、有落地项目经验"。
如果你去看这些岗位的JD,会发现单会一项"仿真"早就不是加分项了,而是默认项。因为企业压在光学工程师身上的职责是:拿一套光学指标去设计系统,并在仿真阶段就能证明它能被制造出来。硕士博士在校期间如果只做实验、不会仿真,投这类岗位会非常吃亏。反过来说,那些在Zemax里把公差分析、像质优化、光机热耦合全套流程练熟的人,往往在校招中会明显更有竞争力。
2. 光学设计仿真的核心环节到底在做什么
2.1 从初始结构开始:别指望软件凭空变出镜头
光学设计仿真第一步不是打开软件就点优化,而是要先有一套初始结构。初始结构哪里来?最常用的是从专利库、镜头设计手册、企业历史项目库里找,比如Zemax自带的镜头库、文献里的经典双高斯结构、广角反远距结构、摄远结构等。以定焦成像镜头为例,你先根据焦距、F数、视场等指标去匹配一个结构形式,比如做50mm标头,最稳妥的起点就是双高斯变形;做广角大视场,可能用反远距结构更合适。
很多新手会忽略初始结构的重要性,上来就扔十几个变量让软件自己跑。结果往往是两个星期之后算法还在挣扎,好不容易收敛到一个局部最优,像质还很差。为什么?因为优化本质上是局部搜索,初始点离好的解太远,算法根本没有能力翻山越岭找到全局最优。所以我一直建议:花30%的精力找初始结构,是非常划算的投资。
2.2 光线追迹与像差理论:看懂软件在算什么
仿真软件的核心计算基础是几何光学里的光线追迹,也就是对每一条从物方出发的光线,按照折射定律、反射定律在每一个光学表面逐步计算它的传播方向,最终得到它在像面上的落点。所有像差指标的来源都建立在这套追迹数据上:球差、彗差、像散、场曲、畸变,对应的是不同视场、不同孔径光线落点的偏离模式。
这里有一个很基础但容易被忽视的概念:所有几何像差归根结底是光程差的问题。Zemax里你可以切换到波前图(Wavefront Map)看系统光程差分布,也可以用赛德尔系数表(Seidel Diagram)快速定位是哪一片镜片贡献了主要像差。我的经验是,不要只看MTF或者RMS spot半径这种"综合性指标",要学会拆解。比如某个视场的彗差特别大,你先看赛德尔表,定位到具体表面,再考虑那块镜子是不是曲率、位置、厚度出了问题,这种定位效率比盲目加变量高很多。
2.3 评价函数与操作数:优化命令软件做什么
优化前必须定义评价函数,也就是告诉软件"什么样的结果算是好的"。Zemax里叫Merit Function,你可以选择RMS Spot Radius作为标准,也可以选择RMS Wavefront或者对比MTF。然后通过操作数(Operands)把约束条件加进去,比如控制总长、后焦、畸变小于多少、玻璃最小中心厚度、边缘厚度大于0.5mm等。
这里最容易犯的错误是评价函数给得太宽松。比如你只优化RMS spot,完全不约束畸变,最后可能得到一支中心成像很锐、但画面畸变超过10%的"鱼眼镜头",这在很多成像项目里是致命的。反过来说,约束太多也会让优化找不到解,因为自由度被卡死了。合理做法是分阶段:第一轮只加硬性约束(焦距、总长、厚度边界),让算法先把像质拉到一个可接受的水平;第二轮再慢慢增加畸变、远心度、相对照度等软性指标,逐步逼近最终指标。
2.4 公差分析:仿真和现实之间的桥
很多人在学校做设计仿真时忽略公差分析,觉得把像质优化好就万事大吉了。这恰恰是校园设计和工业设计的最大区别。什么是公差?就是你图纸上标注的每个尺寸、曲率、厚度,在生产加工时都存在误差。镜片曲率半径可能差个好几个环带、厚度可能偏个0.02mm、装调时镜片还可能倾斜、偏心。公差分析要回答的就是:在允许的加工误差范围内,批量生产出来的镜头,能有多少百分比达到你的设计指标?
Zemax里的公差分析流程大致是:定义公差操作数(曲率、厚度、偏心、倾斜、折射率、阿贝数等)→ 设定分布(一般是正态分布,±几个σ)→ 用蒙特卡洛模拟生成几百上千个随机样本 → 统计每个样本的MTF或者RMS,算出良率。这一步做下来,你才知道设计到底能不能落地。我有一个很深的教训:之前做一支工业镜头,纯设计阶段MTF漂亮得不行,结果公差分析发现敏感面太多,良率只有40%,最后只能回头改设计,增加一片透镜来降低敏感性。所以现在我在设计阶段就会同步关注公差敏感性,别等优化完了再去补救。
3. 工具选型:Zemax、CODE V、LightTools到底该怎么选
3.1 三类光学仿真工具的定位差异
先给一个整体认知:光学设计/仿真软件不是哪家一家独大,而是分成明显的阵营,每个软件都有自己的边界。做成像系统设计,业界用得最多的是Ansys Zemax OpticStudio和CODE V,两者的精于侧重点略有不同。做照明系统、导光板、逆光罩、杂散光分析,主流是LightTools或TracePro。做超表面、亚波长结构这类波动光学问题,则必须用Lumerical FDTD、COMSOL这类麦克斯韦求解器,普通光线追迹根本算不了。
我整理了一个表格,大家可以根据自己的方向速查:
| 需求场景 | 推荐工具 | 核心强项 | 学习难度 |
|---|---|---|---|
| 成像镜头设计(手机镜头、车载镜头、内窥镜) | Zemax OpticStudio | 序列追迹、优化、公差分析、多配置切换 | 入门容易,深入较难 |
| 高级成像优化、大型系统优化 | CODE V | 全局优化能力极强、像质评价函数丰富、宏语言 | 偏高,适合系统光学工程师 |
| 照明设计、道路照明、背光模组 | LightTools / TracePro | 非序列追迹、光机结构导入、照度亮度分析 | 中等,建模量大 |
| 杂散光分析、星敏感器、镜头鬼像 | FRED / ASAP | 面散射、颗粒散射建模精细 | 较高 |
| 微纳光学、超表面、波导光栅 | Lumerical FDTD / COMSOL | 严格电磁场求解、S参数、近远场变换 | 高,需要电磁学基础 |
| 光机热联合分析 | Ansys Mechanical + Zemax | 温度场映射到光学面形,热像差评估 | 高 |
3.2 为什么成像领域我会推荐先学生Zemax
如果是刚入门做成像系统设计,我通常的建议是先死磕Zemax,原因有三个。
第一,Zemax的入门门槛在同类软件里相对友好,界面交互清晰,自带例子很多,学习资料也是最多的。第二,它生态完善,很多参考文献里的镜头数据可以直接导入,Zemax的镜头库、玻璃库覆盖了绝大多数常用材料。第三,在求职市场上,几乎90%的光学岗位JD都写了"熟悉Zemax",这是一个通行证,先把Zemax练熟,再学CODE V或其他工具都会轻松很多。
不过这不意味着Zemax什么都能干。如果你做的是照明系统,非要拿Zemax序列模式去追迹一颗颗散射粒子,那效率会很低;这时候LightTools非序列模式的建模能力会更合适。选工具的核心逻辑是匹配你的物理问题,而不是哪家名气大。
3.3 学生授权与学习成本问题
再提一个学生最关心的问题:正版软件授权可不便宜,个人怎么学?
Zemax OpticStudio目前对学生有优惠订阅计划,价格相对商业版已经低很多,不少高校实验室也会购买正版授权放在机房公用。如果你所在的课题组没有,可以考虑用Ansys官网申请免费试用版的时间段集中学习。要注意的是,不管是试用还是订阅,都不建议去用破解版,一方面有版权和合规风险,另一方面破解版可能被植入后门,得不偿失。
如果暂时没有Zemax,也可以用一些开源或者轻量级的方案先培养概念,比如ZeroDerive、Python的rayopt库,或者用MATLAB自己写简单光线追迹。等真正进入项目阶段再切换到成熟工具会比较顺。我这里说的是"先培养概念",实际做项目还是建议用工业级工具,毕竟效率和数据可信度差异很大。
4. 实操记录:一个定焦成像镜头的完整设计仿真流程
4.1 设计指标与初始结构选取
我拿一个实际做过的入门级案例来讲流程:一个焦距16mm、F数2.8、靶面1/1.8英寸、视场角大约60度的定焦监控镜头。
设计起点我选了一个经典的双高斯变形结构,从Zemax镜头库里找到一个相近焦距的大致结构,然后按我的目标焦距进行缩比。缩比很简单,在Zemax里可以用缩放功能,把所有曲率半径和厚度等比乘以焦距比值。这里有个注意点:缩放之后折射率没有变,但像差贡献的阿贝数没有缩放问题,所以结构大致可用,但优化还是要重新跑。
这一步需要一定的判断力:比如镜头库里的结构视场角可能不够60度,直接缩放过去边缘像质会很差。我的处理方式是先把视场放宽到61~62度去优化,给后续设计留一点余量,而不是死盯着60度。
4.2 设置系统、波长、视场与变量
在Zemax里进入系统选项,设置波长,我习惯用可见光F、d、C三色光(486nm、587nm、656nm),权重分别为1、1、1;如果是近红外的监控场景,会按850nm附近设置单色光。视场用角度方式,设置0视场、0.5视场、0.7视场、1.0视场四个取样点,并在优化时对边缘视场多给一些权重,因为实际镜头边缘像质下降是普遍问题。
变量的选取很有讲究:初期优化只把曲率半径设为变量,厚度暂时固定或加宽边界,等光焦度分配得差不多了,再把厚度、空气间隔放开。我会给每个变量设置合理边界,比如中心厚度下限0.3mm以上,边缘厚度不低于0.3mm,避免优化出很难加工的"比纸还薄"的镜片。空气间隔也不要乱放,尤其要控制后焦不要随便变成一个奇怪的值,比如强迫后焦大于8mm,方便后面机械结构放滤光片和感光芯片。
4.3 优化策略与常见指标变化
第一轮优化用RMS Spot Radius作为默认评价函数,打开锤形优化(Hammer),大概跑几百代后,观察spot图和MTF的变化。这一步通常能把RMS spot从几毫米拉到一个很小的量级,但别急着高兴,因为此时可能牺牲了畸变,或者某片镜片厚度被压到极限。
第二轮我会把畸变控制加到自动评价函数里,用操作数DIMX限制最大畸变在3%以内,同时加入焦距控制操作数EFFL锁定到16mm。这时候再跑优化,结果会比第一轮"现实"很多。最终优化完,大概率能得到一个MTF在奈奎斯特频率50线对/mm处超过0.3的设计,这对入门级监控镜头已经够用了。
这里有一个我踩过的坑:优化中途如果发现某个视场的像质特别差,不要盲目加权重,先去看看是不是存在严重离焦。很多新手在优化时会盯着某个视场的MTF死命压,结果其他视场烂掉。正确做法是先做一个简单离焦补偿,即给系统加一个像面位移变量,让像面位置自己去适应,再把视场权重调均匀,很多时候一个变量就能解决"局部视场拉胯"的问题。
4.4 公差分析和良率评估
设计定型后进入公差分析。我习惯用Zemax默认的灵敏度+蒙特卡洛组合流程。公差参数设置大概给一个参考:
| 公差项 | 典型量级 |
|---|---|
| 曲率半径 | 3~5个光圈 |
| 厚度 | 0.01~0.02 mm |
| 透镜偏心 | 0.01~0.02 mm |
| 透镜倾斜 | 0.01~0.02 mm(对应约2~4角分) |
| 折射率 | 0.001 |
| 阿贝数 | 0.5% |
蒙特卡洛跑500个样本,分析在40线对/mm处MTF的良率。如果良率能在90%以上,说明设计余量足够。如果良率只有60%,就需要返回去查看哪个公差项贡献最大。Zemax会输出公差灵敏度列表,最敏感的那几个参数才是关键,针对它们你可以在图纸上标得更严,其他项保持常规精度即可,这样成本可控,也能保证良率。
4.5 从仿真数据到设计输出
仿真到了这一步还没完。最后要把设计结果转化成能交给机械工程师的东西:出结构展开图、标注每片镜片的曲率半径、厚度、材料牌号、镀膜要求,并明确光学面面形公差。这一步很多人不重视,但我见过太多设计做得漂亮、图纸一团糟的结果。曲率半径参数、坐标位置、镜片间隔、光路展开图,以及后焦定义,这些必须写清楚。机械工程师才能正确设计镜筒和隔圈。
5. 光学仿真中常见的坑与排查思路
5.1 优化发散、不收敛怎么办
这是新手问得最多的问题。Zemax报错"无法收敛"或者结果明显荒谬,常见原因有三种:一是变量边界设得太宽,导致系统跑到一个物理上不合理的解(比如玻璃厚度变成负的);二是初始结构太差,优化算法只能在局部打转;三是评价函数里加了互相矛盾的约束,比如既要焦距很短,又要后焦很长,同时还要片数少,这三个维度的物理约束完全不相容。
我的排查顺序是:先检查约束是否合理,删掉一部分"锦上添花"的软性指标;再检查初始结构,实在不行换一种经典结构类型重来;最后是逐步增加变量,先曲率、后厚度,不要一次性把20个变量全部放开。如果你用了锤击优化还是不行,我建议冷静一下,去查一下类似规格的专利,看别人用了什么结构,而不是盲目和算法较劲。
5.2 物理光学仿真内存暴涨、跑不动
做超表面或波导仿真时,经常会遇到FDTD或COMSOL算到一半内存不够的情况。根本原因是网格尺寸和结构尺寸差距太大。金属纳米结构可能是几十纳米特征,而计算区域要覆盖微米级周期,网格数量指数级上升。
常用对策是利用周期结构的对称性,只算一个最小单元,再施加周期性边界条件。超表面这类周期性结构通常可以大幅缩小计算域。另一个手段是时域和频域求解器的选择:结构品质因子很高、谐振很强时,FDTD需要跑很长的时域信号才能收敛,这时候考虑用频域求解器或者DCIM来配合,往往能明显降低内存需求。还可以降低网格精度用粗跑来试方向,确认物理趋势对,再加密网格做最终确认,这个思路能节省大量时间。
5.3 公差分析结果差到离谱
如果你做了公差分析发现良率很低,先别急着认为是设计失败。首先要检查是不是某个公差项设置过严或者默认分布范围给得异常,比如折射率公差设成了0.01,那相当于允许材料波动非常剧烈,任何系统都扛不住。其次要检查评价标准选得是否合理,拿MTF在奈奎斯特频率的高指标做标准,和拿中心视场低分辨率做标准,良率结果是完全不同的。
排除上述问题之后,如果良率确实低,那就是真的设计敏感性高。这时候可以在设计里引入补偿器,比如调整后焦(通过调节镜筒压圈或调焦机构)来补偿部分误差,这在很多镜头设计里是标准操作。加了补偿器之后,良率往往能从40%拉到90%以上。这类让步设计是在做系统级权衡,不是简单的投机取巧。
5.4 仿真和实际加工结果对不上
最后说一个"出了实验室才懂得"的教训:仿真和实测对不上,不要第一时间怀疑软件算法,先怀疑你输入模型的现实还原度。比如你在Zemax里用的玻璃折射率是ideal值,但实际批次材料的折射率可能有偏差;你的镀膜模型假设了某个平均反射率,但实际镀膜的品控波动会影响透过率。更典型的,是机械装调带来的应力导致镜片面形变化,这在仿真里从来没建模过。
我的做法是建立"实测-仿真迭代校正"的闭环:拿到第一轮实测MTF或传函数据后,通过调节面形误差模型、折射率偏移量,反推最能解释实测数据的仿真输入;然后把标定好的模型用于后续设计,这样后续迭代会越跑越准。经验值来看,一个设计模型经过两三轮实测对标之后,误差能控制在5%以内,这个时候仿真的可信度才真正建立起来。
6. 给硕博士的光学设计仿真学习路线建议
6.1 理论不能丢,仿真只是加速器
最后给还在学校里挣扎的朋友们一点路线建议。仿真软件只是工具,真正决定你设计水平上限的,是几何光学和像差理论那套底子。赛德尔像差、波前像差、点列图和MTF的关系、孔径光阑和视场光阑的作用、像差平衡是什么意思,这些东西在教科书里可能很枯燥,但实际设计里天天在用。如果理论基础薄弱,你连评价函数里加哪些操作数、怎么解释公差分析结果都会抓瞎。
所以我的建议很俗但很真实:第一学期扎扎实实把应用光学和工程光学啃下来,把泽尼克多项式、赛德尔系数、衍射MTF的计算过程搞明白,再去碰软件。你会发现软件里的每一个按钮,背后都是你学过的数学和物理,这个转化过程才是真正的能力提升。
6.2 项目驱动,别光刷教程
第二个建议是抛开"教程刷完就懂"的幻想,光学设计这个技能必须靠项目驱动来练。我见过不少人把Zemax入门视频从头到尾看了一遍,但让他独立设计一支镜头时,连初始结构怎么选都发懵。
正确的练法是我前面写的案例这种流程完整走一遍:设定指标→选结构→优化→公差分析→画图纸→评估可制造性。哪怕指标很简单,整套流程走下来,你对设计闭环的理解会和只看教程完全不同。面向硕博士的方向,你可以找一个和课题结合的镜头设计,比如做显微成像系统是变倍物镜和筒镜的匹配,做光谱仪是光栅和离轴抛物面的光路排布,这些都能和具体课题结合。
6.3 关注可制造性,建立工程思维
在学校里做设计,很多人没有成本概念。比如一个设计用了两片非球面,加工难度和成本会显著上升;再比如你非要选一个非常小众的高折射率玻璃牌号,采购周期可能长达两三个月,项目进度直接被拖死。这些"课本外"的知识,恰恰是企业最看重的能力。
我的建议是,在读期间有条件的话,去实验室的加工车间或者合作企业看一看实际加工、检测和装调的流程,亲眼看看镜片是怎么磨出来、怎么定心的、怎么装进镜筒的。你亲眼见过偏心怎么影响像质、压圈应力怎么让面形变差之后,回来再做仿真,你的设计思维就会完全不同。这份"工程感"是单纯坐在电脑前仿真学不到的,但它恰恰是仿真能不能落地成为产品的分水岭。
6.4 简历上的仿真项目该怎么写
最后聊一个现实的话题:找工作时简历怎么写。大多数学生写"熟练掌握Zemax软件",这个描述基本等于没写。真正有区分度的是写清楚你完成过一个什么设计,指标是什么,你怎么选初始结构的,优化后用公差分析验证良率达到多少,有没有加工装调、实测对比。比如可以写"独立设计16mm/F2.8定焦镜头,全视场MTF>0.4@40lp/mm,公差分析良率95%,已完成样机验证",这种描述比任何形容词都有说服力。
如果在校期间没有机会接触完整的项目,也完全可以自己定义一个小规模的个人设计任务,比如设计一支手机外挂微距镜头、一组激光扩束镜、一套车载摄像头镜头。做完之后把设计文档、仿真数据、公差分析结果整理成一个作品集,面试时直接展示过程和结果,远比只说"我会用软件"更能让人相信你的能力。
我个人做了几年光学设计和仿真,回头看最深的感触是:这个方向门槛高,天花板也非常高,但"会操作软件"和"会做设计"之间有一条很宽的鸿沟。仿真不是目的,它是帮你在虚拟世界里快速验证物理想法的手段。真正让你跑赢别人的,是你对像差理论的直觉、对制造误差的敬畏、对系统指标的判断力,这些素质需要大量的实际设计来积累。光学仿真成为趋势,不是因为软件变智能了,而是因为整个行业对光学系统"一次做对"的要求越来越高了。希望这篇文章能给还在路上的硕博士们一些方向感,少走一点我当年走过的弯路。