4. 光学系统建模基础

做杂散光分析,第一步就是把光学系统的机械结构建出来。说白了,你得告诉FRED光在哪儿会被挡住、在哪儿会乱反射。我见过不少新手,光学设计做得漂漂亮亮,一到机械结构就随便画个方块凑合——结果杂散光分析全白做。

这一章,咱们就把机械建模这块儿彻底讲透。从最基础的几何体,到布尔运算,再到导入外部CAD模型,每一步我都会把项目里踩过的坑告诉你。

4.1 基本几何体:立方体、圆柱、球体

FRED里创建基本几何体,路径在菜单栏 Create → Geometry → Primitive。你想想看,再复杂的机械结构,拆开来看无非就是这些基本形状的组合。

几何体 创建入口 关键参数 典型用途
立方体 (Box) Create → Geometry → Box 长、宽、高、位置、旋转 镜筒、基座、遮光罩外壳
圆柱 (Cylinder) Create → Geometry → Cylinder 半径、高度、轴向 镜筒内壁、光阑孔、支撑柱
球体 (Sphere) Create → Geometry → Sphere 半径、球心位置 积分球、光源模型、探测器封装
我的习惯:创建几何体时,我总会在 Properties → General → Name 里给它改个有意义的名字。比如 "LensBarrel_Outer" 而不是 "Box1"。不然模型一多,你根本分不清谁是谁。

创建完几何体,默认是实心的。但在杂散光分析里,我们更关心的是表面属性。右键点击几何体,选择 Properties → Surface,你可以给每个面单独指定光学属性——比如反射率、散射模型、吸收率。

举个例子,镜筒内壁我通常会设成 Lambertian散射 加 98%吸收,这样能模拟真实黑漆的效果。外壁则设成镜面反射,代表金属外壳。

4.2 布尔运算:把简单形状组合成复杂结构

基本几何体太单调了,对吧?真正的机械结构,比如带台阶的镜筒、有通风孔的遮光罩,都得靠布尔运算来搞定。

FRED的布尔运算在 Create → Geometry → Boolean 里,支持三种操作:

  • Union(并集):把两个几何体合并成一个。比如镜筒主体和法兰盘,合并后就是一个整体。
  • Subtraction(差集):从一个几何体里挖掉另一个。比如在遮光罩上开个矩形窗口。
  • Intersection(交集):只保留两个几何体重叠的部分。这个用得少,但做特殊形状时会用到。
我曾经踩过的坑:布尔运算前,一定要确保两个几何体有实际重叠区域。如果只是表面接触,FRED会报错或者生成一个空物体。我当年做第一个镜筒模型时,就因为镜片和镜筒刚好贴在一起,布尔运算死活不成功——后来把镜片往里挪了0.01mm才搞定。

操作步骤很简单:

  1. 选中两个几何体(按住Ctrl多选)。
  2. 点击 Create → Geometry → Boolean,选择运算类型。
  3. 在弹窗里确认 Base Object(被操作对象)和 Tool Object(工具对象)。
  4. 点击OK,新生成的布尔体出现在模型树里。

布尔运算生成的是 参数化模型,你随时可以双击它,修改参与运算的原始几何体尺寸。这一点非常方便——设计迭代时不用重新建模。

4.3 导入CAD模型:打通与机械设计的桥梁

实际项目中,机械结构很少在FRED里从头画。一般都是机械工程师用SolidWorks、Creo、CATIA画好,然后导给我们做光学分析。FRED支持多种CAD格式:

格式 扩展名 导入方式 注意事项
STEP .step, .stp File → Import → STEP 最推荐,面片质量好,支持装配体
IGES .iges, .igs File → Import → IGES 老格式,有时会丢面
SAT (ACIS) .sat File → Import → SAT 与FRED内核兼容性好
STL .stl File → Import → STL 三角网格,精度低,慎用
我的建议:优先用STEP格式。它保存的是精确几何信息,导入FRED后每个面都是独立的,方便你单独设置光学属性。STL虽然文件小,但导入后是一堆三角面片,没法精确控制表面属性——做杂散光分析时误差会很大。

