Home Examples Screenshots User manual Bluesky logo YouTube 中文
OghmaNano Simulate organic/Perovskite Solar Cells, OFETs, and OLEDs DOWNLOAD

形状数据库

形状数据库充当通用的本地 3D CAD 模型存储库。形状数据库中的条目以 3D 网格(或形状)的形式存储,并且可以表示例如通过 AFM 测量获得的材料粗糙表面、大面积器件上的复杂六边形 接触(见 ??),或光子晶体的周期性柱阵列。形状使用三角网格定义。形状数据库窗口包含用于从 2D 图像生成新的 3D CAD 模型的工具,以及从 Wavefront OBJ 文件导入外部网格的功能。关键的是,该数据库中的所有形状都会持久化存储在磁盘上,旨在表示比 网格编辑器 生成的几何体更复杂的几何结构;网格编辑器侧重于盒体、管体和球体等简单几何基本体(见 CAD 网格)。

访问数据库

形状存储在形状数据库中,可通过 数据库 功能区访问,方法是 点击 形状 图标(见 ??)。点击 形状数据库 图标会打开形状数据库窗口 (??)。

显示形状图标的数据库功能区。
数据库 功能区打开形状数据库。
列出可用形状的形状数据库窗口。
形状数据库窗口,列出可用的形状。

尝试打开一些形状来检查它们。您将看到一个类似于 ?? 的窗口。 该示例显示了太阳能电池的蜂窝状接触结构。左侧是 3D 形状,右侧 是用于生成它的 2D 图像。在 2D 图像上叠加的是 3D 网格的 zx 投影。您可以通过切换顶部功能区中的 显示网格 按钮来打开或关闭该 2D 网格。

从 2D PNG 图像生成的形状示例。
从 2D PNG 图像生成的示例形状。左侧显示 3D 六边形接触结构,右侧显示 原始 2D 图像,并叠加网格的 zx 投影。

生成网格

打开形状数据库窗口后,您可以查看并编辑任何已存储的形状。数据库中的许多形状最初 是使用内置的离散化工具从 2D 图像创建的。本节解释该过程 如何工作。在形状数据库中打开 morphology/1。您将看到一个类似于 ?? 的窗口。 左侧面板显示生成的 3D 三角网格,而右侧面板显示用于生成网格的原始 2D 图像。 文件 功能区中的 显示网格 按钮用于切换 2D 图像上的网格叠加,让您检查三角剖分如何跟随底层特征。

启用网格叠加的形貌形状。
启用网格叠加的形貌形状。
调整网格设置后的形貌形状。
更改网格设置并重建后的相同形貌。

要更改图像转换为 3D 网格的方式,请在 文件 功能区中点击 编辑网格。这将打开网格配置对话框 (??), 允许您控制离散化程度。

关键参数为:

网格配置窗口。
网格配置窗口。

例如,将 x-trianglesy-triangles 都减少到 40,然后 点击 构建网格。生成的网格将包含更少的三角形,因此细节更少, 但更便于快速处理。该减少会立即在 2D 与 3D 预览中可见。

Method 设置控制三角形如何生成:

切换到 No reduce 并重建网格将用完整的、规则的 70 × 70 三角剖分替换自适应网格。这更精确,但也更占存储并更难仿真。网格中的每一个额外三角形都会在仿真中引入额外的计算负担。因此,构建网格的目标是用尽可能少的三角形来表示形状。如果您可以用相对较少的三角形描述整个表面,通常值得这样做。然而,对于非常规则的形状,应用 Node reduce 来降低三角形数量可能几乎没有收益;在这种情况下,一个简单的规则网格可能同样有效。实际中,您通常需要尝试不同的设置与方法,以找到在精度 与计算成本之间可接受平衡的网格。

2D 图像生成与滤波工具

除了从文件加载图像之外,形状编辑器还包含一组用于生成新的 2D 图案的工具,这些图案可以转换为 3D 网格。这些工具位于 2D 图像 功能区下,并包括用于生成多种结构的生成器:

