评价函数编辑器:布局、操作、快捷键与基本设置
评价函数编辑器,说白了就是 Zemax 里最核心的「调优面板」。你设计一个镜头,最终能不能用,全看这里面的数字好不好看。我刚开始学的时候,打开这个窗口直接懵了——满屏的数字、按钮、下拉菜单,完全不知道从哪下手。
今天我们就把它拆开揉碎,一个一个讲清楚。
编辑器的布局:四个区域,各司其职
打开 Zemax,点菜单栏的 Editors → Merit Function Editor,或者直接按快捷键 F6。你会看到这样一个窗口:
整个编辑器分成四大块:
- 菜单栏:文件操作、编辑、工具、视图、帮助。说实话,日常用得不多,大部分功能都有快捷键。
- 工具栏:打开/保存评价函数、插入/删除操作数、更新评价函数、启动优化。这些按钮我天天点。
- 操作数列表:这是主战场。每一行就是一个操作数,Type 列写操作数名字(比如 SPHA、EFFL),后面跟着各种参数、目标值、权重、当前值、贡献率。
- 信息面板:显示当前选中操作数的详细信息。我一般用它快速查看某个操作数的具体设置。
操作数的结构:一行就是一个约束
每一行操作数,本质上就是一条「约束条件」。你告诉 Zemax:「我要控制某个指标,目标是多少,权重给多大。」
我们拿一行典型的操作数来拆解:
| 列名 | 含义 | 举例 |
|---|---|---|
| Type | 操作数类型,即你要控制什么 | EFFL(有效焦距) |
| Int1 | 第一个整数参数,通常是面编号 | 1(从第1面开始) |
| Int2 | 第二个整数参数,通常是结束面编号 | 3(到第3面结束) |
| Hx, Hy | 归一化视场坐标 | 0, 0(中心视场) |
| Px, Py | 归一化光瞳坐标 | 0, 0(中心光瞳) |
| Target | 目标值,你希望这个指标达到多少 | 100(mm) |
| Weight | 权重,这个约束有多重要 | 1 |
| Value | 当前值,Zemax 算出来的实际值 | 99.8 |
| % Contrib | 贡献率,这个操作数占总评价函数的百分比 | 12.3% |
关键理解: 评价函数值 = Σ( Weight × (Value - Target)² )。Zemax 优化就是不断调整变量,让这个总和最小化。
说白了,每个操作数就是一个「误差项」,权重越大,优化器越优先满足它。
常用快捷键:效率翻倍的关键
我刚开始用的时候,全靠鼠标点。后来老工程师看我一眼,说:「你这一下午的活,我半小时干完。」然后给我列了几个快捷键——
| 快捷键 | 功能 | 我的备注 |
|---|---|---|
| F6 | 打开/关闭评价函数编辑器 | 最常用的,没有之一 |
| Ctrl + Insert | 在当前行上方插入一行 | 比右键菜单快三倍 |
| Ctrl + Delete | 删除当前行 | 注意没有确认提示,删了就没了 |
| Ctrl + Shift + U | 更新评价函数 | 改完参数必须按一下,不然值不刷新 |
| Ctrl + E | 打开优化对话框 | 从编辑器直接跳优化,流程很顺 |
| Ctrl + C / Ctrl + V | 复制/粘贴操作数行 | 批量建约束时救命用的 |
| Shift + 方向键 | 多行选中 | 配合复制粘贴,效率翻倍 |
我曾经踩过的坑: 有一次我复制了一整段操作数,粘贴后没注意看,结果把视场坐标全搞乱了。优化了半天,评价函数死活下不去。后来发现 Hy 列全变成了 1,所有操作数都在算边缘视场。
所以复制粘贴后,一定记得检查 Hx、Hy、Px、Py 这几列。
基本设置:让编辑器更顺手
评价函数编辑器有几个设置项,我建议你一开始就调好:
- 显示小数位数:Tools → Options → Merit Function,把 Value 和 Target 的小数位数改成 6 位。默认 4 位有时候不够用,尤其是公差分析时。
- 自动更新:在工具栏上有个「Auto Update」按钮,点一下让它亮起来。这样你改完任何参数,评价函数自动重新计算。省得老按 Ctrl + Shift + U。
- 贡献率排序:点击 % Contrib 列头,可以按贡献率从大到小排序。这个功能我几乎每次优化都要用——一眼就能看出哪个像差是「罪魁祸首」。
- 显示/隐藏列:右键点击列头,可以勾选显示哪些列。我个人习惯把 Hx、Hy、Px、Py 都显示出来,因为经常需要检查视场和光瞳设置。
一个小技巧: 如果你觉得某一行操作数暂时不想用,但又不想删,可以把它的 Weight 改成 0。这样它不参与评价函数计算,但保留所有设置。需要时改回权重就行,不用重新建。
操作数的类型:三大类,覆盖所有需求
Zemax 的操作数有几百种,但别怕。我把它分成三大类,你记住这个框架,用的时候就知道去哪找了:
| 类别 | 典型操作数 | 用途 |
|---|---|---|
| 像差类 | SPHA, COMA, ASTI, FCUR, DIST, CLA | 直接控制各种像差的大小 |
| 基本参数类 | EFFL, TOTR, CTGT, OPDX, OPDY | 控制焦距、总长、中心厚度、光程差 |
| 边界约束类 | MNCG, MXCG, MNCA, MXCA, MNEG, MXEG | 控制镜片中心/边缘厚度、空气间隔的上下限 |
刚开始做设计,你只需要掌握前两类。边界约束类等你开始做「可加工性优化」时再深入学。
一个简单的操作流程
说了这么多,我们走一遍实际流程。假设你要控制一个镜头的有效焦距为 100mm:
- 按 F6 打开评价函数编辑器。
- 按 Ctrl + Insert 插入一行空操作数。
- 在 Type 列输入
EFFL,回车。 - Int1 填 1(起始面),Int2 填 3(结束面,假设镜头有 3 个面)。
- Target 填 100,Weight 填 1。
- 按 Ctrl + Shift + U 更新,看 Value 列是不是接近 100。
Type Int1 Int2 Hx Hy Px Py Target Weight Value
EFFL 1 3 0 0 0 0 100 1 99.8
就这么简单。一个焦距约束就建好了。
核心要点回顾:
- 评价函数编辑器 = 操作数列表 + 信息面板 + 工具栏
- 每个操作数 = 一条约束,包含类型、参数、目标、权重
- 快捷键 F6、Ctrl + Insert、Ctrl + Shift + U 必须记住
- 贡献率排序是诊断问题的第一工具
- 权重设为 0 可以临时禁用操作数,不用删