一种FDM三维打印垂直支撑模型的布尔操作方法与流程

文档序号:13497235阅读:368来源:国知局

本发明涉及三维打印相关技术领域,尤其是指一种fdm三维打印垂直支撑模型的布尔操作方法。



背景技术:

fdm是“fuseddepositionmodeling”的简写形式,即为熔融沉积成型。搞懂fdm成型技术,首先我们需要转变思维。通常2d打印是在一张纸上(一个平面上)完成打印,而3d打印是完成一个立体模型的打印。fdm,通俗来讲就是利用高温将材料融化成液态,通过打印头挤出后固化,最后在立体空间上排列形成立体实物。

由于fdm设备的特殊性,数据预处理部分需要为零件生成支撑部分以防止加工过程中防止坍塌。基于已有stl模型生成支持fdm设备的支撑数据是一个复杂的问题,其中涉及到数字几何处理很难处理的布尔操作、容差处理、鲁棒性处理等问题。一般网格模型的布尔操作,其操作对算法要求较高,这主要表现在容差、求交效率、奇异判断、拓扑重建等方面。



技术实现要素:

本发明是为了克服上述现有技术中存在的不足,提供了一种对算法要求较低的基于fdm三维打印垂直支撑模型的布尔操作方法。

为了实现上述目的,本发明采用以下技术方案:

一种fdm三维打印垂直支撑模型的布尔操作方法,具体包括如下步骤:

(1)基于stl网格模型对支撑区域进行搜索,扫成支撑轮廓;

(2)对支撑轮廓进行布尔差操作,具体为:对于一个待求支撑区域,看成一个从支撑区域向下投影而扫成的网格模型,这个模型在扫成中,遇到的零件表面为该支撑模型的底面,该底面和所有的侧面组成支撑模型;

(3)布尔并操作,具体为:基于布尔差操作所得到的模型为侧面垂直的支撑体,针对相互重合的侧面进行,其并的面实际为相互平行的竖直的面;

(4)重新网格化,将上述网格边界处的网格重新建立对应关系,从而保证得到的支撑模型为有效的二维流形,并输出支撑模型。

该方法实际先通过垂直支撑模型和物体模型的布尔差操作得到支撑体,然后将这些支撑体进行布尔并操作并通过重新网格化得到。该方法对布尔差和布尔并操作均加以优化,即考虑顶面向-z方向投影求交的求解方法,以得到合适的支撑模型,大大简化了对于算法的要求。

作为优选,在步骤(2)中,布尔差操作方法如下:

step1:支持顶面面片集合sa向底面投影,得到一个平面区域a,平面区域a为同平面三角形集合;

step2:计算落于平面区域a中的区域的三角面片集合w;

step3:对三角面片集合w中的三角形,计算其相互遮挡关系;

step4:组成支撑网格模型,其中:可见面片集合vs、平面区域a、支持顶面面片集合sa以及支持顶面面片集合sa向下投影的侧面hsa,组成新的支撑模型的实体;

step5:面片集合nhs、可见面片集合vs、平面区域a、支持顶面面片集合sa组成新的支撑网格的面片集合。

作为优选,在步骤step2中,三角面片集合w获取方法如下:

step2.1:对网格模型面片集合st-支持顶面面片集合sa中的每个三角形t,与平面区域a中的三角面片两两相交,其重叠区域为r,对重叠区域r进行三角化,得到三角形集合m;

step2.2:对三角形集合m中的每个三角面片,比较和支持顶面面片集合sa的关系,如果高于支持顶面面片集合sa中的面片,则放弃,否则进入三角面片集合w中。

作为优选,在步骤step3中,计算其相互遮挡关系的方法如下:

step3.1:记录已经就绪的可见面片集合为vs,其中:初始的可见面片集合vs=null;

step3.2:取三角面片集合w中的一个三角形t,计算三角形t和可见面片集合vs中的每个面片的关系,可见面片集合vs中的任意面片为ts,计算t和ts之差,得到的区域则为新的可见面,对这个可见面进行三角化,得到可见面片集合vs中的新的面片集合。

作为优选,在步骤step3.2中,t和ts的关系有两种:(1)t在ts之上;(2)ts在t之上;若t在ts之上,则ts将可能遮挡掉部分或者全部的t;若ts在t之上,则t将可能遮挡掉部分或者全部的ts。

