几何体创建与布尔运算:从零搭出复杂透镜

做光学仿真这么多年,我见过不少新手一上来就找现成的透镜模型。其实TracePro最强大的地方,恰恰是让你自己「捏」出任意形状的光学元件。这一章,我们就聊聊基本几何体的创建和布尔运算——说白了,就是怎么用积木搭出你想要的透镜。

2.1 基本几何体:你的建模积木

TracePro里最常用的几何体就四种:方块、球体、圆柱、棱镜。每个都有自己的一套参数,我一个个说。

2.1.1 方块(Block)

方块是最基础的几何体。创建时你需要指定三个方向的尺寸:X、Y、Z。嗯,这里要注意——TracePro的坐标系默认Z轴是光轴方向,所以透镜的厚度一般放在Z方向。

我的习惯:建透镜时,先把方块的中心放在原点,这样后续旋转、平移都方便。
// 创建一个10mm x 10mm x 5mm的方块
Block.Create
  XHalfLength = 5
  YHalfLength = 5
  ZHalfLength = 2.5
  Position = (0, 0, 0)

2.1.2 球体(Sphere)

球体只需要一个参数:半径。但做透镜时,我们通常只用球体的一部分——比如切出一个球冠,那就是个球面透镜了。

我记得有一次做鱼眼镜头仿真,需要一个大曲率的前表面。直接用球体切,比画样条曲线快得多。

2.1.3 圆柱(Cylinder)

圆柱的参数是两个:半径和高度。它经常用来做透镜的「毛坯」——先拉一个圆柱,再在上面切出曲面。

几何体 关键参数 常见用途
方块 X/Y/Z半长 棱镜基底、矩形孔径
球体 半径 球面透镜、反射镜
圆柱 半径、高度 透镜毛坯、光阑
棱镜 顶点坐标、高度 分光棱镜、直角棱镜

2.1.4 棱镜(Prism)

棱镜稍微复杂一点。你需要定义底面的几个顶点,再给一个拉伸高度。我做过一个直角棱镜,底面就是三个点:(0,0,0)、(10,0,0)、(0,10,0),高度设成10mm,一个标准的直角棱镜就出来了。

踩过的坑:棱镜的顶点顺序必须是逆时针或顺时针一致,否则TracePro会报错。我曾经因为这个排查了半天,最后发现是手抖多打了一个点。

2.2 布尔运算:把积木粘起来、挖掉、取交集

单个几何体太简单了。真正的透镜,往往是几个几何体组合出来的。布尔运算就是干这个的——并集、交集、差集,三种操作,能搞定90%的透镜形状。

2.2.1 并集(Union)

并集就是把两个几何体「粘」在一起。比如一个双胶合透镜,两个不同材料的透镜贴合在一起,用并集就能把它们合成一个整体。

// 两个圆柱并成一个双胶合透镜毛坯
Cylinder1.Create Radius=20, Height=5
Cylinder2.Create Radius=20, Height=3
LensBlank = Cylinder1.Union(Cylinder2)

2.2.2 差集(Subtract)

差集是从一个几何体里「挖掉」另一个。这是做透镜曲面最常用的方法。

举个例子:你想做一个平凸透镜。先拉一个圆柱,再在上面放一个球体,位置稍微重叠一点。然后用圆柱减去球体——圆柱被球体「吃掉」的那部分,就是一个凹进去的曲面。反过来,用球体减去圆柱,得到的就是凸出来的曲面。

核心思路:透镜的曲面,本质上就是「圆柱减去球体」或「球体减去圆柱」的结果。你想想看,是不是这个道理?

2.2.3 交集(Intersect)

交集取的是两个几何体重叠的部分。这个用得少一些,但在做非球面透镜的「边缘切割」时很管用。比如你有一个非球面,但只需要中间直径20mm的部分,用一个圆柱和它取交集,就能切出圆形口径。

2.3 实战:用布尔运算搭一个双凸透镜

光说不练假把式。我们一步步来,搭一个最简单的双凸透镜。

  1. 创建毛坯:拉一个圆柱,半径20mm,高度10mm。
  2. 创建前表面球体:在圆柱上方放一个球体,球心在Z=30mm处,半径50mm。这样球体底部会切入圆柱约2.5mm。
  3. 创建后表面球体:在圆柱下方放一个球体,球心在Z=-30mm处,半径50mm。同样切入约2.5mm。
  4. 第一次差集:用圆柱减去前表面球体,得到前表面曲面。
  5. 第二次差集:用上一步的结果减去后表面球体,得到完整的双凸透镜。

你看,三步就搞定了。我刚开始学的时候,觉得布尔运算很抽象。后来做多了才发现,其实就是「切」和「粘」两个字。

避坑指南:布尔运算的顺序很重要。先减哪个、后减哪个,结果可能完全不同。我建议每次运算前,先在脑子里过一遍「谁被谁切」,或者用TracePro的预览功能看一眼。

2.4 知识结构图:几何体与布尔运算的关系

下面这张图,把几何体和布尔运算的关系串起来了。你可以看到,从基本几何体出发,经过三种布尔运算,最终能组合出各种复杂透镜。

几何体与布尔运算知识结构 方块 (Block) 球体 (Sphere) 圆柱 (Cylinder) 棱镜 (Prism) 并集 (Union) 差集 (Subtract) 交集 (Intersect) 双胶合透镜 球面/非球面透镜 分光棱镜 复杂透镜模型 从基本几何体出发,经过布尔运算组合,最终得到复杂透镜模型

2.5 几个实用技巧

  • 先合并再切:如果透镜由多个部分组成,先把它们并集成一个整体,再去做曲面切割。这样不容易出错。
  • 保留原始几何体:布尔运算前,复制一份原始几何体。万一切错了,不用从头画。
  • 用「检查几何体」功能:TracePro有个工具可以检查几何体是否闭合、有没有重叠面。每次布尔运算后跑一遍,能省很多调试时间。
再提醒一句:布尔运算不是万能的。如果两个几何体刚好「擦边」接触,TracePro可能会算不出结果。我的建议是让它们重叠至少0.01mm,留一点余量。

好了,几何体和布尔运算就聊到这儿。你可以在TracePro里打开一个空白文件,试着搭一个双凸透镜出来。动手做一遍,比看十遍教程都管用。