1.本技术属于计算机设计技术领域,具体涉及一种网格-参数混合模型建模方法和系统。
背景技术:2.计算机辅助设计技术是电子信息技术的一个重要组成部分,它改变了产品设计工作的内容和方式,颠覆了传统手工设计绘图的方式,极大地提高了产品开发的速度和设计精度。
3.建模技术的发展经历了二维建模、三维几何建模、特征建模及产品集成建模的发展过程。其中三维几何建模又分为线框建模、曲面建模和实体建模。曲面模型主要依据顶点、边、面片3中拓扑元素及其相互的拓扑关系来描述三维物体的形状。其通过曲面来构造、表示三维物体,可以获取物体表面的三维信息。
4.近年来,随着测量精度的大幅提高,利用逆向工程获得的离散网格曲面模型也被用于设计建模中。其中,三角网格模型采用轻量化三角面片结构描述数据点之间的拓扑关系,在表达曲面模型时具有快速灵活、拓扑适应能力强等优点。
5.网格曲面具有几何精度高、完整性好、拓扑一致性强的优点,但数据量随着精度提高而增大,适合描述复杂曲面;参数曲面具有数据量小,描述简单曲面精度高的优势,但描述复杂曲面误差大。
6.如何集合网格曲面和参数曲面的优点,同时规避两者的缺点,建立一种网格-参数混合模型,成为建模领域的研究重点。
技术实现要素:7.本技术提出了一种网格-参数混合模型建模方法和系统,应用于三维原型再设计、增材制造以及三维模型的渲染等领域,在三维模型的再设计过程中,通过视觉传感器等方法提取到三维模型的点云原型,将其转换为网格模型,并通过参数建模的方式提供再设计的工具,该建模方法获得的网格模型水密且无拓扑错误,且为具有一定厚度的体模型,适用于增材制造以及渲染。
8.为实现上述目的,本技术提供了如下方案:
9.一种网格-参数混合模型建模方法,包括如下步骤:
10.获取待测物体的点云数据,利用网格生成技术,将所述点云数据转换为网格曲面,对所述网格曲面进行网格偏置处理和边界缝合处理,将所述网格曲面转换为封闭的所述网格模型;
11.设定所述待测物体的特征参数,基于所述特征参数,建立参数模型,并对所述参数模型进行网格化处理,所述参数模型使用网格进行表征;
12.基于布尔运算,将所述网格模型和所述参数模型合成混合模型,所述混合模型使用网格进行表征。
13.可选的,使用改进的贪婪投影三角化法获得所述网格曲面;
14.所述改进的贪婪投影三角化法包括如下步骤:
15.使用移动最小二乘法对所述点云数据进行平滑处理,获取mls拟合曲面;
16.基于所述mls拟合曲面,获得所有所述点云数据的点云法矢量;
17.基于所述点云法矢量,利用贪婪投影三角化法进行重建,得到所述网格曲面。
18.可选的,所述网格偏置处理的方法包括:
19.基于三角形的形状、质心距以及顶角的角度对顶点法矢的影响,建立新的权重因子λ;
20.设定边界顶点vi左右两侧各有n个连续的边界顶点,分别为左边界顶点(v
l
,l=i-1,i-2,...,i-n)和右边界顶点(vr,r=i+1,i+2,...,i+n),在所述边界顶点左右两侧通过所述边界顶点vi分别与所述左边界顶点和所述右边界顶点相连,各获得n个向量,分别记为左向量(e
i,l
,l=i-1,i-2,...,i-n)和右向量(e
i,r
,r=i+1,i+2,...,i+n);
21.基于所述左向量和所述右向量,计算左边向量e
l
和右边向量er;
22.基于所述左边向量e
l
和所述右边向量er,建立修正向量ne;
23.分别为所述边界顶点vi的初始法矢量nv和所述修正向量ne分配边界顶点权重k1和修正向量权重k2,基于所述初始法矢量nv、所述修正向量ne、所述边界顶点权重k1和所述修正向量权重k2,计算矫正后的边界顶点法矢量nb;
24.基于所述新的权重因子λ、所述左边向量e
l
、所述右边向量er和所述边界顶点法矢量nb,得到所述边界顶点vi的修正法向量,完成所述网格偏置处理。
25.可选的,所述边界缝合处理的方法包括:
26.将所述网格曲面的每个顶点沿顶点法向量偏置后,得到网格偏置曲面;
27.在所述网格曲面和所述网格偏置曲面间建立缝合曲面,所述缝合曲面为离散的三角面片的集合;
28.使用标号算法优化所述三角面片,并依次生成新的三角面片,将所述新的三角面片插入到所述网格曲面和所述网格偏置曲面之间,完成所述网格曲面和所述网格偏置曲面的边界缝合。
29.可选的,所述布尔运算的方法包括:
30.对所述网格模型和所述参数模型之间产生交叉的三角网格面片进行检测;
31.对产生交叉的三角网格面片区域及其邻域的网格进行局部的重网格化,实现交叉区域网格密度的调整;
32.再次检测产生交叉的三角网格面片,并将其从网格中删除,删去交叉区域后的网格模型被分割成不同的网格补丁;
33.基于布尔运算以及网格补丁的内外分布对所述网格补丁进行重新组合,组合后的模型为带间隙的网格补丁;
34.基于重新组合后的网格补丁,提取带间隙网格的边界边环,通过投票的方式建立边界边环对应关系,将对应的边界边环以迭代前向缝合的方法连接起来,生成网格-参数混合模型。
35.可选的,三角网格面片交叉的判断方法包括如下步骤:
36.采用八叉树的方法,分别对所述网格模型和所述参数模型来进行给定点数多少以
及空间大小的八叉树的划分,分别得到网格八叉树和参数八叉树;
37.检测所述网格八叉树和所述参数八叉树对应的所有叶节点是否在空间上交叉,如果交叉,则对对应叶节点内顶点的全部一环邻接面进行遍历交叉检测。
38.可选的,交叉区域网格密度的调整方法包括如下步骤:
39.将交叉的三角网格面片的顶点控制边长设置为给定的边长,对其邻域进行曲率自适应的控制边长计算,然后对整个区域的网格控制边长进行加权平滑,计算出控制边长后,再通过局部拓扑调整的方法来重网格化局部的网格,完成交叉区域网格密度的调整。
40.可选的,对所述网格补丁进行重新组合的方法包括:
41.根据布尔运算,首先对网格补丁进行内外判定,网格补丁的内外判定根据三维绕组数的计算来判定;
42.利用投票方式,对边界环上的每个顶点选择其对应的最邻近的边界环,如果其对应的边界环中的顶点也作出了相同的投票,即将两个边界环对应起来,确定要进行缝合的边界环的对应关系,完成网格补丁的重新组合。
43.为实现上述目的,本技术还提供了一种网格-参数混合模型建模系统,包括点云数据模块、网格模型模块、参数模型模块和布尔运算模块;
44.所述点云数据模块用于获取待测物体的点云数据;
45.所述网格模型模块用于利用网格生成技术,将所述点云数据转换为网格曲面,对所述网格曲面进行网格偏置处理和边界缝合处理,将所述网格曲面转换为封闭的所述网格模型;
46.所述参数模型模块用于设定所述待测物体的特征参数,基于所述特征参数,建立参数模型,并对所述参数模型进行网格化处理,所述参数模型使用网格进行表征;
47.所述布尔运算模块用于基于布尔运算,将所述网格模型和所述参数模型合成混合模型,所述混合模型使用网格进行表征。
48.可选的,所述布尔运算模块包括交叉检测单元、网格密度调整单元、网格补丁单元和缝合单元:
49.所述交叉检测单元用于对所述网格模型和所述参数模型之间产生交叉的三角网格面片进行检测;
50.所述网格密度调整单元用于对产生交叉的三角网格面片区域及其邻域的网格进行局部的重网格化,实现交叉区域网格密度的调整;
51.所述网格补丁单元用于再次检测产生交叉的三角网格面片,并将其从网格中删除,删去交叉区域后的网格模型被分割成不同的网格补丁,基于布尔运算以及网格补丁的内外分布对所述网格补丁进行重新组合,组合后的模型为带间隙的网格补丁;
52.所述缝合单元用于基于重新组合后的网格补丁,提取带间隙网格的边界边环,通过投票的方式建立边界边环对应关系,将对应的边界边环以迭代前向缝合的方法连接起来,生成网格-参数混合模型。
53.本技术的有益效果为:
54.本技术公开了一种网格-参数混合模型建模方法和系统,应用于三维原型再设计、增材制造以及三维模型的渲染等领域,将点云数据利用网格生成技术转化为初始的网格曲面模型,再对曲面模型进行网格偏置和边界缝合,使其变为封闭的网格模型;参数模型来源
于用户自定义的各种特征,并使用网格对其进行表征;然后对两个模型进行布尔运算使得两个模型组合成为一个模型,既保持原始测量模型精度又具有用户自定义添加特征的混合模型。同时,该混合模型使用网格来进行表征,且在用户添加特征处又保留自定义的参数特征,这种特性使得混合模型既能应用网格模型的操作(例如网格重构、平滑,单个面片的增删减等),又能应用参数模型的操作(例如模型的直接拉伸、变形等),提高后续再设计的精度和效率。
附图说明
55.为了更清楚地说明本技术的技术方案,下面对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
56.图1为本技术实施例一的网格-参数混合模型建模方法整体流程示意图;
57.图2为本技术实施例一的任意顶点vi的一环邻域示意图;
58.图3为本技术实施例一中的边界处顶点法矢估计误差示意图;
59.图4为本技术实施例一中使用一环邻域面片法矢量估计示意图;
60.图5为本技术实施例一中的在有向图g中生成三角面片序列t的方法示意图;
61.图6为本技术实施例一中的八叉树划分方法示意图;
62.图7为本技术实施例一中的判断空间中的两个三角面片是否相交的流程示意图;
63.图8为本技术实施例一中的近似容差ε与目标边长l的关系,其中a描述2d情况,b描述3d情况;
64.图9为本技术实施例一中的局部重网格化方法示意图;
65.图10为本技术实施例一中的判断三角网格补丁位于另外一个三角网格模型的内部还是外部的方法示意图;
66.图11为本技术实施例一中的迭代缝合的方法示意图;
67.图12为本技术实施例二的网格-参数混合模型建模系统结构示意图。
68.图13为本技术实施例三的网格-参数混合模型建模方法和系统的具体实例图。
具体实施方式
69.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
70.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术作进一步详细的说明。
71.下述实施例,均以人体小腿处的康复辅具设计制造的技术需求展开。
72.实施例一
73.如图1所示,为本技术实施例的网格-参数混合模型建模方法整体流程示意图。首先需要获取网格模型和参数模型,在本实施例中,网格模型来自于人体小腿的实际测量数据,在获取腿部的测量点云后,需要将点云数据利用网格生成技术转化为初始的网格曲面
模型,之后对曲面模型进行网格偏置和边界缝合,使其变为封闭的网格模型。参数模型是由用户自定义的各种几何特征,并进行网格化操作,使用网格对其进行表征。
74.完成初始的网格模型和参数模型获取工作后,需要对两个模型进行布尔运算使得两个模型组合成为一个模型,首先进行交叉区域的检测和局部拓扑调整,然后,对两个模型相交叉的区域进行密度调整以及网格面片补丁的重组和缝合操作,最终获取既保持原始腿部数据精度又具有用户自定义添加几何特征的混合模型。
75.下面,具体介绍本实施例涉及的各项操作步骤:
76.1.点云数据到网格模型的转换
77.网格-参数混合建模的第一步就是获取精度足够高的测量的网格模型。随着视觉测量技术的发展与应用,物体三维信息的获取变得更加精准和高效。使用视觉测量获取的数据主要是无序的散乱数据集点,即为点云数据。点云数据可以通过重建算法,恢复出近似物体表面的网格模型。
78.传统贪婪投影三角化算法中,点云法向量精度对重建结果有直接影响。使用pca获取的点云法向量,即使点云在同一平面上,其法矢量方向也并不会严格一致。因此,在本实施例中,使用移动最小二乘(mls)进行重采样,对法矢进行估计。该方法也可以对输入的点云数据进行平滑操作,提高贪婪投影三角化的重建效果。离散点云的曲线曲面拟合过程,在曲线曲面形式未知的情况下,mls相比pca和ls可以提供更高的拟合精度。
79.在点云的局部子域上,拟合函数f(x)表示为:
[0080][0081]
其中α(x)=[α1(x),α2(x),...,αn(x)]
t
为待求系数,ρ(x)=[ρ1(x),ρ2(x),...,ρn(x)]
t
为基函数。
[0082]
已知节点x=[x1,x2,...,xm]
t
,每个节点对应的节点值为y=[y1,y2,...,ym]
t
,式(1)所示的拟合函数必须满足,
[0083][0084]
将式(1)代入式(2),得
[0085][0086]
显然,当时,式(3)有极小值
[0087][0088]
令b(x)=[w(x-x1)p(x1),...,w(x-xm)p(xm)],则式(4)可写成矩阵形式:
[0089][0090]
解,得
[0091]
α(x)=a-1
(x)b(x)y
ꢀꢀꢀ
(6)
[0092]
代入式(1)可得拟合函数,
[0093]
f(x)=ρ
t
(x)a-1
(x)b(x)y
ꢀꢀꢀ
(7)
[0094]
在选定基函数以及权函数后,由式(7)就可求得局部子域的拟合函数。权函数在mls中也起着非常重要的作用,其应该具有紧支性,即其应该在当前子域内不等于0,且在子域外全为0。权函数在子域内应该是非负的,且随着||x-xi||2的增大而减小。常用的权函数是样条函数,记s=x-xi,同时将整个点云域距离归一化s
max
是影响区域的半径,则可以使用如下三次样条函数作为权函数:
[0095][0096]
通常s
max
需要足够大,以保证式(7)中的a-1
(x)有意义。同时,由于基函数为线性基,曲面拟合过程中,影响区域内应至少包含不在同一直线上的三个节点。
[0097]
在选定基函数和权函数后,使用式(7)求出拟合曲面。一般权函数都能保证c1连续,由于拟合函数会继承权函数的光滑性,因此拟合函数也至少具有c1连续。可以通过将点云投影到拟合曲面使得点云更加平滑。
[0098]
在获取拟合曲面后,可以通过式(9)获取节点的法矢量:
[0099][0100]
因此改进的贪婪投影三角化算法流程如下:
[0101]
step1.对点云数据使用mls平滑操作,提高点云数据光滑性;
[0102]
step2.基于mls拟合的曲面计算所有点云法矢量;
[0103]
step3.使用贪婪投影三角化方法进行重建。
[0104]
2.网格偏置
[0105]
扫描技术获取的点云数据仅仅是物体表面数据,使用网格生成技术所生成同样是物体的表面。针对非封闭点云,利用该操作获取的网格模型将是一个非封闭的薄面片,无法应用于实际制造。通过网格偏置操作,可以使得该薄片拓展成为两个拓扑连接关系相同,几何形状相似的曲面,通过边界缝合获得一个封闭的网格体模型。
[0106]
三角网格模型采用轻量化三角面片结构描述数据点之间的拓扑关系,在表达曲面模型时具有快速灵活、拓扑适应能力强等优点,广泛应用于cad/cae/cam系统中。在进行曲面偏置、曲面重构、模型降噪与光顺、网格孔洞修复等处理过程中,网格模型的法矢信息不
可或缺,法矢估算的准确性将严重影响后续模型处理效果。
[0107]
利用估算法矢进行网格偏置,可以将一个非封闭的网格曲面模型拓展为体模型。在大曲率变化模型中,由于顶点法矢估算存在误差以及边界顶点几何信息缺失,导致偏置曲面的拓扑质量下降,并且其形状也难以与原曲面保持一致。这种偏差随着偏置距离增大而增大。
[0108]
参数曲面是一个从r2到r3的连续映射,其通常可以使用一个解析表达式表示。参数曲面上的每一个节点都能准确的计算其法矢。网格曲面不同于参数曲面,它是一个离散表示,无法使用一个解析表达式准确表示所有节点。
[0109]
网格模型其每个顶点坐标都可以精确获取,结合模型所输出的拓扑关系,可以精确地求取每个面片的法矢信息,利用面法矢来估计顶点法矢,即对模型中所有信息有效利用,同时降低拟合过程所引入的误差,使得顶点法矢估算结果更加准确。
[0110]
三角网格模型可以表示为以顶点和三角面片组成的线性表,m={v,f},其中v={vi|1≤i≤n}为模型中所有顶点的集合,f={fj|1≤j≤m}为模型中所有面片的集合。
[0111]
图2为三角网格模型某顶点vi的一环邻域面片示意图,为所求顶点法矢量,fj表示与该顶点相接的三角面片,为三角形fj的质心,gj为质心到顶点vi的欧式距离,aj为三角形fj在顶点vi处的顶角,为三角面片fj的外法向。
[0112]
定义为:
[0113][0114]
由下式定义:
[0115][0116]
每个面片法矢都可以由式(11)精确求出,显然,式(10)中的权重选择决定了顶点法矢估算精度。
[0117]
三角形的几何特性有很多,例如面积、质心到顶点距离、顶角角度等。一般而言,三角形的面积、顶角角度越大,形状越接近正三角形,其对顶点法矢的贡献也将越大;三角形的质心到顶点距离越远、三角形的边长越大,对顶点法矢的贡献将越小。可以依据这些特点,选择某一种几何特征作为权重,亦可以使用这些特征的组合形成组合权重因子。但是,对于单一特征的权重因子,存在易出现三角形几何形状差异较大但表达相同权重的问题。如图2所示,图中两对三角形具有相同的面积、顶角角度以及质心距,但其形状差异较大,在单一权重的度量下,这两对三角形将表达相等的权值。因此单一权重的度量,很难准确的反映该面片对顶点法矢的真实贡献情况。
[0118]
为了提升权重因子描述三角形各种几何特性的准确度,引入能够表达三角形形状
的形状因子μ,其定义为三角形外接圆半径与内切圆半径之比的两倍。
[0119][0120]
式中的a,b,c分别为三角形的三边长。结合这种形状因子的形状质心距法,为不同形状的三角面片赋予了不同权重。
[0121]
为了使得提高顶点法矢在曲率变化大、锐边等特征区域的估算准确度,在形状质心权重的基础上进行改进,综合考虑三角形的形状、质心距以及顶角的角度对顶点法矢的影响,提出新的权重因子。表达式如式(11):
[0122][0123]
其中α为三角形顶角角度。
[0124]
模型的边界顶点,由于其周围的面片数量不足,导致几何信息缺失,使得该处法矢量的估计准确性低。
[0125]
图3是边界顶点法矢估计的误差示意,当外侧是凸面时,其边界处的三角形具有向内部偏转的趋势,因此估算法矢会偏向模型方向(图3中n
convex
向量),当外侧是凹面时,情形相反(图3中n
cnocave
向量),因此需要在边界处对法矢估算结果进行修正。
[0126]
如图4所示,图中nv向量是使用一环邻域面片法矢量估计的值,若希望这个矢量向真实法矢量偏转,则需要一个修正向量ne。获取设定在边界顶点vi左右两侧各有n个连续的边界顶点,分别为(v
l
,l=i-1,i-2,...,i-n),(vr,r=i+1,i+2,...,i+n)。在左右两侧可以通过vi分别与v
l
,vr相连,各获得n个向量分别记为(e
i,l
,l=i-1,i-2,...,i-n)和(e
i,r
,r=i+1,i+2,...,i+n)。
[0127]
获取这两个向量集后,使用(14)式计算两个边向量e
l
,er。其中n=round(b
size
/10),b
size
是当前边界上顶点的数目。
[0128][0129]
修正向量ne定义为e
l
和er的叉积:
[0130][0131]
为了使得vi初始的法矢量nv能够平滑地趋向于修正矢量ne,分别为nv和ne分配两个权重k1,k2,权重的选择与边界处垂直向外方向的曲率有关,该方向曲率越大|k2|越大。因此,校正后的边界顶点法矢nb由下式确定:
[0132]
nb=k1nv+k2ne,|k1|+|k2|=1
ꢀꢀꢀ
(16)
[0133]
将前述提出的新的权重因子代入法矢估算中,得
[0134][0135]
3.边界缝合
[0136]
基于前述,将原模型每个顶点沿顶点法向偏置后,可以得到偏置模型。顶点经偏置后的位置由下式确定:
[0137][0138]
其中表示偏置后顶点位置,表示原顶点位置,dis表示偏置的距离。
[0139]
两个模型的顶点相互对应,且顶点间的拓扑连接关系相同。为了得到封闭的体模型,需要将两个面进行缝合。将原模型的边界点集与偏置模型的边界点集分别记为p,q,其中:
[0140]
p={p0,p1,p2,...,p
m-1
}
ꢀꢀꢀ
(19)
[0141]
q={q0,q1,q2,...,q
n-1
}
ꢀꢀꢀ
(20)
[0142]
两个边界各包含m,n个点,并且边界是由m,n条线段连接而成。
[0143]
通过在两个离散的曲线间构造一个曲面来完成缝合。这个曲面和两个模型一样是离散的三角面片集合。这些面片的顶点是边界点,从一个边界序列中选取两个点,并从另一个边界序列中选取一个点,来组成一个缝合的面片。因此每个三角面片都可以定义为{pi,pj,qk}或者{pi,qj,qk}。
[0144]
显然,每个新生成的三角面片都满足:
[0145]
(1)每个面片都由一条“轮廓边”(两个顶点在同一个边界序列的边,如pipj)和两条“桥接边”(两个顶点不在同一个边界序列的边,如piqk,pjqk)组成;
[0146]
(2)每两个相邻的三角面片都存在一条公共的桥接边;
[0147]
(3)对任意两条桥接边piqj,pkq
l
,若i≤k,则j≤l,反之亦然。
[0148]
可以将获取这一组三角形序列的问题看做一个图论问题。首先定义一个有向图g=《v,arc》来描述两个轮廓之间的所有桥接边。其中v表示有向图g节点的集合:
[0149]
v={v
i,j
|i=0,1,2,...,m-1,j=0,1,2,...,n-1}
ꢀꢀꢀ
(21)
[0150]
arc为弧的集合:
[0151]
arc={ak=《v
k,l
,v
s,t
》|s=k且l=t-1或s=k-1且l=t}
ꢀꢀꢀ
(22)
[0152]
显然,在有向图g中,每条弧都唯一对应一个三角面片(每条弧实际确定了3个顶点)。因此,任意一条从源节点v
0,0
到终节点v
m-1,n-1
的路径,都能确定唯一的三角面片序列t,如图5所示。
[0153]
为了使新生成的面片形状尽可能的规则,使用式(12)来描述新三角面片的形状规则度。优化的目标是使三角面片序列中所有三角面片的形状因子之和最大(无论哪种序列,所有三角面片的总数是相同的都为m+n-2)。使用标号算法来寻找该有向图g的最优路径。
[0154]
将节点v
i,j
的标号记为(i,j,μa,dis
i,j
,prev),其中i,j为节点下标,μ为式(12)所
定义的形状因子,dis
i,j
表示从源节点到当前节点的加权长度,prev为当前路径中v
i,j
的上一节点相对于它的位置。
[0155]
从源节点到当前节点的距离为,从源节点到当前节点的上一节点的最大距离加上当前的带权弧长:
[0156]
dis
i,j
=max(dis
i,j-1
,dis
i-1,j
)+μaꢀꢀꢀ
(23)
[0157]
求取最优路径的算法流程如下:
[0158]
step1.初始化v
0,0
的标号;
[0159]
step2.计算dis
i,j+1
和dis
i+1,j
并选择二者中较大值,更新下一节点为加权长度更大的节点;
[0160]
step3.记录标号中的prev值,当dis
i,j+1
大时prev=0,当dis
i+1,j
大时prev=1;
[0161]
step4.重复step2,step3。
[0162]
step5.输出prev的序列。
[0163]
确定prev的序列,即确定了该有向图g中满足优化目标的三角面片序列t。只需要根据该序列,依次生成新的三角面片插入到轮廓边界中即完成两个模型的缝合。
[0164]
4.参数曲面网格化
[0165]
参数曲面网格化生成总体流程如下:
[0166]
1)读入组合参数曲面模型和指定尺寸控制信息。
[0167]
2)识别模型中的邻近特征和曲率特征,然后结合指定尺寸控制信息对模型中所有曲线进行几何自适应的离散,同时创建几何自适应密度场。
[0168]
3)根据指定尺寸控制信息和几何自适应密度场对模型中的曲面片逐个生成网格。
[0169]
4.1.几何自适应曲面边界离散过程
[0170]
利用足够小的le对所有的曲面边界曲线进行采样,产生采样点集合,并在各采样点上设置全局尺寸值。全局尺寸值和le都可由用户设定,前者缺省为模型外包围盒尺寸的1/10,后者缺省为模型外包围盒尺寸的1/100。采样过程中先对每条曲线利用迭代的复合simpson数值积分公式计算曲线长度l,则可确定该曲线上的采样点数目为m=l/le+1;然后根据弧长求得各采样点坐标.
[0171]
以采样后的边界作为输入,对采样点集合进行曲面cdt。对每个采样点,以其所属几个单元的外接圆半径最小值作为邻近特征距离,求得邻近特征自适应尺寸,将该尺寸值与原尺寸值比较并取较小值作为新的尺寸值。
[0172]
遍历采样点,若采样点存在曲率特征,求得曲率特征自适应尺寸与该点已有尺寸值比较并取较小值作为新的尺寸值。
[0173]
若存在其他尺寸控制方式,遍历采样点,以其他尺寸控制方式求得尺寸与该点已有尺寸值比较并取较小值作为新的尺寸值。
[0174]
对各边界曲线进行离散,以保证得到的离散点尺寸合理过渡。
[0175]
4.2创建几何自适应密度场
[0176]
几何自适应密度场在曲面边界采样点的cdt结果上创建,由于该结果在边界自适应离散的过程中就已经获得,因此不必重新计算,可以减少不少计算量。在cdt结果上首先设置三角形单元外心处的邻近特征自适应尺寸值,该值可利用三角形外接圆半径作为邻近特征距离,并使用对边界点同样的邻近特征自适应计算过程获得。
[0177]
4.3网格生成
[0178]
本实施例采用基于映射法和前沿推进技术(advancing front technique aft)的曲面网格生成方法。该方法在参数平面上进行前沿推进,支持最短边优先和最老边优先2种推进标准;通过在参数平面上进行的网格有效性和单元质量检查可提高产生前沿最佳点的算法效率;最后通过边交换和光滑化优化网格质量。将组合曲面边界的几何自适应离散结果作为该方法的输入,在产生前沿候选点时,利用曲面几何自适应密度场求得该候选点处的自适应尺寸值,并综合考虑通过其他尺寸控制方式得到的尺寸值,取最小值作为该点的尺寸值,最终生成组合参数曲面的几何自适应网格.
[0179]
5.交叉区域的检测
[0180]
本实施例采用自适应八叉树的方法对交叉区域的检测过程进行加速,基本方法是,分别对两个网格模型来进行给定点数多少以及空间大小的八叉树的划分,然后检测两个八叉树对应的所有叶节点是否在空间上交叉,如果交叉,则对对应叶节点内顶点的全部一环邻接面进行遍历交叉检测。对于较高层级的八叉树节点(即靠近八叉树根节点的节点)而言,如果它不与同一层级所有八叉树的节点交叉,就没有必要对它进行进一步的八叉划分。具体的划分过程如图6所示。
[0181]
判断空间中的两个三角面片是否相交的流程如图7所示:
[0182]
1)根据输入的两个三角面片(t1,t2)的六个顶点分别计算出它们相对于另一个三角面片所在的平面的有向距离
[0183]
2)根据六个有向距离是否为零,判定两个三角面片是否共面;
[0184]
3)对于共面的三角面片,计算出六个顶点相对应得卷绕数,卷绕数若全部为零,则说明两个三角面片不相交。否则相交;
[0185]
4)对于不共面的两个三角面片,则需要根据每个三角面片的顶点的有向距离的符号是否相同,判定其是否位于另一个平面的同一侧,若两个三角面片都位于另一个平面的同侧,则两个三角面片不相交;
[0186]
5)对于不同侧的三角面片,需要根据它们在平面交线处的部分是否重叠来进一步的判定。
[0187]
6.交叉区域的密度调整
[0188]
本实施例通过对交叉的三角网格区域及其邻域的网格进行局部的重网格化来实现网格密度的调整,核心在于该区域的网格控制边长的确定。为了实现更好的网格质量,选取交叉的三角网格面片区域及其三到五环的邻域进行密度控制:将交叉的三角面片的顶点控制边长设置为给定的边长,对其邻域则进行曲率自适应的控制边长计算,最后为了防止密度突变,对整个区域的网格控制边长进行加权平滑。计算出控制边长后,再通过局部拓扑调整的方法来重网格化局部的网格。
[0189]
6.1曲率自适应的控制边长计算
[0190]
图8(a描述2d情况,b描述3d情况)显示了逼近误差ε和目标边长l之间的关系。假设使用边l的直线逼近圆弧,最大逼近误差ε,即直线到圆弧的最大偏差,它们遵循约束关系:
[0191]
[0192]
将式(24)公式应用到三角面片来拟合曲面的过程中来,对应图8b,三角面片(近似为正三角形)的边长与误差ε以及局部的曲率之间的关系为:
[0193][0194]
对于网格模型的表达而言,三角网格的边长越短,误差ε就越小,网格越逼近于曲面,通过误差ε以及网格局部的曲率κ来实现对网格边长的控制。为了实现更加精细的控制,选取最大的法向曲率κ1(p)来计算网格的曲率半径r,使得网格的控制边长尽可能的更短。
[0195]
在处理几乎相同分辨率的网格时,选择通用误差ε来控制整个网格是可以接受的。但是在处理分辨率明显不同的网格时,仍然会造成三角形的浪费。因为很难定义一个合适的ε,出于保守估计,ε需要适应更密集的部分,这会导致在低曲率区域过度细分。为避免对整个网格进行过度细分,ε不能太大,否则会导致高曲率区域细分不足。简言之,统一的ε将限制网格边长对曲率的适应性。
[0196]
因此,需要通过自适应的误差ε(x)来对网格的边长进行控制,可以使用网格原本的局部边长对不同区域的网格误差进行控制。如果使网格在局部区域的误差控制与其最短的边长正相关,即控制ε(x)=αl
min
(x)。
[0197]
本实施例中,结合局部的平均边长以及最短边长,对网格的局部边长进行控制。为了度量局部边长的分布情况,引入局部的度量因子:
[0198][0199]
对局部的边长分布进行度量,同时使用权重因子
[0200]
e-λ(ω(x)-1)
ꢀꢀꢀ
(27)
[0201]
对l
min
(x)和l
aver
(x)进行插值,并且控制误差为插值的线性项。不失一般性地,可以将局部的误差控制为
[0202][0203]
其中α,λ为自定义地控制系数,其中α为主控制系数,它的大小决定了误差的大小,λ是一个辅助的控制系数,可以对插值的过程进行控制。同时,为了避免计算过程中产生过长或是过短的边,需要对控制边长进行修剪,使得
[0204]
l(x)∈[l
min
(x),l
max
(x)]
ꢀꢀꢀ
(29)
[0205]
其中
[0206]
l
min
(x)=γε(x)
ꢀꢀꢀ
(30)
[0207]
l
max
(x)=δε(x)
ꢀꢀꢀ
(31)
[0208]
γ,δ为自定义的系数。最终局部的控制边长l(x)和局部的边长以及曲率保持一致。
[0209]
l(x)是相对顶点而言的,对于边e(v1,v2),应当控制它的长度
[0210]
l(e)=min(l(v1),l(v2))
ꢀꢀꢀ
(32)
[0211]
6.2局部重网格化方法
[0212]
重网格化的输入是一个由半边数据结构表示的网格,它为顶点、边、面及其拓扑信息提供了方便的循环方法。为了保持网格模型的形状,顶点将通过从初始网格构建的k-d树背景场重新投影回网格。整个过程如图9所示,具体地,按以下步骤实施。
[0213]
1)围绕顶点循环更新局部信息,包括局部最小边长、局部平均长度和1-环邻居的曲率。
[0214]
2)根据更新的信息,再次循环顶点,计算目标局部长度l(v),限制l(v)∈[l
min
(v),l
max
(v)]。
[0215]
3)循环边表,根据控制边长l(e)=min(l(v1),l(v2))调整网格,分裂过长的边(长于4/3l(e)),收缩太短的边(短于4/5l(e))。
[0216]
4)循环边表,如果翻转降低了顶点的自由度,则翻转边。
[0217]
5)循环顶点表,对每个顶点进行切线松弛,并通过k-d树背景将其重新投影回初始网格,本实施例采用拉普拉斯平滑的方式松弛顶点。
[0218]
6)将步骤3)到4)重复迭代5-10次。
[0219]
7.面片补丁重新组合
[0220]
根据布尔运算的定义对网格模型进行重新组合,首先对三角面片补丁进行内外判定。布尔交定义为位于两个三角网格模型内部的网格补丁的组合,布尔并定义为位于两个网格模型外部的补丁,布尔差则是一内一外的组合,布尔差的结果不唯一。网格补丁的内外判定可以根据三维绕组数的计算来判定。本实施例通过射线投影的方式进行判断。如图10所示,如果要判断被分割后的三角网格补丁位于另外一个三角网格模型的内部还是外部,可以随机选取网格补丁上的n个顶点,通过kdtree计算其在另一个网格模型上的最近点,计算该点到最近点的射线,计算射线与最近点所在平面法向的内积,据此判定点位于网格模型的内部还是外部。为了消除特殊情况,对n个顶点采取相同的操作,以超过n/2的顶点的情况确定网格补丁的内外部信息。
[0221]
一般情况下,两个相交的网格模型会将彼此分割成不同数量的网格补丁,在将需要缝合的补丁基于以上的方法进行组合后,需要确定要进行缝合的边界环的对应关系,这可以通过投票的方式来确定。对于边界环上的每个顶点,选择其对应的最邻近的边界环,如果其对应的边界环中的顶点也作出了相同的投票,即将两个边界环对应起来。
[0222]
8.网格补丁缝合算法
[0223]
布尔计算流程中的最后一步就是将存在间隙的三角网格连接起来。在本实施例中,采取迭代前向式的缝合策略。
[0224]
具体的算法实施可以总结为以下的几个步骤:
[0225]
1)查询到两个网格模型各自的边界环l1={v0,v1,
…
,vn}以及l2={u0,u1,
…
,un};
[0226]
2)对于l1中的每个顶点vi,查询为l2中离vi最近的顶点,然后将vi向移动,更新
[0227]
3)对于l2中的每个顶点ui采取步骤2)中相同的处理;
[0228]
4)对l1以及l2的一环邻域使用前述的重网格化的方法进行重构。
[0229]
迭代实施上述步骤直到l1以及l2中的顶点数相同,并且最近的顶点之间的距离低于阈值。最后以一个相同的顶点替代l1以及l2中的对应点,即可以实现缝合。迭代缝合的过程如图11所示:
[0230]
如果在建立两个边界的点的对应关系过程中,如果存在着一个顶点有两个对应点的情况,那么这两个顶点之间的距离就会在迭代的过程中变得很近,通过后续的网格局部
的重构的过程,会将靠的很近的两个顶点收缩为一个顶点,并最终建立起一一对应的关系。类似的如果一条边在拓扑调整的过程中被拉抻的很长,在边分裂的过程中,会分裂出新的顶点,建立对应关系。再次回到重连的整个过程,由于顶点位置的更新过程中,顶点可能会被更新到空间中的任意区域。这个与实际的网格相交的情况不符合,为了更好的拟合实际的情况,在每一次更新顶点的位置后,将它重投影回原本的网格模型中离它最近的一个三角面片上。
[0231]
实施例二
[0232]
如图12所示,为本技术实施例二的网格-参数混合模型建模系统结构示意图,主要包括点云数据模块、网格模型模块、参数模型模块和布尔运算模块;
[0233]
具体的,在本实施例中,点云数据模块用于获取待测物体的点云数据。
[0234]
网格模型模块用于利用网格生成技术,将点云数据转换为网格曲面,对网格曲面进行网格偏置处理和边界缝合处理,将网格曲面转换为封闭的网格模型。
[0235]
参数模型模块用于设定待测物体的特征参数,基于特征参数,建立参数模型,并对参数模型进行网格化处理,参数模型使用网格进行表征。
[0236]
布尔运算模块用于基于布尔运算,将网格模型和参数模型合成混合模型,混合模型使用网格进行表征,包括交叉检测单元、网格密度调整单元、网格补丁单元和缝合单元。
[0237]
交叉检测单元用于对网格模型和参数模型之间产生交叉的三角网格面片进行检测。网格密度调整单元用于对产生交叉的三角网格面片区域及其邻域的网格进行局部的重网格化,实现交叉区域网格密度的调整。网格补丁单元用于再次检测产生交叉的三角网格面片,并将其从网格中删除,删去交叉区域后的网格模型被分割成不同的网格补丁,基于布尔运算以及网格补丁的内外分布对网格补丁进行重新组合,组合后的模型为带间隙的网格补丁。缝合单元用于基于重新组合后的网格补丁,提取带间隙网格的边界边环,通过投票的方式建立边界边环对应关系,将对应的边界边环以迭代前向缝合的方法连接起来,生成网格-参数混合模型。
[0238]
实施例三
[0239]
如图13所示,为本技术实施例三的网格-参数混合模型建模方法和系统具体的应用实例图,展示为人体小腿处康复辅具的再设计过程。
[0240]
其中人体小腿的三维模型通过视觉传感器扫描获得点云原型,将点云模型应用点云数据模块进行网格模型的生成,再由网格模型模块对网格曲面进行网格偏置处理和边界缝合处理,获得封闭的网格模型,原始模型的精度得以保留。
[0241]
在康复辅具的实际设计过程中,为了满足在制造过程中节约材料、降低产品重量、提升康复辅具的透气性,提升佩戴舒适度等需求,需要在原模型基础上进行打孔操作。使用参数方法定义圆柱特征,并对参数定义的圆柱特征进行网格化处理,在三维空间中对多个模型进行对齐,最后通过布尔运算模块计算初始护具模型与自定义孔洞间的布尔差。
[0242]
在整个过程中,保证了网格模型的水密性以及良好的拓扑特性,同时参与运算的示例为带有厚度的实体模型,最终结果保存为三维网格曲面模型,可以应用3d打印技术生成可穿戴的康复辅具。