4. 几何体创建与编辑(下):复杂几何体、CAD导入与属性编辑

上一节我们聊了基础几何体,像球体、立方体这些。说实话,做杂散光分析光靠这些远远不够。你想想看,实际光学系统里哪个镜片是纯立方体?棱镜有角度,透镜有曲率,非球面更是复杂。这一节,我们就来啃这些硬骨头。

4.1 棱镜的创建:从直角到屋脊

棱镜在FRED里创建,我习惯用两种方式。一种是直接调用内置的棱镜库,另一种是用多个平面拼接。先说说内置库。

核心操作路径:

  • 菜单栏:Create → Prism
  • 选择类型:直角棱镜、道威棱镜、屋脊棱镜等
  • 输入参数:顶角、高度、材料

举个例子,创建一个直角棱镜:

# 在FRED脚本中创建直角棱镜
CreatePrism
  Type = "RightAngle"
  ApexAngle = 45.0    # 顶角45度
  Height = 20.0       # 高度20mm
  Material = "N-BK7"  # 材料
  Position = (0, 0, 0)
  Rotation = (0, 0, 0)
End

我在项目中遇到过一个问题:用内置棱镜库创建的屋脊棱镜,屋脊面默认是理想尖角。但实际加工会有倒角。这时候,我建议你手动构建棱镜——用六个平面拼,然后布尔运算。虽然麻烦点,但能精确控制每个面的公差。

我的小技巧:手动构建棱镜时,先画一个三角形拉伸体,再用平面切割。这样比逐个画六个面快得多。

4.2 透镜的创建:球面与平面组合

透镜创建,FRED提供了专门的透镜编辑器。我个人觉得这是FRED最人性化的功能之一。你不需要手动计算曲率半径和厚度,直接输入光学参数就行。

透镜类型 创建方式 关键参数 适用场景
球面透镜 透镜编辑器 曲率半径、中心厚、口径 常规成像系统
非球面透镜 自定义面型 非球面系数、圆锥常数 像差校正
柱面透镜 拉伸体+圆柱面 柱面半径、长度 激光整形
菲涅尔透镜 导入CAD 齿形参数 照明系统

创建球面透镜的脚本示例:

# 创建双凸透镜
CreateLens
  FrontRadius = 50.0    # 前表面曲率半径
  BackRadius = -50.0    # 后表面曲率半径
  CenterThickness = 5.0 # 中心厚度
  Diameter = 25.0       # 口径
  Material = "S-BAL35"
  Position = (0, 0, 100)
End

注意:透镜编辑器创建的透镜,默认是理想几何体。如果你要做杂散光分析,记得给透镜边缘添加倒角或圆角。真实镜片边缘不是直角,光线会在那里产生散射。

4.3 非球面的创建:多项式与Zernike

非球面是杂散光分析里的难点。为什么?因为非球面的法线方向变化复杂,光线追迹容易出错。FRED支持两种非球面定义方式:标准多项式非球面和Zernike多项式非球面。

标准多项式非球面公式:

z(r) = (r²/R) / (1 + sqrt(1 - (1+k)r²/R²)) + A₂r² + A₄r⁴ + A₆r⁶ + ...

其中:

  • R:顶点曲率半径
  • k:圆锥常数
  • A₂, A₄, A₆...:非球面系数

在FRED中创建非球面:

# 创建非球面透镜
CreateAsphericLens
  Radius = 40.0
  Conic = -1.0          # 抛物面
  A4 = 1.5e-6
  A6 = -2.3e-9
  Thickness = 4.0
  Diameter = 20.0
  Material = "N-SF6"
End

我曾经调试过一个红外系统,杂散光总是压不下去。查了半天,发现是非球面的高次项系数输错了。一个A6系数差了10的负8次方,结果鬼像位置完全变了。所以,非球面参数一定要跟光学设计软件里的值一一核对。

避坑指南:导入非球面时,FRED默认只支持到10次项。如果你的设计用了16次项,需要手动修改面型定义文件。路径在:安装目录\Surfaces\Asphere.txt