导入时有个关键选项:Import as Single Object 还是 Import as Assembly。我个人习惯选Assembly,这样每个零件独立,方便后续给不同零件赋不同的光学属性。比如镜片设成透射+增透膜,镜筒内壁设成吸收+散射。

导入后,记得检查一下模型。有时候CAD软件和FRED的单位不一致,导致模型缩放到离谱的大小。在导入弹窗里可以设置 Unit Conversion,确保毫米对毫米、英寸对英寸。

4.4 知识结构图:机械建模全流程

下面这张图,把机械建模的三种路径和它们之间的关系画清楚了。你可以把它当作操作指南:

机械结构建模全流程 基本几何体 布尔运算 CAD导入 组合 补充 Box / Cylinder / Sphere 设置尺寸、位置、旋转 赋表面属性 Union / Subtract / Intersect 选择Base & Tool Object 生成参数化模型 STEP / IGES / SAT / STL 单位转换 Assembly模式导入 可用于杂散光分析的机械模型 三种方式可混合使用:基本几何体做简单零件,布尔运算做复杂特征,CAD导入做整体装配 最终模型必须检查:单位正确、面片完整、表面属性已赋值

4.5 模型检查与优化

不管是用哪种方式建的模,导入或创建完成后,我建议你做三件事:

  1. 检查法线方向:在 View → Display → Face Normals 里打开法线显示。所有朝外的面应该是绿色箭头,朝内的面是红色。如果某个面法线反了,杂散光追迹结果会完全错误——光会从不该透的地方透过去。
  2. 检查重叠面:用 Tools → Geometry → Find Overlapping Faces。重叠面会导致光线重复计算,追迹效率下降,结果也可能出错。
  3. 简化模型:对于不影响杂散光分析的细节(比如螺丝孔、倒角、铭牌),我通常会删除或抑制掉。模型越简单,追迹越快。你想想看,一个M3螺丝孔在杂散光分析里根本不会影响结果,但会让追迹时间多出30%。
一个小技巧:导入CAD模型后,如果发现某个零件不需要参与光学分析(比如电路板、线缆),可以在它的 Properties → Raytrace 里勾选 Ignore。这样FRED追迹时会跳过它,但模型还在,方便后续修改。

4.6 实战案例:一个简单的镜筒模型

咱们来走一遍完整流程。假设你要建一个镜筒,外径50mm,内径40mm,长度80mm,前端带一个法兰盘。

步骤1:创建外筒
Create → Geometry → Cylinder,半径25mm,高度80mm,轴向Z。命名为 "Barrel_Outer"。

步骤2:创建内孔
Create → Geometry → Cylinder,半径20mm,高度80mm,轴向Z。命名为 "Barrel_Inner"。

步骤3:布尔运算挖孔
选中 Barrel_Outer 和 Barrel_Inner,Create → Geometry → Boolean → Subtraction。Base选Barrel_Outer,Tool选Barrel_Inner。生成 "Barrel_Hollow"。

步骤4:创建法兰盘
Create → Geometry → Cylinder,半径35mm,高度5mm,轴向Z。位置设在Z=80mm处(镜筒前端)。命名为 "Flange"。

步骤5:合并法兰和镜筒
选中 Barrel_Hollow 和 Flange,Boolean → Union。生成 "LensBarrel_Complete"。

步骤6:赋表面属性
右键 → Properties → Surface。内壁选吸收+散射,外壁选镜面反射,法兰前端选吸收(用于安装遮光罩)。

你看,一个完整的镜筒模型,几分钟就搞定了。而且全是参数化的,后期改尺寸直接双击修改原始圆柱的半径就行。

注意:布尔运算生成的模型,表面属性是继承自原始几何体的。如果你在布尔运算前给Barrel_Inner设了表面属性,挖孔后内壁会保留那个属性。所以,我习惯在布尔运算之前就把表面属性设好,省得后面再一个个面去改。