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的布尔运算默认以第一个选中物体为主。
举个例子,做一个简单的平凸透镜:
- 创建一个球体,半径设为10 mm。
- 创建一个立方体,尺寸设为20×20×5 mm,位置放在球体上方,让球体下半部分露出来。
- 选中球体,再选中立方体,执行 Subtraction。
- 结果就是一个半球体,底面是平的——这就是平凸透镜的雏形。
你看,是不是很简单?但实际项目中,你可能需要做几十次布尔运算。我的建议是:每做一次布尔运算,就给新生成的几何体重命名。不然到后面,你看到一堆“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没有直接的三棱柱,但我们可以用立方体切出来:
- 创建一个立方体,尺寸 10×10×10 mm。
- 创建一个平面(用立方体压扁也行),旋转45度,放在立方体对角位置。
- 用立方体减去这个平面,得到一半的立方体——就是三棱柱。
- 再调整位置和旋转,让斜面朝向光路方向。
你看,一个简单的布尔运算加坐标系变换,就能做出标准元件库里没有的形状。
注意:布尔运算后的几何体,表面会变成多个面片。如果你要做镀膜或表面属性设置,记得先 Unite Faces(合并面),不然每个小面片都要单独设置,非常麻烦。我早期做项目时就吃过这个亏,一个棱镜分了十几个面,一个一个设属性,设到崩溃。
3.6 本章小结
这一章我们讲了三个核心内容:
- 基本几何体:球、立方体、圆柱、圆锥的创建和参数设置。
- 布尔运算:并集、差集、交集,把简单形状组合成复杂元件。
- 坐标系变换:平移、旋转、缩放,让几何体精确定位。
这些操作看起来简单,但它们是FRED建模的基石。你想想看,一个复杂的光学系统,比如激光雷达的发射接收光路,拆解开来,无非就是这些基本操作的叠加。把每一步做扎实了,后面的仿真才能顺利。