作为优选,在步骤step4中,新的支撑模型的实体获取方法如下:

step4.1:将可见面片集合vs向底面投影,得到新的底面tvs,其中:新的底面tvs和侧面hsa相交;

step4.2:对新的底面tvs的面片集合建立邻接关系,显然每条边对应一个新的侧面;

step4.3:对新的侧面进行三角化,得到面片集合nhs。

作为优选,在步骤(3)中,布尔并操作方法如下:

(a)预判断,具体为:分别得到网格模型a、网格模型b的包围盒xa、包围盒xb,若包围盒xa、包围盒xb分离,则输出网格模型a、网格模型b,操作结束;否则继续下一步;

(b)将网格模型a、网格模型b的三角形两两求交,得到相交的线段,记录线段端点、相关的三角形以及对应的网格,即网格模型a或者网格模型b,而这些线段集合即为ls;

(c)将ls中的线段首尾相连,判断不同线段端点是否重合,若重合,则将其加入到将要形成的环,最终得到一系列首尾相连的环,这些环是网格模型的相交线,即为loopset;

(d)基于loopset,剔除相关网格模型的区域,最终得到新模型的三角形以及相交边界;

(e)重新三角化。

作为优选,在步骤(d)中,loopset中的环所包含的区域实际是网格模型a、网格模型b的公共重合部分,这些将在布尔并操作后称为体的内部,具体剔除方法为就三角形求交过程中的重合部分进行剔除,最终得到新模型的三角形以及相交边界。

作为优选,在步骤(e)中,对步骤(d)中得到的相交边界处进行重新三角化,得到有效的二维流形网格模型。

本发明的有益效果是:对布尔差和布尔并操作均加以优化,即考虑顶面向-z方向投影求交的求解方法,以得到合适的支撑模型,大大简化了对于算法的要求。

下面结合具体实施方式对本发明做进一步的描述。

一种fdm三维打印垂直支撑模型的布尔操作方法,具体包括如下步骤:

(1)基于stl网格模型对支撑区域进行搜索,扫成支撑轮廓;

(2)对支撑轮廓进行布尔差操作,具体为:对于一个待求支撑区域,看成一个从支撑区域向下投影而扫成的网格模型,这个模型在扫成中,遇到的零件表面为该支撑模型的底面,该底面和所有的侧面组成支撑模型;

其中输入:支持顶面面片集合sa,网格模型面片集合st;输出:支撑网格模型面片集合ss;布尔差操作方法如下:

step1:支持顶面面片集合sa向底面投影,得到一个平面区域a,平面区域a为同平面三角形集合;

step2:计算落于平面区域a中的区域的三角面片集合w;

step2.1:对网格模型面片集合st-支持顶面面片集合sa中的每个三角形t,与平面区域a中的三角面片两两相交,其重叠区域为r,对重叠区域r进行三角化,得到三角形集合m;

step2.2:对三角形集合m中的每个三角面片,比较和支持顶面面片集合sa的关系,如果高于支持顶面面片集合sa中的面片,则放弃,否则进入三角面片集合w中;

step3:对三角面片集合w中的三角形,计算其相互遮挡关系;

step3.1:记录已经就绪的可见面片集合为vs,其中:初始的可见面片集合vs=null;

step3.2:取三角面片集合w中的一个三角形t,计算三角形t和可见面片集合vs中的每个面片的关系,可见面片集合vs中的任意面片为ts,计算t和ts之差,得到的区域则为新的可见面,对这个可见面进行三角化,得到可见面片集合vs中的新的面片集合;

其中t和ts的关系有两种:(1)t在ts之上;(2)ts在t之上;不失一般性,若t在ts之上,则ts将可能遮挡掉部分或者全部的t;若ts在t之上,则t将可能遮挡掉部分或者全部的ts;

step4:组成支撑网格模型,其中:可见面片集合vs、平面区域a、支持顶面面片集合sa以及支持顶面面片集合sa向下投影的侧面hsa,组成新的支撑模型的实体;

step4.1:将可见面片集合vs向底面投影,得到新的底面tvs,其中:新的底面tvs和侧面hsa相交;

step4.2:对新的底面tvs的面片集合建立邻接关系,显然每条边对应一个新的侧面;

