3. 几何建模基础(一):坐标系与单位、基本几何体创建、布尔运算

各位好,欢迎来到几何建模的第一课。

说实话,FRED 里最让我觉得踏实的,就是它的建模方式。你想想看,光学仿真说到底,就是光线跟几何体打交道。几何体建得对不对,直接决定了仿真靠不靠谱。我见过太多人,散射参数设得花里胡哨,结果一跑发现光线根本没打到正确的位置——问题就出在建模上。

这一章,咱们先把地基打牢。坐标系、单位、基本几何体、布尔运算,这四个东西搞明白了,后面建什么模型都不慌。

3.1 坐标系与单位:别让单位坑了你

FRED 默认使用右手坐标系。什么意思?你伸出右手,拇指指向 X 轴,食指指向 Y 轴,中指指向 Z 轴——这就是 FRED 的世界。

我个人习惯,在开始任何项目前,第一件事就是确认单位。FRED 支持毫米、厘米、米、英寸。默认是毫米。

⚠️ 我曾经踩过一个坑:有一次做投影系统仿真,客户给的机械图纸是英寸,我直接导入 STP 文件,没改单位。结果所有透镜尺寸放大了 25.4 倍,光线路径全乱套。排查了整整两天才发现是单位问题。从那以后,我每次新建文件,第一件事就是去 Edit → Preferences → Units 看一眼单位设置。

单位设置路径:

  • Edit → Preferences → Units
  • 下拉选择:Millimeters / Centimeters / Meters / Inches
  • 建议:光学系统用毫米,照明系统用米,机械配合用英寸

坐标系方面,FRED 支持全局坐标系和局部坐标系。全局坐标系是固定的,局部坐标系可以跟着物体走。你想想看,一个透镜绕着光轴旋转,如果每次都去改全局坐标,那得多麻烦?用局部坐标系,旋转就是改个角度的事。

坐标系类型 特点 常用场景
全局坐标系 (GCS) 固定不动,原点在 (0,0,0) 系统基准、探测器位置
局部坐标系 (LCS) 随物体移动、旋转 透镜组、反射镜、阵列

3.2 基本几何体创建:球体、立方体、圆柱体

FRED 的基本几何体创建,在 Create → Geometry → Primitive 菜单下。我刚开始用的时候,觉得这东西跟 CAD 差不多,后来才发现,FRED 的几何体是为光学仿真优化的——它自带光学属性接口,可以直接赋散射、镀膜、材料。

3.2.1 球体 (Sphere)

创建球体需要两个参数:半径和中心位置。FRED 默认球心在原点。

参数面板:

  • Radius:球体半径
  • Center (X, Y, Z):球心坐标
  • Segments:网格细分数量(影响渲染精度,不影响光线追迹)
💡 小技巧:如果你只是做散射仿真,球体的 Segments 设成 32 就够了。设太高只会增加内存占用,对光线追迹结果没影响。我一般设 24-48 之间。

3.2.2 立方体 (Box)

立方体创建需要三个方向的尺寸:Width (X)、Height (Y)、Depth (Z)。

参数面板:

  • Width (X):X 方向长度
  • Height (Y):Y 方向长度
  • Depth (Z):Z 方向长度
  • Center:几何中心位置

嗯,这里要注意:FRED 的立方体默认中心在几何中心,不是角点。如果你需要角点对齐,得自己算偏移量。

3.2.3 圆柱体 (Cylinder)

圆柱体在光学系统里用得最多——透镜、光阑、镜筒,基本都是圆柱体。

参数面板:

  • Radius:底面半径
  • Height:圆柱高度
  • Axis:轴向(X / Y / Z)
  • Center:底面中心位置

创建代码示例(FRED Script):

# 创建一个半径 25mm,高度 10mm 的圆柱体,轴向沿 Z
CreateCylinder
  Radius = 25.0
  Height = 10.0
  Axis = Z
  Center = (0, 0, 0)
  Name = "Lens_Body"

3.3 布尔运算:把简单几何体变成复杂形状

说实话,基本几何体太简单了。实际光学系统里,哪有那么规整的形状?透镜有倒角,镜筒有台阶,光阑有异形孔——这些都得靠布尔运算。

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

  • Union(并集):两个几何体合并成一个
  • Subtraction(差集):从一个几何体里挖掉另一个
  • Intersection(交集):只保留两个几何体重叠的部分

我举个例子。你要做一个带中心孔的透镜:

  1. 先创建一个圆柱体(透镜主体)
  2. 再创建一个小的圆柱体(孔)
  3. 用 Subtraction,从大圆柱体里挖掉小圆柱体

搞定。就这么简单。

🔧 实际项目经验:我做激光雷达接收镜头时,需要做一个环形光阑。用布尔运算,先做一个大圆盘,再做一个稍小的圆盘,用 Subtraction 挖掉中间部分,就得到了一个完美的环形光阑。整个过程不到 30 秒。

布尔运算的注意事项:

  • 两个几何体必须有重叠区域,否则运算无效
  • 运算后生成的新几何体会保留第一个几何体的光学属性
  • 布尔运算不可逆——建议先复制一份原始几何体再操作
⚠️ 我曾经犯过的错:有一次做复杂镜筒建模,连续做了 5 次布尔运算,结果发现中间某一步做错了。因为布尔运算不可逆,我只能全部删掉重来。现在我的习惯是:每做一步布尔运算,就保存一个版本。这样出错了也能回退。

3.4 知识结构总览

这一章的内容,我用一张图帮你理清楚:

几何建模基础(一)知识结构 几何建模基础 坐标系与单位 基本几何体 布尔运算 实践技巧 右手坐标系 全局/局部坐标系 单位设置 球体 立方体 圆柱体 并集 (Union) 差集 (Subtraction) 交集 (Intersection) 版本保存 网格细分控制 光学属性继承 核心原则:先确认单位 → 再建基本体 → 布尔运算组合 → 保存版本 每一步都不可逆,养成保存习惯能省去大量返工时间

3.5 本章小结

这一章的内容,说白了就是三件事:

  • 坐标系和单位——建模范式的基础,错了后面全错
  • 基本几何体——球体、立方体、圆柱体,三个就够了
  • 布尔运算——把简单变复杂的魔法

我个人觉得,FRED 建模最舒服的地方在于,它不像专业 CAD 那么复杂,但又足够灵活。你不需要学几百个命令,把这三个基本几何体和布尔运算玩熟了,80% 的光学结构都能建出来。