3. 几何体建模:基本几何体与布尔运算

各位好,欢迎来到第三章。这一章我们聊聊FRED里的几何体建模。说白了,就是怎么在软件里把光路中的透镜、反射镜、棱镜这些零件给搭出来。

我刚开始用FRED的时候,觉得建模不就是画几个方块、球体嘛,有什么难的?结果第一次做复杂光路,一个非序列的棱镜系统,布尔运算搞错了顺序,追迹出来的光线满天飞。嗯,从那以后,我再也不敢小看这一步了。

核心要点:FRED的几何体建模是光学仿真的地基。地基没打好,后面的分析全是白搭。本章我们只讲最常用的四种基本体:球、立方体、圆柱、圆锥,以及它们的组合玩法——布尔运算和坐标系变换。

3.1 基本几何体的创建

FRED里创建几何体,最直接的方式就是通过菜单栏的 Create → Primitive Geometry。我个人习惯用快捷键 Ctrl+G,快很多。

每种基本体都有几个关键参数,我整理了一张表,你一看就明白:

几何体 关键参数 默认位置 常见用途
球体 (Sphere) 半径 (Radius) 原点 (0,0,0) 透镜、球面反射镜、点光源模型
立方体 (Box) 长、宽、高 (X/Y/Z Size) 中心在原点 分束器、探测器、机械结构
圆柱 (Cylinder) 半径、高度 (Radius, Height) 轴线沿Z轴 柱面透镜、光纤、光阑
圆锥 (Cone) 底部半径、顶部半径、高度 轴线沿Z轴 锥形光管、聚光器

创建时,FRED会弹出一个属性面板。这里有个小技巧:先别急着点确定,先把参数设好,然后点 Apply 预览,不满意再改。我见过不少新手,点完确定才发现半径输错了,又得删掉重来。

我的习惯:创建复杂系统时,我会先建一个简单的立方体作为“占位符”,把位置和朝向调好,再替换成最终形状。这样能避免反复调整坐标系。

3.2 布尔运算:把简单几何体组合成复杂形状

实际的光学元件很少是单纯的球或立方体。比如一个平凸透镜,它是一部分球体切掉一部分。这时候就需要布尔运算了。

FRED支持三种布尔运算:

  • Union(并集):把两个几何体合并成一个。比如把圆柱和立方体粘在一起。
  • Subtraction(差集):从一个几何体中挖掉另一个。比如从立方体中挖掉一个球,形成凹面。
  • Intersection(交集):只保留两个几何体重叠的部分。这个用得少,但做特殊形状时很管用。

操作路径是:选中两个几何体 → 右键 → Boolean → Union/Subtract/Intersect。

避坑指南:我曾经犯过一个低级错误——布尔运算的顺序搞反了。A减去B和B减去A,结果完全不同。做差集时,先选被减的物体,再选减去的物体。FRED的布尔运算默认以第一个选中物体为主。

举个例子,做一个简单的平凸透镜:

  1. 创建一个球体,半径设为10 mm。
  2. 创建一个立方体,尺寸设为20×20×5 mm,位置放在球体上方,让球体下半部分露出来。
  3. 选中球体,再选中立方体,执行 Subtraction。
  4. 结果就是一个半球体,底面是平的——这就是平凸透镜的雏形。

你看,是不是很简单?但实际项目中,你可能需要做几十次布尔运算。我的建议是:每做一次布尔运算,就给新生成的几何体重命名。不然到后面,你看到一堆“Boolean_001”、“Boolean_002”,根本分不清谁是谁。

3.3 坐标系变换:让几何体去到该去的地方

几何体建好了,位置不对怎么办?这就用到坐标系变换了。

FRED里的坐标系变换,本质上就是移动和旋转。你可以在属性面板的 Position & Orientation 选项卡里直接输入数值,也可以用手动拖拽的方式。

我个人更推荐用数值输入,尤其是做精密光学系统时。手动拖拽看着方便,但精度很难保证。

坐标系变换的三种基本操作:

操作 参数 说明
平移 (Translation) X, Y, Z 偏移量 沿全局或局部坐标轴移动
旋转 (Rotation) 绕X/Y/Z轴的角度 使用右手定则,正方向为逆时针
缩放 (Scale) X, Y, Z 比例因子 一般不推荐,会改变几何体形状

这里有个容易混淆的点:全局坐标系 vs. 局部坐标系。FRED默认使用全局坐标系,但你可以为每个几何体定义局部坐标系。当你旋转一个几何体后,它的局部坐标系也跟着转了。这时候再做平移,是沿着局部坐标轴移动,而不是全局坐标轴。

我的经验:做多轴系统时,比如一个离轴抛物面镜,我会先建一个几何体在原点,然后通过坐标系变换把它移到最终位置。这样做的优点是,如果后续需要调整,我只需要改变换参数,不用重新建模。

3.4 知识体系总览

为了让你对本章内容有个整体印象,我画了一张结构图。它把基本几何体、布尔运算和坐标系变换的关系串起来了。

几何体建模知识体系 基本几何体 球体 立方体 圆柱 圆锥 布尔运算 并集 差集 交集 坐标系变换 平移 旋转 缩放 复杂光学元件模型 核心流程 选择基本几何体 → 设置参数 → 布尔运算组合 → 坐标系变换定位 每一步都可以回溯修改,建议按顺序操作

3.5 实战小技巧:组合使用

理论说完了,咱们来点实际的。假设你要做一个直角棱镜,怎么建?

直角棱镜说白了就是一个三棱柱。FRED没有直接的三棱柱,但我们可以用立方体切出来:

  1. 创建一个立方体,尺寸 10×10×10 mm。
  2. 创建一个平面(用立方体压扁也行),旋转45度,放在立方体对角位置。
  3. 用立方体减去这个平面,得到一半的立方体——就是三棱柱。
  4. 再调整位置和旋转,让斜面朝向光路方向。

你看,一个简单的布尔运算加坐标系变换,就能做出标准元件库里没有的形状。

注意:布尔运算后的几何体,表面会变成多个面片。如果你要做镀膜或表面属性设置,记得先 Unite Faces(合并面),不然每个小面片都要单独设置,非常麻烦。我早期做项目时就吃过这个亏,一个棱镜分了十几个面,一个一个设属性,设到崩溃。

3.6 本章小结

这一章我们讲了三个核心内容:

  • 基本几何体:球、立方体、圆柱、圆锥的创建和参数设置。
  • 布尔运算:并集、差集、交集,把简单形状组合成复杂元件。
  • 坐标系变换:平移、旋转、缩放,让几何体精确定位。

这些操作看起来简单,但它们是FRED建模的基石。你想想看,一个复杂的光学系统,比如激光雷达的发射接收光路,拆解开来,无非就是这些基本操作的叠加。把每一步做扎实了,后面的仿真才能顺利。