熔融挤压(FDM)型3D打印机通常以热塑性塑料作为材料,如ABS、PLA、尼龙等塑料为打印材料。这类型的打印机因为价格便宜也被广泛使用,因此也称为桌面打印机。打印时丝状材料在打印喷嘴内被加热至熔融状态。打印喷嘴沿物体模型分层切片后的截面轮廓线的填充轨迹运动,同时喷出熔融的材料使其附着在物体模型上。之后材料快速冷却凝固,并与下方的模型融合构成最终的形状。打印机在打印基台上,由模型的底部开始,自下而上逐层打印至顶部。由于FDM型3D打印工艺逐层堆叠熔融材料的原理,导致在打印物体模型的悬空部位时,被挤出的塑料丝悬在空中而无法与模型融合。因此在生成打印轨迹前还需检测物体模型的悬空部位,并在下方添加适当的支撑结构。添加的支撑结构在3D打印的过程中被当作物体模型的一部分。这样在打印原悬空部分时塑料丝可与下方的支撑结构有效结合。设计不良的支撑结构会增加大量的材料损耗,以及在打印结束后需要被人为剥离,这还可能造成物体模型表面损伤。因此设计支撑结构时,应该在确保物体模型可打印性的前提下,尽可能地最小化支撑结构的总体积,以及其与物体模型表面接触的面积。
如何设计出合理地支撑结构是采用FDM工艺的3D打印设备需要面对的一个重要问题。生成支撑结构的算法应该在保证物体模型可打印性的前提下进行节材优化。因此可以归纳为两个主要问题:(1)如何寻找需要添加支撑的部位?(2)如何生成支撑结构?
针对第一个问题,关键是保证物体模型中所有需要添加支撑的区域都能被检测出。针对第二个问题,生成的支撑结构应保证能够为物体模型提供有效支撑。此外,支撑结构在打印成功后应该较容易被去除,从而降低对物体模型表面的损伤。
现在已有许多方法处理这两个问题。在寻找需支撑区域的方面,常用的方法为选取三维物体模型中所有外法向朝下且与水平面夹角较小的面作为需要添加支撑的部位。现有的许多切片引擎如Ultimater的Cura,Autodesk的MeshMixer等均采用这种方法。另一种方法是对两个连续切片层作布尔差分。
Eggers与Renap通过向下采样选取了一个子集。在添加支撑结构方面,一种做法是在需要支撑的表面下方生成与打印基台或模型本身相接的支杆状支撑。另一种方法是在所需支撑的表面下方生成树状结构支撑,目前MeshMixer与Vanek等均使用了这种方法。本文算法对添加支撑问题的处理是基于树状支撑的方法的改进。
树状支撑的输入为表示其叶子节点的点集。因此为三角面片与边添加支撑还需要将其转化为点集。以三角面片为例,转化的方式为将其投影至打印基台平面,并通过扫描线算法对其均匀采样。获取打印基台平面上的采样点后,再分别将其映射回原面片,映射的方法为以采样点与打印方向做一条射线,其与原面片的交点即为最终的支撑点。采样的精度与打印机的最小可打印精度有关,根据经验以最小可打印精度的两倍作为采样间距。