形状数据库教程(第 A 部分):从图像创建 3D 形状
OghmaNano 中的形状数据库是一个可在不同仿真之间复用的几何对象存储库。 它尤其适用于那些难以用简单解析函数描述的形状——例如来自 AFM 的表面粗糙度、由 2D 图像生成的光子晶体, 或导入的 CAD 几何体。形状一旦在此构建并存储,就可以附加到 Optical Workbench 中的对象上, 用于光线追迹、FDTD 或其他光学仿真。
在第一部分中,你将从内置的 2D 图案创建一个简单的演示结构,将其转换为 3D 三角网格, 并探索网格分辨率如何同时影响视觉质量与仿真的计算成本。
步骤 1:打开形状数据库
从任意仿真开始(例如 薄膜反射 光线追迹演示)。 点击功能区中的 Databases 选项卡,然后点击 Shape database,如 ?? 所示高亮。这样会打开形状数据库窗口 (??)。
afm_image、photonic_xtal、saw_wave、
teapot)。你可以在多个仿真中复用它们。
步骤 2:创建新的形状条目
要创建新的形状,在形状数据库窗口的空白区域右键单击并从右键菜单中选择 New → New shape,如 ?? 所示。
会弹出一个对话框要求输入新形状名称。输入
demo 并点击 OK。随后会打开该新形状的
形状编辑器窗口
(??)。
步骤 3:查看默认的形状编辑器视图
形状编辑器左侧显示 3D 视图,右侧显示 2D 图像 (??)。 默认的 2D 图案是在黑色背景上的白色圆点阵列,代表光子晶体或柱阵列。初始时,3D 视图中只有一张平面网格。
demo 的初始形状编辑器视图。
右侧面板显示默认的 2D 图案;左侧面板将在网格构建后显示 3D 网格。
形状编辑器顶部的工具栏包含本教程的三个关键按钮:
- Show Mesh – 切换现有 3D 网格的显示。
- Edit Mesh – 打开网格配置窗口。
- Build Mesh – 将 2D 图像转换为 3D 三角网格。
步骤 4:构建你的第一个网格
点击 Build Mesh(蓝色三角形图标)。右侧图案会被转换为左侧视图中的 3D 柱阵列, 并生成一个三角形表面网格来近似 2D 形状 (??)。
使用鼠标旋转并缩放 3D 视图。你很可能会注意到柱体非常棱角分明——更像三角形而不是圆形。 这是因为初始网格分辨率被刻意设置得较低,仅使用适量的三角形以保持网格轻量。
步骤 5:细化网格分辨率
为了提高形状的保真度,点击形状编辑器工具栏中的 Edit Mesh。 这会打开Configure mesh窗口 (??)。
重要字段包括:
- x-triangles / y-triangles: 用于在每个方向上播种网格的三角形数量 (例如 20 × 20 或 40 × 40)。
- Method: 网格生成策略。默认的
Node reduce方法从规则网格开始,然后移除那些不需要来表示形状的三角形。 - Min allowable angle: 质量约束,用于防止出现极端细长的三角形。
尝试将 x-triangles 和 y-triangles 的分辨率都从 20 提高到 40, 然后点击 OK 关闭对话框并再次点击 Build Mesh。 重复这个过程几次,尝试 40 × 40 或 50 × 50 等数值,并观察 3D 柱体形状如何变化。
请记住,使用 Node reduce 方法时,算法先从完整的三角形网格开始,
然后剔除那些对表示形状不重要的三角形。因此最终网格包含的三角形数量
会比原始的 x-triangles × y-triangles 乘积所暗示的数量更少。
步骤 6:对比细化后的网格
在提高分辨率并重建后,你应该会得到与 ?? 类似的网格。此时柱体看起来会更接近圆形,三角形棱面更小且分布更均匀。
步骤 7:选择网格生成方法
对于许多图案,Node reduce 算法表现良好,因为它会移除冗余三角形并保持形状紧凑。
然而,对于某些表面——尤其是 AFM 高度图或其他粗糙表面——丢弃三角形可能导致细节丢失。
在这种情况下,你可能更倾向于使用不减少节点数的方法
(例如在 Method 下拉菜单中可用的 no-reduction 或 uniform grid 选项)。
这会在整个图像上保留规则的三角形网格。
无论选择哪种方法,都需要在准确性与速度之间取得平衡。 每增加一个三角形,都会增加后续光学仿真的成本。实际上,运行时间往往会随总三角形数量以快于线性的速度增长,因此:
- 使用仍能捕捉形状关键特征的最小网格。
- 避免为了“以防万一”而使用极其精细的网格——它们可能会显著拖慢光线追迹或 FDTD 计算。
- 在数据库中同时保留复杂形状的“高分辨率”和“轻量级”版本,以便在每项研究中选择合适的版本。
👉 下一步:继续阅读 第 B 部分 (占位符),学习如何将外部 CAD 文件导入形状数据库,并将其转换为适用于 OghmaNano 仿真的网格。