本发明属于增材制造、3d打印技术领域,具体涉及一种用于3dp增材制造的快速切片方法。
背景技术:
在3d打印中,3dp打印工艺(立体喷墨打印法)的切层是像素点阵,分辨率一般是可调的。
目前现有3dp切片技术中,一般不区分边界部分和内部填充部分。然而,切层的边界部分和内部填充部分的打印工艺有时是不同的。比如边界部分需要喷射得更细致,而内部填充部分可以喷射的粗糙一些,以提高打印速度;再比如在彩色3d打印中,边界部分需要喷射彩色墨滴,而内部填充部分则喷射白色或无色墨滴。
因此,在切片算法中需要将边界部分区分出来,以做特定处理,切片的每一层是一个点阵,边界部分也是用点阵表示的,它有一定厚度,以离散像素表示。问题的难点在于,这个边界厚度在垂直于三维模型表面的法线方向上应保持一致,这使得计算复杂度增加,而三维模型数据量往往很大,三角面片数一般在几百兆,处理速度要求要很快。因此,急需提出一种能够区分三维模型的边界部分和内部填充部分,在边界部分保持各向厚度一致性的切片方法来解决上述问题。
技术实现要素:
本发明提出一种快速3dp切片算法,并在边界部分保持法向厚度一致性,计算复杂度与模型三角面片数为线性关系,仅为o(n*d),其中n为模型的总三角面片数,d为切片点阵分辨率。
一种快速3dp切片算法,具体步骤如下:
步骤1.筛选出跨过切层的三角形:
设模型边界需要厚度为thick毫米,在每个切层高度(level毫米),检查三维模型中每个三角形是否跨过level±thick(毫米)高度范围。即设三角形三个顶点为p1、p2、p3,如果p1、p2、p3的高度坐标同时大于level+thick或同时小于level-thick,则三角形没有跨过level±thick层面高度。否则是跨过,把该三角形加入切片运算集合r={待计算三角形}。
步骤2.计算每个三角形的矩形thick包络:
对集合r的每个三角形做xy平面投影,计算投影三角形的xy平面范围。即设三角形三个顶点为p1、p2、p3,它们在其x坐标最大值为xmax,在x坐标最小值为xmin,在y坐标最大值为ymax,在y坐标最小值为ymin,则三角形的xy平面投影范围是[xmin,xmax;ymin,ymax]。要求的三角形的矩形thick包络则是[xmin-thick,xmax+thick;ymin-thick,ymax+thick]矩形。
步骤3.计算法向厚度为thick的边界像素
对在level(毫米)高度得到的三维模型切片轮廓线,进行扫描线像素点填充,得到实体部分像素点集合v。对集合r的每个空间三角形a,计算其矩形thick包络的扫描线像素点填充,得到像素点集合s。对每一个既属于集合v(实体内部)又属于集合s(三角形a附近)的像素点p∈{v∩s},设空间坐标为p=[x,y,z],计算点p到空间三角形a所在平面的垂足q。如果满足下列条件之一,则该像素点是法向厚度为thick的边界像素点:
1)、点q在三角形a内,且p到a的点面距离d小于thick;
2)、点q在三角形a外,但在三角形a某个边的thick宽度矩形内,且p到该边的点边距离小于thick;
3)、点q在三角形a外,且q在a的三条边的thick宽度矩形外,但p到某顶点的距离。小于thick。
本发明的有益效果:
与现有流行的切片技术相比,本3dp切片方法能够区分三维模型的边界部分和内部填充部分,在边界部分保持法向厚度一致性。这有利于做彩色切片处理,或边界精细打印处理。算法快速完成切片,计算复杂度与模型三角面片数为线性关系,仅为o(n*d),其中n为模型的总三角面片数,d为切片点阵分辨率。
附图说明
图1:一个封闭模型实体,蓝色为边界部分,横线为切平面
图2:选出与level±thick水平切面相交的三角形,其中黑粗线部分为需要计算的跨过level±thick的三角形(侧影)集合r
图3:空间三角形在切平面投影的thick矩形包络,其中虚线矩形为该三角形的thick包络。
图4:对切平面上模型轮廓型进行像素行扫描,得到实体点阵
图5:像素点p到模型三角形a的垂足q在三角形区域内。
图6:垂足q在三角形区域外,但在边thick矩形范围内。
图7:垂足q在三角形区域外,且在边thick矩形范围外,但在顶点thick距离范围内。
图8:计算该空间三角形附近边界像素点的实例。
具体实施方式
下面结合附图说明对本发明提出的技术方案做进一步的描述。
一种快速3dp切片算法,具体步骤如下:
步骤1.筛选出跨过切层的三角形:
如图2所示,设模型边界需要厚度为thick毫米,在每个切层高度(level毫米),检查三维模型中每个三角形是否跨过level±thick(毫米)高度范围。即设三角形三个顶点为p1、p2、p3,如果p1、p2、p3的高度坐标同时大于level+thick或同时小于level-thick,则三角形没有跨过level±thick层面高度。否则是跨过,把该三角形加入切片运算集合r={待计算三角形}。图2中黑粗线部分为需要计算的三角形侧影集合r。
步骤2.计算每个三角形的矩形thick包络
对集合r的每个三角形做xy平面投影,计算投影三角形的xy平面范围。即设三角形三个顶点为p1、p2、p3,它们在其x坐标最大值为xmax,在x坐标最小值为xmin,在y坐标最大值为ymax,在y坐标最小值为ymin,则三角形的xy平面投影范围是[xmin,xmax;ymin,ymax]。要求的三角形的矩形thick包络则是[xmin-thick,xmax+thick;ymin-thick,ymax+thick]矩形。图3为计算该空间三角形在切平面投影的thick矩形包络示意图。
步骤3.计算厚度为thick的边界像素
如图4所示,对在level(毫米)高度得到的三维模型切片轮廓线,进行扫描线像素点填充,得到实体部分像素点集合v。对集合r的每个空间三角形a,计算其矩形thick包络的扫描线像素点填充,得到像素点集合s。对每一个既属于集合v(实体内部)又属于集合s(三角形a附近)的像素点p∈{v∩s},设空间坐标为p=[x,y,z],计算点p到空间三角形a所在平面的垂足q。如果满足下列条件之一,则该像素点是法向厚度为thick的边界像素点:
1)、如图5所示,点q在三角形a内,且p到a的点面距离d小于thick;
2)、如图6所示,点q在三角形a外,但在三角形a某个边的thick宽度矩形内,且p到该边的点边距离小于thick;
3)、如图7所示,点q在三角形a外,且q在a的三条边的thick宽度矩形外,但p到某顶点的距离小于thick。
如图8所示,图中阴影部分为三维模型的thick厚度的边界(这里边界是外壳向内部增加的厚度),等间距水平线为切片高度,加粗的黑线部分表示一个三角形的侧面视图,浅粗线表示这个三角形投影到水平xy平面后,增加thick宽度的thick矩形包络的侧面视图。thick矩形包络上的像素点,都是有可能的边界像素点。