做照明光学设计的同行应该都清楚,LightTools 在照明仿真领域基本相当于 Photoshop 在平面设计领域的地位。而菲涅尔透镜又是光学设计里绕不开的一个元件——投影照明、太阳能聚光、车灯透镜、舞台灯光,哪哪都有它的身影。软件本身其实提供了菲涅尔透镜的快捷创建向导,但快捷方式在标准模型下挺好用,一旦碰上非标口径、异形环距、特定拔模角这类需求,向导生成的模型往往就用不上了,要么槽型不对,要么生成的面片数多到跑一次追迹卡半天。所以我从几年前开始,遇到菲涅尔透镜基本都是手动建模,慢慢总结出一套能直接照抄的流程和技巧。这篇文章不绕弯子,不讲泛泛的软件操作百科,只讲我在 LightTools 里手动创建菲涅尔透镜时真正用过、真正踩过坑的 5 个实用技巧。每个技巧我都会尽可能把操作细节拆细,参数该填什么、界面位置在哪里,都会说到闭上眼睛都能找到的程度。
1. 动手前的三分钟:先搞清楚你的菲涅尔透镜由哪些面组成
1.1 菲涅尔透镜的本质:把厚透镜压缩成锯齿
很多人第一次看到菲涅尔透镜的剖面图都会愣一下:这不就是一圈一圈的锯齿吗?其实原理不复杂。普通平凸透镜之所以厚,是因为它需要用一整块材料把光线的偏折角度攒出来。菲涅尔透镜的思路是,把透镜的连续曲面"切"成若干个同心环带,每个环带保留原本在这个位置的表面曲率,然后把它们压扁到同一个平面上。这样透镜的整体厚度大大降低,但每个环带对光线的偏折作用基本不变。
在 LightTools 里手动建模,核心就是构建这些环带的剖面轮廓。每一圈齿有两个关键面:一个是参与光学成像的"有效光学面"(通常是个圆锥面或微曲面),另一个是连接相邻齿的"侧壁"(俗称非光学面)。侧壁原则上不参与光线偏折,但它真实存在于模具上,建模时如果无视侧壁的存在,仿真结果就会偏乐观,实测永远对不上。
1.2 LightTools 手动建模的最小单元:旋转体剖面
LightTools 是三维实体建模加光线追迹的软件,你可以直接画一个三维透镜模型,但菲涅尔透镜是回转对称结构,最高效、最不容易出错的做法是先画一条二维剖面线,然后围绕光轴旋转生成三维实体。
这条剖面线沿径向从中心到边缘展开,描绘的是透镜从光轴往外每一个环带的轮廓。所以你不需要把一圈一圈的齿在三维空间里逐个去画,只需要在二维草图里把剖面线的台阶状轮廓画清楚,再绕轴旋转,一圈齿就全出来了。
1.3 手动建模前必须确定的参数清单
我一般在打开软件之前,先把下面这张表填完。否则一边画一边查参数,很容易画到一半发现口径不对,前功尽弃。
| 参数名称 | 符号 | 说明 |
|---|---|---|
| 透镜口径 | D | 有效通光直径,直接决定轮廓线总长度 |
| 中心厚度 | t0 | 光轴处的最小厚度,决定透镜的机械强度 |
| 焦距 | f | 设计目标焦距 |
| 材料折射率 | n | 决定每个环带对应的表面斜率 |
| 环距 | p | 相邻两圈齿尖的径向间距,也叫齿距 |
| 齿深 | d | 每圈齿的轴向高度差 |
| 拔模角 | α | 侧壁与光轴的夹角,影响脱模和杂散光 |
| 中心区半径 | r0 | 中心不刻齿的平滑区域半径 |
这些参数里,口径、焦距、材料折射率是设计输入,环距和拔模角是你自己选的工艺参数,而齿深,则需要通过公式换算得到。这个换算是整个手动建模里最容易出错的一环,下面第二个技巧专门讲它。
1.4 为什么我不建议直接用内置菲涅尔向导
LightTools 确实自带菲涅尔透镜快捷生成工具,平时做快速验证、方案预研时我也偶尔用它。但如果你要做的透镜有以下任一特征,内置向导就不太够用:
- 口径和焦距比例比较极端,向导生成的面形不够准
- 需要自定义拔模角,或者做非对称侧壁
- 透镜中心要留安装孔、避让槽等结构
- 环距需要从内到外渐变,而不是均布
- 做出来的模型要直接对接模具设计,面片数量需要可控
内置向导生成的模型往往面片细化程度不可控,追迹时计算量大,而且一旦生成完毕,后续想修改某一圈的齿深或拔模角,几乎只能删掉重来。相比之下,手动建出来的模型参数清清楚楚,每一圈齿都能独立改,后面做公差分析、模具设计都方便得多。
2. 技巧一:用平面轮廓线起手,别上来就建实体
2.1 为什么强调"轮廓线起手"
我刚接触 LightTools 时,犯过一个典型错误:想直接通过三维特征模块建实体,一圈一圈地拉伸、布尔求差。结果建到第三圈就后悔了,因为每一圈之间的布尔运算特别容易产生碎面、重叠面,轻则追迹时光线数量异常,重则模型根本没法用于仿真。
后来我换了个思路,完全用平面剖面轮廓来构建。这样做有四个直接好处:
- 建模工作量小:一条剖面线旋转,几百圈齿一下就生成,不用逐圈操作
- 参数可追溯:每段线的长度、角度就是齿深、拔模角,改起来直观
- 面数可控:旋转生成的面片数你自己心里有数,不会像向导那样生成几十万面片
- 后续好继承:这个剖面线本身就是一份设计文档,改口径、改环距时只需调整局部线段
2.2 具体操作步骤:剖面线怎么画
以 LightTools 9.x 版本的交互式建模模块为例,操作逻辑如下:
新建一个草图,工作平面选择 XZ 平面。菲涅尔透镜的旋转轴一般沿着 Z 轴,所以剖面线放在 XZ 或 YZ 平面都行,但我习惯 XZ。
从光轴处开始,先画中心区。中心区是一段水平线,长度等于中心区半径 r0。如果你需要中心避让孔,可以留一段向内延伸的结构,后面旋转出来自然就是一个通孔。
画第一圈齿。第一圈齿的起点是中心区末端的点,从这个点开始,先向上(或向下)画侧壁线段,侧壁与水平方向的夹角就是拔模角 α;然后画有效光学面,这一段的斜率和方向由该环带对应的曲率决定;最后回到下一个齿的起始点。
重复上一步,把整个口径内的所有齿都画完。注意有效光学面不是一条随便画的斜线,它的斜率是有讲究的,具体换算在第 3 节展开。
最后在透镜边缘画上外轮廓的竖直边和底部水平线,把剖面闭合。剖面线必须是闭合的,旋转后才会生成实体。
画的过程中,LightTools 草图里的几何约束和尺寸标注最好充分利用起来。尤其是相邻齿之间的相对位置关系,用约束锁定之后,后期改环距只需要修改一个驱动尺寸,其他齿会自动跟着变。
2.3 轮廓线绘制时最容易翻车的两个细节
第一个细节:有效光学面是斜线还是曲线。如果你的菲涅尔透镜焦距很短、口径大,单个环带上的曲面矢高差可能比较明显,直接用直线代替曲面会产生聚焦误差。这种情况我会把有效光学面画成轻微弧线,弧线的半径就是该环带中心处对应球面的曲率半径。LightTools 草图里可以直接约束圆弧半径,不算麻烦。
第二个细节:齿尖和齿根不能交叉。手动绘制时,相邻齿的侧壁和光学面如果没有约束好,旋转之后会出现自交面或破面。我一般会在草图里检查所有线段的首尾连接状态,确保是一个连续闭合环,没有悬空端点。检查方法很简单:选中轮廓,确认它是一个整体,而不是几条离散线段拼在一起。
3. 技巧二:环距和齿深的换算关系,错一步后面全白干
3.1 齿深不是随便定的,它是一个几何计算问题
菲涅尔透镜的齿深,从光学本质上讲,是相邻两个环带在原始透镜曲面上的矢高差。你可以想象有一块完整的平凸透镜,表面是一个球面。现在拿一系列同心圆去切这个球面,把每个圆环里的球面都压平到同一水平面(透镜底面),每个环带压平后与底面之间的高度差,就是齿深。
所以齿深的精确计算方式很简单:对于半径为 R 的球面,在半径 r 处的矢高为 $s(r) = r^2 / (2R)$。第 i 个环带的内半径为 r_i,外半径为 r_{i+1},齿深就等于 $s(r_{i+1}) - s(r_i)$。
但在实际工程中,几乎没有人用这个公式逐圈手算,更常用的是简化公式。当环距 p 远小于口径和曲率半径时,第 i 个环带的齿深可以近似为:
[ d_i \approx \frac{r_i \cdot p}{R} ]
其中 r_i 是第 i 个环带的中心半径,p 是环距,R 是透镜表面的曲率半径。而曲率半径 R 和焦距 f、材料折射率 n 之间的关系是:
[ R = (n - 1) \cdot f ]
这两个式子组合起来,就是你手动建模时全部的计算基础。
3.2 一个实际算例,看完你就有感觉了
假设要设计一个口径 50mm、焦距 100mm 的 PMMA 菲涅尔透镜,PMMA 折射率取 1.49。先算表面曲率半径:
[ R = (1.49 - 1) \times 100 = 49 , \text{mm} ]
取环距 p = 2mm,那么在半径 r = 20mm 处的那一圈齿,齿深约为:
[ d = \frac{20 \times 2}{49} \approx 0.816 , \text{mm} ]
而在 r = 5mm 处的齿深只有:
[ d = \frac{5 \times 2}{49} \approx 0.204 , \text{mm} ]
可以看到,越靠外圈,齿深越大。如果环距不变,齿深从内到外是线性增大的,因为矢高变化率随半径增大而增大。这一点务必在草图中体现出来,否则聚焦光斑一定不对。
3.3 在 LightTools 里怎么精确输入这些尺寸
手工在草图里一格一格填坐标,对几十圈齿的模型来说太慢了,而且容易出错。我一般用两个方法:
方法一是先用 Excel 计算出每一圈齿的内半径、外半径、齿深、拔模角偏移量,然后在 LightTools 草图中通过点坐标方式导入。Excel 里每条线段直接输出端点的 X、Z 坐标,复制生成一个坐标文件,在草图里用"导入点"功能直接生成折线。这个方法适合大规模齿数建模,比如 100 圈以上的透镜。
方法二是针对齿数不多、只有十几二十圈的模型,直接在草图里用尺寸标注驱动。画完第一条齿后,给侧壁和光学面都标上尺寸,后续齿通过复制和修改尺寸快速完成。虽然操作上麻烦一点,但胜在直观,而且以后想改参数直接双击尺寸改数就行。
我自己常用的方式是两者结合:先算坐标文件导入,生成轮廓后,再用尺寸标注抽查几个关键齿的参数,确认导入无误。毕竟一旦某圈齿差 0.1mm 高度,光线已经偏出去不少了。
3.4 环距渐变的情况怎么处理
有些透镜设计为了平衡齿深和加工难度,会让环距从内到外渐变,通常是内密外疏或者外密内疏。这时齿深公式里的 p 就不能当常数了,要拿每一圈实际的环距代入。我在这种模型里会刻意在 Excel 里多设一列"环距变化率",把每一圈的 r_i 和 p_i 单独算,避免手动输入几十个相似数据时看走眼。
4. 技巧三:拔模角决定效率与可加工性,别忽视那面"墙"
4.1 拔模角到底有什么用
菲涅尔透镜的侧壁,理论上最好完全垂直于底面,这样能在最小口径占用下实现最大集光效率。但真实模具是上下开模的,如果侧壁完全垂直,脱模时个环带会被模具"勾住",轻则产品刮花,重则直接碎掉。所以必须给侧壁留出斜度,这个斜度就是拔模角。
拔模角对仿真还有一个直接影响:侧壁会截获一部分本来不该经过它的光线。如果拔模角取得过大,从有效光学面边缘掠过的光线会撞到侧壁,造成杂散光和效率损失。仿真时如果完全不管侧壁,默认它是理想光滑且不参与光线交互的,那算出来的效率一定会比实际偏高。
4.2 拔模角该怎么选
根据我自己的经验,最小拔模角工艺上能做 0.5°左右,常规量产建议不小于 1°。如果透镜尺寸比较大、齿深较深,拔模角最好做到 2°~3°,否则模具脱模阻力会比较大。
但你需要知道,拔模角并不是越大越好。拔模角每增大一点,有效光学面的径向占比就少一点,透镜的实际通光效率会降低。一个粗略的经验值:直径 50mm 以下的透镜,拔模角 1°~1.5°没啥问题;直径 100mm 以上的透镜,优先考虑 2°。
4.3 LightTools 里的侧壁处理两种思路
第一种:在剖面线里直接画出侧壁线段。这也是我推荐的建模方式。草图里侧壁线从上一圈光学面的外端点向内下一圈光学面的内端点过渡,线段与光轴的夹角就是拔模角。用 3.2 小节算出的齿深 d 和环距 p,结合拔模角 α,侧壁线的水平投影长度就是:
[ \Delta r = d \cdot \tan(\alpha) ]
这个值很小,1° 拔模角、0.8mm 齿深时,水平偏移量只有 0.014mm。很多人在草图里画剖面线时嫌这个数小,图省事直接画成竖直的,结果就是模型侧壁完全垂直。仿真光效率时问题不大,但实际模具没法做。
第二种:建模时把侧壁单独设为"吸收面"或者"郎伯散射面"。模拟时真实侧壁并不是理想镜面,光线打上去会变成杂散光或直接被吸收。在 LightTools 里,你可以给侧壁单独指定表面属性,让它更接近真实注塑件的侧壁状态。这个技巧在照明系统里尤其重要,因为它直接影响光斑周围的杂散光评估。
4.4 设置侧壁表面属性时我的习惯
我会建两层几何:一层是有效光学面,指定为光学级表面(比如透过率 92% 的 PMMA 表面);一层是侧壁,指定为漫反射或者吸收属性。具体选哪个看侧壁的粗糙度,一般注塑成型的侧壁比较光滑但非光学级,用漫反射属性比较接近实测;如果表面有意做成磨砂,也可以直接用吸收近似。
这样建模虽然多了一步操作,但从仿真到实测的吻合度会好很多。
5. 技巧四:中心区与边缘区的过渡处理,别忽略这两个细节
5.1 中心区不能刻齿
不少新手画菲涅尔透镜剖面线时,会从光轴直接开始画第一圈齿。这在几何上是可行的,但工程上是错的。
光轴附近,球面矢高变化非常缓慢,如果强行刻齿,齿深会极小,甚至小于加工精度极限。比如 50mm 口径、焦距 100mm 的透镜,在半径 2mm 处的矢高差可能只有不到 0.03mm,注塑模具根本做不出来,做出去了齿尖也极易磨损断裂。
所以我通常会在中心留一个半径 3mm~8mm 的平滑区域。这个区域的表面是原始球面或平面,看设计需求。对于平凸型菲涅尔透镜,中心区通常直接保留一段平面或者球面,不加齿。LightTools 建模时,只需要在草图最前面的水平线段长度上留够就行。
中心区半径的选择有一个参照原则:以该半径处的矢高差约等于设计环距下计算齿深的 1/3 为界限。比如环距 2mm,当某半径处用公式算出的齿深小于 0.5mm 时,就可以考虑把这一圈并入中心平滑区。
5.2 边缘区的最后一圈齿怎么收尾
边缘区的问题是另一个方向:最后一圈齿的外侧如果没有收好,会导致旋转生成的三维实体在边缘处出现尖角或薄壁。注塑件最忌讳的就是尖角薄壁,因为应力集中。
在剖面线中,最后一圈有效光学面画完后,不要直接一个尖锐端点结束,要补一段竖直边或小圆角过渡到底面。竖直边的长度一般不小于 0.5mm,具体看透镜的机械结构设计。这段竖直边旋转出来就是透镜的圆柱侧面,是后续装配定位的重要基准面。
5.3 剖面线闭合与旋转的正确姿势
剖面线画完之后,确认它是闭合的。然后选择旋转特征操作,旋转轴必须与草图中的中心线完全重合。如果旋转轴选择有偏差,哪怕 0.01mm,旋转出来的实体都会不对称,最终追迹光斑就是不理想。
我建议在旋转之前先做一次轮廓检查。LightTools 草图里可以看到每个端点的连接状态,确认没有重复线段和悬空端点。旋转之后立刻检查实体体积,如果体积出现异常偏小或偏大,说明轮廓有自交或重叠。
5.4 分块建模的替代思路
当透镜口径很大、齿数极多时,一条剖面线旋转生成的实体通常没有问题。但如果你的透镜是矩形的或者带异形轮廓,旋转建模就不适用了。这种情况下我的做法是:先按圆形菲涅尔透镜建好模型,再用矩形边界做布尔修剪,或者用拉伸轮廓配合阵列特征逐圈构建。
异形菲涅尔透镜的建模复杂度会显著上升,尤其是四个角落区域的齿形过渡,需要逐个环带处理,工作量翻倍。如果不是必要,我会优先建议产品设计改成圆形菲涅尔加外部遮光结构,成本和仿真工作量都能省不少。
6. 技巧五:材料、表面属性和追迹设置,这一步决定仿真准不准
6.1 材料库不要顺手选默认
LightTools 自带的材料库里确实有 PMMA、PC 这些常规光学塑料,但不同厂家的牌号折射率有细微差别。如果你的设计最终要用于量产,最好拿到实际材料的折射率数据,在 LightTools 里自定义材料。
我在做照明透镜时,通常会把 PMMA 的折射率设为 1.49,阿贝数设为 58;PC 的折射率设为 1.586,阿贝数设为 30。这些参数直接输入到自定义材料对话框中,同时可以加上吸收系数。对于厚度只有几毫米的菲涅尔透镜,吸收系数影响不大,但做仿真习惯以后,我会一直保留这个参数,免得换个大尺寸透镜时忘了加。
6.2 表面属性的关键是你设了几层
LightTools 里光线遇到一个表面时,会按照你指定的表面属性来分配透过、反射、吸收比例。很多新手在仿真菲涅尔透镜时,只给整个实体设一个光学表面属性,追迹出来的效率总是偏高。
正确的做法是在模型树里分别选中菲涅尔齿面(有效光学面)和侧壁,各给独立的表面属性。有效光学面用透过率 92% 到 94% 的透射属性,侧壁按 4.3 节说的方法给漫反射或吸收属性。底部平面和外侧圆柱面根据实际结构设属性,通常底部平面也是透射面,外侧圆柱面可以设成全吸收,模拟实际装配中被遮光结构包裹的状态。
6.3 高斯分布光源设置的一个实际演示
做菲涅尔透镜仿真时,入射光源一般用平行光或者类平行光。真实光源(比如 LED 加准直镜)的出光不会是完全平行的,都有一个角度分布,最常见的近似就是高斯分布。热搜词里有人问"lighttools 如何设置高斯分布",这里我顺带演示一下。
在 LightTools 里创建一个面光源或格点光源后,在光源属性中把角度分布类型选为"高斯",然后设置半角宽度(也叫 1/e² 半角或者 FWHM 角,看软件版本表述)。举个例子,如果光源出射光束的角分布半角是 2°,那高斯分布的标准差大概取 1.7°。具体操作是找到"角度分布"标签页,把类型从"均匀"切换成"高斯",再把半角改成你要的值,然后点击预览查看分布曲线是否符合预期。
这个设置对菲涅尔透镜仿真非常重要,因为真实照明系统的杂散光水平和边缘光斑形状,很大程度上取决于入射光的角分布。平行光追迹只能看到理想结果,高斯分布追迹才更接近实测。
6.4 追迹参数的建议
菲涅尔透镜的齿数通常几十上百,每个齿面都是小尺寸曲面,追迹时光线落在边缘的概率比平面模型高。我建议光线数量不要低于 100 万条,如果做杂散光分析,500 万到 1000 万条才能把侧壁的微小散射统计清楚。
探测器方面,在焦点位置放一个辐照度分析面,网格尽量细化,一般 200×200 网格起步。如果焦点处的峰值能量密度需要精确评估,网格可以加到 500×500。计算时间和精度权衡下来,200×200 到 300×300 是最常用的区间。
7. 实测案例:我经历的一次"光全跑偏"排查过程
前面说的都是方法和参数,最后讲一个我真实遇到过的故障案例,帮大家理解手动建模时哪个环节最容易出错。
7.1 现象描述
有一次我建了一个口径 80mm、焦距 150mm 的菲涅尔透镜,手动建模完成后追迹,得到一个非常离谱的结果:理论焦点位置应该是一个集中的小光斑,实际上光斑中心发暗,周围却有一圈亮环。给人的感觉是光线全都散开了,但又不是乱散,而是有规律地偏折。
7.2 排查过程
我先检查了光源和探测器设置,确认不是高斯分布角度设得过大导致的。接着检查材料折射率,我输入的是 1.56,实际用的材料应该是 1.586,差得不至于导致光斑完全散掉。
最后我回到剖面线模型,逐圈检查齿深。检查到第 15 圈齿时发现了问题:这一圈的齿深我用的是上一圈的数据,少了大约 0.12mm。0.12mm 看起来微乎其微,但对每圈齿来说,它相当于改变了这一圈光学面的斜率,导致从这一圈出来的光线聚不到同一个焦点上,所以在焦平面上形成了一个亮环而不是一个亮斑。
7.3 根因与教训
根因很简单:我在复制草图线段时,没有把齿深的驱动尺寸改成下一圈的数值,LightTools 按默认约束把上一圈的齿深带过去了。这种错误靠肉眼在模型树里很难发现,得回到草图逐圈看尺寸标注。后来我养成了一个习惯:每画完一圈齿就随手标注齿深和环距,全部画完后用尺寸表扫一眼,确认每一圈的数值都是单调变化的。菲涅尔透镜的齿深从内到外必然是递增的(环距不变时),如果哪两圈数值一样或者突然变小,一定是复制粘贴出了问题。
7.4 快速验证模型正确性的三个简单方法
排查过程也可以用来日常验证模型。我在新建完菲涅尔透镜模型后,会做三个快速检查:
第一个是追迹一个理想的平行光,看焦点位置是否和设计焦距一致。如果偏差超过 5%,优先检查齿深换算。
第二个是画一条过光轴的剖面线,做一次二维截面上的手动光线追迹计算。取几圈特征齿,用几何光学公式算一下出射光线的偏折方向,跟软件追迹结果对比。这一步不需要太精确,主要是确认数量级对得上。
第三个是检查侧壁的杂散光占比。把所有侧壁设为吸收面,追迹一次,得到仅有效光学面的透过效率;再把侧壁恢复为漫反射属性,追迹一次,比较两者的差异。如果侧壁造成的效率损失超过 5%,说明拔模角或者环距设计可能需要优化。
这三个方法组合起来,基本能覆盖手动建模时的主要错误类型。我自己每次建完模型都会花十几分钟过一遍,比后面反复返工省时间得多。
手动创建菲涅尔透镜这件事,说难不难,说简单也不简单。掌握这五个技巧之后,建出来的模型在几何精度和仿真可信度上都能稳定很多。最后再补充一句:如果你刚开始接触手动建模,不要急着追求几百圈齿的复杂模型,先拿一个 20 圈齿的小口径透镜练手,把拔模角、环距、齿深的换算关系和剖面线的绘制流程跑通了,再逐步加大口径和齿数,这样踩坑的成本最低。