一种自定义模型表面镂空的3D打印方法与流程

文档序号:13085803阅读:568来源:国知局
一种自定义模型表面镂空的3D打印方法与流程
本发明涉及面向3D打印的几何模型定制领域,尤其涉及一种基于自定义模型表面镂空的3D打印方法。

背景技术:
近些年,3D打印技术发展迅速,随着3D打印成型材料可选范围的增大,成型精度与速度的提高,各类设备价格的降低,它已经开始广泛的应用于医疗、航空、娱乐与时尚等各个领域,甚至逐渐渗透进普通人的生活。3D打印是快速成型领域的一种新兴技术,它是一种以数字模型文件为基础,利用各种可粘合材料通过逐层叠加方式构造三维模型的技术。3D打印与传统的制造相比有明显的优点,3D打印可以直接以数字模型文件为基础制造几乎任意形状三维实体,而不像传统的机械加工技术通过切削或钻孔等工艺或模具等完成制造过程。这一技术不但能够缩短产品的研制周期从而提高生产率和降低成本,而且在材料耗费、环境保护等方面也有显著优势。3D打印的输入模型一般来自两个方面,一是对于现实物体进行扫描重建得到的数字模型,二是由设计者创造编辑的模型。前者通常需要并非普通用户常备的专业设备,而后者通常需要使用专业的模型创作的编辑软件,这些软件的操作非常复杂且学习成本很高,也不是普通用户能够掌握。因此,对于普通用户来讲,迫切需要大量简单易用的三维模型个性化定制工具,帮助用户通过少量而简单的参数或自然的交互操作,即可完成三维模型的个性化定制设计。这将吸引更多非专业人员通过3D打印满足个性化定制的需求,从而扩大3D打印技术的用户群与市场规模。鉴于以上的原因,目前已经出现一些简单易用的面向3D打印的模型定制工具,尤其是在首饰设计方面,然而,这些工具或者只提供非常简单的风格化选择,或者要求用户使用系统预置模型,用户无法对于自己指定的模型进行定制操作。另外,对于三维模型的风格化设计要求多种多样,目前的工具远不够满足用户要求。

