
有朋友把LightTools自带的菲涅尔透镜工具生成的模型发给模具厂结果被对方一句话噎了回来“这种锯齿没法开模能不能把齿根加个R角稍微带一点拔模斜度”他回来跟我吐槽说参数化工具里根本没有地方填这些工艺特征。我告诉他与其纠结那个傻瓜式工具不如直接手动建模——把普通球面透镜当毛坯把轮廓拆成环带再用旋转体的方式一段一段“旋”出菲涅尔透镜。这个思路LightTools完全能跑通而且你做出来的模型才真正算你自己的。这篇文章不是给你讲LightTools自带“Fresnel Lens”按钮怎么点而是讲清楚手动建模背后的几何逻辑、环带角度怎么算、在LightTools里用什么命令把透镜旋转成菲涅尔齿、以及最后怎么验证和导出。适合照明光学设计、微透镜结构设计、以及要跟模具厂对接的工程师参考。1. 为什么放着现成的工具不用非要把菲涅尔透镜“转”出来1.1 参数化工具解决不了的问题LightTools自带的菲涅尔透镜生成器确实能在几秒钟内生成一个标准锯齿透镜。但做照明产品的人都知道实际量产件很少直接能用软件生成的原始模型。模具加工对齿根圆角、拔模斜度、齿尖倒角、中心区域是否保留球冠、环带是否等宽或者等高都有具体要求。参数化工具的选项有限很多工艺细节改不了。另一个问题是标准工具生成的是“理想化”模型模型里每个环带的齿尖和齿根是从一个数学公式算出来的不会考虑你在LightTools里接的是LED光源还是准直光源也不会考虑后续优化。你拿到的只是一个静态几何体一旦追迹结果不理想想调整某一个环带的角度标准工具里做不到。手动建模的实质是把菲涅尔透镜拆成若干个独立控制的小棱镜环带每个环带都有自己的齿面倾角、齿宽和齿高。想改哪个改哪个想加圆角加圆角想加脱模斜度也随意。这才是“手动”的意义。1.2 “透镜旋转”到底在转什么标题里说的“透镜旋转”我拆成两个层面理解。第一个层面是指把普通透镜的二维截面轮廓线绕光轴旋转三百六十度生成一个三维回转体。这是LightTools里最常见的“Revolve”操作很多新手对这个命令不陌生但未必想到它可以用来构造锯齿结构。第二个层面是指菲涅尔透镜的设计逻辑本身把一个完整球面透镜的截面曲线按照半径方向切成很多小段每一小段都保留它在原透镜上的局部斜率然后把这一小段绕着它的外端点或内端点“旋转”到一个基准平面上让所有段摞在同一个薄基板上。这个“旋转压缩”的过程就是普通透镜变成菲涅尔透镜的过程。咱们平时用LightTools不需要真的去用“旋转命令”一个一个转那些碎片而是直接画出旋转压缩后的锯齿轮廓再用一次Revolve生成实体。但心里要清楚轮廓上每一条斜线段都对应普通透镜上某一个半径处的切线。1.3 这条路适合谁如果你是做光学设计需要自己在软件里验证非标菲涅尔结构比如矩形齿、圆弧齿、变环距齿、带拔模角齿手动建模是唯一靠谱的办法。如果你只是应付一个简单的准直透镜方案自带工具完全够用。但如果你想跟模具厂深度配合希望输出来的STP模型直接能用来开模我建议你至少掌握手动建模。因为只有手动建模你才能把模具工艺里最关心的脱模斜度、齿根圆角这些细节做进去。2. 动手前先把环带角度算明白2.1 从平凸透镜的曲率半径说起手动创建菲涅尔透镜的第一步不是打开LightTools而是拿计算器算清楚每个环带齿面的倾角。很多人跳过这一步直接画锯齿后面追迹一塌糊涂。假设我们要设计一个口径55mm、焦距80mm的平面菲涅尔透镜材料用PMMA折射率n取1.4935。按平凸透镜的光焦度公式1/f (n - 1) × (1/R - 0)得到球面曲率半径R (n - 1) × f 0.4935 × 80 ≈ 39.5mm也就是说如果一个完整球面透镜的凸面曲率半径是39.5mm它在80mm处聚焦。现在我们要把这个球面压缩成平板保留它在不同半径处的偏折能力。球面上半径为r处的局部斜率可以通过球面公式求出。球面轮廓写作z(r) R - sqrt(R^2 - r^2)对应切线角θ_r满足tan θ_r r / sqrt(R^2 - r^2)口径55mm最外半径r27.5mm时sqrt(39.5^2 - 27.5^2) ≈ sqrt(1560.25 - 756.25) ≈ sqrt(804) ≈ 28.35mmtan θ ≈ 27.5 / 28.35 ≈ 0.97这个角度不是最终齿面倾角但它告诉我们边缘环带的斜度已经非常大了。如果直接把这个大斜度做在2mm厚的平板上齿高会非常夸张所以必须通过增加环带数来压低单个齿的高度。2.2 环带齿面倾角的估算公式设计菲涅尔透镜时每个环带可以看作一个独立的小棱镜。平行光从平面一侧垂直入射进入透镜后到达齿面在齿面上发生折射最后汇聚到焦点。几何关系可以这样近似理解光线从半径r处出射后要到达轴上焦点F出射光线与光轴的夹角γ大约满足tan γ ≈ r / f而一个小角度楔形棱镜产生的偏折角δ近似为δ ≈ (n - 1) × α其中α是楔角也就是齿面相对基面的倾角。要让光线从平行光偏转δ后正好指向焦点令δ ≈ γ就得到α ≈ atan(r / f) / (n - 1)这个公式只适合小角度的初步估算真正精确的角度还是要靠LightTools里的优化器来微调。但它足够我们先把模型建起来。我按f80mmn1.4935算了一组数据你感受一下趋势环带外半径 r (mm)需要偏转角 γ atan(r/f) (°)近似齿面倾角 α γ/(n-1) (°)53.587.25107.1314.451510.6221.522014.0428.452517.3535.1627.518.9338.36看到没有最外面那一环的齿面倾角已经快到40°了。如果环带宽度取2mm这个齿的高度大约是h 2 × tan 38.36° ≈ 1.58mm基板厚度还剩下多少肯定不能直接做成2mm基板。所以要么增加环带数要么把最外几环的宽度减小。2.3 齿高、环带数和基板厚度怎么分配选环带数有个经验法则优先保证最外环的齿高不超过基板厚度的70%。比如基板厚度2.5mm最外环齿高最好控制在1.7mm以内。按上面的计算2mm环带宽度会产生1.58mm齿高勉强能接受但齿间距已经很小了。我实际做的时候喜欢采用“等齿高”而不是“等环带宽度”的设计。也就是让每个环带的齿尖高度固定比如固定为0.3mm或0.5mm然后根据每个半径处的角度反推环带宽度环带宽度 固定齿高 / tan α这样设计的好处是模具上的齿形受力均匀注塑填充也更容易。缺点是环带宽度从内到外逐渐变化建模时坐标点要逐个算。如果你用的是LightTools自带的优化器建议先按等宽度建出一个初版再把每个齿面倾角和齿根z坐标设为变量让软件自动优化。3. LightTools手动建模完整流程3.1 先画轮廓线别急着画实体打开LightTools新建一个文件单位设为毫米。我的习惯是先确定光轴方向这里设定为Z轴透镜平面朝光源锯齿面朝焦点。建模的核心是先在XZ平面上画出整个透镜的旋转剖面。这个剖面要封闭因为后面要Revolve成实体。剖面包括这几部分下表面一条从r0到r27.5的直线z0外边缘在r27.5处从z0到z2.5的竖直线上表面由中心球冠和若干环带齿组成的锯齿线中心轴线段在r0处闭合。上表面锯齿线具体这样设计。中心区保留半径4mm的球冠球冠顶点在z2.5mm边缘落到z2.0mm。从r4mm开始进入第一个环带。每个环带的轮廓是一条斜线从内半径处的齿根z2.0mm斜向上延伸到外半径处的齿尖z2.0h_mm然后垂直下降到下一个环带的内半径处z2.0mm。重复这个过程直到最外半径。这里要注意环带与环带之间的垂直段其实是一个半径位置上的台阶。如果你后面要加脱模斜度可以把垂直段改成0.5°到1°的小斜面否则模具几乎没法脱模。3.2 用Excel生成坐标点再导入手工逐个点坐标效率低而且容易错。我一般先做一个小表格按以下顺序生成点列确定基板厚度z0确定中心区半径r0以及中心球冠在边缘处的高度z1从内到外列出每个环带的内半径a_i、外半径b_i、齿面倾角α_i计算齿尖高度h_i (b_i - a_i) × tan α_i按逆时针方向生成轮廓点。比如第i个环带的点列大致是P_start, (a_i, z0) P_tooth, (b_i, z0 h_i) P_drop, (b_i, z0) P_next, (b_i, z0) ; 实际上与P_drop重合作为下一步起点把这些点存成CSV或者Excel复制到LightTools的Polyline输入界面里。导入后检查一遍线条方向确认整个轮廓是逆时针闭合的后面生成实体的法向才正确。3.3 用Revolve生成三维实体轮廓线画好后选择“Revolve”命令。旋转轴选Z轴角度填360°。LightTools会直接生成一个回转体。这一步经常有人栽跟头。有人画完轮廓线Revolve之后发现生成的是曲面片而不是实体。问题基本都出在轮廓不封闭或者旋转轴没有穿过轮廓所在的平面。检查方法是旋转生成后用“Section View”切一刀看截面是不是实心封闭的。实体生成后给整个模型指定材料。在LightTools里选中实体在属性面板里选择PMMA或者直接输入折射率1.4935。齿面和光滑平面要单独设置表面光学属性。通常齿面设置为“Optical Surface”中心平面也设置为“Optical Surface”其他非工作区域设置为“Absorbing”避免杂散光乱跑。3.4 逐环旋转的另一个思路如果你不想一次性画出完整锯齿轮廓还可以用另一种方式先创建单个环带齿的三角截面Revolve成一个环形齿实体然后在不同径向位置逐个复制并调整齿面倾角最后用“Union”把所有环带实体合并。这个思路更接近标题里“用透镜旋转”的字面意思适合你只是想验证某一个环带角度对光路的影响。但它的缺点是每个环带齿单独生成后再合并齿与齿之间的共面、间隙问题比较多。我自己试过几次当环带数超过10个的时候Union经常出现破面。所以整体建模我还是推荐先画完整轮廓再Revolve。4. 旋转轴选错全盘皆输坐标与法向的坑4.1 旋转轴必须和光轴重合这个道理听起来简单但实操中特别容易搞错。LightTools里默认坐标轴和光轴不一定一致如果你建模型时没有先确认光轴方向后面要么齿面倾斜方向反了要么实体光轴偏心。建议在设计初始阶段就定死光轴为Z轴平面侧在z0附近锯齿侧在z2.5附近。所有环带计算用的r都是到光轴的半径距离。这样无论后面怎么旋转视图、怎么加光源都不会乱。另外如果你用“Move/Rotate”命令去旋转一个已经生成好的环带实体要格外小心。LightTools的“Rotate”默认绕全局坐标轴旋转而菲涅尔环带需要绕圆周上某一点作为枢轴旋转一不小心就会把环带甩到光轴外去。我踩过一次整圈环带全歪了排查了很久才找到原因。我的建议是能不用实体旋转就不用直接在草图画线阶段把角度做对。4.2 轮廓方向决定齿面法向生成旋转体之后看似是个实体但每个表面的法向不一定正确。LightTools里法向直接决定光线是从表面入射还是出射也决定折射方向。如果你画轮廓时用逆时针方向生成实体的外法向是朝外的这是正常情况。但如果你是从右往左画的锯齿闭合方向变成顺时针生成实体的法向可能会全部朝内。追迹时你会看到光进去就出不来了或者一堆全反射。一旦发现法向反了不需要重画轮廓。选中有问题的表面用“Surface Orientation”里的“Flip Face”把法向翻回来。但要注意齿面翻转后台阶面的法向也得同步检查最好在追迹之前用“Ray Trace”先跑几十根光线看一眼。4.3 环带之间的重叠和间隙手动建模最麻烦的是相邻环带的共面问题。如果你先画完整轮廓再Revolve这个问题基本不存在。但如果你是用单个环带实体复制后Union两个相邻实体之间哪怕只有0.0001mm的间隙Union之后也可能留下一个薄壁空隙追迹时出现漏光。处理办法是在计算坐标时给每个环带的内外半径留一点重叠余量。比如环带i的外半径设计值是10.000mm下一个环带的内半径可以写成10.001mm。这样Union之后能强制消除缝隙。但余量不能太大否则重叠处会形成微小台阶虽然光学上影响很小模具上却会出现飞边。5. 光线追迹验证装上透镜只是开始5.1 平行光源测试聚焦性能模型建好后先别急着导入复杂光源用最简单的平行网格光源验证。在LightTools里新建一个光源类型选“Grid Source”光束直径设为50mm波长550nm方向沿Z轴正向照射在透镜的平面侧。在透镜另一侧焦点位置放一个接收器z坐标设为80mm。追迹后看接收器上的光斑。如果模型建得准光斑应该是一个小而集中的圆斑RMS半径通常只有零点几毫米。如果光斑很大或者偏到一边先检查光轴是否对齐光源中心再检查环带齿面法向。这两项没问题的话问题大概率出在齿面倾角需要进入下一步优化。5.2 用优化器微调齿面角度理论上计算出来的角度可以做初版但实际追迹后总会有偏差。原因是小角度近似公式在边缘大角度时误差比较明显。这时候就可以用LightTools的优化功能了。把最外几个环带的齿面倾角设为变量优化目标设为“RMS Spot Radius”最小跑一轮自动优化。通常只需要调整1°到3°光斑质量就会明显改善。这里有个经验不要一上来把所有环带的角度都设为变量。先固定内圈只优化外圈几个环带因为外圈环带角度大对光斑和效率的影响最敏感。等外圈收敛了再放开内圈做整体微调能省很多时间。5.3 高斯分布光源模拟LED近场准直如果你做的是LED准直透镜平行光验证只是第一步。实际光源是朗伯型或高斯型发光角度分布这时候需要把光源换成真实的角度分布。在LightTools光源属性里找到“Angular Distribution”选“Gaussian”填写发散半角。比如你用的是半角30°的LED就填30°。追迹之后看透镜出射光斑评估准直效果和效率。这一步特别能暴露手动建模的问题。有些模型平行光追迹很好换成大发散角光源后边缘环带就会出现明显杂散光。原因通常是齿面在非平行光入射下部分光线不满足设计的折射路径直接打到台阶面上变成了杂散光。碰到这种情况我一般会在台阶面上加一圈小倒角强行把杂散光往某个方向引导或者把台阶面设成吸收属性减少它对光斑的干扰。5.4 导出IES/LDT和CAD文件模型验证通过后需要把光学结果导出来。LightTools里导出IES或LDT文件是在“Output Data”里设置好接收器后用“Photorealistic Output”或“Luminous Intensity Output”功能生成。导出之前要确认坐标系和角度步长通常IES文件的角度步长按1°或2°导出文件大小和精度比较均衡。CAD模型导出用“Export”菜单下的STEP或SAT格式。如果你的下一个环节是模具设计建议导出STEP模具厂几乎都能打开。导出前记得把那些小倒角、小圆角都清理干净否则STP文件会非常大。6. 我踩过的几个坑和补救办法6.1 齿尖尖角导致追迹报错第一次手动建模我为了追求理论上的完全聚光把齿尖做成了理想的尖锐点。结果追迹的时候LightTools一直提示“Geometry invalid at one or more edges”大量光线从齿尖漏掉。后来我明白了任何光学软件的追迹引擎都处理不了几何意义上的尖角。齿尖和齿根必须加圆角哪怕只有0.01mm到0.02mm也能让网格剖分顺利通过。加圆角的办法有两种。一种是在草图画轮廓的时候直接给折弯处加倒圆角另一种是用LightTools的“Blend/Fillet Edge”功能选中实体边缘倒角。我个人倾向于前者因为能保证剖面线条光滑后续Union也不容易出问题。6.2 环带数太多导致建模卡死有一版设计我把环带数加到40个想着齿高能压得更低。结果LightTools在生成实体和布尔操作时卡到几乎没法操作而且追迹速度直线下降。后来发现菲涅尔透镜的环带数并不是越多越好。从光学角度环带数超过一定数量后继续增加对光斑和效率的贡献非常小从制造角度细密的齿更容易产生填充不满、脱模困难的问题。我现在的做法是先用8到12个环带把光路验证跑通确认方案没问题后再根据模具要求决定是否加密。手动建模的意义就在这你可以随时改轮廓再重新Revolve。6.3 模型导出后模具厂反馈破面有一次我导出STEP文件给模具厂对方说模型表面有破面开模前必须先修模。我检查发现问题出在环带间的垂直台阶面上。这些台阶在软件里看似是共面的导出后由于公差原因被拆成了微小碎面模具软件识别不了。解决方法是在手动建模阶段就避免绝对垂直的台阶。把台阶做成0.5°到1°的拔模斜面既不影响光学性能也能让模具软件顺利识别。另外导出STP时我习惯把LightTools的“Model Tolerance”设置改大一点默认值太过严格导出文件容易产生海量微小曲面。把公差放宽到0.001mm到0.002mm文件体积和曲面数量都会有明显改善而光学精度基本不受影响。6.4 别忽略材料吸收和透过率的设置Fresnel透镜建模后期大家容易只盯着角度和光斑忘了材料的吸收系数和表面透过率。PMMA材料对可见光的透过率大约92%如果你用默认理想透过率追迹出来的效率会偏高和实测对不上。在LightTools里给PMMA材料设置体吸收系数并给两个入射/出射面设置增透膜或默认菲涅尔透过率。这样得到的系统效率才具备实际参考价值。做照明的人都知道效率差几个点往往就是材料和表面属性设置不对。手动建模这件事看着比点几下参数化工具麻烦但一旦你习惯了用轮廓线加旋转体的思路反而觉得更自由。我现在的习惯是拿到一个菲涅尔需求先用Excel把环带坐标算好再进LightTools一次性生成实体。这样做出来的模型每一个齿的角度和位置都在自己脑子里出了问题也更容易定位。最后分享一个小技巧初版模型别追求完美先只用三四个环带把整个流程跑通确认法向、追迹、导出都没问题再生成完整版本。上次我就是一上来就建了20个环带结果发现曲面法向反了返工了整整一下午。从简单到复杂永远是光学建模里最省时间的路线。