徕卡三维激光扫描产品中文培训与文档中心

引导式工作流 | 水坝网格化(Meshing a Dam)

Guided Workflow | Meshing a Dam

中文 原文更新:— 查看英文原文 ↗

Dam_Result.jpg

说明

简介

软件中提供了多个网格化(meshing)命令。将这些命令组合起来,可以得到多种网格化策略。

这里我们以一座水坝的数据为例,其中包含若干需要特别处理的部位:

  • 水坝主体,是一大片非常光滑的表面。
  • 水坝两侧的一些岩石,代表相当粗糙的表面。
  • 坝壁侧边一些非常尖锐的棱边。
  • 坝顶上的一些文字刻字。

注意,样例中还有另一个基于"萨莫色雷斯胜利女神像"(巴黎卢浮宫的著名雕像)点云的例子,那是一份非常嘈杂、代表光滑表面的点云。因此对这尊雕像采用了另一种策略。

说明

练习概述

在本练习中,我们将学习如何对点云进行网格化。

  • 手动清理点云。
  • 先做一次网格以观察效果,据此决定采用何种策略。
  • 在某个细节层次上生成规则网格。
  • 填补一些孔洞与开放轮廓。
  • 把网格炸开(explode)成若干块。
  • 提升某些区域的网格精度。
  • 删除网格中的一些三角形。
  • 对棱边做局部重新网格化,使其看起来锐利。
  • 对嘈杂部位做局部平滑。
  • 从模型中提取特征。
  • 创建自由手绘剖面。
  • 沿一条曲线创建若干断面。
说明

本教程使用的文件是 DamRock.3dr(下载)。

清理点云

  • 用从右向左的矩形 + SHIFT 键选中屏幕上看到的所有点云(Cleaned Cloud 除外)。
  • 启动 Clean / Separate 命令。
  • 适当调整视图方向,沿要删除的点周围单击绘制轮廓。
  • 用垃圾桶图标移除这些点。
  • 如有必要,再选中另一组嘈杂点。
  • 清理完成后单击 OK。

要继续本练习,请使用已经清理好的 Cleaned Cloud。

Image1.PNG

图 1:使用 Clean / Separate 命令,可以在一个多边形范围内选点。可利用控制点把该多边形转换为盒体。

先做一次网格,看看效果

一般来说,打开一个新点云时,很难知道最佳的网格化参数是什么。当你启动 3D Mesh 命令时,软件会为你计算参数,从而不论点云大小,都能在 30 秒内得到结果。这些默认参数通常能给出不错的结果,但有时需要根据你的模型与预期加以调整。

  • 选中 Cleaned Cloud。
  • 启动 3D Mesh 命令。
  • 选择 Regular sampling,把默认参数改为 Average distance between points(平均点间距) 1.5 m。
  • 选择 Hole detection,Triangle size 保留计算出的值。
  • 单击 OK。第一次网格应在 5 秒内完成。
  • 网格出现在屏幕上后,右键单击选择 Flat 显示。平面渲染模式可去除显卡带来的伪影或平滑效果。
  • 注意,按 I 键可以翻转所选网格的法线方向。
  • 你可以把 Cleaned cloud 叠加显示在网格之上,以便更好地分析需要改进之处。

ex2 - 3DMesh.png

图 2:用默认参数做第一次网格,看看效果

现在你可以分析第一个结果了。粗看之下可以得出以下几点:

  1. 一些缺点区域被大三角形完全填满。这些孔洞约 2 m 宽。这就需要把 Hole detection, triangle size 填入小于 2 的值。
  2. 存在一些异常点,但数量非常少,因此之后可以方便地手动改正。
  3. 棱边的锐利程度不对。这需要更小的三角形。
  4. 刻字的细节在网格中没有体现;不过由于这些细节非常小,我们会在第二步中再纳入它们。

在某一细节层次上生成规则网格

上一次测试的结论是:网格应该用更小的三角形尺寸来做:

  • 执行撤销。
  • 再次选中 Cleaned Cloud。
  • 启动 3D Mesh 命令。
  • Average distance between points 输入 0.3 m,Triangle size 输入 1.2 m。
  • 单击 OK。

