设计师和工程师通常需要软件来调整、修复和最终确定 3D 打印的 3D 模型。 幸运的是,手动网格编程的时代早已一去不复返了。
推荐:用 NSDT设计器 快速搭建可编程3D场景。
如今,有一系列专用工具可提供自动和手动 STL 修复功能。 自动向导足以满足大多数模型的需要,并修复小错误,例如孔和松动的外壳,但具有更严重错误的模型将需要独立的解决方案。
在本指南中,我们描述了修复 STL 文件的工作流程,并使用五种最好的 STL 修复软件工具逐步完成该过程,以完全修复模型以实现 3D 打印准备。
1、为什么要修复 STL 文件?
3D 设计师通常使用复杂的曲面制作方法构建模型。 这会产生由曲线和样条线定义的数学上“完美”的几何形状。 对于 3D 打印,表面被转换为网格格式,将几何形状描述为由连接的三角形面和顶点组成的云。
网格转换就像打碎一面完美光滑的镜子,然后将所有碎片粘合在一起,使其看起来像原来的一样。 如果做得不好,结果是模型具有各种边缘、孔洞和浮动部分,以及具有许多不属于该模型的相交三角形的区域。 如果做得好的话,3D 打印出来的是一个没有孔的流形网格,与原始设计没有区别。
一个有多种缺陷的 3D 模型网格
2、如何修复 STL 文件
典型的 STL 文件修复工作流程包含以下步骤:
- 自动修理。 STL 修复软件的向导将尝试修复所有主要错误,包括孔、分离壳和交叉点。
- 分离壳。 网格由连接的三角形的集合组成。 它可以包含多个连续的表面,理想情况下这些表面连接在一起,而过时的表面则需要移除。
- 堵住漏洞,弥合差距。 一些全面的 STL 修复程序允许不同的孔填充方式,例如平面、切线、直纹或自由形状。
- 解决重叠和交叉问题。 这通常需要重新计算网格的整个部分。
- 过滤掉双面、双顶点、反转法线和尖锐、狭窄的三角形。
- 缝合开放边缘和剩余孔。
- 通过删除和创建三角形进行手动修复。
- 重新划分网格以优化三角形计数。
- 导出为选定的网格格式。
最流行且存储友好的格式是 STL(StereoLiThography),我们将在本文中使用它。 我们建议以二进制格式保存 .STL 文件,因为它可以进一步减小文件大小。 正如我们的 Meshmixer 教程中所述,还有其他几种有用的格式,例如 AMF、Collada、OBJ 和 PLY,它们具有用于存储材质、颜色、渲染、3D 扫描和 3D 打印信息的特殊品质。
有多个软件包提供网格修复功能,例如 FreeCAD、SketchUp、3D Studio Max 和 Rhinoceros,以及在线服务,例如 Willit 3D Print、MakePrintable、3DPrinterOS、SculptGL 和 Shapeways。
3、 STL 模型修复工具对比
有效性 | 效率 | UI | 多功能性 | 网格重构 | 自动修复 | 顶级功能 | 适合谁? | 成本 | |
---|---|---|---|---|---|---|---|---|---|
Meshmixer | ★★★★ | ★★★ | ★★★★ | ★★★★ | ★★★★★ | ★★★★ | UI、网格重构和自动修复 | 3D 艺术家 | 免费 |
Netfabb | ★★★ | ★★★ | ★★★ | ★★★★ | ★★★ | ★★★ | 填充和支持 | 工程师 | 免费 (edu) |
Magics | ★★★ | ★★★ | ★★★ | ★★★★★ | ★★★★ | ★★★ | 人工修复 | 工程师 | 付费 |
Blender | ★★★★ | ★★ | ★★ | ★★★ | ★★★★ | ★ | CG艺术家 | 免费 | |
Meshlab | ★★ | ★ | ★ | ★★★★ | ★★★★★ | ★ | 3D 扫描 | 免费 |
根据我们的探索,最好的STL修复工具是Meshmixer。 它将用户友好的界面与修复复杂网格错误所需的所有选项结合在一起。 其额外的可能性和免费可用性使其成为毫无疑问的第一。 Meshmixer 也是编辑 STL 文件、重新雕刻整个截面以及优化和最终确定 3D 模型的有用工具。
Autodesk 的 Netfabb 因其先进的 3D 打印准备功能而面向工程师,因而脱颖而出。
Magics是一款专业的STL编辑器解决方案,提供种类繁多的STL文件修复功能,但通常需要更多的手动修复工作。 因此,Magics排在第三位。
虽然 Blender 更适合 3D 建模并且具有复杂的界面,但它仍然提供成功网格修复所需的大部分功能。
最后,Meshlab 是一款必备的轻量级网格查看器和编辑器,它通过先进的重新网格化脚本弥补了文件修复功能和用户友好性方面的不足。
以下部分使用衣帽钩的复杂 3D 模型对五种 STL 修复工具进行测试,该模型存在多个主要错误,包括孔、间隙、交叉点和浮动三角形。 挂钩需要与安装圆柱体结合以形成单个防水网。
请继续阅读,了解五个最佳 STL 修复程序的逐步修复过程。
4、Meshmixer
Meshmixer 是一款多功能且用户友好的网格编辑程序。 不仅可以优化三角形网格,还可以重新雕刻整个截面、风格化模型或向其添加有用的功能。
当将衣帽钩加载到 Meshmixer 并启动 Analysis → Inspector 时,我们发现它确实显示了所有网格错误。 在“着色器”下,选择 X 射线模式以获得更好的可见性。 在通过单击点指示器修复单个错误或运行“自动修复所有”之前,请确保选择正确的孔填充模式,这在大多数情况下足以完成工作。
使用检查器中的 X 射线着色器查看所有错误
另一种孔修复过程是选择孔周围的区域,然后使用弹出菜单中的编辑 → 擦除和填充 (F) 操作。 将类型设置为 Smooth MVC 会产生良好的连续填充。 编辑 → 制作实体或编辑 → 替换和填充是产生闭合网格的其他替代方法。 使用 RobustSmooth 雕刻笔进行额外的操作会将改进的区域完全融入模型中。
如果模型由单独的壳组成,请转到编辑 → 单独的壳并打开对象浏览器 (Ctrl + Shift + O)。 现在,一次逐渐选择两个 shell,然后从弹出窗口中单击“布尔并集”。 在新打开的子菜单中,“精确”或“最大质量”模式将保持两个对象之间的相交曲线,而“快速近似”则要快得多,通常就足够了。
如果布尔运算失败,则会产生两个红色对象。 在这种情况下,请调高“搜索深度”参数并降低“目标边缘比例”以增加成功机会。 检查使用相交曲线也可以提高质量。 如果所有其他方法都失败,在“编辑”→“变换”部分中将其中一个壳移动百分之几毫米即可解决问题。
自动修复全部将删除浮动部分并修补所有边界循环。 在这种情况下,我们想要手动连接其中一个支柱中的间隙。 这就是桥接工具的用武之地。它在直线部分上效果最好,并且由于这是圆形环路之间的间隙,因此最好分段修补。 选择“编辑”→“选择”并突出显示要连接的两侧的三角形。 然后从弹出菜单中点击“编辑”→“桥接”(Ctrl + B),并将“优化”参数设置得足够高,以实现平滑连接。 对间隙周边的几个区域重复“桥接”命令,然后使用检查器填充剩余的孔。 一个好的错误预防做法是在修复之前使用编辑 → 重新网格化,以增加和均匀化相关区域的三角剖分。
连接圆柱形间隙需要在 Meshmixer 中进行多次桥接、重新网格划分和孔填充操作。
5、Meshlab
Meshlab是一款专门从事与3D扫描数据相关的网格操作的软件套件,并提供许多重新三角测量和高级修复算法。 一个有用的方法是过滤器→重新划分网格、简化和构造→简化(二次边缘折叠抽取),因为它会根据目标面数重新计算网格。 检查平面简化将最好地保留平面。 另一种三角形缩减方法是过滤器→清理和修复→合并关闭顶点。
可以通过右键单击项目窗口中的零件并选择“在连接的组件中拆分”来检测浮动元素。 然后可以使用 Union 运算符将单独的 shell 单独删除或与 CSG 操作合并回来。
Meshlab 中的基本修复实用程序:闭孔、布尔运算和画笔选择。
为了桥接间隙,可以使用工具栏中的“在矩形区域中选择面”工具删除三角形组。 按住 Alt 键可将背面排除在选择之外,使用 Shift + Ctrl + D 取消选择。 要选择单个三角形,请单击工具栏上的 Z 绘画工具并选择红色画笔图标。 左键单击选择三角形,右键单击删除选择,然后点击删除删除三角形。
由于 Meshlab 没有实现任何三角形创建功能,因此我们驻留在 Filters → Remeshing, Simplification and Construction → Surface Reconstruction: VCG 下的曲面生成方法。 如果体素侧的设置足够低,测地权重和体积拉普拉斯迭代的值足够高,它将产生平滑的流形网格。 通常推荐使用此方法,而不是过滤器 → 重新划分网格、简化和构造 → 筛选泊松曲面重建。
另一种替代方法是生成 Alpha Complex,然后生成 Alpha Shape,有时可以使用正确的值。 对于重新网格化操作,Meshlab 在“过滤器”→“重新网格化、简化和构造”→“均匀网格重采样”下提供了一个体素化器,它会生成流形网格并提供可用于创建空心零件的偏移参数。
注意:在每次重要操作后保存网格! Meshlab 没有撤消功能,需要重新导入原始网格。
Meshlab 中的高级表面重建功能,有些功能比其他功能更成功
6、Magics
Materialise Magics 是一款专业的 3D 打印数据准备工具,允许对网格进行广泛的手动控制,包括壁厚分析、挖空、重新网格化、平滑、布尔和切割操作,以及修复孔、坏边缘和最复杂的三角形错误 。
修复错误通常是使用红十字图标下的修复向导完成的。 单击“转到建议步骤”将打开诊断表以检查要修复的不同错误。 对于大型网格,建议取消选中“重叠三角形”和“相交三角形”并首先修复主要错误。 选择“更新”后,再次单击“转到建议步骤”,然后单击“自动修复”——这将修复大多数错误。
如果修复向导无法修复不良边缘和重叠三角形,则“修复向导”菜单中“缝合”下的“缝合”功能通常在足够高的公差设置下非常有用。 对于剩余的重叠三角形,请再次运行“修复向导”或从“修复向导”菜单的“重叠”部分中选择“检测重叠”。 这将选择所有重叠,然后通过点击“删除标记”将其删除。 同样,可以在“三角形”→“检测相交”下对相交三角形执行此操作。 如果缝合剩余间隙未完成修复,“创建”按钮现在允许手动填充剩余间隙。 网格部分也可以在主菜单的“标记”选项卡下手动标记。 可以在“噪声壳”部分下删除浮动部分。 对于大型非平面孔,使用“修复向导”菜单中“孔”下的“自由形状”选项手动填充这些孔将获得最平滑的填充补片。 “直纹”选项允许指定孔所遵循的方向,在本例中,用于在手动创建一些桥接三角形后桥接花朵雄蕊之一中的圆柱形间隙。
有时修复向导不会合并网格中的不同壳。 要解决此问题,请右键单击主屏幕上“零件页面”→“零件列表”菜单中的零件,然后选择“外壳到零件”。 这会创建单独的网格,选中后可以使用“工具”→“布尔”(Ctrl + B) 功能组合这些网格。
Magics 中有机形状和圆柱形形状的高级孔填充功能
7、Blender
Blender 是一个免费的开源网格创建环境,包括 3D 建模、绑定、渲染和动画。 下部工具栏的“网格”菜单上的“编辑模式”下提供了多种 STL 修复功能。 CellBlender 附加组件提供了网格分析工具来检查流形并查找流形错误。 在开始任何修复脚本之前,请确保选择相关的网格或部分。
网格 → 法线 → 重新计算外部 (Ctrl + N) 可翻转任何具有反转法线的三角形。 检查顶部的信息窗格以获取结果,如果生成了四边形,可以使用“网格”→“面”→“三角化面”(Ctrl + T) 将它们转换为三角形。 网格→退化→溶解删除没有区域的边缘和面。 使用“网格”→“顶点”→“删除双点”删除重复的顶点以将边焊接在一起。
桥接、孔填充和布尔函数都在 Blender 中体现
在 Blender 中填充洞的最简单方法是首先使用 Select → Select Boundary Loop 选择边界循环,或使用 Select → Select All by Trait → Non Manifold (Shift + Ctrl + Alt + M) 选择所有非流形边缘,然后 点击“网格”→“面”→“制作边/面”(F) 或“网格”→“面”→“填充”(Alt + F) 以改进填充。 可以通过右键单击一条边或顶点、按住 Shift 键并右键单击第二个边或顶点并按 F 来创建单个三角形。
在编辑过程中,在由三个图标指示的“顶点选择”、“面选择”或“边选择”模式之间切换会很有帮助 在底部工具栏。 选择特定区域可以通过选择 → 圆形选择 © 来完成,其工作方式类似于画笔选择。 使用鼠标滚轮或数字加/减按钮更改画笔大小,按住 Shift 键取消选择。 网格→面→美化面(Shift + Alt + F)有时可以提高选定区域的网格质量。 可以使用 Alt + 右键单击来选择单个边界循环。 选择两个开放边界循环后,选择“网格”→“边”→“桥边循环”,两个区域将平滑连接。
选择“网格”→“顶点”→“分离”→“按松散零件”将在项目浏览器中为每个外壳创建一个对象。 这使得删除不需要的网格对象成为可能。 单独的外壳可以使用布尔修饰符连接在一起。 如果所有其他方法都失败,请实施重新网格修改器并将八叉树深度增加到 8 左右或直到结果令人满意。 要增加某些区域的壁厚,请转到“雕刻模式”并使用下部菜单“画笔”→“雕刻工具”中的“膨胀”画笔。
8、Netfabb
Autodesk Netfabb是一款先进的3D打印文件准备工具,其自动修复功能嵌入在Formlabs PreForm等软件中。 它提供标准版、高级版和终极版,其中前两个版本可免费用于教育用途。
Netfabb 提供额外的网格编辑程序,例如空心、自定义支撑构建以及 Lattice Assistant 和 Lattice Commander,它们对于开发轻量级零件有很大帮助。 Ultimate 版本提供了一个优化实用程序,可使用 FEA 分析根据施加的载荷对零件进行结构优化。
通过“文件”→“将 CAD 文件导入为网格”功能,不仅可以导入各种格式的网格模型,还可以导入来自 Catia、Siemens NX、SolidWorks、SolidEdge、Rhinoceros、ProE、Sketchup 的本机文件,并支持 STEP、IGES、SAT 和 Parasolid XT 文件。 要导入网格,请单击“文件”→“添加零件”,然后在对话框中选中“扩展修复”。 这可以解决导致 3D 打印文件的大多数错误。
在开始维修工作之前,分析零件很有用。 在任务栏中的“分析”图标下或在“零件”→“分析”→“新分析”→“添加零件”下右键单击零件后,可以快速检查壁厚。 右键单击零件,然后选择“分析”→“新测量”或从任务栏中选择标尺图标,该图标允许在特定点进行线性、半径、角度和壁厚测量。
高级 Netfabb 功能:壁厚分析和晶格结构
单击任务栏上的红色修复图标,打开“零件修复”部分。 如果自动修复脚本在导入时表现良好,则“状态”选项卡中的“网格已关闭”和“网格已定向”项目应检查为绿色。 在“操作”选项卡中,如果存在交叉点,可以进一步优化文件。 在“自相交”下,选择“检测”,然后选择“简单”(执行默认孔修复)、“缝合三角形”、“删除双三角形”、“删除简并面”或“拆分”,然后删除相交。 包裹零件表面的工作原理与体素化程序类似,并且仅留下歧管外蒙皮。 另外,请确保“Shells”选项卡下不存在噪声壳。
Netfabb 提供了先进的 STL 修复功能
当尝试弥补差距时,Netfabb 宁愿填补需要进一步手动修复的空洞。 点击主工具栏上的“选择曲面”图标并选择整个孔,然后单击“删除”。 或者,使用画笔选择工具并使用 Ctrl + 滚轮和加号/减号按钮来更改画笔大小和选择。 选择三角形后,选择“删除选定的三角形”图标,然后使用“添加三角形”按钮手动添加缺失的三角形以及一些桥接三角形。 修复 → 关闭所有孔操作将完成网格修复任务。 最后,我们可以选择使用“网格编辑”→“重新网格化”命令来细化网格,该命令根据目标边长度参数重新计算模型。 选中“维护边缘”选项以优化锐边周围的模型完整性。
原文链接:STL模型修复权威指南 — BimAnt