一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

平面模型包围多边形生成方法、装置及家具轮廓识别方法与流程

2022-03-01 21:34:53 来源:中国专利 TAG:


1.本技术涉及计算机图形学技术领域,具体而言,涉及一种平面模型的包围多边形的生成方法、装置及家具轮廓识别方法。


背景技术:

2.随着平面模型获取技术的飞速发展,计算机图形学处理的模型精度和复杂度越来越高,以往的几何处理算法在普适性和计算复杂度上都面临新的挑战。采用与原模型形状相似但顶点数较少的包围网格作为包围多边形来衔接复杂模型与算法是一个趋势。在模型编辑领域中,对复杂的模型生成一个包围多边形可以大大提高效率,通过操纵包围多边形可以实现原模型的实时平滑变形。包围多边形被广泛应用于变形迁移、碰撞检测、家居检测等领域。
3.现有技术中,通常采用交互式或者人工的方式构建平面模型的包围多边形。现有的生成包围多边形的方法理论上无法保证严格满足包围性,无自交约束,对于复杂的模型算法可能会失败或者出现包围多边形自相交,与输入模型相交的情况,生成的包围多边形与平面模型相差较大。在家居领域中,为了构建良好的家居效果图,需要模拟家居移动,这要求生成家具良好的包围多边形,而现有的生成方法效果不佳。


技术实现要素:

