
做光学设计的同行应该都有这种感觉LightTools里做非球面、自由曲面靠自带的建模工具就能搞定但一到菲涅尔透镜就头疼。尤其是需要手动创建的时候齿高、环距、脱模角、圆角这些参数一旦处理不好lighttools里看起来挺正常一追迹就出现杂散光、效率上不去甚至直接报错。我过去几年里用LightTools做过不少菲涅尔结构从用于投影照明的小尺寸透镜到大口径太阳光模拟器里的聚光镜都碰过。刚开始几次也是反复折腾建模建到一半发现齿形不对只能推倒重来。后来慢慢摸索出一套比较顺的手动建模流程这里把其中最核心的5个技巧整理出来配合我在实际项目中踩过的坑和验证过的参数给刚接触菲涅尔透镜建模的朋友做个参考。如果你正打算在LightTools里手动建立菲涅尔透镜模型这篇文章应该能帮你省下不少试错时间。不管你是做LED准直、投影系统、太阳能聚光还是做VR光学里的菲涅尔结构这套方法都是通用的。1. 内容整体设计与思路拆解1.1 为什么需要手动创建菲涅尔透镜而不是直接调用库文件很多人拿到设计需求的第一反应是去LightTools的库里面翻现成的菲涅尔透镜模型。软件本身确实提供了一些透镜库网上也能找到lighttools下载附带的标准库资源。但做过实际项目就会明白库文件里的菲涅尔透镜往往是通用规格齿形参数、材料折射率、口径大小都跟你手头的设计对不上。投影照明里的菲涅尔透镜要求齿高控制在几十微米级别太阳能聚光用的可能要求毫米级齿高这两种工况下透镜的衍射损耗、散射特性完全不一样。另一个问题是库里的模型往往是理想化的齿顶尖角、齿根圆角这些细节没有体现出来。而恰恰是这些细节决定了你的透镜在真实加工出来之后是什么表现。LightTools虽然能做公差分析但你得先有一个符合真实加工形态的模型公差分析才有意义。所以就我个人的经验做菲涅尔透镜设计手动建模不是一个可选项而是必经之路。你把齿形控制在自己手里后面做参数扫描、优化、公差分析才谈得上。1.2 手动建模的整体思路不是画一个个齿而是先生成基体再切出齿形新手最容易犯的错是试图一个个画出每个齿的轮廓然后拉伸成环带再一个个拼接起来。理论上可以但效率极低而且齿与齿之间会有微小的间隙或者重叠一旦出现追迹时光线会在这些缝隙处产生非预期的反射。我用的思路是反过来的先做一个完整的平凸或平凹基体然后用环形齿面去切割基体表面。这个思路跟机械加工里“用车刀车出螺纹”的道理很像——你不是去把每个螺纹牙拼出来而是先在光轴上放一根棒料再用刀具切出牙形。在LightTools里这样做的好处是基体天然是连续的齿间不会产生物理缝隙同时你只需要定义一条齿形轮廓曲线然后做旋转阵列就能覆盖整个口径。1.3 方案选型旋转体与线性阵列两种拓扑结构的选择菲涅尔透镜有旋转对称和线性两种基本拓扑结构。旋转对称的用于点光源准直和聚光线性结构的用于条形光源或者需要一维准直的场合。在LightTools里旋转对称结构用环绕光轴的环形齿带组成建模时我倾向于用Revolved Surface来做基体再用环形面去切线性结构则是把相同的齿形轮廓沿一个方向拉伸出棱柱条再用阵列铺满整个口径。两者的核心流程一致只是在最后“铺满”这一步操作上有所区别。后面我会详细讲两种结构具体怎么操作。但无论哪种都要落到一个核心问题上齿形参数的确定。2. 核心细节解析与实操要点2.1 技巧一先用数学公式确定齿高和环距而不是在软件里瞎试我在最初的几次建模中拿到一个菲涅尔透镜的设计需求直接就进LightTools开始画结果就是反复改参数、反复重建非常浪费时间。后来我养成了一个习惯任何一个菲涅尔透镜动鼠标之前先用纸笔把齿形算出来。核心公式其实不复杂。对于一个旋转对称的菲涅尔透镜每个环带等效于一个微型棱镜棱镜的顶角决定了光线偏折的方向。设透镜材料折射率为n光线入射角为θ1出射角为θ2那么每个环带的斜面角α满足以下关系n * sin(α) sin(α θ2 - θ1)实际计算中如果你做的是准直系统光源位于焦点位置那么θ1就是齿位到焦点的连线与光轴的夹角θ2是出射光与光轴的夹角一般设计为0即平行光出射。这时斜齿面角α可以直接通过反正切函数求出。举个例子假设透镜口径为100mm焦距为100mm材料折射率为1.49PMMA的典型值。在半径为25mm处的环带光源到该点的入射角θ1 arctan(25/100) ≈ 14.04°。代入折射定律出射角θ2 0时tan(α) n * sin(θ1) / (n * cos(θ1) - 1)带入数值α ≈ 22.08°。这个角度就是该环带齿面的倾斜角。有了斜面角α之后如果你选定环距p相邻环带之间的径向距离齿高h就可以算出来h p * tan(α)。例如环距取0.5mm齿高就是0.5 * tan(22.08°) ≈ 0.203mm。我一般会在Excel里做好计算模板把口径按环距分成几十个环带逐个算出每个环带的斜面角和齿高然后再去LightTools里建模。这样你有了一组精确的目标值建模时只需要按照计算值建模即可不用瞎试。2.2 技巧二用“一段齿形轮廓旋转阵列”代替逐齿建模这个技巧是我觉得效率提升最大的一个。明白了齿形分布规律之后你不需要为每一个齿单独建模只需要画出单个齿的截面轮廓然后用阵列工具铺满整个口径。具体来说在LightTools中我常用的方法是在XY平面或XZ平面视你的光轴朝向而定上绘制一个齿的截面轮廓包括齿顶面、齿斜面、齿根面三段。这个轮廓必须是封闭多边形且齿顶和齿根要留出一点平面段模拟真实加工中刀具圆角过不去的残留平台。画好单个齿形之后用阵列工具Pattern沿着径向复制。这里有个关键细节如果环距是等距的直接用线性阵列即可但大多数菲涅尔透镜的齿高是随半径变化的也就是每个环带的斜面角都不同这时候就需要分成多个批次来阵列每批对应一个斜面角或者使用渐变阵列来过渡。实际操作中我更推荐的做法是先按2.1节的方法在Excel中算出每个环带的齿高和斜面角然后在LightTools中逐个环带建立旋转轮廓再合并成一个整体。这样做虽然前期计算量大一点但后期不用反复调整而且每个环带的尺寸都在设计值上加工出来不会出问题。2.3 技巧三齿顶尖角和齿根圆角必须“做出来”不要用理想尖角这一点是很多LightTools教程不会讲的但我认为是非常重要的实操经验。理想化的菲涅尔齿形是带尖角的三角形截面追迹时效率很高但实际加工中无论是车削还是注塑齿尖都不可能做成绝对尖锐一定会有圆角。如果你建模时用了理想尖角那么在LightTools里追迹的光线会全部按设计路径偏折效率看起来会很高。但实际加工出来的透镜跟模型对不上实测效率远低于仿真值。这是因为齿尖圆角处会产生杂散光导致部分能量偏离预定方向。我的做法是在建模阶段就预留圆角。在LightTools里绘制齿形轮廓的时候用圆弧过渡齿顶和齿根圆角半径一般取齿高的10%~20%。如果你做的是注塑件圆角可以更保守一点。这样仿真出来的结果虽然效率略低于理想模型但跟实测结果非常接近更有参考价值。我在一个LED准直项目中对比过理想尖角模型和带R0.02mm圆角的模型两者的仿真效率相差大约6个百分点。而实际加工件测出来的效率跟带圆角的模型误差只有1%左右跟理想模型的误差却有5%以上。所以到底用哪种模型更靠谱一目了然。2.4 技巧四用布尔运算切割生成“真实”齿面前面提到我的建模思路是先生成基体再用齿面去切。这里说的“用齿面去切”在LightTools里的具体操作就是布尔运算。我通常这样做先生成一个圆柱体或平凸透镜作为基体然后在基体表面位置上生成一系列环形齿状实体用旋转体或阵列生成最后用布尔减运算把齿状实体从基体中减去剩下的就是带有齿形的菲涅尔表面。这里要注意的是布尔运算前一定要做好备份。LightTools的布尔运算有时会产生非流形几何Non-manifold Geometry一旦出现后面追迹时会报错或者出现异常的漏光现象。我的习惯是每做一次布尔运算就另存一个版本出了问题时好回退。另外一个细节是布尔运算之后齿面之间的过渡处可能会生成微小的碎面。在追迹之前要检查一下是否有破碎面如果有需要用清理几何的工具处理一下或者直接重新生成不要让碎面残留。2.5 技巧五在透镜表面属性里同时设置光学属性与机械属性这一步看起来简单但很容易被忽略。费了大劲把菲涅尔透镜的几何模型建好了结果设置表面属性时只设了透射率忘了设置表面的粗糙度和镀膜属性导致仿真结果跟实际相差很大。在LightTools里表面属性Surface Properties可以同时设置光学和机械两方面的信息。光学方面你需要设置透射率、反射率、吸收率而且要注意设置波长的属性因为菲涅尔透镜是有色散的不同波长的透过率会有差别。机械方面则需要设置表面的粗糙度参数这直接影响追迹时的散射行为。我在一个红外聚光项目中因为没设置表面粗糙度仿真出来的焦斑能量集中度非常高但实测的打在探测器上的能量分布明显发散。后来查了半天才发现是表面属性里没有给透镜表面加粗糙度参数。加了一个RMS为20nm的粗糙度之后仿真和实测就对上了。所以建模做完之后一定要养成检查表面属性的习惯。在LightTools里用Surface Properties检查每一个透镜表面的属性设置确认透射率、反射率、粗糙度都设置正确再进行追迹。这一步虽然简单但能避免很多后期的问题。3. 实操过程与核心环节实现3.1 实操准备单位设置与材料库确认动手建模之前先把单位系统确认清楚。我踩过一次坑LightTools默认单位是毫米用一个老项目的模型改尺寸时没注意单位设置结果导入的模型整体大了25.4倍光路全乱了。建议在开始任何新模型之前点击Units确认长度单位是毫米、角度单位是度。这会影响到后面做阵列时的间距、齿高的数值输入必须提前统一。材料方面LightTools自带材料库里有常用的光学塑料比如PMMA、PC、OKP4等。如果你用的是PMMA折射率一般取1.4913在587.56nm的d光下如果做红外透镜可能要用硅或锗需要手动导入材料参数。材料库没有的材料可以通过自定义材料的方式添加把折射率、阿贝数、透过率等参数填进去。注意折射率要填准尤其是多波长仿真时一定要把不同波长的折射率数据填对否则仿真出来的色散关系就是错的。3.2 第一步绘制齿形截面轮廓打开LightTools在默认的正视图Front View下新建一个草图。在草图里绘制齿形的截面轮廓一条水平齿根线、一条斜齿面线、一条水平齿顶线然后封闭成一个多边形。绘制时需要注意几个细节齿根线不要画成从原点开始而是从距离光轴一定半径的位置开始这样阵列的时候才不会在中心产生重叠。齿面斜线通过旋转或角度约束来精确控制不要靠鼠标拖拽否则角度稍有偏差最终透镜光学性能就会受影响。最后用标注工具标出齿高和齿距确认跟自己计算的一致性。如果你在2.1节算好了一系列齿高这一步可能需要绘制多个不同角度的齿形分别用于不同半径区段。3.3 第二步把截面轮廓旋转成实体草图绘制完成后退出草图使用旋转体功能让截面绕光轴旋转一周。旋转的角度设为360度获得一个完整的环形齿状实体。操作上需要注意旋转轴必须是光轴而不是草图的默认坐标轴。如果不小心选错了生成的就是一个形状奇怪的环从侧剖面看还是齿形但从轴向看就偏了。检查方法很简单旋转之后用剖切显示看一眼确认齿形轮廓在XY平面内的位置没跑偏。这一条环形齿带就是你的第一个菲涅尔环带。3.4 第三步阵列生成完整齿面单个环带生成之后用阵列功能复制出所有环带。这里有两种做法取决于你的齿形是否一致如果所有环带的齿形角度一样这种情况一般出现在做线性菲涅尔透镜的时候直接用线性阵列指定阵列数量和间距即可。如果在旋转对称菲涅尔透镜中每个环带的斜面角是逐步变化的就不能用一个阵列命令搞定。你需要绘制多个不同齿形截面的环带把每个环带旋转成实体然后按照计算的径向位置逐一放置。我初学的时候图省事曾经试图用一个倾斜角度的齿形阵列覆盖整个口径结果仿真出来近轴区域和边缘区域的光线传播方向跟设计值差了很多。原因是边缘环带需要更大的偏折角而你用一个固定齿形角去套边缘光线自然偏折不足。安排好不同环带的径向位置和角度之后把它们沿光轴方向对齐就得到了一个完整的菲涅尔齿面组。3.5 第四步基体生成与布尔减运算接下来生成透镜基体。设计中的菲涅尔透镜一面可以是平面另一面是菲涅尔齿面。你需要先生成一个圆柱体或者一面是球面/非球面、一面是平面的基体。基体尺寸要稍微大于齿面的最大口径避免在布尔运算时出现边缘缺料的问题。如果你设计的透镜带有安装法兰边基体还要额外建出法兰环。然后是布尔减运算用前面生成的完整齿面组去减基体得到的就是一面光滑、一面带有齿形微结构的菲涅尔透镜实体。这里有一个我自己遇到过的坑齿面组和基体之间如果存在微小的间隙布尔运算后会出现残留薄片。这些薄片肉眼可能看不出来但追迹时会突然出现异常的散射光线让人排查很久。建议在布尔运算之前用几何检查工具确认齿面组和基体接触面的贴合情况把潜在麻烦扼杀在摇篮里。3.6 第五步设置光学属性并开始追迹布尔运算完成后给透镜实体赋予材料PMMA或PC给两个光学表面赋予表面属性也就是我之前强调的透射率、反射率、粗糙度。如果你还需要加增透膜可以在表面属性里设置膜层参数。设置完之后建议先做一次少量光线追迹比如只追100根光线看看光路大致走向是否合理。如果出现异常光线或者效率明显偏低先不要急着调参用光线路径分析检查是哪一部分出了问题。确认光路正常后再加大光线数做正式追迹比如100万根得到照度分布和效率。3.7 关键参数记录表格我的常规检查项在正式追迹之前我会用一张检查表把关键参数过一遍这里分享给你检查项常见值/建议值备注长度单位毫米mm不一致会导致模型尺寸异常材料折射率PMMA1.4913 d光多波长仿真需逐波长设定齿高与环距比0.2~0.5之间太大会导致脱模困难太小会导致衍射效率下降齿顶圆角齿高的10%~20%过小仿真值过于理想过大效率下降表面粗糙度RMS 10~50nm对红外光学影响尤其明显追迹光线数100万过少会导致照度分布噪声大这张表我一般贴在工位旁边每次做新透镜之前都看一眼。上面的数值不一定适合所有场景但作为起步参考值够用了。4. 常见问题与排查技巧实录4.1 追迹效率异常低先查齿顶是否“穿模”有次我在做一个大口径菲涅尔透镜仿真效率只有设计值的60%排查了很久。后来用剖面视图仔细检查齿形发现相邻两个环带在径向出现了重叠重叠区域在布尔运算之后产生了一个很窄的残留薄片薄片位置的光线发生了全反射能量直接损失掉。解决办法是在做阵列展开时给每个环带径向宽度上留出0.5%~1%的间隙让齿形之间不那么紧密。这个间隙在光学上几乎不影响效率但能避免大量非预期反射建模也稳定得多。4.2 出现“杂散光”先怀疑齿根圆角过小还有一个常见的毛刺现象仿真做出来目标面上除了正常的焦斑还会有一圈环形的杂散光。这个杂散光的能量占比不高但如果你做的是对杂光要求很高的投影系统这圈光就是不可接受的。排查下来往往都是齿根的圆角过小。光线打到齿根圆角附近时会发生一个非预期的反射或折射形成一个环状的光斑。把齿根圆角从0.01mm增加到0.03mm杂散光就会明显减少。但也别加得太大加太大会导致齿的有效面积减少透射效率下降。所以圆角取值跟效率、杂散光之间是有最优解的建议自己在模型里做一个小参数扫描找到最合适的值。4.3 阵列生成特别慢可以先建子区再阵列亲身经历过一次口径200mm、环距0.5mm的菲涅尔透镜如果按0.5mm逐环生成我需要做400个环带。在LightTools里一次性生成400个旋转体软件会卡到怀疑人生。后来我的办法是先建一个包含10个环带的子模块然后再把子模块阵列成40个。这样操作起来流畅很多而且子模块出问题时只需要修改一次再重新阵列不用推倒重来。实际上很多光学设计软件在处理重复结构时都是这个思路重叠的计算量交给软件去处理而不是让几何体数量直接爆炸。4.4 导入CAD模型之后不能追迹先修复几何有朋友经常遇到这种情况从外部CAD导入的菲涅尔透镜模型明明看着挺好的但一追迹就报错或者漏光。这通常是因为CAD模型存在破面、重叠面或者不连续的法线方向。LightTools提供了一些几何检查和修复工具导入之后先用这些工具扫一遍模型。如果发现碎面可以用修复功能自动处理如果自动处理不了就回到CAD软件里针对问题面重新建模。我个人的经验是在CAD里做菲涅尔透镜最好还是用专业的光学插件去生成纯手工画的模型大概率会出问题不如直接按本文方法在LightTools里建模。4.5 关于节温环境温度对材料折射率的影响这一点可能有点超纲但如果你做的是高功率照明系统最好留意一下。PMMA等光学塑料的折射率随温度变化明显温度升高时折射率降低导致透镜焦距偏移。LightTools虽然标准功能不太侧重热光学耦合但你可以手动修改材料折射率模拟温度变化后的效果。我做一个车灯光学系统时环境温度从25℃升到80℃PMMA折射率从1.4913降到约1.484的消息最终导致焦斑偏移了约2mm。对于尺寸敏感的照明系统这个偏移量已经足够影响均匀性了。4.6 高斯分布设置与导出注意事项顺带提一下题目里出现的热词。做菲涅尔透镜设计时高斯光束的设定是个常见的需求。在LightTools的光源设置里你可以选择光源类型为高斯光束然后设置光束的发散角、束腰半径等参数。光源位置设在菲涅尔透镜的焦点处光线方向指向透镜即可。另一个常见的操作是结果导出。LightTools的追迹结果可以导出成IES文件、CSV格式或TXT格式的照度数据方便在Excel里做进一步分析或者导入到其他软件里。导出的文件格式一般是在分析模块里设置输出路径然后在结果窗口里选对应的导出选项。这些操作在技术上不复杂但如果不熟悉菜单位置最容易卡住。如果你拿到某个版本的lighttools教程可以重点看一下光源设置和结果导出这两个章节。5. 经验总结与后续扩展建议5.1 我的建模习惯参数驱动、逐步存档做了这么多菲涅尔透镜模型之后我养成了几个习惯这里一并分享第一所有关键尺寸都在Excel里算好模型里的数值一律从计算表引用不在软件里随手填。这样当改动口径或者焦距时只需要更新Excel模型重建也有据可查。第二每完成一个阶段就另存一个新文件文件名带编号。菲涅尔透镜的建模步骤多有时候一次改参改歪了需要退回上一步。如果没有版本存档就得重画一遍非常浪费时间。第三把所有参数扫描的结果集中记录在一个表格里包括齿高、环距、圆角、效率、杂散光指标方便横向对比。有了这些数据后面做相似类型的设计时可以快速起步。5.2 后续扩展把手动建模升级为参数化模组当你按照这套流程做过几个菲涅尔透镜之后你会发现手动建模的核心步骤其实是可以参数化的。齿高、环距、口径、焦距、圆角都可以设置成变量在LightTools里用参数化功能改变尺寸自动重建模型。更进一步你还可以把建模过程录制成脚本调用API实现批量生成不同规格的菲涅尔透镜模型然后批量追迹、批量导出结果这样可以形成一个小型的透镜自动设计流程。手动建模的意义不仅仅是做出一个模型更重要的是通过建模过程理解每个参数对光学性能的影响为后续的自动化设计打下基础。我自己的体会是手动建模会让你非常清楚地记得齿高变大一点效率会怎么变圆角增加一点杂散光会怎么变环距加密一点中心亮度又会怎么变。这些手感是直接调库里的现成模型得不到的也是做好光学设计最值钱的积累。