按 I 键,或用上下文菜单中的 Reverse,使坝体正面显示为亮面。

image2019-9-23_10-25-11.png

图 3:以 0.3 m 平均点间距对水坝做网格化。结果是一个由若干不相连部分构成的网格:复合网格(compound mesh)。

炸开复合网格并删除最小的部分

可以看到,生成的网格是一个"复合网格"。这意味着它是若干互不相连的表面的集合。现在我们把复合体炸开为独立网格。

查看对象浏览器,你应该会看到 Mesh Group 中包含许多块。所有这些块按尺寸排序:最大的一块在最前,最小的在最后。我们建议只保留前 4 块。选中第 5 块到最后的网格,把这些小块全部删除。

image2019-9-23_10-27-54.png

图 4:把网格炸开成互不相连的部分。你可以全选这些网格并赋予同一颜色,这样更容易看出哪个网格的法线颜色被翻转了。

现在我们可以把最大的四块重新编组到复合网格中。

  • 选中所有要放入复合体的网格。
  • 启动 Group Mesh 命令。
  • 对法线方向询问回答 Yes,这样所有部分将具有一致的法线朝向。
  • 你可以更改新复合网格的颜色。选中该网格,在上下文菜单中选择一种颜色。

填补一些孔洞

接下来我们填补一些孔洞。自动选择通常是选取"最小孔洞"来填补的最快方式。

  • 选中该网格。
  • 启动 Fill Holes 命令。
  • 选择 Select borders shorter than 选项(限制自由边界长度)。
  • 把 Length 设为 16 m(不要设更大的值,否则会选中开放轮廓)。
  • 选择 Add points inside holes、Curvature filling 与 Prevent self intersection 选项。
  • 你可以通过单击三维场景来增加或移除要填补的孔洞。
  • 单击 Preview,再单击 OK, Exit。

image2019-9-23_10-35-16.png

图 5:自动选中最小的孔洞,并以曲率连续性进行填补。

替换某些部位以移除异常区域

在某些区域(如图中所示),你应该会看到表面上的缺陷。这些异常区域可以很容易地移除。

  • 选中该网格。
  • 启动 Replace a Part 命令。
  • 绘制一条自由手绘轮廓,圈住要修正的区域。
  • 如果对这次修正不满意,单击 Undo。
  • 对所有要替换的区域重复此操作,然后单击 OK。

image2019-9-23_10-43-46.png

图 6:异常区域可以很容易地替换或局部平滑。

注意,在某些情况下也可以对整体形状做平滑以获得更好的外观,但此处我们不用该命令,因为我们的意图是保持测量点"原样"。

在开放轮廓之间建立衔接

模型中有些区域无法直接填补,因为它们是开放轮廓而不是孔洞。

  • 启动 Bridge,单击两条自由边以封闭该孔洞。
  • 激活 Sew,然后单击 OK, Exit。

随后,启动 Fill Holes,单击要填补的孔洞将其填上。

image2019-9-23_10-53-18.png

图 7:建立桥接(bridge)可以把大孔洞分隔成若干小孔洞,这样用 Mesh / Fill holes 命令以曲率连续性填补起来会更容易。

在两条轮廓之间建立衔接

  • 启动 Join 2 Contours,选中第一条轮廓。单击 Restrict 做一个范围限制。
  • 现在选中第二条轮廓,同样做范围限制。
  • 计算将自动启动。

随后,对所有部分选择 Sew,并单击 OK, Exit。

fig8_join2contours.png

图 8:也可以由两条轮廓(多段线或孔洞边界)创建网格。有时需要对轮廓做范围限制。

提升特定区域的网格精度

模型中包含一些尖锐的棱边区域,我们将提升这些区域的精度。

  • 选中该网格以及所有名称以 "SharpAngle" 开头的点云(按住 CTRL 键可选择多个元素)。