4.本技术实施例的目的在于提供一种平面模型的包围多边形的生成方法、装置及家具轮廓识别方法,能够生成平滑、有距离约束、与实际平面模型相近的包围多边形。
5.第一方面,本技术实施例提供了一种平面模型的包围多边形的生成方法,包括:
6.获取平面模型的网格模型;
7.构造所述网格模型的矩形包围盒;
8.使用带约束条件的算法对所述网格模型和所述矩形包围盒进行处理,生成所述网格模型的包围多边形;所述包围多边形包围所述网格模型,且与所述网格模型没有交点。
9.在上述实现过程中,首先通过获取平面模型的网格模型,可以将平面模型二维化,构建网格模型的矩形包围盒,形成初步的构建基础,对网格模型和矩形包围盒使用待约束条件的算法,生成包围多边形。与现有技术相比,通过构造矩形包围盒和使用待约束条件的算法,能够使得生成的包围多边形有距离约束,平滑。
10.进一步地,所述对所述网格模型使用带约束条件的算法,生成所述网格模型的包围多边形的步骤,包括:
11.判断所述网格模型是否为单连通图形;
12.若是,使用带约束的delaunay三角剖分算法对所述矩形包围盒和所述网格模型的外边界进行三角剖分,得到第一三角形集合;根据所述第一三角形集合生成所述包围多边形;
13.若否,使用带约束的delaunay三角剖分算法对所述网格模型的内边界所述网格模
型的外边界和所述矩形包围盒的外边界进行三角剖分,得到第二三角形集合;根据所述第二三角形集合生成所述包围多边形。
14.在上述实现过程中,通过带约束的delaunay三角剖分算法对矩形包围盒和网格模型进行处理,得到的第一三角形集合对网格模型的拟合程度更高。
15.进一步地,所述根据所述第一三角形集合生成所述包围多边形的步骤,包括:
16.步骤一:获取所述网格模型的边界;
17.步骤二:移除所述第一三角形集合中的与所述网格模型的边界不相邻的三角形,得到移除后的第一三角形集合;
18.步骤三,获取所述移除后的第一三角形集合中的所有边界点,组成第一边界点集合;
19.步骤四:获取所述第一边界点集合到所述网格模型的第一hausdorff距离和所述网格模型到所述第一边界点集合的第二hausdorff距离;
20.步骤五:判断所述第一hausdorff距离是否大于所述第二hausdorff距离;若是,执行步骤六,若否,执行步骤七;
21.步骤六:判断所述第一hausdorff距离是否大于第一预设值,若是,执行步骤八;若否,执行步骤十;
22.步骤七:判断所述第二hausdorff距离是否大于第二预设值,若是,执行步骤九;
23.步骤八:更新所述移除后的第一三角形集合:连接所述移除后的第一三角形集合中的每个三角形的所有边的中点;将所述移除后的第一三角形集合作为所述第一三角形集合;执行步骤二;
24.步骤九:获取所述网格模型中距离所述第一边界点集合的最远的第一边界点,获取所述第一边界点到所述第二边界点集合的第一最短路径;所述第一最短路径由所述移除后的第一三角形集合中的三角形的边组成;更新所述移除后的第一三角形集合:将组成所述第一最短路径的边所在的三角形的所有边的中点连接,得到多个三角形;将所述移除后的第一三角形集合作为所述第一三角形集合;执行步骤二;
25.步骤十:判定当前所述移除后的第一三角集合的边界组成的图形为所述包围多边形。
26.在上述实现过程中,移除第一三角形集合中的与所述网格模型的边界不相邻的三角形,能够使得剩下的三角形的边组成的边界与网格模型的边界贴合。hausdorff距离能够反映两个点集的离散程度,在此基础上,获取所述第一边界点集合到所述网格模型的第一hausdorff距离和所述网格模型到所述第一边界点集合的第二hausdorff距离并根据第一hausdorff距离和第二hausdorff距离设置阈值,对第一三角形集合进行迭代,最终使得迭代后的第一三角形集合的外边界组成的图形能和网格模型高度贴合。
27.进一步地,所述根据所述第二三角形集合生成所述包围多边形的步骤,包括:
28.步骤一:获取所述网格模型的边界;
29.步骤二:移除所述第二三角形集合中的与所述网格模型的边界不相邻的三角形,得到移除后的第二三角形集合;
30.步骤三,获取所述移除后的第二三角形集合中的所有边界点,组成第二边界点集合;
31.步骤四:获取所述第二边界点集合到所述网格模型的第三hausdorff距离和所述网格模型到所述第二边界点集合的第四hausdorff距离;
32.步骤五:判断所述第三hausdorff距离是否大于所述第四hausdorff距离;若是,执行步骤六,若否,执行步骤七;
33.步骤六:判断所述第三hausdorff距离是否大于第三预设值,若是,执行步骤八;若否,执行步骤十;
34.步骤七:判断所述第四hausdorff距离是否大于第四预设值,若是,执行步骤九;
35.步骤八:更新所述移除后的第二三角形集合:连接所述移除后的第二三角形集合中的每个三角形的所有边的中点;将所述移除后的第二三角形集合作为所述第二三角形集合,执行步骤二;
36.步骤九:获取所述网格模型中距离所述第二边界点集合最远的第二边界点,获取所述第二边界点到所述第二边界点集合的第二最短路径;所述第二最短路径由所述移除后的第二三角形集合中的三角形的边组成;更新所述移除后的第二三角形集合:将组成所述第二最短路径的边所在的三角形的所有边的中点连接,得到多个三角形;将所述移除后的第二三角形集合作为所述第二三角形集合;执行步骤二;
37.步骤十:判定当前所述移除后的第二三角集合的边界组成的图形为所述包围多边形。
38.在上述实现过程中,移除第二三角形集合中的与所述网格模型的边界不相邻的三角形,能够使得剩下的三角形的边组成的边界与网格模型的边界贴合。hausdorff距离能够反映两个点集的离散程度,在此基础上,获取所述第二边界点集合到所述网格模型的第三hausdorff距离和所述网格模型到所述第二边界点集合的第四hausdorff距离并根据第三hausdorff距离和第四hausdorff距离设置阈值,对第二三角形集合进行迭代,最终使得迭代后的第二三角形集合的外边界组成的图形能和网格模型高度贴合。
39.进一步地,在生成所述网格模型的包围多边形的步骤之后,所述方法还包括:
40.使用拓扑优化算法所述包围多边形进行处理,得到顶点数减少的包围多边形。
41.在上述过程中,通过使用优化算法,能够实现对包围多边形进行迭代,得到顶点数减少的包围多边形,减少包围多边形的复杂度。
42.进一步地,所述使用拓扑优化算法所述包围多边形进行处理,得到顶点数减少的包围多边形的步骤,包括:
43.遍历所述包围多边形的顶点,对所述包围多边形的每个顶点执行以下操作:
44.连接当前遍历顶点的左顶点和右顶点,得到新的包围多边形;
45.判断所述新的包围多边形到所述网格模型的双向hausdorff距离是否满足预设条件;
46.若是,则删除所述当前遍历顶点;
47.若否,保留所述当前遍历顶点;
48.依次连接保留的所有顶点,得到所述顶点数减少的包围多边形。
49.在上述实现过程中,通过遍历顶点,删除当前遍历的顶点,判断删除当前遍历的顶点后包围多边形的与网格模型的贴合程度是否受到影响,若对贴合程度没有影响,则保留顶点。基于上述实施方式,能够在包围多边形与网格模型贴合的情况下保持包围多边形的
低复杂度。
50.进一步地,所述使用拓扑优化算法对所述包围多边形进行处理,得到顶点数减少的包围多边形的步骤,包括:
51.遍历所述包围多边形的顶点,对所述包围多边形的每个顶点执行以下操作:
52.连接当前遍历顶点的左顶点和右顶点,得到第一待定边;
53.获取所述第一待定边的法线方向;
54.将所述当前遍历顶点的左顶点和右顶点沿所述法线方向移动预设距离;
55.判断移动所述右顶点和所述左顶点后的所述包围多边形到所述网格模型的双向hausdorff距离是否满足预设条件;
56.若是,更新所述左顶点和所述右顶点的坐标,并删除所述当前遍历顶点;
57.若否,遍历下一顶点;
58.依次连接更新后的各个顶点,得到所述顶点数减少的包围多边形。
59.在上述实现过程中,第一待定边是当前遍历顶点的左顶点和右顶点的连线,如果在该第一待定边的法向方向上移动后,新生成的包围多边形的距离约束仍然成立,则说明该顶点对该包围多边形的意义不大,可以删除。基于上述实施实施方式,能够在包围多边形与网格模型贴合的情况下保持包围多边形的低复杂度。
60.进一步地,在所述遍历下一顶点的步骤之前,还包括:
61.判断所述左顶点和所述右顶点的移动次数是否已经达到预设最大值;
62.若是,根据所述当前遍历顶点的坐标、所述左顶点的坐标和所述右顶点的坐标更新所述左顶点和所述右顶点的坐标;
63.若否,将所述当前遍历顶点沿所述法线方向继续移动所述预设距离。
64.在上述实现过程中,为每个顶点遍历设置在第一待定边的最大移动距离,可以避免每个顶点移动的距离太大而影响包围多边形和网格模型的贴合程度。
65.进一步地,在所述使用拓扑优化算法对所述包围多边形进行处理,得到顶点数减少的包围多边形的步骤之后,还包括:
66.使用局部能量优化算法对所述顶点数减少的包围多边形进行优化,得到平滑的包围多边形。
67.在上述实现过程中,通过使用局部能量优化算法,能够使得包围多边形更加平滑。
68.第二方面,本技术实施例提供一种家具的轮廓的识别方法,应用如第一方面所述的平面模型的包围多边形的生成方法;其中,
69.在获取所述平面模型的网格模型的步骤之前,还包括:获取家具的平面模型;
70.在生成所述网格模型的包围多边形的步骤之后,还包括:确定所述包围多边形为所述家具的轮廓。
71.第三方面,本技术实施例提供一种包围多边形的生成装置,包括:
72.获取模块,用于获取网格模型;
73.构造模块,用于构造所述网格模型的矩形包围盒;
74.生成模块,用于使用带约束条件的算法对所述网格模型和所述矩形包围盒进行处理,生成所述网格模型的包围多边形;所述包围多边形包围所述网格模型,且与所述网格模型没有交点。
75.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
76.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
77.图1为本技术实施例提供的一种平面模型的包围多边形的生成方法的流程示意图;
78.图2为本技术实施例提供的另一种平面模型的包围多边形的生成方法的流程示意图;
79.图3为本技术实施例提供的生成网格模型的包围多边形的流程示意图;
80.图4为本技术实施例提供的根据第一三角形集合生成包围多边形的流程示意图;
81.图5为本技术实施例提供的根据第二三角形集合生成包围多边形的流程示意图;
82.图6为本技术实施例提供的获取顶点数减少的包围多边形的流程示意图;
83.图7为本技术实施例提供的获取顶点数减少的包围多边形的另一流程示意图;
84.图8为本技术实施例提供的家具轮廓识别方法的流程示意图;
85.图9为本技术实施例提供的包围多边形的生成装置的结构示意图。
具体实施方式
86.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
87.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
88.实施例1
89.参见图1,本技术提供一种平面模型的包围多边形的生成方法,包括:
90.s11:获取平面模型的网格模型;
91.s12:构造网格模型的矩形包围盒;
92.s13:使用带约束条件的算法对网格模型和矩形包围盒进行处理,生成网格模型的包围多边形;包围多边形包围网格模型,且与网格模型没有交点。
93.上述实施例中,平面模型可以是家居模型、人物模型等。矩形包围盒的大小根据具体生成的网格模型的大小而定。
94.上述实施例中,首先通过获取平面模型的网格模型,将平面模型二维化,构建网格模型的矩形包围盒,形成初步的构建基础,对网格模型和矩形包围盒使用待约束条件的算法,生成包围多边形。与现有技术相比,通过构造矩形包围盒和使用待约束条件的算法,能够使得生成的包围多边形有距离约束,平滑。
95.实施例2
96.参见图2,本技术实施例提供另一种平面模型的包围多边形的生成方法,包括:
97.s21:获取平面模型的网格模型;
98.s22:构造网格模型的矩形包围盒;
99.s23:对网格模型和矩形包围盒使用带约束条件的算法,生成网格模型的包围多边形;包围多边形包围网格模型,且与网格模型没有交点;
100.s24:使用拓扑优化算法包围多边形进行处理,得到顶点数减少的包围多边形;
101.s25:使用局部能量优化算法对顶点数减少的包围多边形进行优化,得到平滑的包围多边形;
102.通过使用优化算法,能够实现对包围多边形进行迭代,得到顶点数减少的包围多边形,减少包围多边形的复杂度。
103.在一种实施方式中,参见图3,s23进一步包括:
104.s231:判断网格模型是否为单连通图形;若是,执行s232,若否,执行s233;
105.s232:使用带约束的delaunay三角剖分算法对矩形包围盒和网格模型的外边界进行三角剖分,得到第一三角形集合;根据第一三角形集合生成包围多边形;
106.s233:使用带约束的delaunay三角剖分算法对网格模型的内边界、网格模型的外边界和矩形包围盒的外边界进行三角剖分,得到第二三角形集合;根据第二三角形集合生成包围多边形。
107.在s232中,使用带约束的delaunay三角剖分算法对矩形包围盒和网格模型进行处理,得到的第一三角形集合对网格模型的拟合程度更高。
108.上述实施例中,带约束的delaunay三角剖分算法是指将一些无结构的散点组合成一个三角形网格,并且该三角剖分满足空圆性,最小角最大化性质,满足给定的边约束。现有技术已有记载,这里不再赘述。
109.进一步地,参见图4,为步骤s232的一种可能的实现方式,包括:
110.s2321:获取网格模型的边界;
111.s2322:移除第一三角形集合中的与网格模型的边界不相邻的三角形,得到移除后的第一三角形集合;
112.s2323:获取第一边界点集合到网格模型的第一hausdorff距离和网格模型到第一边界点集合的第二hausdorff距离;
113.s2324:判断第一hausdorff距离是否大于第一预设值,若是,执行s2328;若否,执行步骤23210;
114.s2325:判断第一hausdorff距离是否大于第二hausdorff距离;若是,执行s2326;若否,执行s2327;
115.s2326:判断第一hausdorff距离是否大于第一预设值,若是,执行s2328;若否,执行s23210;
116.s2327:判断第二hausdorff距离是否大于第二预设值,若是,执行s2329;
117.s2328:更新移除后的第一三角形集合:连接移除后的第一三角形集合中的每个三角形的所有边的中点;将移除后的第一三角形集合作为第一三角形集合;执行s2322;
118.s2329:获取网格模型中距离第一边界点集合的最远的第一边界点,获取第一边界点到第一边界点集合的第一最短路径;第一最短路径由移除后的第一三角形集合中的三角形的边组成;更新移除后的第一三角形集合:将组成第一最短路径的边所在的三角形的所
有边的中点连接,得到多个三角形;将移除后的第一三角形集合作为第一三角形集合;执行步骤二;
119.s23210:判定当前移除后的第一三角集合的边界组成的图形为包围多边形。
120.移除第一三角形集合中的与网格模型的边界不相邻的三角形,能够使得剩下的三角形的边组成的边界与网格模型的边界贴合。hausdorff距离能够反映两个点集的离散程度,在此基础上,获取第一边界点集合到网格模型的第一hausdorff距离和网格模型到第一边界点集合的第二hausdorff距离并根据第一hausdorff距离和第二hausdorff距离设置阈值,对第一三角形集合进行迭代,最终使得迭代后的第一三角形集合的外边界组成的图形能和网格模型高度贴合。
121.进一步地,参见图5,s233可以通过以下方式实现,包括:
122.s2331:获取网格模型的边界;(边界由处于在外围的边组成)
123.s2332:移除第二三角形集合中的与网格模型的边界不相邻的三角形,得到移除后的第二三角形集合;
124.s2333:获取移除后的第二三角形集合中的所有边界点,组成第二边界点集合;
125.s2334:获取第二边界点集合到网格模型的第三hausdorff距离和网格模型到第二边界点集合的第四hausdorff距离;
126.s2335:判断第三hausdorff距离是否大于第四hausdorff距离;若是,执行s2336,若否,执行s2337;
127.s2336:判断第三hausdorff距离是否大于第三预设值,若是,执行s2338;若否,执行s23310;
128.s2337:判断第四hausdorff距离是否大于第四预设值,若是,执行s2339;若否执行s23310;
129.s2338:更新移除后的第二三角形集合:连接移除后的第二三角形集合中的每个三角形的所有边的中点;将移除后的第二三角形集合作为第二三角形集合,执行s2332;
130.s2339:获取网格模型中距离第二边界点集合的最远的第二边界点,获取第二边界点到第二边界点集合的第二最短路径;第二最短路径由移除后的第二三角形集合中的三角形的边组成;更新移除后的第二三角形集合:将组成第二最短路径的边所在的三角形的所有边的中点连接,得到多个三角形;将移除后的第二三角形集合作为第二三角形集合;执行步骤二;
131.s23310:判定当前移除后的第二三角集合的边界组成的图形为包围多边形。
132.上述实施例中,移除第二三角形集合中的与网格模型的边界不相邻的三角形,能够使得剩下的三角形的边组成的边界与网格模型的边界贴合。hausdorff距离能够反映两个点集的离散程度,在此基础上,获取第二边界点集合到网格模型的第三hausdorff距离和网格模型到第二边界点集合的第四hausdorff距离并根据第三hausdorff距离和第四hausdorff距离设置阈值,对第二三角形集合进行迭代,最终使得迭代后的第二三角形集合的外边界组成的图形能和网格模型高度贴合。
133.进一步地,参见图6,该流程为s24的一种可能实现方式,遍历包围多边形的顶点,对包围多边形的每个顶点执行以下操作:
134.s2411:连接当前遍历顶点的左顶点和右顶点,得到新的包围多边形;
135.s2412:判断新的包围多边形到网格模型的双向hausdorff距离是否满足预设条件;若是,执行s2413;若否,执行s2414;
136.双向hausdorff距离为新的包围多边形到网格模型的hausdorff距离和网格模型到新的包围多边形中最大值,为两个hausdorff距离设置阈值,判断的步骤可以参见s233和s234中关于hausdorff距离的判断方式。
137.s2413:则删除当前遍历顶点;
138.s2414:保留当前遍历顶点;
139.依次连接保留的所有顶点,得到顶点数减少的包围多边形。
140.进一步地,参见图7,该流程为s24的另一种可能实现方式,遍历包围多边形的顶点,对包围多边形的每个顶点执行以下操作:
141.s2421:连接当前遍历顶点的左顶点和右顶点,得到第一待定边;
142.s2422:获取第一待定边的法线方向;
143.s2423:将当前遍历顶点的左顶点和/或右顶点沿法线方向移动预设距离;
144.s2424:判断移动右顶点和/或所述左顶点后的包围多边形到网格模型的双向hausdorff距离是否满足预设条件;若是,执行s2425;若否,执行s426;
145.s2425:更新左顶点和右顶点的坐标,并删除当前遍历顶点;
146.s2426:遍历下一个顶点。
147.在s2426之前,还包括:判断左顶点和右顶点的移动次数是否已经达到预设最大值;
148.若是,根据当前遍历顶点的坐标、左顶点的坐标和右顶点的坐标更新左顶点和右顶点的坐标;若否,将当前遍历顶点沿法线方向继续移动预设距离。
149.根据当前遍历顶点的坐标、左顶点的坐标和右顶点的坐标更新左顶点和右顶点的坐标;可以通过以下方式实现:
150.将右顶点投影到左顶点与当前遍历顶点连成的直线上,得到新的右顶点;判断移动右顶点后的包围多边形到网格模型的双向hausdorff距离是否满足预设条件;
151.若是,更新右顶点的坐标,并将当前遍历顶点删除;
152.若否,根据移动后的当前遍历顶点的右顶点和移动后的当前遍历顶点更新当前遍历顶点的左顶点的坐标:将左顶点投影到右顶点与当前遍历顶点连成的直线上,判断更新左顶点后的新的包围多边形是否满足距离约束,若是,则更新左顶点的坐标,并将当前遍历顶点删除;若否,不对左顶点进行更新。
153.多次遍历,每次找到包围多边形上角度最接近于π的顶点,以上策略去删除该顶点,直到确认cage中所有的顶点都无法通过上述策略删除。
154.依次连接更新后的各个顶点,得到顶点数减少的包围多边形。
155.在一种可能的实施方式中,在s25中,进行局部平滑能量优化和局部近似能量优化。
156.为了使得包围多边形尽可能平滑,依次对包围多边形上每个顶点的坐标进行优化,最小化以下局部平滑能量:
157.e1=||x
i-x
i-1
||2 ||x
i-x
i 1
||
2-||x
i-1-x
i 1
||2158.其中xi是包围多边形上第i个顶点的顶点坐标,x
i-1
是第i个顶点的左顶点的坐标,
x
i 1
是第i个顶点的左顶点的坐标。遍历包围多边形的每个顶点,求得顶点处使得能量下降的负梯度方向,并应用线搜索方法,直至新的包围多边形满足armijo-goldstein准则以及包围性,无自交,hausdorff距离有界约束。
159.为了使得包围多边形尽可能贴近原模型,依次优化包围多边形上每个顶点的坐标,最小化以下局部近似能量:
[0160][0161]
其中d(
·
,
·
)是距离算子,ej是与待优化的当前遍历顶点相邻的左右邻边,xi为网格模型的边界点并且其对应包围多边形上的最近点落在ej上。遍历包围多边形上的每个顶点,求得顶点处使得能量下降的负梯度方向并做线搜索。
[0162]
实施例3
[0163]
参见图8,本技术提供一种家具轮廓识别方法,应用实施例1中的方法,家具轮廓识别方法包括:
[0164]
s31:获取家具的平面模型;
[0165]
s32:获取平面模型的网格模型;
[0166]
s33:使用带约束条件的算法对网格模型和矩形包围盒进行处理,生成网格模型的包围多边形;包围多边形包围网格模型,且与网格模型没有交点;
[0167]
s34:确定包围多边形为家具的轮廓。
[0168]
实施例4
[0169]
参见图9,本技术实施例提供一种平面模型的包围多边形的生成装置,包括:
[0170]
获取模块1,用于获取网格模型;
[0171]
构造模块2,用于构造网格模型的矩形包围盒;
[0172]
生成模块3,用于使用带约束条件的算法对网格模型和矩形包围盒进行处理,生成网格模型的包围多边形;包围多边形包围网格模型,且与网格模型没有交点。
[0173]
生成模块3还用于使用拓扑优化算法包围多边形进行处理,得到顶点数减少的包围多边形。
[0174]
生成模块3还用于判断网格模型是否为单连通图形;若是,使用带约束的delaunay三角剖分算法对矩形包围盒和网格模型的外边界进行三角剖分,得到第一三角形集合;根据第一三角形集合生成包围多边形;若否,使用带约束的delaunay三角剖分算法对网格模型的内边界、所述网格模型的外边界和矩形包围盒的外边界进行三角剖分,得到第二三角形集合;根据第二三角形集合生成包围多边形。
[0175]
生成模块3还用于执行以下方法:步骤一:获取网格模型的边界;步骤二:移除第一三角形集合中的与网格模型的边界不相邻的三角形,得到移除后的第一三角形集合;步骤三,获取移除后的第一三角形集合中的所有边界点,组成第一边界点集合;步骤四:获取第一边界点集合到网格模型的第一hausdorff距离和网格模型到第一边界点集合的第二hausdorff距离;步骤五:判断第一hausdorff距离是否大于第二hausdorff距离;若是,执行步骤六,若否,执行步骤七;步骤六:判断第一hausdorff距离是否大于第一预设值,若是,执行步骤八;若否,执行步骤十;步骤七:判断第二hausdorff距离是否大于第二预设值,若是,执行步骤九;步骤八:更新移除后的第一三角形集合:连接移除后的第一三角形集合中的每
个三角形的所有边的中点;将移除后的第一三角形集合作为第一三角形集合;执行步骤二;步骤九:获取网格模型中距离第一边界点集合的最远的第一边界点,获取第一边界点到第一边界点集合的第一最短路径;第一最短路径由移除后的第一三角形集合中的三角形的边组成;更新移除后的第一三角形集合:将组成第一最短路径的边所在的三角形的所有边的中点连接,得到多个三角形;将移除后的第一三角形集合作为第一三角形集合;执行步骤二;执行步骤二;步骤十:判定当前移除后的第一三角集合的边界组成的图形为包围多边形。
[0176]
生成模块3还用于执行以下方法:步骤一:获取网格模型的边界;步骤二:移除第二三角形集合中的与网格模型的边界不相邻的三角形,得到移除后的第二三角形集合;步骤三,获取移除后的第二三角形集合中的所有边界点,组成第二边界点集合;步骤四:获取第二边界点集合到网格模型的第三hausdorff距离和网格模型到第二边界点集合的第四hausdorff距离;步骤五:判断第三hausdorff距离是否大于第四hausdorff距离;若是,执行步骤六,若否,执行步骤七;步骤六:判断第三hausdorff距离是否大于第三预设值,若是,执行步骤八;若否,执行步骤十;步骤七:判断第四hausdorff距离是否大于第四预设值,若是,执行步骤九;步骤八:更新移除后的第二三角形集合:连接移除后的第二三角形集合中的每个三角形的所有边的中点;将移除后的第二三角形集合作为第二三角形集合,执行步骤二;获取网格模型中距离第二边界点集合的最远的第二边界点,获取第二边界点到第二边界点集合的第二最短路径;第二最短路径由移除后的第二三角形集合中的三角形的边组成;更新移除后的第二三角形集合:将组成第二最短路径的边所在的三角形的所有边的中点连接,得到多个三角形;将移除后的第二三角形集合作为第二三角形集合;执行步骤二;步骤十:判定当前移除后的第二三角集合的边界组成的图形为包围多边形。
[0177]
生成模块3还用于遍历包围多边形的顶点,对包围多边形的每个顶点执行以下操作:连接当前遍历顶点的左顶点和右顶点,得到新的包围多边形;判断新的包围多边形到网格模型的双向hausdorff距离是否满足预设条件;若是,则删除当前遍历顶点;若否,保留当前遍历顶点;依次连接保留的所有顶点,得到顶点数减少的包围多边形。
[0178]
生成模块3还用于遍历包围多边形的顶点,对包围多边形的每个顶点执行以下操作:
[0179]
连接当前遍历顶点的左顶点和右顶点,得到第一待定边;获取第一待定边的法线方向;将当前遍历顶点沿法线方向移动预设距离;获取移动后的当前遍历顶点的坐标;根据移动后的当前遍历顶点的坐标移动当前遍历顶点的右顶点;判断移动右顶点后的包围多边形到网格模型的双向hausdorff距离是否满足预设条件;若是,更新右顶点的坐标;若否,根据更新当前遍历顶点的右顶点和移动后的当前遍历顶点更新当前遍历顶点的左顶点的坐标;依次连接更新后的各个顶点,得到顶点数减少的包围多边形。
[0180]
生成模块3还用于判断连接当前遍历顶点的移动次数是否已经达到预设最大值;若是,根据更新当前遍历顶点的右顶点和移动后的当前遍历顶点更新当前遍历顶点的左顶点的坐标;若否,将当前遍历顶点沿法线方向继续移动预设距离。
[0181]
生成模块3还用于使用局部能量优化算法对顶点数减少的包围多边形进行优化,得到平滑的包围多边形。
[0182]
本装置实施例的功能模块所能实现的功能请参考实施例1和2的方法相应流程的
描述,这里不再赘述。
[0183]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0184]
另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0185]
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0186]
以上仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
[0187]
以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
[0188]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献