3D打印技术之切片引擎(7)

来源:互联网 发布:淘宝售中流程 编辑:程序博客网 时间:2024/05/01 19:12

【此系列文章基于熔融沉积( fused depostion modeling, FDM )成形工艺】
这一篇文章我说一下填充算法的同心填充(Concentric),同心填充Slice3r中有实现。但说实话,我还在那家公司的时候,公司并没有用它打印过模型,也不知道具体效果如何,但我在我的程序中实现它,是为了对其他的填充算法做一个补充,后来也发现它确实有价值。它的优势主要体现在它是完全依据模型的拓扑结构自然生成的,它不会对边界产生冲击,使得影响到最终的成型质量;沿着边界矢量环,环环向内推进,直到离散的填满整个层区。如下图(这是我在最初版本中做出的效果,虽然不是很理想,但是能反映出正确的趋势):
这里写图片描述
这里实现的话大致有两个思路:
A:利用前面讲的生成内边的技术类似的进行向内的填充;
B:先利用某一个映射把图形矢量离散化,然后利用图像处理技术进行填充,最后在把离散的图像逆映射回原来的矢量集合。
上面的图片显示的是B的效果。从理论上讲最佳方案应该是A方案,这是因为A非常规则,并且是零误差的。但是A的实现有难度。
A方案首先基于我在前面讲到的添加内边的技术,然后从外向内“层层推进”,这里要注意“裂变”,也就是在层层推进的过程中,环断开的情况,这时候需要依赖阈值自动裂开及闭合的算法,这里就不详述此算法。就如上图所展示的那样,最外层是一个环,里面就会出现多个环的情况。最终会收敛为很小的环(理论上是一个点),还要注意阈值,当环所围成的区域面积小于阈值时,需要把该环忽略。
B方案的特点是实现较为简单,易于维护。缺点是由于该算法是基于图像处理算法,要求对原图形进行离散化再插值拟合回去的两过程,会带来较大的误差。对一些含有较多直径很小的分支的切面矢量集合,会产生不可容忍的错误。原因是:

discretizefit

是一个依赖“逼近”的算法过程。
B方案也要实现这个“层层推进”,每一层都执行操作:
erosion(mathematicalmorphology)fit

直到收敛到内部面积小于A()的矢量环,则停止迭代,算法结束。这里要用到图像处理中的数学形态学——腐蚀。每次做腐蚀操作的时候,也可以对膨胀腐蚀任意组合(先腐蚀后膨胀,类似于开运算),根据项目的具体需求可以选择相关的实现方式。描述数学形态学的资料很多,实现代码也很多,这里就不对这一块进行详述。
最后要做的前面几讲中反复强调的,就是把每层的边界矢量首尾相接,以最小“间断律”的输出所有的边界矢量。当然,这在同心填充中处理起来很简单,只需要把“每一圈”的矢量简单的组织成首尾相接矢量环就可以了。然后以“圈”为单位从外向内打印就可以了。

参考文献:
[1] 多连通曲面离散点集的 3D 三角划分算法研究 肖双九, 邱泽阳, 张树生, 杨海成(西北工业大学)

[2] 数字图像处理 冈萨雷斯著

转载请注明出处:http://blog.csdn.net/fourierfeng/article/details/49045401

0 0