
简介
软件中提供了多个网格化命令。将这些命令组合起来,可以得到许多不同的网格化策略。
这里我们以一个立面的数据为例,它由于多种原因而难以处理:
- 点云嘈杂。
- 点云中有大量缺失部分(孔洞)。
- 形状细节非常丰富,但有些细节的尺度与点云噪声相当。
注意,还有另一个名为 Victory 的例子,基于"萨莫色雷斯胜利女神像"(巴黎卢浮宫的著名雕像)的点云,那是一份非常嘈杂、代表光滑表面的点云。因此对这尊雕像采用了另一种策略。
练习概述
在本练习中,我们将学习如何对点云进行网格化:
- 先做一次网格以观察效果,据此决定采用何种策略。
- 生成一个无孔洞的粗糙网格。
- 直接使用点云中的点进行细化。
- 通过插值新点进行细化。
- 重新计算尖锐棱边。
本教程使用的文件是 Facade.3dr(下载)。
先观察点云的状态。点分布并不均匀,且有大量缺失部分,但这些区域不应被解读为真实的孔洞。
先做一次网格,看看效果
一般来说,打开一个新点云时,很难知道网格化参数的理想取值是多少。当你进入 3D Mesh 命令时,软件会为你计算参数,从而不论点云大小,都能在 30 秒内得到结果。这些"默认"参数通常能给你不错的结果,但有时需要根据你的模型与预期加以调整。
- 用矩形选中屏幕上看到的所有点云。
- 启动 3D Mesh 命令。
- 选择 Regular sampling 与 Hole detection 选项并保留其默认值。
- 单击 Preview。第一次网格应在 30 秒内完成。用 OK 确认。
- 网格出现在屏幕上后,右键单击选择 Flat 表示方式,以便在不受显卡平滑例程伪影影响的情况下更好地观察结果。
现在你可以分析第一个结果了。粗看之下我们注意到:
- 在没有点的区域出现了许多孔洞。
- 柱顶的复杂形状难以网格化,并留下了孔洞。
- 细节层次不足。
- 表面相当多面(faceted),没有应有的平滑。
这次测试的结论是:
- 需要更大的三角形尺寸以避免孔洞。
- 在需要更高细节层次的局部需要更小的三角形。
问题在于这两个需求无法兼顾。因此我们无法在同一步骤中同时解决这两个问题。我们应该先生成一个无孔洞的粗糙网格,然后用原始点云对网格做局部细化。可以记住:先用具有所需拓扑结构的网格打底,再做细化,通常优于给一个精细网格补孔。

图 1:用默认参数做第一次网格,看看效果。
生成一个无孔洞的粗糙网格
上一次测试的结论是:应使用更大的三角形来创建网格,从一开始就避免孔洞。因此我们用原始点云重新做网格化,只是调整该过程的参数:
- 执行撤销(CTRL + Z)。
- 再次用矩形选中屏幕上看到的所有点云。
- 启动 3D Mesh 命令。
- 已选中 Regular Sampling 与 Hole detection 选项。
- 在 Average distance between points 中输入 0.2 m。软件会自动重新计算 Triangle size,所得值应足够大以填满所有孔洞。
- 单击 Preview 开始网格化。
- 用 OK 确认结果。
细节层次如预期地比上一次结果差,但最重要的是表面具有正确的拓扑结构(没有孔洞)。

图 2:以 0.2 m 的立面点间距做网格。结果没有孔洞,是开始细化的良好起点。
直接使用点云中的点进行细化
如我们所见,粗糙网格具有所需的拓扑结构,但细节层次非常差。因此我们将用原始点云中的点对它做局部细化:
- 选中网格与所有点云。
- 启动 Refine Mesh from Cloud 命令。
- 由于点云包含大量噪声点,我们要使用 Keep only best points 选项,并选择 5 mm 的误差。
- Distance 填 0.2 m,因为它是上一步所用的值。
- 选择 No free border modification。
- 单击 Preview。

图 3:直接使用点云中的点细化网格,以纳入后续步骤所需的全部细节。
结果非常多面、多尖刺且嘈杂;不过如果你使用下图中所示的"标准"平滑(Global Smoothing),你会看到大部分难看的噪声都能被去除。
遗憾的是,这种平滑容易使模型变形,并把尖锐棱边变成圆角。我们将放弃这个结果,因为还有更好的方法能得到既美观、又忠于数据的平滑网格。请取消(Cancel)此操作。

图 4:使用标准平滑能去除大部分噪声,但形状变形过大。
通过插值新点进行细化
由于所有细节都已存在于网格中(即使看起来嘈杂),我们现在通过寻找噪声厚度"中间"的最佳平滑曲面来优化这个网格。
- 选中网格与所有点云。
- 启动 Refine Mesh from Cloud Interpolation 命令。
- 选择 Refine with deviation error。
- Deviation error 输入 1 mm,Minimum triangle size 输入 5 mm。
- 生成的三角形不要超过 100 万个。
- 勾选 Distance 并输入 0.1 m。
- 勾选 Local reorganization。
- 选择 No free border modification。
- 单击 Preview。结果应比之前明显更好。
- 用 OK, Exit 确认结果。

图 5:插值新点可得到更好的结果。
重新计算柱角的尖锐棱边
有些柱角可能是圆角,而我们可以把这些角做得完全锐利。
- 启动 Region Grow Plane 命令。
- 单击最圆滑的那根柱子的平面。
- 把 Extraction tolerance(提取容差) 调整到约 2 mm。
- 单击 OK, Next。
- 单击提取柱子侧面的第二个平面。
- 单击 OK, Exit。
- 启动 Intersection 命令,单击这两个平面以得到交线。
- 选中该直线,启动 From Geometry 创建对应的多段线。选择 Deviation 选项。
- 同时选中该多段线与网格,启动 Sharp Edges 命令。
- Cleaning Distance 选择 0.1 m。
- 单击 Preview。
- 网格已被修改,以贴合所选的多段线。

图 6:重新计算尖锐棱边,使其贴合提取出的多段线。
重新计算拱顶上的尖锐棱边
- 选中该网格。
- 启动 Single Breaking Line 命令。
- 选择 Only concave or only convex,然后在拱顶的起点与终点处单击,如下图所示。
- 单击 OK, Exit。
- 现在,选中该多段线并启动 Smooth Polyline。
- 选择 Hard smooth,Smoothing intensity 设为 10。单击 OK。
- 同时选中该多段线与网格,启动 Sharp Edges 命令。
- Cleaning Distance 选择 0.1 m。
- 单击 Preview。
- 网格已被修改,以贴合所选的多段线。

图 7:使用特征线来提取拱顶的边界。

图 8:重建拱顶完美的尖锐棱边。