本文大致归纳了3D模型的常见错误,推荐了一些修复工具, 介绍了Meshmixer 的修复过程
***
# 3D模型修复心得
![image-20220707165706052](http://cdn.lcx-blog.top/img/image-20220707165706052.png)
当我们进行3D打印时,需要先将stl模型切片,形成gcode格式文件。如果stl源文件存在错误,有时也能强行切片,但是打印时会积累误差,造成错位或拉丝。有些切片软件自带修复功能,但是有一些复杂的错误仍然需要我们进行手动修复。
## 常见错误类型
首先需要定义,什么是错误?
在一个数字化的3D模型中往往存在3个元素,点(vertices),线(edges)和面(faces)。而为了3D打印,这些点线面必须组成[流型](https://zh.wikipedia.org/wiki/%E6%B5%81%E5%BD%A2)(manifold)的几何构型。一个3D文件是流型的,说明它的每一条线都和2个面相连接。而当非流型的几何构型出现在3D模型中,3D打印机在读入这个模型的时候就会出错。
常见错误有以下几种:
### 法向错误(bad orientation)
![](https://pic2.zhimg.com/80/v2-4ac105c30a704e7ff075c7d55000fc95_1440w.jpg)
三角形的顶点次序与三角形面片的法向量不满足右手规则。这主要是由于生成STL文件时顶点顺序的混乱导致外法向量计算错误。
### 孔洞(holes)
![](https://pic4.zhimg.com/80/v2-07f609d21f61ed75416f3d4a00beef83_1440w.jpg)
这主要是由于三角面片的丢失引起的。当CAD模型的表面有较大曲率的曲面相交时,在曲面相交部分会出现丢失三角面片而造成孔洞。
### 缝隙
![](https://pic4.zhimg.com/80/v2-1b1a61caf03782fb72c51cbb95a872f3_1440w.jpg)
通常由于顶点不重合引起的,缝隙和孔洞都可以看作是三角面片缺失产生的。
### 错误边界(bad edges)
![](https://pic3.zhimg.com/80/v2-403acaba77d156a443eb54845cd1ab62_1440w.jpg)
在STL格式中,每一个三角面片与周围的三角面片都应该保持良好的连接。如果某个连接处出了问题,这个边界称为错误边界,一组错误边界构成错误轮廓。
### 多壳体
![](https://www.cati.com/wp-content/uploads/2018/07/SOLIDWORKS-1530904801912.png)
壳体的定义是一组相互正确连接的三角形的有限集合。一个正确的STL模型通常只有一个壳。存在多个壳体通常是由于零件块造型时没有进行布尔运算,结构与结构之间存在分割面引起的。
STL文件可能存在由非常少的面片组成、表面积和体积为零的干扰壳体。这些壳体没有几何意义,可以直接删除。
### 重叠或相交(Overlap,intersections)
![](https://pic2.zhimg.com/80/v2-538456ca95bed896bdb320a37ddb5655_1440w.jpg)
重叠面错误主要是由三角形顶点计算时舍入误差造成的,由于三角形的顶点在3D空间中以浮点数表示的,如果圆整误差范围较大,就会导致面片的重叠或者分离。
[这里](https://zhuanlan.zhihu.com/p/34529988)是magics对上述错误的表示和错误模型示例
## 常用修复软件
### Meshmixer
Autodesk的免费产品,目前已不再更新维护。可以错误可视化,手动修复错误或者自动修复。
导出的stl可以是ascii形式,也可以是binary形式。
不需要许可证,[下载](https://www.meshmixer.com/download.html)即用。
这是一些教程:
[哔哩哔哩](https://www.bilibili.com/video/BV1ty4y1i7Y8?spm_id_from=333.999.0.0)
[YouTube官方教程](https://www.youtube.com/watch?v=C9VDKb3W4qA)
### Magics
功能强大,不止修复,还可以生成支撑,进行很多格式的切片。
需要付费,但有30天免费试用。[官网](https://www.materialise.com/zh-hans/software/magics)
### 3DBuilder
微软的软件,应用商店可下。没法错误可视化,只能自动修复。
有一些游离小面片,不知道它是删除了还是修复了,修复不能可视化充满不确定。
只能导出binary形式stl文件。
## Meshmixer 修复过程
1. 导入模型
为了方便观察可以给物体赋透明shader
![image-20220707172027657](http://cdn.lcx-blog.top/img/image-20220707172027657.png)
2. 选择模型进行检查
![image-20220707171155015](http://cdn.lcx-blog.top/img/image-20220707171155015.png)
蓝色球体表示网格中有一个孔。红色球体表示该区域是非流形的。洋红色球体指出相对于整个网格面积较小的断开组件。
3. 修复
- 自动修复:
- 左键单击缺陷手柄(小球体)以尝试自动修复缺陷。如果球体变灰,则修复失败。
- 右键单击缺陷手柄以选择缺陷区域(这将退出Inspector)。
- 单击ActionBar中的AutoRepair All按钮,尝试自动修复所有剩余缺陷
- 手动修复:
有些大孔洞填充,多壳体删除,只能手动来了
参见[教程](https://www.bilibili.com/video/BV1XV411b7rf?spm_id_from=333.337.search-card.all.click&vd_source=2e6cafc318ed5580cf83747d637dc461)
## 参考资料
> https://zhuanlan.zhihu.com/p/34529988
3D模型修复心得