每个生成器都提供其自身的配置选项,使您能够在转换为网格之前自定义几何形状。 这些图像作为高度图或掩膜,形状编辑器据此构建相应的 3D 结构。

使用 2D 图像工具生成的锯齿波。
使用 2D 图像工具生成的锯齿波图案。
应用阈值化后的锯齿波图像。
对同一锯齿波图像应用阈值滤波后的结果。

生成或加载图像之后,滤波器 功能区提供在 网格构建前对其进行修改的工具。这些包括:

这些工具允许您细化高度图、清理含噪图像,或在生成最终 三角网格之前对图案进行操作。图像生成器与滤波器的组合提供了一个灵活的工作流程, 可在 OghmaNano 内部直接创建复杂的、 自定义 3D 几何结构。

从 CAD 文件导入

除了从 2D 图像生成形状之外,形状编辑器还允许您使用 导入 CAD 文件 按钮导入外部 3D 网格,该按钮如 ?? 所示。 OghmaNano 支持 Wavefront OBJ 格式,它被广泛用于 存储三角化的表面网格。您还会在形状数据库中找到一个已导入 CAD 模型的示例:经典的 Utah Teapot,如 ?? 所示。 该网格展示了外部三角化模型在导入编辑器后会如何呈现。

形状编辑器中的导入 CAD 文件按钮。
用于加载外部 Wavefront OBJ 网格的 导入 CAD 文件 按钮。
在形状编辑器中渲染的已导入 Utah 茶壶 CAD 网格。
经典的 Utah Teapot,作为 CAD 网格导入。 这是使用 CAD 导入功能的示例。

导入 CAD 模型时,重要的是确保网格形成闭合表面。 闭合表面指每条边恰好属于两个三角形,从而产生完全密封的、 防漏(watertight)体积。开放表面、缺失面或裂缝会导致在判断点位于物体内部 或外部时产生歧义,使其不适用于仿真。

CAD 网格通常面向加工与制造而设计,而不是数值仿真。因此,它们往往 包含远多于光学或物理建模所需的三角形。大量三角形会显著 增加光线追踪和其他求解器中的计算时间。

为获得最佳性能,请确保导入的网格:

遵循这些指南将有助于确保导入的 CAD 几何体在 OghmaNano 中高效运行。

形状文件格式

形状必须形成一个完全封闭的体积。如果您使用内置的形状离散器,该条件会被 自动强制执行。然而,如果您手工构建形状,则必须确保该体积是闭合的。

每个形状目录包含以下文件:

形状目录中的文件
文件名 说明
\(data.json\) 形状的配置数据。
\(image\_original.png\) 导入图像的备份。
\(image\_out.png\) 最终处理后的图像。
\(image.png\) 导入图像的工作副本。
\(shape.inp\) 形状的离散化 3D 网格。

PNG 文件表示图像在不同处理阶段的状态。data.json 文件存储 形状编辑器的配置,而 shape.inp 文件包含物体的 3D 结构。

一个 shape.inp 文件示例见 ??。 该格式的设计使得 gnuplot 可以直接使用 splot 命令打开它。 每个三角形由四个 z, x, y 点描述:前三行定义该三角形,而 第四行重复第一个点,以便 gnuplot 能绘制闭合轮廓。文件中的三角形数量 由以 #y 开头的一行定义。

z, x, y 数值的绝对大小并不重要。一旦形状被加载,所有数值都会被 归一化,使形状的最小点位于 (0, 0, 0),最大点位于 (1, 1, 1)。当形状被插入到场景中时,它会再次被重归一化到器件中 所需的对象物理尺寸。

定义 3D 网格的 shape.inp 文件示例,使用 z, x, y 坐标。
shape.inp 文件示例。每个三角形由四个 z, x, y 点定义,并且可以 使用 gnuplot 直接可视化。

👉 下一步: 关于如何生成形状的完整示例,请参见关于 形状数据库以及如何从图像创建 3D 形状的教程,链接在 这里