技术实现要素:
为了解决现有技术的缺点,本发明提供一种基于自定义模型表面镂空的3D打印方法。该方法通过对输入的封闭三维模型表面进行采样与优化,计算得到对于原模型的镂空框架结构,该方法面向用户提供一个可调整的参数,即疏密度,用来控制镂空结构的精细程度、模型的抽象程度,该过程完全是自动的,用户可以调整该参数,实时利用3D打印机打印出自己满意的结果。为实现上述目的,本发明采用以下技术方案:一种基于自定义模型表面镂空的3D打印方法,包括:步骤(1):对自定义的三维模型进行归一化与网格化处理,计算三维模型的所有顶点的LFS值;步骤(2):初始化三维模型的种子点数目,依据三维模型的所有顶点的LFS值的分布,布局三维模型上的种子点;步骤(3):计算种子点在三维空间中的Voronoi划分,并与三维模型求交,得到受限Voronoi图RVD集合;步骤(4):计算三维模型上的所有种子点的位移平方和是否小于预设阈值,若是,则进入下一步;否则,采用Lloyd迭代的方法来优化三维模型上的种子点位置,并返回步骤(3);步骤(5):提取步骤(4)处理后的RVD集合中的线段,以线段的每个端点为球心,生成预设半径的球体;以每条线段为轴,生成预设半径的圆柱体,生成相应的三维模型文件;步骤(6):将生成的三维模型文件输入至3D打印机中,并通过3D打印机打印出自定义的三维模型。所述步骤(1)中,计算三维模型的所有顶点的LFS值的过程,包括:步骤(1.1):计算三维模型的中轴;遍历三维模型的所有顶点,计算每一个顶点到三维模型的中轴的距离,得到各个顶点的LFS值;步骤(1.2):分别取三维模型各个顶点的LFS值的倒数,对三维模型各个顶点的LFS值进行归一化。所述步骤(2)中依据三维模型的所有顶点的LFS值的分布,布局三维模型上的种子点的步骤如下:步骤(2.1):初始化计数器;步骤(2.2):在三维模型表面随机生成一个点Xrandom;步骤(2.3):选取一个[0,1]范围内的随机数,将该随机数大小与当前点Xrandom的LFS值比较;若随机数大小小于该点LFS值,则接受点Xrandom,计数器加1,直至计数器值等于初始化的三维模型上的种子点数目,三维模型上的种子点的布局过程结束;否则,转至步骤(2.2)。所述步骤(2)中种子点的数目与三维模型的疏密度参数成线性映射关系。所述步骤(3)的过程,包括:步骤(3.1):计算种子点的Delaunay三角剖分,对Delaunay三角剖分中的任意一条边生成中垂面,并将三维空间划分成若干子空间;步骤(3.2):将划分后的子空间的无限平面与三维模型的表面网格求交,每次求交得到的线段添加为三维模型的一条边;最后,三维模型表面被Voronoi划分成若干个子空间,形成RVD集合。所述步骤(3.2)中,求交得到的线段的属性标记为INTERSECT。所述步骤(3.2)中,在划分后的子空间的无限平面与三维模型的表面网格求交的过程中采用kdTree算法进行加速。所述步骤(4)采用Lloyd迭代的方法来优化三维模型上的种子点位置的过程,包括步骤(4.1):计算各种子点所在RVD区域的重心,并将其投影到三维模型表面;步骤(4.2):当三维模型上的所有种子点的位移平方和小于预设阈值时,优化过程结束;否则,分别将种子点移动至相应步骤(4.1)计算的重心位置。所述步骤(5)还包括:在优化后的RVD集合中,合并任意两条夹角大于预设夹角阈值的邻接线段。所述步骤(1)中三维模型的存储形式为半边数据结构。本发明的有益效果为:(1)本发明的该方法对任意的三维模型表面进行采样与优化,计算得到对于原模型的镂空框架结构,进而得到一个可以直接用于3D打印的几何模型;(2)该方法面向用户提供一个可调整的参数,即疏密度,用来控制镂空结构的精细程度、模型的抽象程度,通过初始化种子点的个数,进而使得用户可以调整三维模型镂空结构的疏密度,实时获得自己满意的结果;(3)本方法得到的模型保持了输入模型的几何形状,并采用更轻便的框架结构,具有一定艺术价值。附图说明图1为本发明的方法流程图;图2表示M的局部特征尺寸LFS的分布情况,亮的地方表示值小;图3表示在M内部初始化n个种子点的示意图;图4表示M的初始RVD示意;图5表示经过Lloyd方法优化后结果;图6a)表示400个种子点的最终生成的抽象结构;图6b)表示600个种子点的最终生成的抽象结构。具体实施方式下面结合附图与实施例对本发明做进一步说明:首先,利用图1对本发明的基于自定义模型表面镂空的3D打印方法进行说明,图1为本发明的该方法的流程示意图,其步骤包括:步骤(1):对自定义的三维模型进行归一化与网格化处理,计算三维模型的所有顶点的LFS值;步骤(2):初始化三维模型的种子点数目,依据三维模型的所有顶点的LFS值的分布,在M表面布局三维模型上的种子点;步骤(3):计算种子点在三维空间中的Voronoi划分,并与三维模型求交,得到受限Voronoi图RVD集合;步骤(4):计算三维模型上的所有种子点的位移平方和是否小于预设阈值,若是,则进入下一步;否则,采用Lloyd迭代的方法来优化三维模型上的种子点位置,并返回步骤(3);步骤(5):提取步骤(4)处理后的RVD集合中的线段,以线段的每个端点为球心,生成预设半径的球体;以每条线段为轴,生成预设半径的圆柱体,生成相应的三维模型文件;步骤(6):将生成的三维模型文件输入至3D打印机中,并通过3D打印机打印出自定义的三维模型。接下来,针对本发明的该方法中的每一个步骤进行具体的阐述:本实施例中,采用M表示用户输入的三维模型,p表示来自用户疏密度的参数,首先把M横、纵、竖坐标都归一化到[0,1]范围内,并对M重新网格化,优化M网格结构。初始化种子点为{x1,x2,…,xn},将参数p线性映射:M表面会被分成n个部分,设模型总表面积为S,每个部分面积下限值为base=0.005,则由p到n的线性映射函数表示为:n=S·p/base预设框架化结构单元(圆柱与球)半径R:计算包围盒,包围盒最大跨度为L,则R=0.1%L。当用户输入一个三维模型,采用上述方法,得到的三维模型内部LFS值的分布情况,如图2所示,在该图中,越亮的地方表示LFS值越小。其中,局部特征尺寸LFS值的描述为:对于流形曲面,任意一点x到模型M的中轴(medialaxis)的距离称为该点的局部特征尺寸,而中轴是所有与给定的模型表面至少相切于两个点的圆的圆心集合。LFS反映的是模型的形态特征,对于模型较扁较薄、尖锐的地方,LFS值较小,也需要分布更多的点来保持形状;相反,特征不明显,模型圆粗部分,LFS值较大,分布较少点就能保持形状。其中,步骤(2)中依据三维模型的所有顶点的LFS值的分布,布局三维模型上的种子点的步骤如下:步骤(2.1)初始化计数器;步骤(2.2):在模型表面随机生成一个点Xrandom;步骤(2.3):产生一个[0,1]范围内的随机数,将该随机数大小与当前点Xrandom的密度值比较;若随机数大小小于该密度值,则接受点Xrandom,计数器加1,直至计数器值等于初始化的三维模型上的种子点数目,三维模型上的种子点的布局过程结束;否则,转至步骤(2.2)。如图3所示,该图为设置三维模型内部的种子点数目n=400时,这些种子点在三维模型内部的布局情况。其中,种子点的数目与三维模型的疏密度参数成线性映射关系,也就是说,种子点的数目越多,三维模型的密度越大;种子点的数目越少,三维模型的密度越小。步骤(3)计算种子点在三维空间中的Voronoi划分,并与三维模型求交,得到受限Voronoi图RVD集合的过程,包括:步骤(3.1):计算种子点的Delaunay三角剖分,对Delaunay三角剖分中的任意一条边生成中垂面,并将三维空间划分成若干子空间;步骤(3.2):将划分后的子空间的无限平面与三维模型的表面网格求交,每次求交得到的线段添加为三维模型的一条边;最后,三维模型表面被Voronoi划分成若干个子空间,形成RVD集合,RVD集合为{c1,c2,…,cn},如图4所示。Voronoi对空间的划分符合以下条件:Ωk={x∈X|d(x,Pk)≤d(x,Pj)forallj≠k}其中,X表示所给空间;x表示空间中任意一点;Pk,Pj分别表示第k个种子点和第j个种子点;d(x,Pk)表示x到Pk的距离;Ωk表示被划分出的第k个子空间;k,j均为正整数。步骤(3.2)中,求交得到的线段的属性标记为INTERSECT。由于在数据存储时,三维模型是采用半边数据结构进行存储,因此,采用INTERSECT属性标记,有利于找出RVD的拓扑结构。在步骤(3.2)中,将划分后的子空间的无限平面与三维模型的表面网格求交的计算过程中,利用kdTree算法来加快计算的速度。步骤(4)采用Lloyd迭代的方法来优化三维模型上的种子点位置的过程,包括步骤(4.1):计算各种子点所在RVD区域的重心,并将其投影到三维模型表面;步骤(4.2):当三维模型上的所有种子点的位移平方和是否小于预设阈值时,优化过程结束;否则,分别将种子点移动(4.1)计算出的重心位置。其中,经过步骤(4)优化后的RVD集合,如图5所示。本实施例中,对于任一种子点xi,其所在的RVD区域内重心的计算方法为:其中Ri是某种子点对应区域在M表面的部分,即其RVD单元,tk表示构成Ri的一系列三角面片,tk内部的ρ(x)值可以通过插值得到。计算得到后,将其投影到三维模型表面距离它最近的点。计算所有种子点的位移平方和δ:当δ趋近于0时,优化过程结束,否则用代替xi。在步骤(5)中,由于Voronoi图对整个空间的划分与模型M的表面三角面片相交后得到的线段数量大。为了提高处理效率,合并任意两条夹角接近180度的邻接线段。其具体的过程为:由于三维模型的存储形式为半边数据结构,沿着某一条属性为INTERSECT的边可以找到一个连通分支。在三维模型中具有INTERSECT属性的边构成拓扑结构可能不只一个连通分支,对于任意两相邻的边测试它们之间的夹角θe,若θe>θ(θ为设定的阈值)将两条线段合并为一条。也可设置当cosθ>0.992将两条线段合并为一条。当种子点设置为400个时,提取优化后的RVD集合中的表面线框,以线框的每个端点为球心,生成一个半径为R的球体;以每条线段为轴,生成一个半径为R的圆柱体,输出相应的三维模型文件,如图6a)所示。当种子点设置为600个时,提取优化后的RVD集合中的表面线框,以线框的每个端点为球心,生成一个半径为R的球体;以每条线段为轴,生成一个半径为R的圆柱体,输出相应的三维模型文件,如图6b)所示。其中,R表示在产生基本图元(球、圆柱)的大小,它是球的半径和圆柱的底面半径,系统预设R的大小。上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1