注意,这些点云是为准备本教程而事先拆分好的。 - 启动 Refine mesh from Cloud 命令。 - 选择 No noise reduction。 - 把 Deviation error 设为 0.03 m。 - 勾选 Distance 并设为 0.3 m。 - 选择 Extend free border,并把 Triangle size 设为 3.38478 m。 - 单击 OK, Exit。

image2019-9-23_12-24-57.png

图 9:"Refine Mesh" 命令可提升网格精度

我们还可以改善刻字区域。

  • 选中该网格。
  • 按住 CTRL 键,把名为 "writings" 的点云加入选择集。注意,该点云是为准备本教程而事先拆分好的。
  • 启动 Refine Mesh From Cloud 命令。
  • 选择 No noise reduction。
  • 把 Deviation error 设为 0 m。
  • 勾选 Distance 并设为 0.3 m。
  • 选择 Extend free border,并把 Triangle size 设为 0.53023 m。
  • 单击 OK, Exit。

image2019-9-23_11-25-54.png

图 10:Refine mesh 命令可提升网格精度。

注意,偏差误差为 0(零)意味着把点云中的所有点都加入。对于大体积或嘈杂的点云,这样做可能很危险。

对棱边做局部重新网格化,使其既锐利又光滑

在模型上,你应该会看到两类缺陷:本应锐利光滑的棱边呈锯齿状;光滑区域中出现了一些尖刺。平滑命令可以修好这两个问题。

  • 选中该网格。
  • 启动 Global Smoothing 命令。
  • 把强度滑块移到 Low,只应用重组(reorganization)。
  • 勾选 Improve curvature areas。
  • 再勾选 Smooth free borders。
  • 单击 Preview,再单击 OK, Exit。

image2019-9-23_11-55-22.png

图 11:使用平滑命令使棱边更锐利,并修正尖刺区域。

注意,默认情况下强度滑块位于中间,会对整个模型做全局平滑。在本例中全局平滑并非最合适的选择,因为模型中只有一部分(坝体结构)是光滑的。

从模型中提取特征

从这个模型出发,你可以非常轻松地提取一些特征,例如平面与圆柱。

  • 选中该网格。
  • 启动 Region Grow Cylinder 命令。
  • 单击 2 到 3 个点。
  • 在本例中,你需要通过指明圆柱轴线固定为 Z 轴来辅助提取。

你可以拖动提取容差来改变特征的容差。

image2019-9-23_12-4-11.png

图 12:Region Grow 命令可基于你的模型拟合出平面、圆柱等几何形状。

平面、圆柱与球面提取只需要一个或几个点。

圆柱创建完成后,你可以查看测量输出以创建一项测量。可以用 Edit Measures 编辑它,以选择要显示的信息。取决于测量的定位方式,你可以选中并移动该测量。

创建自由手绘剖面

接下来我们在坝顶稍下方创建一个剖面。

  • 选中你的模型。
  • 启动 Free Hand Section 命令。
  • 选择 Best plane 选项,并在模型上单击 3 个点,如图所示。
  • 单击 OK, Exit 确认结果。
  • 启动 Cut Polyline 命令。
  • 在水坝两端处的多段线上单击取点。

image2019-9-23_12-14-37.png

图 13:使用 Freehand sections 命令可以即时生成一个平面剖面。

剖面的主体部分将成为用于创建断面的参考线。其余部分可以全部删除。

沿曲线创建若干断面

接下来我们沿刚创建的路径生成若干断面。

  • 同时选中你的模型与这条多段线。
  • 启动 Sections along Curve 命令。
  • 选择 Regular。
  • 把 Step 设为 10 m,范围选择 All over。
  • 勾选 Searching Distance 并把值设为 50 m。

单击 Preview 与 OK 确认结果。

image2019-9-23_12-19-34.png

图 14:使用 Sections along curve 命令制作垂直于路径的平面断面。

这些断面有多种用途:

  • 用 DXF 或 IGES 格式导出给 CAD 软件。
  • 用 Constraint Mesh 命令把网格拆分为若干部分。
  • 在软件内部重建 CAD 模型。注意,CAD 重建需要 AEC 许可。