step4.3:对新的侧面进行三角化,得到面片集合nhs;

step5:面片集合nhs、可见面片集合vs、平面区域a、支持顶面面片集合sa组成新的支撑网格的面片集合。

(3)布尔并操作,具体为:基于布尔差操作所得到的模型为侧面垂直的支撑体,针对相互重合的侧面进行,其并的面实际为相互平行的竖直的面;

其中输入:a、b分别为两个网格模型;输出:布尔并操作结果,并为一个网格模型c,或者仍然为a、b(二者无相交面);布尔并操作方法如下:

(a)预判断,具体为:分别得到网格模型a、网格模型b的包围盒xa、包围盒xb,若包围盒xa、包围盒xb分离,则输出网格模型a、网格模型b,操作结束;否则继续下一步;

(b)将网格模型a、网格模型b的三角形两两求交,其算法采用“布尔差”中的方法,得到相交的线段,记录线段端点、相关的三角形以及对应的网格,即网格模型a或者网格模型b,而这些线段集合即为ls;

(c)将ls中的线段首尾相连,判断不同线段端点是否重合,若重合,则将其加入到将要形成的环,最终得到一系列首尾相连的环,这些环是网格模型的相交线,即为loopset;

(d)基于loopset,剔除相关网格模型的区域,最终得到新模型的三角形以及相交边界;

loopset中的环所包含的区域实际是网格模型a、网格模型b的公共重合部分,这些将在布尔并操作后称为体的内部,具体剔除方法为就三角形求交过程中的重合部分进行剔除,最终得到新模型的三角形以及相交边界(相交边界处可以出现非三角形);

(e)重新三角化;

对步骤(d)中得到的相交边界处进行重新三角化,得到有效的二维流形网格模型。

(4)重新网格化,将上述网格边界处的网格重新建立对应关系,从而保证得到的支撑模型为有效的二维流形,并输出支撑模型。

在步骤(1)中,支撑区域搜索目标是搜索需要支撑的模型表面,这些支撑区域分别表示了倾斜角度过大、悬挂点、悬挂边而导致的在加工过程中容易造成坍塌的情况,这些情况归结起来表示各个类的面片。在这些不同的面中,倾斜面的判断比较简单,只要判断面法向和z轴的夹角即可,而悬挂点和悬挂线的判断则要对网格模型进行几何分析。得到需要支撑的三角面片后,需要基于它们之间的几何信息建立其拓扑关系,将具有公共边的三角面片合并,最终形成一个个连贯的待支撑区域。

在步骤(2)中,大量用到同一平面内的两个三角形之间的差运算,两个三角形相互质检可以具有0、1、2、3、4、6个交点,这些情况需要分别处理,并进行三角化,得到新的面片集合;这一问题已经具有比较成熟的算法,具体算法可以采用如下文献中的方法:philippeguigue,olivierdevillers.fastandrobusttriangle-triangleoverlaptestusingorientationpredicates[j].journalofgraphicstools.2003,8(1):25-32.

在步骤(3)中,对一般的布尔并操作,其核心的操作为两个:1)模型表面求交,得到相交交线;2)物体表面被交线分割的部分相互判断包含关系,即判断物体的两两之间的包含关系。其中第二步骤费时且容易出错,这事由于判断一个点是否在网格内部或者外部难以做的鲁棒高效,在本方法中,这一问题不再存在,这是因为基于前面所描述的布尔差操作方法,所有的体不会相互包容,而仅仅是面邻接贴合。

在步骤(4)中,无论是布尔并还是布尔差操作,都会将原有的模型的表面三角形打散,从而形成拓扑混乱的网格,重新网格化就是将上述三角网格边界处的网格重新建立对应关系,从而保证得到的支撑模型为有效的二维流形,这方面的算法已经比较成熟,如:pierrealliez,et,al.anisotropicpolygonalremeshing.acmsiggraph2003papers.

该方法实际先通过垂直支撑模型和物体模型的布尔差操作得到支撑体,然后将这些支撑体进行布尔并操作并通过重新网格化得到。该方法对布尔差和布尔并操作均加以优化,即考虑顶面向-z方向投影求交的求解方法,以得到合适的支撑模型,大大简化了对于算法的要求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1