FEATURED · 精选文章

Zemax到Speos的HUD设计迁移:STEP精度验证与避坑指南

发布时间 / 2026/9/18 3:16:57
来源 / 创域科博编辑部
栏目 / 资讯中心
Zemax到Speos的HUD设计迁移:STEP精度验证与避坑指南 Zemax里把HUD光路调到各指标都飘绿之后考验才真正开始。系统级验证要求你把挡风玻璃、仪表台、眼盒乃至整个驾驶舱环境都拉进同一个仿真里看人眼最终看到的画面。这个时候Zemax给不了你完整答案你得去Speos。但两个软件之间的数据交接十有八九会遇到单位错乱、曲面拟合失真、坐标系漂移这些毛病。这篇就围绕“从Zemax到Speos做HUD设计数据迁移”这条线重点讲清楚STEP文件精度验证怎么做以及哪些坑我已经替你踩过了。1. 为什么HUD设计绕不开一次Zemax到Speos的迁移1.1 两套工具的定位本来就不同很多做光学设计的朋友习惯把所有问题都压在一个软件里解决说实话HUD这个产品不行。HUD的本质是一个“人眼视觉系统”PGU发出图像经过两到三次反射镜放大再经过挡风玻璃反射进入驾驶员眼盒。你在Zemax里做的事情是把这条链路上的光学像差控制到合理范围让虚像够清晰、畸变够小、色差够低。Zemax擅长的是这一类“光学级”分析——序列模式算像差非序列模式算杂散光和能量分布。但HUD最终装车之后人眼看到的不只是“虚像清不清晰”这一个物理量还包括“虚像是不是落在正确距离”“眼盒范围内亮度均匀性如何”“不同身高的驾驶者看到的画面有没有裁切”“挡风玻璃曲率波动会不会造成局部畸变”。这些问题的根源已经不是那几个反光镜片的光学参数而是整块挡风玻璃的真实CAD曲面、仪表台遮挡关系、环境光源干扰等等“系统级”因素。Speos强就强在它对CAD场景的处理能力。它能在完整的3D数模上追踪光线支持BSDF光学属性、自由曲面的精细网格表达还能用逆光线追迹快速评估人眼视点下的效果。换句话说Zemax负责“这个HUD光学系统本身行不行”Speos负责“这个HUD装进车里之后行不行”。1.2 迁移不只是一次文件转换从Zemax迁到Speos常见有两种路径把Zemax设计好的反光镜曲面导出成STEP文件再导入Speos在Speos里搭完整的座舱环境做验证。在Zemax里只做全链路的光学仿真把结果输出给Speos做“人眼视觉验证”用的光源和成像面数据。实际项目里两条路都要走而且都离不开“曲面数据在跨软件流转时不失真”这个大前提。Zemax里一个自由曲面反射镜是用多项式系数定义的数学上是精确解析式到了Speos里它必须是一个可被光线追迹引擎处理的CAD实体或者网格表面。从解析式到可控实体的这一步精度全靠导出设置和后续验证兜底。这也就是为什么我会专门花一篇文章写STEP精度验证——这个环节掉链子后面所有Speos结论都不值得信。2. 迁移之前先分清家底哪些数据该走哪些数据不该走2.1 几何数据光学面、机械边界和坐标系Zemax里我们做HUD设计核心光学面通常包括PGU出射面第一反射镜通常是自由曲面镜负责初级像差校正第二反射镜最终放大镜挡风玻璃的内外表面简化模型一般用平板或单曲率面试算迁移的时候真正要带过去的是第二反射镜和挡风玻璃简化模型——但如果只是这样Speos侧根本无法做系统级验证因为你还需要挡风玻璃的完整CAD模型以及它在仪表台中的实际位置关系。所以更准确的做法是光学面反光镜从Zemax导出为STEP或SAT格式挡风玻璃和周围环境模型来自整车或仪表板数模团队提供的CAD数据不依赖Zemax导出在Speos中把两部分放在统一坐标系下装配。这么做有两个原因。第一Zemax里的挡风玻璃是“光学抽象面”没有厚度、没有楔形角、没有边缘翻边无法代表真实产品第二整车数模团队的挡风玻璃STEP是经过结构验证的几何代表实际装车状态。所以不要让Zemax的简化挡风玻璃成为系统级仿真的主角它只适合在早期做设计迭代。2.2 光学属性数据Zemax的表面参数不等于Speos的材质属性这是一个很经典的坑。Zemax里你在表面参数中设置半反半透、增透膜、反射率是为了让光线按预期路径传播Speos里你要给面分配的是“光学属性”例如镜面反射率、透射率、漫反射比例甚至BSDF散射文件。迁移时不要指望STEP文件能把这些属性一起带过去。STEP文件本质上只记录了“几何”例如曲面方程或网格坐标它不包含镀膜、反射率这些光学物理属性。我需要特别提醒Speos里每个光学表面都必须重新指定属性。比如挡风玻璃真实产品是一块带楔角的夹层玻璃内外表面都有反射内部PVB层还有吸收——在Speos里就要做成多层玻璃结构给每一层指定折射率、吸收系数并设置正确的表面光学属性。我看过太多新手拿到STEP文件导入Speos光线一追全穿过去了或者整个模型不反光最后发现就是漏了表面属性这一步。虽然这一步和“STEP精度”没有直接关系但在迁移流程里占的权重非常高所以我建议在做数据转移的同时做一个“属性清单”表把每一个表面的Speos光学属性对应关系提前列好。2.3 光源与探测器数据重新定义而不是搬运Zemax里的光源可能是点光源、扩展光源或者文件光源定义方式是辐射通量加空间分布Speos里的光源则更贴近工程实践通常使用光线文件Rayfile、IES文件或者强度分布表。Zemax里算好的光通量分配到了Speos里最好用测绘数据进行光源重构。探测器也是这样。Zemax的探测器给出辐照度图、强度分布、光线足迹之类的数据但Speos里你做的是“虚拟摄像头”和“模拟人眼接收器”。虚拟摄像头要设置视场角、像素数、光谱响应甚至模拟人眼在不同瞳孔直径下的分辨率。所以在迁移时你不要试图把Zemax的探测器原样搬进Speos而应该根据验证目标眼盒亮度、色度均匀性、虚像畸变重新在Speos里搭接收器。我把这条单独拿出来讲是因为很多工程师在“数据迁移”上钻牛角尖总想把Zemax里每一个面、每一个光源、每一个探测器都一比一复刻到Speos里。实际没必要也不可能。迁移时要分清“哪些是必须保留的光学本质”比如反光镜的面型精度、挡风玻璃的反射特性“哪些只是仿真设置”比如光源网格密度、探测器像素大小——前者要严格保真后者按Speos习惯重构即可。3. STEP文件精度三大风险单位、坐标系、曲面拟合3.1 单位错误一个“0.001”让整个光路消失Zemax内部默认长度单位是毫米角单位是度。绝大多数的HUD设计都是在毫米尺度下完成的一个反射镜口径可能一百多毫米面型矢高差几毫米公差要求微米级。而Speos作为一个通用的光学仿真平台它对CAD数据的解读完全依赖于文件里的“单位声明”。STEP文件有两种常见应用协议AP203和AP214。AP214在单位传递方面做得比AP203更完善走的是“显式单位几何数值”的路子AP203很多时候只记录几何数字单位要按约定推断。有的情况下STEP文件里单位显示为“米”但你的设计数值本身是按毫米填的。导入到Speos之后整个反光镜会变成原来的千分之一大小——一百毫米变成0.1米其实正好是同一尺寸但如果单位颠倒成毫米而数值又大了一千倍光线追迹的结果就会完全荒谬要么光路都是空的要么探测器一片漆黑。我自己的习惯是文件里明确要求“STEP导出时锁定毫米单位并在文件名里加单位后缀”。在Speos导入时也加强制检查稍微花30秒确认零部件包围盒尺寸是否合理就能避免后续几小时的无效追迹。3.2 坐标系漂移你以为的“原点”不是同一个原点Zemax里的坐标系统惯用“全局坐标”来定义每个面的顶点位置和倾斜角。序列模式下你可以在坐标断点面里设置偏心量和倾斜量系统自动计算每一个面的实际空间位置。这就带来一个问题你导出的自由曲面镜在Zemax里是相对于某一个虚拟参考面的位置而不是相对于整车坐标系的绝对位置。到了Speos里你要做的是整车级装配。挡风玻璃是车辆坐标系下的实体它的原点可能在车辆中心线附近而你的反光镜如果按Zemax全局坐标导出来它的原点还停在设计师建模的那个“光学透镜原点”上。两个零件导入同一个Speos场景里反光镜根本不在挡风玻璃的反射路径上。解决思路不复杂把Zemax导出STEP时切换成“全局坐标”确保导出的几何包含所有偏心、倾斜的绝对位移。但这里有个细节——Zemax的全局坐标在序列模式下是从第一个面开始的如果第一个面本身就有偏心或倾斜那么“全局”也并不是整车坐标。在导出之前手工确认一下关键节点的绝对坐标把它和整车数模里的安装点做一次比对这一步省不掉。3.3 曲面拟合误差STEP文件里的“面”已经不精确了STEP文件表达曲面有两种模式精确BRep用NURBS曲面表述自由曲面数学上逼近原曲面网格/小平面用三角面片近似曲面本质上是STL思路。Zemax导出STEP时如果选择的是“CAD面”模式曲面会被转成NURBS如果导出精度设置很粗糙NURBS拟合误差会直接反映在面型上。对于HUD反光镜这样对面型极其敏感的元件拟合误差会导致实像畸变、分辨率下降。我算过一笔账。假设一个自由曲面反射镜的局部斜率误差是α弧度光线经它反射后的角度偏差就是2α。HUD虚拟图像的角分辨率如果要求达到1角分约0.00029弧度那么反光镜的局部斜率误差必须小于0.5角分也就是大约0.000145弧度。再换算到面型高度误差假设这个局部区域的尺寸是10毫米那么高度误差就要控制在约0.0015毫米以内也就是1.5微米。这就意味着STEP文件导出的NURBS曲面拟合容差如果取到了0.01毫米那你已经比要求差了近一个数量级追迹出来的虚像畸变绝对不可信。所以我在Zemax导出STEP时曲面拟合精度一律按“弦高0.001毫米”来控制必要的时候还会单独加密光学面的UV网格。4. STEP文件精度验证的具体操作链4.1 定位基准点对比法这是最直观也是我最先做的一步。在Zemax模型里取多个特征点的绝对坐标比如自由曲面镜的顶点两个反射镜边缘的某个转角点挡风玻璃反射区域的几个角落点把这些点导出来之后再在Speos或CAD工具里对导入的STEP模型测量同名的点位置。如果数值一致且偏差在0.01毫米以内说明坐标系和单位这一关过了。如果偏差很大不要急着调Speos里的装配关系回到原始STEP文件的导出设置重新检查单位与坐标模式。4.2 曲率分布对比法光看点位对得上还不够面型中间区段的曲率变化才是HUD影像质量的关键。你可以在Zemax里用分析功能输出曲面在不同径向位置上的曲率半径然后在CAD工具或Speos的曲面分析功能里对导入的STEP NURBS面提取曲率信息。一个有效的操作是在反射镜的中心、边缘、边缘到中心的中间点各取几个截面对比Zemax理论曲率与STEP模型曲率。如果偏差超过百分之零点几那你的导出精度设置大概率出了问题。我通常接受的范围是曲率半径相对误差小于0.05%。4.3 法线方向检查法反光镜STEP导入到Speos后一定要看表面法线方向。Zemax里表面法线的方向约定和CAD软件可能不同导入后特别容易出现法线朝内的现象。如果法线反了光线在反光镜上的反射行为就完全不对。快速检查方式在Speos的几何显示里打开法线方向标记看看是不是所有光学面的法线都指向入射光线一侧。如果发现局部或者全部反了使用CAD工具的“反转法线”功能修复修复后再进行后续仿真。这个小问题造成的现象很典型——整个HUD画面亮度极高或极低但光线追迹一点报错都没有排查起来却很浪费时间。4.4 关键光学参数反推验证法精度验证做到这个级别实际上已经足够应付大多数项目。但如果你想做得更扎实还有一个终极验证法利用Speos的仿真能力反推光学参数。比如把反射镜STEP模型导入Speos在指定位置放一个点光源用Speos追迹一遍找到焦点位置、焦距值然后把相同条件下Zemax的仿真结果拿出来比较。如果两个结果吻合得极好说明STEP模型的几何精度足够。如果Speos里算出来的焦距跟Zemax差了百分之几那就要回头优化曲面拟合参数了。这个方法的好处是它验证的是“光学行为”而不是单纯的几何偏差。因为从光学工程师的角度看几何误差最终是通过光线偏折来影响成像质量的与其纠结数学曲面偏差不如直接测光学输出。5. 从Zemax到Speos迁移工作流可复动手册5.1 Zemax侧准备导出之前要做的事给一个可以参考的流程在Zemax中整理好模型去掉无关的辅助光源和分析面只保留真正参与成像的光学面。确认单位设置锁定“毫米”。检查全局坐标参考确认所有关键部件的绝对坐标已包含倾斜和偏心。选择导出格式建议STEP AP214因为单位传递更明确。设置曲线/曲面拟合精度弦高0.001毫米角度容差0.01度必要时调高NURBS控制点数量。导出时选择“实体”或“壳体”模式避免导出成散乱曲面片。用CAD工具快速检测打开STEP文件看模型是否完整、有没有缺失面或破洞。5.2 Speos侧导入属性重建是关键Zemax侧的STEP拿到Speos里按下面顺序操作会比较顺导入STEP模型导入选项中强制“毫米”单位。检查包围盒尺寸和Zemax里的实际口径数值比对缩小或放大超过1%就要警惕。检查法线方向修正反法线面。给每一个光学面分配Speos光学属性镜子镜面反射率按光谱曲线设置挡风玻璃多层玻璃结构设置折射率、吸收系数、表面反射率机械表面默认漫反射属性或吸收体。摆放挡风玻璃和座舱环境模型这些模型由整车数模团队提供坐标系统一到车辆坐标系。设置光源用PGU的光线文件或强度分布数据。设置虚拟摄像头对应HUD眼盒位置和视场角。执行光线追迹先跑一遍低精度快速验证确认光路连通后再跑高精度。5.3 黄金基准法每一次迁移都对比同一个案例做迁移验证时我强烈建议你建立一套“黄金基准文件”。具体做法是在Zemax里设计一个标准HUD光学系统各参数完全确定导出STEP导入Speos完成一次完整的精度验证并将所有数据存档。之后每一次做新项目迁移都用这套黄金基准跑一遍相同的导入流程对比新项目与基准项目的导入偏差。这样做的好处是能主动发现环境变化。比如Zemax换了版本、Speos升级了CAD引擎或者STEP导出模块的算法有细微改动这些都可能影响曲面拟合结果。如果有黄金基准在跑一次就能知道版本升级带来的几何偏差有多大而不是等项目仿真结论异常了才回去翻流程。6. 避坑实录迁移过程中最容易“翻车”的几个场景6.1 “丢单位”导致反光镜突然缩小有一回我把HUD反射镜的STEP文件导入Speos怎么追迹都看不到光线落在探测器上排查了半个小时最后用测量工具看包围盒才发现反射镜尺寸只有预期的千分之一。原因是那个STEP文件实际保存的单位是米而我还坚信软件会按毫米识别。这次之后我的所有CAD交换文件都改成在文件名里直接写单位导入后第一件事就是量包围盒。6.2 挡风玻璃只带了内表面还有一次更隐蔽的问题挡风玻璃的STEP文件是从整车数模直接提取的看起来完整但导入Speos后发现光线穿透玻璃后折射方向错得离谱。最后查出来这个STEP文件只包含玻璃的内表面外表面以及PVB层全被裁掉了。挡风玻璃在Speos里必须按“内表面−PVB−外表面”三层结构建模任何一层缺失虚像位置和反射亮度都会算错。6.3 法线反了导致反射率对不上自由曲面镜导入后法线全反Speos仿真结果里镜子变成了“吸光体”。当时我已经给镜面分配了反射率属性但光线追迹就是不反光反而在镜面后面出现了一块特别亮的区域。用几何显示功能看了法线方向才发现问题。反转法线之后结果才和Zemax对得上。这是CAD数据迁移到光学仿真里最常见的问题之一尤其是在CAD软件中做过缝合、裁剪操作的曲面。6.4 网格过稀让虚像出现“毛边”某次做HUD虚像清晰度验证Speos结果里画面边缘总有明显的锯齿感看起来不像是光学像差。排查后发现是STEP导出时用了默认的网格精度自由曲面镜在边缘部分被十几万个粗三角面片拟合而在曲率变化剧烈的区域网格密度根本不够。这把曲面拟合精度从0.001毫米放宽到了0.05毫米结果就是边缘光线抖动。把网格加密、重新导出、导入后虚像边缘立刻干净了。6.5 用错光源单位导致亮度严重失真Speos里用光线文件做光源时如果光线文件里的功率单位跟Speos设置不一致亮度仿真结果会差好几个数量级。这个坑其实不属于STEP迁移但往往是在迁移后做第一轮系统验证时爆发出来。我的建议是第一次对接时先做一个简单的“平板亮度验证”——在一面尺寸已知的朗伯板上投射光源用Speos算照度反推光源功率设置是否正确。6.6 万物不能只靠“目检”最后一条是我最想强调的。STEP文件导入之后光靠肉眼在软件里旋转、缩放看模型是看不出曲面精度问题的。肉眼能分辨的几何偏差通常在毫米量级而HUD光学面型的精度要求是微米量级。所以一定要养成“数据对比”的习惯——对比坐标、对比曲率、对比仿真结果而不是对比屏幕上的画面。这一步偷懒后面所有Speos验证结论的可信度都会被质疑。做了这么多次迁移我自己的体会是Zemax到Speos的路并不长真正花时间的不是操作软件而是“确认数据在传递过程中没有变质”。单位、坐标系、曲面拟合精度这三点是STEP交换永远的三大考点。只要把这三关都守住了Speos侧的光学属性重构反而是一劳永逸的事情。希望这篇能帮你少走几个我走过的弯路。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