针对3D模型的简化方法、装置、电子设备及存储介质与流程

文档序号:24161907发布日期:2021-03-05 13:14阅读:114来源:国知局
针对3D模型的简化方法、装置、电子设备及存储介质与流程
针对3d模型的简化方法、装置、电子设备及存储介质
技术领域
1.本发明涉及计算机图像学技术领域,特别是涉及一种针对3d模型的简化方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机图像学的发展,3d(threedimensional,三维图形)技术在很多领域都有较大的发展。目前,在3d技术中以三角网格形式表示的3d模型比较通用,如图1所示,图1中的模型110是以很多个三角形拼接形成的3d模型。
3.然而,目前的3d模型中三角形的面数过多,3d模型过于复杂,这导致对3d模型的进行渲染以及动作驱动等操作的计算量都过于巨大。而这种由于3d模型过于复杂而导致的计算量过大的问题,会导致计算力有限的模型驱动设备难以对目前的3d模型的进行模型渲染以及动作驱动等操作,即目前的3d模型由于复杂度过高难以满足一些有实时性要求的应用场景。


技术实现要素:

4.本发明实施例的目的在于提供一种针对3d模型的简化方法、装置、电子设备及存储介质,以简化3d模型的结构,使得计算力有限的模型驱动设备可以对3d模型的进行模型渲染以及动作驱动等操作。
5.为了达到上述目的,本发明实施例提供了一种针对3d模型的简化方法,包括:
6.获得待简化3d模型的模型数据;所述待简化3d模型为由多个三角形拼接形成的模型;所述模型数据包括:所述待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据;
7.基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数;其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量;
8.将度数等于4的顶点确定为待简化顶点;
9.针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将所述待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;
10.针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数;
11.针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;
12.若满足,则删除所述待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两
个参考顶点作为目标参考顶点;
13.在所述待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;
14.更新各个参考顶点的简化次数,以及,更新待简化3d模型。
15.进一步的,所述根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点,包括:
16.分别计算该待简化顶点的各组不相邻的两个参考顶点之间的距离;
17.将距离最小的一组不相邻的两个参考顶点确定为目标参考顶点。
18.进一步的,所述在所述待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新建的三角形,包括:
19.根据该待简化顶点的各个参考顶点的坐标数据,在所述待简化3d模型中创建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;并为每个新创建的三角形生成一个新的标识。
20.进一步的,所述针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件,包括:
21.判断每个待简化顶点是否小于第一预设简化次数,以及待简化顶点的各个参考顶点的简化次数是否均小于第二预设简化次数;若均小于,则满足预设的简化次数条件;
22.判断各个目标三角形的面积是否均小于预设面积,若小于,则满足预设的面积条件。
23.进一步的,在所述更新待简化3d模型之后,还包括:
24.判断当前迭代次数是否达到预设迭代次数;
25.如果当前迭代次数达到预设迭代次数,结束简化操作;
26.如果当前迭代次数未达到预设迭代次数,更新迭代次数;并针对更新后的待简化3d模型,并返回所述基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数的步骤。
27.进一步的,在所述更新各个参考顶点的简化次数之后,还包括:
28.将更新了简化次数后的各个参考顶点加到预设参考顶点集合中;
29.所述针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点的步骤,包括:
30.针对每一个待简化顶点,判断该待简化顶点是否在预设参考顶点集合中,如果不在,则表示该待简化顶点未被简化过,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点。
31.为了达到上述目的,本发明实施例提供了一种针对3d模型的简化装置,包括:
32.第一数据获得模块,用于获得待简化3d模型的模型数据;所述待简化3d模型为由多个三角形拼接形成的模型;所述模型数据包括:所述待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据;
33.顶点度数计算模块,用于基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数;其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量;
34.顶点确定模块,用于将度数等于4的顶点确定为待简化顶点;
35.第二数据获得模块,用于针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将所述待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;
36.第三数据获得模块,用于针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数;
37.第一判断模块,用于针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;
38.处理模块,用于若满足,则删除所述待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点;
39.三角形创建模块,用于在所述待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;
40.更新模块,用于更新各个参考顶点的简化次数,以及,更新待简化3d模型。
41.进一步的,所述处理模块,分别计算该待简化顶点的各组不相邻的两个参考顶点之间的距离;将距离最小的一组不相邻的两个参考顶点确定为目标参考顶点。
42.进一步的,所述三角形创建模块,具体用于根据该待简化顶点的各个参考顶点的坐标数据,在所述待简化3d模型中创建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;并为每个新创建的三角形生成一个新的标识。
43.进一步的,所述第一判断模块,包括:
44.第一判断子模块,用于判断每个待简化顶点是否小于第一预设简化次数,以及待简化顶点的各个参考顶点的简化次数是否均小于第二预设简化次数;若均小于,则满足预设的简化次数条件;
45.第二判断子模块,用于判断各个目标三角形的面积是否均小于预设面积,若小于,则满足预设的面积条件。
46.进一步的,所述装置,还包括:第二判断模块,用于判断当前迭代次数是否达到预设迭代次数;如果当前迭代次数达到预设迭代次数,结束简化操作;如果当前迭代次数未达到预设迭代次数,更新迭代次数;并针对更新后的待简化3d模型,并返回所述基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数的步骤。
47.进一步的,所述装置,还包括:
48.添加模块,用于将更新了简化次数后的各个参考顶点加到预设参考顶点集合中;
49.所述第二数据获得模块,具体用于针对每一个待简化顶点,判断该待简化顶点是否在预设参考顶点集合中,如果不在,则表示该待简化顶点未被简化过,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点。
50.为了达到上述目的,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
51.存储器,用于存放计算机程序;
52.处理器,用于执行存储器上所存放的程序时,实现上述任一所述针对3d模型的简化方法步骤。
53.为了达到上述目的,本发明实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述针对3d模型的简化方法步骤。
54.为了达到上述目的,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述针对3d模型的简化方法步骤。
55.本发明实施例有益效果:
56.采用本发明实施例提供的方法,获得待简化3d模型的模型数据;基于每个三角形的标识,计算待简化3d模型的每个三角形的各个顶点的度数;将度数等于4的顶点确定为待简化顶点;对于每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将在待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;若满足,则删除待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点;在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;更新各个参考顶点的简化次数,以及,更新待简化3d模型。通过将待简化3d模型中满足预设的简化次数和面积条件的目标三角形从3d模型中删除,并在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,即删去多个目标三角形,新建两个目标三角形,达到简化3d模型的目的,使得计算力有限的模型驱动设备可以对3d模型进行模型渲染以及动作驱动等操作。即使得3d模型可以满足对模型渲染以及动作驱动等操作有实时性要求的应用场景。
57.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
58.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
59.图1为现有技术中以三角网格形式表示的3d模型;
60.图2为本发明实施例提供的针对3d模型的简化方法的一种流程图;
61.图3为本发明实施例提供的针对3d模型的简化方法的另一种流程图;
62.图4为本发明实施例中待简化3d模型的一个β结构的示意图;
63.图5a为应用本发明实施例提供的方法在待简化3d模型的新建了两个三角形的一
种示意图;
64.图5b为应用本发明实施例提供的方法在待简化3d模型的新建了两个三角形的另一种示意图;
65.图6为本发明实施例提供的针对3d模型的简化装置的一种结构图;
66.图7为本发明实施例提供的针对3d模型的简化装置的另一种结构图;
67.图8为本发明实施例提供的电子设备的结构示意图。
具体实施方式
68.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
69.由于现有的3d模型因为过于复杂而导致计算力有限的模型驱动设备难以对现有的3d模型的进行模型渲染以及动作驱动等操作,为了简化3d模型的结构,使得简化后的3d模型可以满足计算力有限的模型驱动设备3d模型的进行模型渲染以及动作驱动等操作,本发明实施例提供了一种针对3d模型的简化方法、装置、电子设备及存储介质。
70.参见图2,图2为本发明实施例提供的针对3d模型的简化方法的一种流程,包括:
71.步骤201,获得待简化3d模型的模型数据。
72.其中,待简化3d模型为由多个三角形拼接形成的模型;模型数据包括:待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据。
73.步骤202,基于每个三角形的标识,计算待简化3d模型的每个三角形的各个顶点的度数。
74.其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量。
75.步骤203,将度数等于4的顶点确定为待简化顶点。
76.步骤204,针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形。
77.步骤205,针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积。
78.其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数。
79.步骤206,针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件。
80.步骤207,若满足,则删除所述待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点。
81.步骤208,在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形。
82.步骤209,更新各个参考顶点的简化次数,以及,更新待简化3d模型。
83.采用本发明实施例提供的方法,获得待简化3d模型的模型数据;基于每个三角形的标识,计算待简化3d模型的每个三角形的各个顶点的度数;将度数等于4的顶点确定为待简化顶点;对于每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将在待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;若满足,则删除待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点;在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;更新各个参考顶点的简化次数,以及,更新待简化3d模型。通过将待简化3d模型中满足预设的简化次数和面积条件的目标三角形从3d模型中删除,并在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,即删去多个目标三角形,新建两个目标三角形,达到简化3d模型的目的,使得计算力有限的模型驱动设备可以对3d模型进行模型渲染以及动作驱动等操作。即使得3d模型可以满足对模型渲染以及动作驱动等操作有实时性要求的应用场景。
84.参见图3,图3为本发明实施例提供的针对3d模型的简化方法的另一种流程,包括:
85.步骤301,获得待简化3d模型的模型数据。
86.本发明实施例中,待简化3d模型为由多个三角形拼接形成的模型,且每个三角形对应存在一个标识。待简化3d模型的模型数据包括:待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据。
87.举例说明,若待简化3d模型包括三角形t1和三角形t2等等多个三角形,其中,三角形t1的三个顶点及其顶点的三维坐标分别为p1(x1,y1,z1)、p2(x2,y2,z2)和p3(x3,y3,z3);三角形t2对应的标识“sg
t1”;三角形t2的三个顶点及其顶点坐标分别为p4(x4,y4,z4)、p5(x5,y5,z2)和p6(x6,y6,z6),三角形t2对应的标识“sg
t2”。
88.则待简化3d模型的模型数据中包括:三角形t1三个顶点的坐标数据p1(x1,y1,z1)、p2(x2,y2,z2)和p3(x3,y3,z3)和三角形t2对应的标识“sg
t1”;以及,三角形t2的三个顶点坐标数据p4(x4,y4,z4)、p5(x5,y5,z2)和p6(x6,y6,z6),以及,三角形t2对应的标识“sg
t2”。
89.步骤302,基于每个三角形的标识,计算待简化3d模型的每个三角形的各个顶点的度数。
90.其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量。
91.本发明实施例中,在获得待简化3d模型的模型数据之后,可以基于三角形的标识,确定出待简化3d模型中的各个三角形,然后针对每个三角形的每个顶点,计算与该顶点相连的三角形的边数作为该顶点的度数。
92.举例说明,参见图4,图4为待简化3d模型结构的一部分。图4展示了待简化3d模型
中的三角形abc、三角形acd、三角形ade和三角形aeb。若其中的三角形abc的标识为“sg
abc”,本步骤中可以根据标识“sg
abc”确定出三角形abc。然后,针对三角形abc的顶点a,可以计算出与顶点a相连的三角形的边数位4,即可以得到顶点a的度数为4。同样的方式,可以计算出与顶点b相连的三角形的边数位3,即可以得到顶点b的度数为3,也可以得到顶点c的度数为3、顶点d的度数为3、顶点e的度数为3。
93.步骤303,将度数等于4的顶点确定为待简化顶点。
94.参见图4,图4中顶点a的度数为4,顶点b、顶点c、顶点d和顶点e的度数均为3,可以将顶点a作为待简化顶点。并且,可以将图4所示的由三角形abc、三角形acd、三角形ade和三角形aeb构成结构作为待简化3d模型中的β结构。本发明实施例中可以是通过简化待简化3d模型中的β结构,达到简化待简化3d模型的目的。
95.本发明实施例中,可以将所确定的待简化顶点放入预设的集合x中。例如,可以将图4中的待简化顶点a放入预设的集合x中。
96.步骤304,针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点。
97.并且,可以将待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形。
98.例如,参见图4,针对待简化顶点a,可以获得与其直接相连的四个顶点:顶点b、顶点c、顶点d和顶点e,并将顶点b、顶点c、顶点d和顶点e均作为待简化顶点a的参考顶点。并且,在待简化3d模型中,待简化顶点a与待简化顶点a的参考顶点所构成的三角形包括:三角形abc、三角形acd、三角形ade和三角形aeb,本步骤中,可以将三角形abc、三角形acd、三角形ade和三角形aeb均作为待简化顶点a对应的目标三角形。
99.本发明实施例中,可以针对待简化3d模型中每个三角形的每个顶点设置一个计数器,每个顶点的计数器用于计数该顶点的简化次数。其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数。本步骤中,可以将待简化3d模型中每个三角形的每个顶点的计数器的数值设置为0,即将每个顶点的简化次数的初始值设置为0。
100.步骤305,针对每个待简化顶点,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积。
101.具体的,可以根据目标三角形的三个顶点的坐标数据,计算出目标三角形的面积:
[0102][0103]
其中,s
δabc
表示目标三角形abc的面积,表示目标三角形abc的边ab的向量和边ac的向量之间的向量积,|ab|为目标三角形abc中边ab的长,|ac|为目标三角形abc中边ac的长。
[0104]
步骤306,从集合x中任取出一个待简化顶点,针对该待简化顶点,判断该待简化顶点的简化次数是否小于第一预设简化次数,以及该待简化顶点的各个参考顶点的简化次数是否均小于第二预设简化次数,若判断结果为是,执行步骤307,若判断结果为否,执行步骤312。
[0105]
其中,第一预设简化次数可以设定为2或3等等,第二预设简化次数也可以设定为2或3等等,不做具体限定。
[0106]
步骤307,判断该待简化顶点对应的各个目标三角形的面积是否均小于预设面积;若判断结果为是,执行步骤308,若判断结果为否,执行步骤312。
[0107]
其中,预设面积可以根据待简化3d模型的复杂度进行设定,若待简化3d模型的复杂度较高,可以将预设面积设定的较大一点。
[0108]
步骤308,删除待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形。
[0109]
具体的,可以删去该待简化顶点的坐标,以及删去该待简化顶点对应的三个目标三角形以及三个目标三角形的标识。
[0110]
举例说明,若第一预设简化次数和第二预设简化次数均设定为2,预设面积设定为10cm2,参见图4,若步骤306中从集合x中选取了待简化顶点a,可以得到待简化顶点a目前的简化次数为0,待简化顶点a的参考顶点分别为参考顶点b、参考顶点c、参考顶点d和参考顶点e,且参考顶点b、参考顶点c、参考顶点d和参考顶点e目前的简化次数均为0。待简化顶点a对应的四个目标三角形为:三角形abc、三角形acd、三角形ade和三角形aeb,若三角形abc、三角形acd、三角形ade和三角形aeb的面积分别为5cm2、7cm2、8cm2和9cm2,则可以得到:待简化顶点a的简化次数小于第一预设简化次数,且参考顶点b、参考顶点c、参考顶点d、参考顶点e的简化次数均小于第二预设简化次数,且待简化顶点a对应的目标三角形abc、目标三角形acd、目标三角形ade和目标三角形aeb的面积均小于预设面积。因此,可以从待简化3d模型中删去待简化顶点a的坐标,以及删去待简化顶点a对应的四个目标三角形以及四个目标三角形的标识。
[0111]
本步骤中,还可以将所删去的待简化顶点的各个参考顶点放入预设参考顶点集合中。例如,参见图4,若将图4中的待简化顶点a删去,则可以将待简化顶点a的参考顶点“参考顶点b、参考顶点c、参考顶点d和参考顶点e”放入预设参考顶点集合中。
[0112]
步骤309,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点。
[0113]
具体的,可以分别计算该待简化顶点的各组不相邻的两个参考顶点之间的距离;然后将距离最小的一组不相邻的两个参考顶点确定为目标参考顶点。
[0114]
举例说明,参见图4,待简化顶点a对应存在两组不相邻的参考顶点:参考顶点b-参考顶点d,参考顶点c-参考顶点e。本步骤可以计算参考顶点b和参考顶点d之间的距离,以及计算参考顶点c和参考顶点e之间的距离,将计算出来的距离最小的一组不相邻的两个参考顶点作为目标参考顶点。例如,若计算出来参考顶点b和参考顶点d之间的距离最小,则可以将参考顶点b和参考顶点d作为目标参考顶点;若计算出来参考顶点c和参考顶点e之间的距离最小,则可以将参考顶点c和参考顶点e作为目标参考顶点。具体的,可以采用如下公式计算两个参考顶点之间的距离:
[0115][0116]
其中,d
bd
表示参考顶点b和参考顶点d之间的距离,x
b
、y
b
和z
d
分别表示参考顶点b横坐标、纵坐标和竖坐标,x
d
、y
d
和z
d
分别表示参考顶点d横坐标、纵坐标和竖坐标。
[0117]
步骤310,在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形。
[0118]
举例说明,参见图4,若从待简化3d模型中删去了待简化顶点a的坐标,并且删去了待简化顶点a对应的四个目标三角形以及四个目标三角形的标识。
[0119]
针对待简化顶点a的两组不相邻的参考顶点,若计算出来参考顶点b和参考顶点d之间的距离最小,则可以将参考顶点b和参考顶点d作为目标参考顶点。且可以在待简化3d模型中创建由目标参考顶点b和目标参考顶点d以及参考顶点c作为顶点的新的三角形,并为所创建的新的三角形生成一个新的标识。即根据顶点b、顶点c和顶点d的坐标数据,创建新的三角形bcd,并为三角形bcd分配一个标识“sg
bcd”;同时,还可以在待简化3d模型中创建由目标参考顶点b和目标参考顶点d以及参考顶点e作为顶点的新的三角形,并为所创建的新的三角形生成一个新的标识。即根据顶点b、顶点c和顶点e的坐标数据,创建新的三角形bed,并为三角形bed分配一个标识“sg
bed”,即如图5a所示得到两个新创建的三角形:三角形bcd和三角形bed。
[0120]
若针对待简化顶点a的两组不相邻的参考顶点,计算出来参考顶点c和参考顶点e之间的距离最小,则可以将参考顶点c和参考顶点e作为目标参考顶点。且可以在待简化3d模型中创建由目标参考顶点c和目标参考顶点e以及参考顶点d作为顶点的新的三角形,并为所创建的新的三角形生成一个新的标识。即根据顶点c、顶点e和顶点d的坐标数据,创建新的三角形ced,并为三角形ced分配一个标识“sg
ced”;同时,还可以在待简化3d模型中创建由目标参考顶点c和目标参考顶点e以及参考顶点b作为顶点的新的三角形,并为所创建的新的三角形生成一个新的标识。即根据顶点c、顶点e和顶点b的坐标数据,创建新的三角形ceb,并为三角形ceb分配一个标识“sg
ceb”,即如图5b所示得到两个新创建的三角形:三角形ced和三角形ceb。
[0121]
步骤311,更新各个参考顶点的简化次数,以及,更新待简化3d模型。
[0122]
本步骤中,可以将删去的待简化顶点的各个参考顶点的计数器中的数值加1作为新的计数器的数值,即将各个参考顶点的简化次数加1作为新的简化次数。并更新待简化3d模型的结构,得到新的待简化3d模型。
[0123]
步骤312,当集合x不为空集时,从集合x中再次任取出一个新的待简化顶点。
[0124]
步骤313,判断该待简化顶点是否在预设参考顶点集合中,若判断结果为否,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点,并针对该待简化顶点返回执行步骤306;若判断结果为是,返回执行步骤312。
[0125]
其中,该待简化顶点不在预设参考顶点集合中表示该待简化顶点未被简化过。
[0126]
步骤314,当集合x为空集时,判断当前迭代次数是否达到预设迭代次数,若判断结果为是,执行步骤315;若判断结果为否,更新迭代次数,并针对更新后的待简化3d模型,返回执行步骤302。
[0127]
其中,预设迭代次数可以设定为50次或100次等等,不做具体限定。
[0128]
步骤315,结束简化操作。
[0129]
采用本发明实施例提供的方法,通过将待简化3d模型中满足预设的简化次数和面积条件的目标三角形从3d模型中删除,并在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,即删去多个目标三角形,新建两个目标三角形,
达到简化3d模型的目的,使得计算力有限的模型驱动设备可以对3d模型进行模型渲染以及动作驱动等操作。即使得3d模型可以满足对模型渲染以及动作驱动等操作有实时性要求的应用场景。
[0130]
基于同一发明构思,根据本发明上述实施例提供的针对3d模型的简化方法,相应地,本发明另一实施例还提供了一种针对3d模型的简化装置,其结构示意图如图6所示,具体包括:
[0131]
第一数据获得模块601,用于获得待简化3d模型的模型数据;所述待简化3d模型为由多个三角形拼接形成的模型;所述模型数据包括:所述待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据;
[0132]
顶点度数计算模块602,用于基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数;其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量;
[0133]
顶点确定模块603,用于将度数等于4的顶点确定为待简化顶点;
[0134]
第二数据获得模块604,用于针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将所述待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;
[0135]
第三数据获得模块605,用于针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数;
[0136]
第一判断模块606,用于针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;
[0137]
处理模块607,用于若满足,则删除所述待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点;
[0138]
三角形创建模块608,用于在所述待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;
[0139]
更新模块609,用于更新各个参考顶点的简化次数,以及,更新待简化3d模型。
[0140]
可见,采用本发明实施例提供的装置,获得待简化3d模型的模型数据;基于每个三角形的标识,计算待简化3d模型的每个三角形的各个顶点的度数;将度数等于4的顶点确定为待简化顶点;对于每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将在待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;若满足,则删除待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距
离,确定出一组不相邻的两个参考顶点作为目标参考顶点;在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;更新各个参考顶点的简化次数,以及,更新待简化3d模型。通过将待简化3d模型中满足预设的简化次数和面积条件的目标三角形从3d模型中删除,并在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,即删去多个目标三角形,新建两个目标三角形,达到简化3d模型的目的,使得计算力有限的模型驱动设备可以对3d模型进行模型渲染以及动作驱动等操作。即使得3d模型可以满足对模型渲染以及动作驱动等操作有实时性要求的应用场景。
[0141]
进一步的,所述处理模块607,分别计算该待简化顶点的各组不相邻的两个参考顶点之间的距离;将距离最小的一组不相邻的两个参考顶点确定为目标参考顶点。
[0142]
进一步的,所述三角形创建模块608,具体用于根据该待简化顶点的各个参考顶点的坐标数据,在所述待简化3d模型中创建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;并为每个新创建的三角形生成一个新的标识。
[0143]
进一步的,参见图7,所述第一判断模606,包括:
[0144]
第一判断子模块701,用于判断每个待简化顶点是否小于第一预设简化次数,以及待简化顶点的各个参考顶点的简化次数是否均小于预设简化次数;若均小于,则满足预设的简化次数条件;
[0145]
第二判断子模块702,用于判断各个目标三角形的面积是否均小于预设面积,若小于,则满足预设的面积条件。
[0146]
进一步的,参见图7,所述装置还包括:第二判断模块703,用于判断当前迭代次数是否达到预设迭代次数;如果当前迭代次数达到预设迭代次数,结束简化操作;如果当前迭代次数未达到预设迭代次数,更新迭代次数;并针对更新后的待简化3d模型,并返回所述基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数的步骤。
[0147]
进一步的,参见图7,所述装置还包括:添加模块704,用于将更新了简化次数后的各个参考顶点加到预设参考顶点集合中;
[0148]
所述第二数据获得模块604,具体用于针对每一个待简化顶点,判断该待简化顶点是否在预设参考顶点集合中,如果不在,则表示该待简化顶点未被简化过,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点。
[0149]
可见,采用本发明实施例提供的装置,通过将待简化3d模型中满足预设的简化次数和面积条件的目标三角形从3d模型中删除,并在待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,即删去多个目标三角形,新建两个目标三角形,达到简化3d模型的目的,使得计算力有限的模型驱动设备可以对3d模型进行模型渲染以及动作驱动等操作。即使得3d模型可以满足对模型渲染以及动作驱动等操作有实时性要求的应用场景。
[0150]
本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
[0151]
存储器803,用于存放计算机程序;
[0152]
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
[0153]
获得待简化3d模型的模型数据;所述待简化3d模型为由多个三角形拼接形成的模型;所述模型数据包括:所述待简化3d模型的每个三角形的标识及每个三角形各个顶点的坐标数据;
[0154]
基于每个三角形的标识,计算所述待简化3d模型的每个三角形的各个顶点的度数;其中,三角形顶点的度数为:与该顶点相连的三角形的边的数量;
[0155]
将度数等于4的顶点确定为待简化顶点;
[0156]
针对每一个待简化顶点,获得与该待简化顶点直接相连的其他各个顶点分别作为该待简化顶点的参考顶点;并将所述待简化3d模型中该待简化顶点的参考顶点与该待简化顶点之间构成的三角形均作为该待简化顶点对应的目标三角形;
[0157]
针对每个待简化顶点,获得该待简化顶点与该待简化顶点的各个参考顶点的简化次数;以及,基于该待简化顶点与该待简化顶点的各个参考顶点的坐标数据,计算该待简化顶点对应的各个目标三角形的面积;其中,三角形每个顶点的简化次数为:与该顶点位于同一三角形中的其他顶点被删掉的个数;
[0158]
针对每个待简化顶点,基于各个参考顶点的简化次数各个目标三角形的面积,判断是否满足预设的简化次数和面积条件;
[0159]
若满足,则删除所述待简化3d模型中的该待简化顶点和该待简化顶点对应的各个目标三角形;以及,根据该待简化顶点的各个参考顶点之间的距离,确定出一组不相邻的两个参考顶点作为目标参考顶点;
[0160]
在所述待简化3d模型中新建由两个目标参考顶点和任意一个剩余的参考顶点之间构成的三角形,得到两个新创建的三角形;
[0161]
更新各个参考顶点的简化次数,以及,更新待简化3d模型。
[0162]
上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0163]
通信接口用于上述电子设备与其他设备之间的通信。
[0164]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0165]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0166]
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一针对3d模型的简化方法的步骤。
[0167]
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其
在计算机上运行时,使得计算机执行上述实施例中任一针对3d模型的简化方法。
[0168]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0169]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0170]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及存储介质而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0171]
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1