4.4 导入CAD模型:STEP与IGES

实际项目中,机械结构件、镜筒、遮光罩这些,很少在FRED里从头画。基本都是用CAD软件(SolidWorks、Creo、CATIA)建模,然后导入。FRED支持STEP和IGES两种主流格式。

格式 优点 缺点 我的建议
STEP (.stp/.step) 实体模型,面片质量高 文件较大 首选,尤其是复杂装配体
IGES (.igs/.iges) 兼容性好,老软件也能读 容易丢面、破面 简单零件可用,复杂结构慎用

导入操作很简单:

File → Import → STEP/IGES

但这里有几个坑,我踩过不止一次:

  1. 单位问题:CAD里用毫米,FRED默认也是毫米。但如果你CAD用英寸,导入后模型会缩小25.4倍。记得在导入对话框里选对单位。
  2. 面片方向:STEP导入后,有些面的法线方向是反的。光线追迹会直接穿透。检查方法:选中模型,按F5显示法线。如果箭头朝内,用Edit → Reverse Normals翻转。
  3. 冗余几何:CAD模型里经常有螺纹、倒角、小圆角。这些在杂散光分析里没必要,反而增加追迹时间。我建议在CAD里先做简化,只保留光学有效面。

重要:导入的CAD模型,FRED默认把所有面合并成一个物体。如果你需要单独给某个面赋材料或属性,记得先Explode炸开。操作:右键模型 → Explode。

4.5 几何体属性编辑:材料、颜色与透明度

几何体建好了,接下来就是赋予属性。这一步直接决定杂散光分析的结果准不准。

4.5.1 材料属性

材料属性包括折射率、吸收系数、散射特性。FRED的材料库很全,但有时候需要自定义。

# 自定义材料
CreateMaterial
  Name = "MyBlackPaint"
  RefractiveIndex = 1.5
  AbsorptionCoeff = 0.1    # 吸收系数
  ScatterModel = "Lambertian"
  ScatterFraction = 0.05   # 散射比例
End

我常用的材料设置原则:

  • 镜片:用玻璃库里的标准材料,注意色散系数
  • 镜筒内壁:用高吸收黑色涂料,吸收率>95%
  • 遮光罩:用粗糙黑漆,散射模型选Lambertian
  • 光阑:理想吸收体,吸收率设为100%

4.5.2 颜色与透明度

颜色和透明度不参与光学计算,但影响你调试时的视觉判断。我习惯这样设置:

几何体类型 推荐颜色 透明度 原因
透镜 浅蓝 (#ADD8E6) 0.3 方便看到内部光路
反射镜 银灰 (#C0C0C0) 0.0 模拟金属质感
遮光罩 深灰 (#404040) 0.0 不透明,遮挡效果明显
光阑 红色 (#FF0000) 0.0 醒目,一眼看到位置

设置方法:选中几何体 → 右键 Properties → Appearance。

我的习惯:调试阶段把透镜透明度设到0.5,这样能直接看到光线在镜片内部的路径。等分析完成,再改回0.3做最终渲染。

4.6 知识体系总览

这一节内容比较多,我画了张图帮你理清思路:

复杂几何体创建与编辑知识体系 复杂几何体创建与编辑知识体系 几何体创建与编辑 棱镜创建 透镜创建 非球面创建 CAD模型导入 内置棱镜库 手动平面拼接 布尔运算切割 透镜编辑器 球面/非球面 柱面/菲涅尔 多项式非球面 Zernike多项式 高次项系数设置 STEP格式 IGES格式 单位/法线/简化 几何体属性编辑 材料属性 颜色设置 透明度调节

嗯,这一节内容确实不少。棱镜、透镜、非球面、CAD导入、属性编辑,每个点都值得你花时间练一练。我个人建议,先拿一个简单的双胶合透镜练手,从创建到赋材料,走通全流程。然后再挑战棱镜和CAD导入。别急,慢慢来,这些操作熟练了,后面的杂散光分析才能做得准。