一种模型简化方法及其相关设备与流程

文档序号:28530949发布日期:2022-01-19 12:49阅读:78来源:国知局
一种模型简化方法及其相关设备与流程

1.本技术涉及数据处理技术领域,具体涉及一种模型简化方法及其相关设备。


背景技术:

2.随着一些计算机技术(如,增强现实技术、虚拟现实技术、混合现实技术等)的不断普及,高维数据模型(例如,三维数据模型)的应用范围越来越广。
3.实际上,为了提高模型展示效果的真实性,通常会借助大量数据点构建一些结构比较复杂的高维数据模型,使得在这些高维数据模型的处理过程中需要消耗大量的资源(如,计算资源、内存资源等),从而使得这些高维数据模型的处理效果比较差(例如,处理过程耗时太长、处理过程的资源需求太高等)。


技术实现要素:

4.有鉴于此,本技术实施例提供一种模型简化方法及其相关设备,能够提高针对高维数据模型的处理效果。
5.为解决上述问题,本技术实施例提供的技术方案如下:
6.本技术实施例提供了一种模型简化方法,所述方法包括:
7.在获取到待简化模型之后,确定所述待简化模型中至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据;
8.根据所述至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据;
9.根据所述至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据,确定所述至少一个顶点对的合并代价;
10.根据所述至少一个顶点对的合并代价,对所述待简化模型进行顶点合并处理。
11.在一种可能的实施方式中,所述根据所述至少一个顶点对的合并代价,对所述待简化模型进行顶点合并处理,包括:
12.根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对;
13.将所述待简化模型中目标点对进行合并,并继续执行所述确定所述待简化模型中至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据的步骤,直至达到预设停止条件。
14.在一种可能的实施方式中,所述根据所述至少一个顶点对的合并代价,对所述待简化模型进行顶点合并处理,包括:
15.根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对;
16.将所述待简化模型中目标点对进行合并,得到至少一个待更新顶点;
17.根据所述至少一个待更新顶点,更新所述至少一个顶点对的合并代价,并继续执
行所述根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对的步骤,直至达到预设停止条件。
18.在一种可能的实施方式中,所述至少一个顶点包括待使用顶点,且所述待使用顶点的曲率表征数据的确定过程,包括:
19.从所述待简化模型中确定所述待使用顶点的参考邻接面和所述待使用顶点的至少一个邻接点;
20.根据各个所述邻接点与所述参考邻接面之间的相对位置表征数据,确定所述待使用顶点的曲率表征数据。
21.在一种可能的实施方式中,所述至少一个邻接点包括待处理邻接点,且所述待处理邻接点与所述参考邻接面之间的相对位置表征数据包括所述待处理邻接点到所述参考邻接面的距离、和/或所述待处理邻接点到所述参考邻接面上预设位置的距离。
22.在一种可能的实施方式中,当所述邻接点的个数为m,第m个邻接点与所述参考邻接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:
23.对第1个邻接点到所述参考邻接面的距离至第m个邻接点到所述参考邻接面的距离进行第一统计分析处理,得到所述待使用顶点的曲率表征数据;其中,m为正整数,m≤m,m为正整数;
24.或者,
25.当所述邻接点的个数为m,所述第m个邻接点与所述参考邻接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面上预设位置的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:
26.对第1个邻接点到所述参考邻接面上预设位置的距离至第m个邻接点到所述参考邻接面上预设位置的距离进行第二统计分析处理,得到所述待使用顶点的曲率表征数据;其中,m为正整数,m≤m,m为正整数;
27.或者,
28.当所述邻接点的个数为m,所述第m个邻接点与所述参考邻接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面的距离、以及所述第m个邻接点到所述参考邻接面上预设位置的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:
29.根据所述第m个邻接点到所述参考邻接面的距离与所述第m个邻接点到所述参考邻接面上预设位置的距离之间的比值,确定所述第m个邻接点的曲率贡献值;其中,m为正整数,m≤m,m为正整数;
30.对第1个邻接点的曲率贡献值至第m个邻接点的曲率贡献值进行第三统计分析处理,得到所述待使用顶点的曲率表征数据。
31.在一种可能的实施方式中,所述至少一个顶点包括待使用顶点,且所述待使用顶点的曲率表征数据的确定过程,包括:
32.从所述待简化模型中确定所述待使用顶点的至少一个邻接面和所述待使用顶点的至少一个邻接点;
33.根据各个所述邻接点与各个所述邻接面之间的相对位置表征数据,确定所述待使用顶点的曲率表征数据。
34.在一种可能的实施方式中,当所述邻接面的个数为n,且所述邻接点的个数为m时,所述根据各个所述邻接点与各个所述邻接面之间的相对位置表征数据,确定所述待使用顶点的曲率表征数据,包括:
35.根据第1个邻接点与第n个邻接面之间的相对位置表征数据至第m个邻接点与第n个邻接面之间的相对位置表征数据,确定所述第n个邻接面的曲率贡献表征数据;其中,n为正整数,n≤n;
36.根据第1个邻接面的曲率贡献表征数据至第n个邻接面的曲率贡献表征数据,确定所述待使用顶点的曲率表征数据。
37.在一种可能的实施方式中,所述至少一个顶点对包括待处理点对,且所述待处理点对包括第一顶点和第二顶点;
38.所述待处理点对的曲率表征数据的确定过程,包括:
39.将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的最大值,确定为第一参考数据;
40.将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的最小值,确定为第二参考数据;
41.根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第一参考数据之间的比值,确定所述待处理点对的曲率表征数据。
42.在一种可能的实施方式中,所述根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第一参考数据之间的比值,确定所述待处理点对的曲率表征数据,包括:
43.根据所述第一参考数据与预设校正值之间的和值,确定第三参考数据;
44.根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第三参考数据之间的比值,确定所述待处理点对的曲率表征数据。
45.在一种可能的实施方式中,所述根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第三参考数据之间的比值,确定所述待处理点对的曲率表征数据,包括:
46.将预设数值、以及所述第二参考数据与所述第三参考数据之间的比值进行加和处理,得到中间处理数据;
47.将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述中间处理数据进行相乘,得到所述待处理点对的曲率表征数据。
48.在一种可能的实施方式中,所述至少一个顶点对包括待处理点对,且所述待处理点对的合并代价的确定过程,包括:
49.根据所述待处理点对的曲率表征数据,确定所述待处理点对的合并损失值;
50.利用所述待处理点对的曲率表征数据对所述待处理点对的合并损失值进行预设校正处理,得到所述待处理点对的合并代价。
51.本技术实施例还提供了一种模型简化装置,所述装置包括:
52.第一确定单元,用于在获取到待简化模型之后,确定所述待简化模型中至少一个
顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据;
53.第二确定单元,用于根据所述至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据;
54.第三确定单元,用于根据所述至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据,确定所述至少一个顶点对的合并代价;
55.模型简化单元,用于根据所述至少一个顶点对的合并代价,对所述待简化模型进行顶点合并处理。
56.本技术实施例还提供了一种模型简化设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本技术实施例提供的模型简化方法的任一实施方式。
57.本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行本技术实施例提供的模型简化方法的任一实施方式。
58.本技术实施例还提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行本技术实施例提供的模型简化方法的任一实施方式。
59.由此可见,本技术实施例具有如下有益效果:
60.本技术实施例提供的技术方案中,在获取到待简化模型(例如,三维数据模型等高维数据模型)之后,先确定该待简化模型中至少一个顶点的二次误差矩阵以及曲率表征数据;再根据该至少一个顶点的二次误差矩阵以及曲率表征数据,分别确定至少一个顶点对的二次误差矩阵以及曲率表征数据;然后,根据该至少一个顶点对的二次误差矩阵以及曲率表征数据,确定该至少一个顶点对的合并代价;最后,根据该至少一个顶点对的合并代价,对该待简化模型进行顶点合并处理,以使经顶点合并处理得到的待简化模型中顶点个数少于原始的待简化模型中顶点个数,从而使得在针对上述“经顶点合并处理得到的待简化模型”进行后续模型处理时所消耗的资源比较少,如此有利于提高针对高维数据模型的处理效果。
61.另外,因本技术实施例提供的模型简化方法同时参考了各个顶点的二次误差矩阵以及曲率表征数据,使得在利用本技术实施例提供的模型简化方法针对待简化模型进行简化处理时能够尽可能地保留模型细节(尤其是,具有较大曲率的顶点所引起的模型细节),如此有利于进一步提高针对高维数据模型的简化效果,从而能够进一步针对高维数据模型的处理效果。
附图说明
62.图1为本技术实施例提供的一种模型简化方法的流程图;
63.图2为本技术实施例提供的一种顶点合并处理的示意图;
64.图3为本技术实施例提供的另一种顶点合并处理的示意图;
65.图4为本技术实施例提供的一种邻接面的示意图;
66.图5为本技术实施提供的一种模型简化装置的结构示意图。
具体实施方式
67.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本技术实施例作进一步详细的说明。
68.发明人在针对高维数据模型(例如,三维数据模型)的研究中发现:

一些实际应用场景可能会存在提高针对高维数据模型的处理速度的需求,故为了满足上述需求,可以先针对该高维数据模型进行简化处理(例如,进行模型减面处理);再针对简化处理后的高维数据模型进行相应模型处理。

一些相关模型简化处理过程通常不考虑顶点曲率对模型细节造成的影响,从而使得借助这些相关模型简化处理过程进行简化处理得到的高维数据模型易丢失大量的模型细节(尤其是因具有较大曲率的顶点所引起的模型细节),如此易导致该高维数据模型的简化效果较差,从而易导致针对该高维数据模型的后续模型处理效果不理想。
69.基于上述发现,为了解决背景技术部分所述的技术问题,本技术实施例提供了一种模型简化方法,该方法包括:在获取到待简化模型(例如,三维数据模型等高维数据模型)之后,先确定该待简化模型中至少一个顶点的二次误差矩阵以及曲率表征数据;再根据该至少一个顶点的二次误差矩阵以及曲率表征数据,分别确定至少一个顶点对的二次误差矩阵以及曲率表征数据;然后,根据该至少一个顶点对的二次误差矩阵以及曲率表征数据,确定该至少一个顶点对的合并代价;最后,根据该至少一个顶点对的合并代价,对该待简化模型进行顶点合并处理,以使经顶点合并处理得到的待简化模型中顶点个数少于原始的待简化模型中顶点个数,从而使得在针对上述“经顶点合并处理得到的待简化模型”进行后续模型处理时所消耗的资源比较少,如此有利于提高针对高维数据模型的处理效果。
70.可见,因本技术实施例提供的模型简化方法同时参考了各个顶点的二次误差矩阵以及曲率表征数据,使得在利用本技术实施例提供的模型简化方法针对待简化模型进行简化处理时能够尽可能地保留模型细节(尤其是,具有较大曲率的顶点所引起的模型细节),如此有利于进一步提高针对高维数据模型的简化效果,从而能够进一步针对高维数据模型的处理效果。
71.此外,本技术实施例不限定模型简化方法的执行主体,例如,本技术实施例提供的模型简化方法可以应用于终端设备或服务器等数据处理设备。其中,终端设备可以为智能手机、计算机、个人数字助理(personal digital assitant,pda)或平板电脑等。服务器可以为独立服务器、集群服务器或云服务器。
72.为了便于理解本技术,下面结合附图对本技术实施例提供的模型简化方法进行说明。
73.参见图1,该图为本技术实施例提供的一种模型简化方法的流程图,该模型简化方法可以包括s1-s4:
74.s1:在获取到待简化模型之后,确定待简化模型中至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据。
75.其中,“待简化模型”是指需要进行简化处理的高维数据模型;而且本技术实施例不限定“待简化模型”的来源,例如,可以是指增强现实场景中所涉及的数据模型、虚拟现实场景中所涉及的数据模型、或者混合现实场景中所涉及的数据模型。
76.第t个顶点的二次误差矩阵用于表示该第t个顶点对待简化模型的重要程度;而且
该“第t个顶点的二次误差矩阵”可以根据待简化模型中包括该顶点的各个平面的平面方程确定的。其中,t为正整数,t≤t,t为正整数,t表示上述“至少一个顶点”中的顶点个数。
77.另外,本技术实施例不限定“第t个顶点的二次误差矩阵”的确定过程,例如,“第t个顶点的二次误差矩阵”可以采用公式(1)-(3)进行确定。
[0078][0079][0080][0081]
式中,q
t
表示第t个顶点point
t
的二次误差矩阵;point
t
表示第t个顶点;表示在待简化模型中存在的该第t个顶点的第i个邻接面,而且该第t个顶点的第i个邻接面包括该第t个顶点;表示该第i个邻接面的基本误差矩阵(fundamental error quadric);表示该第i个邻接面所属的平面;表示该第i个邻接面所属的平面;表示该第i个邻接面的平面方程(也就是,该平面方程用于表示该第i个邻接面所属的平面);i表示待简化模型中包括该顶点的邻接面个数。
[0082]
第t个顶点的曲率表征数据用于表示该第t个顶点在待简化模型中所具有的曲率信息;而且本技术实施例不限定第t个顶点的曲率表征数据的确定过程,例如,其可以采用现有的或者未来出现的任一种能够针对模型顶点进行曲率计算的方法进行实施。又如,其可以采用下文所示的曲率表征数据确定过程的任一实施方式(例如,步骤51-步骤52所示的曲率表征数据确定过程;或者,步骤61-步骤62所示的曲率表征数据确定过程)进行实施,只需将下文所示的曲率表征数据确定过程的任一实施方式中“待使用顶点”替换为“第t个顶点”即可。
[0083]
基于上述步骤s1的相关内容可知,在获取到待简化模型之后,可以针对该待简化模型中各个顶点进行二次误差矩阵确定以及曲率表征数据确定,得到该待简化模型中各个顶点二次误差矩阵以及曲率表征数据,以便后续能够参考这些顶点的二次误差矩阵以及曲率表征数据,针对待简化模型进行简化处理(例如,减面处理等)。
[0084]
s2:根据至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据。
[0085]
其中,“顶点对”是由待简化模型中两个顶点进行组合得到的;而且本技术实施例不限定“顶点对”,例如,该“顶点对”其可以通过将该待简化模型中具有连接关系的两个顶点(如图2所示的顶点1与顶点2)进行组合得到。又如,该“顶点对”也可以通过将该待简化模型中没有连接关系的两个顶点(如图3所示的顶点4与顶点5)进行组合得到。
[0086]
第r个顶点对的二次误差矩阵用于表示该第r个顶点对对待简化模型的重要程度;而且该“第r个顶点对的二次误差矩阵”可以根据该第r个顶点对中两个顶点的二次误差矩阵之间的和值进行确定(例如,如公式(4)所示)。其中,r为正整数,r≤r,r表示顶点对的个数。
[0087][0088]
式中,表示第r个顶点对的二次误差矩阵;表示第r个顶点对;表示第r个顶点对中的一个顶点;表示第r个顶点对中的另一个顶点;表示顶点的二次误差矩阵;表示顶点的二次误差矩阵。
[0089]
第r个顶点对的曲率表征数据用于表示在待简化模型中该第r个顶点对所包括的两个顶点之间所具有的曲率变化趋势;而且该第r个顶点对的曲率表征数据可以根据该第r个顶点对中两个顶点的曲率表征数据进行确定。其中,r为正整数,r≤r,r表示顶点对的个数。
[0090]
另外,本技术实施例不限定“第r个顶点对的曲率表征数据”的确定过程,例如,其可以包括:直接将第r个顶点对所包括的两个顶点的曲率表征数据之间的平均值,确定为该第r个顶点对的曲率表征数据。又如,其也可以采用下文步骤71-步骤73所示的确定过程的任一实施方式进行实施,只需将下文步骤71-步骤73所示的确定过程的任一实施方式中“待处理点对”替换为“第r个顶点对”即可。
[0091]
基于上述s2的相关内容可知,对于待简化模型来说,在获取到该待简化模型中至少一个顶点的二次误差矩阵以及曲率表征数据之后,可以这些顶点的二次误差矩阵,确定至少一个顶点对的二次误差矩阵,并根据这些顶点的曲率表征数据,确定该至少一个顶点对的曲率表征数据,以便后续能够基于各个顶点对的二次误差矩阵以及曲率表征数据,确定各个顶点对的合并代价。
[0092]
s3:根据至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据,确定该至少一个顶点对的合并代价。
[0093]
其中,第r个顶点对的合并代价用于表示在将待简化模型中该第r个顶点对所包括的两个顶点进行合并之后对该待简化模型所造成的影响程度(尤其是,对该待简化模型的特征表示效果所造成的影响程度)。其中,r为正整数,r≤r,r表示顶点对的个数。
[0094]
另外,本技术实施例不限定“第r个顶点对的合并代价”的确定过程,例如,可以采用下文步骤81-步骤82所示的确定过程的任一实施方式进行实施,只需将下文步骤81-步骤82所示的确定过程的任一实施方式中“待处理点对”替换为“第r个顶点对”即可。
[0095]
基于上述s3的相关内容可知,对于待简化模型来说,在获取到该待简化模型中至少一个顶点对的二次误差矩阵以及曲率表征数据之后,可以参考各个顶点对的二次误差矩阵以及曲率表征数据,分别确定各个顶点对的合并代价,以使各个顶点对的合并代价能够表示出针对各个顶点对中两个顶点进行合并后对上述“待简化模型”造成的影响程度,以便后续能够基于这些顶点对的合并代价,确定出需要进行顶点合并处理的顶点对。
[0096]
s4:根据至少一个顶点对的合并代价,对待简化模型进行顶点合并处理。
[0097]
其中,“顶点合并处理”用于在待简化模型中将一个顶点对的两个顶点合并成一个顶点(如图2所示,可以将顶点1与顶点2合并成顶点3,或者,如图3所示,可以将顶点4与顶点5合并成顶点6);或者,用于在待简化模型中一些顶点对中各个顶点对所包括的两个顶点进行合并。
[0098]
另外,本技术实施例不限定s4的实施方式,例如,其可以包括:先根据至少一个顶点对的合并代价,从该至少一个顶点对中查找合并代价低于第一代价阈值的至少一个待合
并顶点对;再将待简化模型中各个待合并顶点对所包括的两个顶点进行合并,得到该待简化模型对应的简化后模型,以使该简化后模型中顶点数少于该待简化模型中顶点数,从而使得该简化后模型中面个数少于该待简化模型中面个数,如此使得该简化后模型的数据量小于该待简化模型的数据量,如此实现了针对该待简化模型进行简化处理的目的。其中,“待合并顶点对”用于表示合并代价低于第一代价阈值的顶点对。
[0099]
基于上述s1至s4的相关内容可知,对于本技术实施例提供的模型简化方法来说,在获取到待简化模型(例如,三维数据模型等高维数据模型)之后,先确定该待简化模型中至少一个顶点的二次误差矩阵以及曲率表征数据;再根据该至少一个顶点的二次误差矩阵以及曲率表征数据,分别确定至少一个顶点对的二次误差矩阵以及曲率表征数据;然后,根据该至少一个顶点对的二次误差矩阵以及曲率表征数据,确定该至少一个顶点对的合并代价;最后,根据该至少一个顶点对的合并代价,对该待简化模型进行顶点合并处理,以使经顶点合并处理得到的待简化模型中顶点个数少于原始的待简化模型中顶点个数,从而使得在针对上述“经顶点合并处理得到的待简化模型”进行后续模型处理时所消耗的资源比较少,如此有利于提高针对高维数据模型的处理效果。
[0100]
可见,因本技术实施例提供的模型简化方法同时参考了各个顶点的二次误差矩阵以及曲率表征数据,使得在利用本技术实施例提供的模型简化方法针对待简化模型进行简化处理时能够尽可能地保留模型细节(尤其是,具有较大曲率的顶点所引起的模型细节),如此有利于进一步提高针对高维数据模型的简化效果,从而能够进一步针对高维数据模型的处理效果。
[0101]
另外,为了进一步提高模型简化效果,可以采用迭代合并的方式实现针对待简化模型的模型简化处理。基于此,本技术实施例还提供了模型简化方法的一种可能的实施方式,其具体可以包括步骤11-步骤17:
[0102]
步骤11:获取待简化模型。
[0103]
需要说明的是,“待简化模型”的相关内容请参见上文s1中“待简化模型”的相关内容。
[0104]
步骤12:确定待简化模型中至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据。
[0105]
需要说明的是,步骤12的相关内容请参见上文s1中“确定待简化模型中至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据”的相关内容。
[0106]
步骤13:根据至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据。
[0107]
步骤14:根据至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据,确定该至少一个顶点对的合并代价。
[0108]
需要说明的是,步骤13-步骤14的相关内容请分别参见上文s2-s3的相关内容。
[0109]
步骤15:根据至少一个顶点对的合并代价,从该至少一个顶点对中筛选满足预设合并条件的目标点对。
[0110]
其中,“预设合并条件”可以预先设定;而且本技术实施例不限定“预设合并条件”,例如,其具体可以为:具有最小合并代价,以使该“预设合并条件”用于筛选具有最小合并代价的顶点对。
[0111]“目标点对”用于表示满足预设合并条件的顶点对。
[0112]
基于上述步骤15的相关内容可知,对于待简化模型来说,在获取到该待简化模型中至少一个顶点对的合并代价之后,可以先从这些顶点对的合并代价中确定出合并代价最小值;再将具有该合并代价最小值的顶点对,确定为目标点对,以便后续能够参考该目标点对,对该待简化模型进行顶点合并处理。
[0113]
步骤16:将待简化模型中目标点对进行合并。
[0114]
本技术实施例中,对于待简化模型来说,在获取到该待简化模型中目标点对之后,可以将该待简化模型中目标点对进行合并,得到合并后的待简化模型,以使该合并后的待简化模型中不存在该目标点对所包括的两个顶点(如,图2所示的顶点1和顶点2;或者,图3所示的顶点4和顶点5),并使得该合并后的待简化模型中新增一个由目标点对所包括的两个顶点进行合并得到的合并顶点(例如,图2所示的顶点3;或者,图3所示的顶点6)。
[0115]
步骤17:判断是否达到预设停止条件,若是,则结束针对待简化模型的迭代合并过程;若否,则返回执行步骤12。
[0116]
其中,“预设停止条件”可以预先设定;而且本技术实施例不限定“预设停止条件”,其具体可以为:待简化模型中顶点个数不高于预设顶点阈值。
[0117]
基于上述步骤17的相关内容可知,在获取到合并后的待简化模型之后,可以判断该待简化模型中顶点个数是否高于预设顶点阈值,若高于,则确定仍未达到预设停止条件,故可以返回执行步骤12及其后续步骤,以实现下一轮针对该待简化模型的顶点合并过程;若不高于,则确定已达到预设停止条件,故可以直接结束针对该待简化模型的迭代合并过程。
[0118]
基于上述步骤11至步骤17的相关内容可知,在一些情况下,可以采用迭代合并的方式实现针对待简化模型的模型简化处理过程。其中,因在每一轮针对该待简化模型的顶点合并过程中均选择在待简化模型中将具有最小合并代价的顶点对进行合并,使得每一轮针对该待简化模型的顶点合并过程的合并代价最小,从而使得通过迭代合并过程得到的待简化模型的合并损失比较小,如此有利于提高针对待简化模型的简化效果。
[0119]
在一些情况下,为了进一步提高针对待简化模型的简化效果,可以避免将该待简化模型中具有较大合并代价的顶点对进行合并。基于此,本技术实施例还提供了模型简化方法的另一种可能的实施方式,其具体可以包括步骤21-步骤29:
[0120]
步骤21:获取待简化模型。
[0121]
步骤22:确定待简化模型中至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据。
[0122]
步骤23:根据至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据。
[0123]
步骤24:根据至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据,确定该至少一个顶点对的合并代价。
[0124]
需要说明的是,步骤21-步骤24的相关内容请分别参见上文步骤11-步骤14的相关内容。
[0125]
步骤25:根据至少一个顶点对的合并代价,从该至少一个顶点对中筛选满足预设合并条件的顶点对,得到筛选结果。
[0126]
其中,“预设合并条件”可以预先设定;而且本技术实施例不限定“预设合并条件”,例如,其具体可以为:具有最小合并代价且该最小合并代价不高于第二代价阈值,以使该“预设合并条件”用于筛选具有最小合并代价且该最小合并代价不高于第二代价阈值的顶点对。
[0127]“筛选结果”用于表示上述“至少一个顶点对”中是否存在满足预设合并条件的顶点对,也可以用于表示上述“至少一个顶点对”中满足预设合并条件的各个顶点对分别是什么。
[0128]
基于上述步骤25的相关内容可知,对于待简化模型来说,在获取到该待简化模型中至少一个顶点对的合并代价之后,可以先从这些顶点对的合并代价中确定出合并代价最小值;再判断该合并代价最小值是否高于第二代价阈值,若高于,则确定上述“至少一个顶点对”中不存在满足预设合并条件的顶点对;若不高于,则确定上述“至少一个顶点对”中存在满足预设合并条件的顶点对。
[0129]
步骤26:若筛选结果表示上述“至少一个顶点对”中不存在满足预设合并条件的顶点对,则结束针对待简化模型的迭代合并过程。
[0130]
本技术实施例中,在获取到筛选结果之后,若筛选结果表示上述“至少一个顶点对”中不存在满足预设合并条件的顶点对,则可以确定无法找到能够被合并的顶点对,故可以直接结束针对待简化模型的迭代合并过程,如此能够有效地避免将该待简化模型中具有较大合并代价的顶点对进行合并,如此有利于提高针对待简化模型的简化效果。
[0131]
步骤27:若筛选结果表示上述“至少一个顶点对”中存在满足预设合并条件的顶点对,则将该“满足预设合并条件的顶点对”确定为目标点对。
[0132]
本技术实施例中,在获取到筛选结果之后,若筛选结果表示上述“至少一个顶点对”中存在满足预设合并条件的顶点对,则将该“满足预设合并条件的顶点对”确定为目标点对(也就是,将具有上述“合并代价最小值”的顶点对,确定为目标点对),以便后续能够参考该目标点对,对该待简化模型进行顶点合并处理。
[0133]
步骤28:将待简化模型中目标点对进行合并。
[0134]
需要说明的是,步骤28的相关内容请参见上文步骤16的相关内容。
[0135]
步骤29:判断待简化模型中顶点个数是否高于预设顶点阈值,若是,则返回执行步骤22;若否,则结束针对待简化模型的迭代合并过程。
[0136]
本技术实施例中,在获取到合并后的待简化模型之后,可以判断该待简化模型中顶点个数是否高于预设顶点阈值,若高于,则确定仍未达到预设停止条件,故可以返回执行步骤22及其后续步骤,以实现下一轮针对该待简化模型的顶点合并过程;若不高于,则确定已达到预设停止条件,故可以直接结束针对该待简化模型的迭代合并过程。
[0137]
基于上述步骤21至步骤29的相关内容可知,在一些情况下,可以将上述“预设停止条件”设置为以下两个条件:条件1为合并后的待简化模型中顶点个数不高于预设顶点阈值;条件2为上述“至少一个顶点对”中不存在满足预设合并条件的顶点对,以便在确定当前轮针对该待简化模型的顶点合并过程满足条件1时,确定达到上述“预设停止条件”;并在确定当前轮针对该待简化模型的顶点合并过程满足条件2时,也确定达到上述“预设停止条件”,如此能够有效地避免将该待简化模型中具有较大合并代价的顶点对进行合并,从而有利于提高针对待简化模型的简化效果。
[0138]
实际上,在将待简化模型中两个顶点进行合并之后,只有部分顶点的二次误差矩阵以及曲率表征数据发生变化,如此使得只有部分顶点对的合并代价发生变化,故为了进一步提高针对待简化模型的简化效率,本技术实施例还提供了模型简化方法的一种可能的实施方式,其具体可以包括步骤31-步骤38:
[0139]
步骤31:获取待简化模型。
[0140]
步骤32:确定待简化模型中至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据。
[0141]
步骤33:根据至少一个顶点的二次误差矩阵和该至少一个顶点的曲率表征数据,分别确定至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据。
[0142]
步骤34:根据至少一个顶点对的二次误差矩阵和该至少一个顶点对的曲率表征数据,确定该至少一个顶点对的合并代价。
[0143]
步骤35:根据至少一个顶点对的合并代价,从该至少一个顶点对中筛选满足预设合并条件的目标点对。
[0144]
需要说明的是,步骤31-步骤35的相关内容请分别参见上文步骤11-步骤15的相关内容。
[0145]
步骤36:将待简化模型中目标点对进行合并,得到至少一个待更新顶点。
[0146]
其中,“待更新顶点”是指在待简化模型中因目标点对被合并而受到影响的顶点。
[0147]
另外,本技术实施例不限定上述“待更新顶点”的确定过程,例如,在将待简化模型中目标点对进行合并处理之后,可以将由目标点对合并得到的合并顶点(如图2所示的顶点3)、以及在合并后的待简化模型中与该合并顶点相连的各个顶点(如图2所示的与顶点3相连的各个顶点),均确定为待更新顶点。
[0148]
基于上述步骤36的相关内容可知,对于待简化模型来说,在获取到该待简化模型中目标点对之后,可以在该待简化模型中将目标点对进行合并,得到合并后的待简化模型,以使该待简化模型中不存在该目标点对所包括的两个顶点,并使得该待简化模型中新增一个由该目标点对所包括的两个顶点进行合并得到的合并顶点;再将该合并顶点、以及与该合并顶点相连的各个顶点均确定为待更新顶点,以便后续能够参考这些待更新顶点,更新至少一个顶点对的合并代价。
[0149]
步骤37:判断是否达到预设停止条件,若是,则结束针对待简化模型的迭代合并过程;若否,则执行步骤38。
[0150]
需要说明的是,“预设停止条件”的相关内容请参见上文所示的“预设停止条件”的相关内容。
[0151]
步骤38:根据至少一个待更新顶点,更新至少一个顶点对的合并代价,并返回执行步骤35。
[0152]
本技术实施例中,在确定当前轮针对该待简化模型的顶点合并过程仍然没有达到预设停止条件之后,可以根据上述“至少一个待更新顶点”(例如,合并顶点、以及与该合并顶点相连的各个顶点)、以及目标点对所包括的两个顶点,更新至少一个顶点对的合并代价,以使更新后的“至少一个顶点对的合并代价”能够准确地表示出合并后的待简化模型中所有顶点对的合并代价,并使得更新后的“至少一个顶点对的合并代价”不再记录与目标点对所包括的两个顶点相关的顶点对的合并代价,如此能够实现随着待简化模型的更新过程
不断地更新“至少一个顶点对的合并代价”,以使该“至少一个顶点对的合并代价”始终能够准确地表示出合并后的待简化模型中所有顶点对的合并代价。
[0153]
基于上述步骤31至步骤38的相关内容可知,对于每一轮针对该待简化模型的顶点合并过程来说,可以只针对那些因两个顶点被合并而受到影响的各个顶点对的合并代价进行更新。其中,因那些受到影响的各个顶点对的个数远远小于上述“合并后的待简化模型”中的顶点对个数,如此有利于减少“至少一个顶点对的合并代价”的获取耗时,从而有利于提高针对待简化模型的简化效率。
[0154]
另外,本技术实施例不限定上述“至少一个顶点对的合并代价”的更新过程,例如,当待更新点个数为j时,上述“至少一个顶点对的合并代价”的更新过程,具体可以包括步骤41-步骤44:
[0155]
步骤41:重新计算第j个待更新顶点的二次误差矩阵、以及该第j个待更新顶点的曲率表征数据。其中,j为正整数,j≤j,j为正整数。
[0156]
步骤42:根据j个待更新顶点的二次误差矩阵以及曲率表征数据,确定包括第j个待更新顶点的至少一个待更新点对的二次误差矩阵以及曲率表征数据。其中,j为正整数,j≤j,j为正整数。
[0157]
其中,“待更新点对”是指包括至少一个待更新顶点的顶点对。
[0158]
另外,本技术实施例不限定“包括第j个待更新顶点的至少一个待更新点对”的确定过程,例如,可以将第j个待更新顶点与上述“合并后的待简化模型”中除了该第j个待更新顶点以外的至少一个其他顶点进行组合,得到包括第j个待更新顶点的至少一个待更新点对。其中,j为正整数,j≤j,j为正整数。
[0159]
步骤43:根据包括第j个待更新顶点的各个待更新点对的二次误差矩阵以及曲率表征数据,确定包括第j个待更新顶点的各个待更新点对的合并代价。其中,j为正整数,j≤j,j为正整数。
[0160]
步骤44:利用包括第1个待更新顶点的至少一个待更新点对的合并代价至包括第j个待更新顶点的至少一个待更新点对的合并代价、以及目标点对所包括的两个顶点,更新上述“至少一个顶点对的合并代价”,以使更新后的“至少一个顶点对的合并代价”只用于记录合并后的待简化模型中所有顶点对的合并代价。
[0161]
基于上述步骤41至步骤44的相关内容可知,在获取到至少一个待更新顶点之后,可以参考该至少一个待更新顶点以及目标点对,更新至少一个顶点对的合并代价,以使更新后的“至少一个顶点对的合并代价”只用于记录合并后的待简化模型中所有顶点对的合并代价,如此使得更新后的“至少一个顶点对的合并代价”不再记录与目标点对所包括的两个顶点相关的顶点对(也就是,包括该目标点对中至少一个顶点的顶点对)的合并代价,如此有利于提高针对待简化模型的简化效果。
[0162]
另外,为了进一步提高针对待简化模型的简化效果,本技术实施例还提供了确定“顶点的曲率表征数据”的一种可能的实施方式;而且为了便于理解,下面以待使用顶点的曲率表征数据的确定过程为例进行说明。
[0163]
作为示例,当上述“至少一个顶点”包括待使用顶点时,该待使用顶点的曲率表征数据的确定过程,具体可以包括步骤51-步骤52:
[0164]
步骤51:从待简化模型中确定待使用顶点的参考邻接面和该待使用顶点的至少一
个邻接点。
[0165]
其中,“待使用顶点”用于表示上述“至少一个顶点”中各个顶点。
[0166]“待使用顶点的参考邻接面”是指从该待使用顶点的所有邻接面中随机选择的一个邻接面。其中,“待使用顶点的邻接面”是指在待简化模型中存在的且包括该待使用顶点的面。
[0167]
待使用顶点的邻接点是指在待简化模型中存在的且与该待使用顶点被一条边进行连接的顶点。
[0168]
步骤52:根据各个邻接点与参考邻接面之间的相对位置表征数据,确定待使用顶点的曲率表征数据。
[0169]
其中,第m个邻接点与参考邻接面之间的相对位置表征数据用于表示该第m个邻接点与该参考邻接面之间的相对位置关系;而且本技术实施例不限定“第m个邻接点与参考邻接面之间的相对位置表征数据”,例如,其具体可以包括:该第m个邻接点到该参考邻接面的距离、和/或该第m个邻接点到该参考邻接面上预设位置的距离。m为正整数,m≤m,m为正整数,m表示待使用顶点的邻接点个数。
[0170]“预设位置”可以预先设定;而且本技术实施例不限定“预设位置”,例如,若上述“参考邻接面”为三角面(如图4所示的由顶点1、顶点7和顶点8构成的三面角),则该预设位置可以是指该“参考邻接面”中存在的且不包括上述“待使用顶点”的边上的中点位置(例如,若上述“待使用顶点”为顶点1,则该预设位置可以是指边
78
上的中点位置)。
[0171]
本技术实施例不限定步骤52的实施方式,下面结合三个示例进行说明。
[0172]
示例1,当上述“待使用顶点的至少一个邻接点”包括m个邻接点,且第m个邻接点与参考邻接面之间的相对位置表征数据包括该第m个邻接点到参考邻接面的距离,m为正整数,m≤m时,步骤52具体可以包括:对第1个邻接点到参考邻接面的距离至第m个邻接点到所述参考邻接面的距离进行第一统计分析处理,得到该待使用顶点的曲率表征数据。
[0173]
其中,“第一统计分析处理”可以预先设定,例如,其具体可以为进行加和处理(如公式(5)所示),也可以为进行取平均值处理,还可以为取最大值处理等。
[0174][0175]
式中,表示待使用顶点point
use
的曲率表征数据;point
use
表示待使用顶点;表示待使用顶点的第m个邻接点;表示待使用顶点的参考邻接面;表示待使用顶点的第m个邻接点到该待使用顶点的参考邻接面的距离。
[0176]
基于上述示例1的相关内容可知,对于待使用顶点来说,可以参考该待使用顶点的所有邻接点到该待使用顶点的参考邻接面的距离,确定该待使用顶点的曲率表征数据,以使该待使用顶点的曲率表征数据能够表示出在待简化模型中该待使用顶点所具有的曲率信息。
[0177]
示例2,当上述“待使用顶点的至少一个邻接点”包括m个邻接点,且第m个邻接点与参考邻接面之间的相对位置表征数据包括该第m个邻接点到参考邻接面上预设位置的距离,m为正整数,m≤m时,步骤52具体可以包括:对第1个邻接点到参考邻接面上预设位置的
距离至第m个邻接点到参考邻接面上预设位置的距离进行第二统计分析处理,得到该待使用顶点的曲率表征数据。
[0178]
其中,“第二统计分析处理”可以预先设定,例如,其具体可以为进行加和处理(如公式(6)所示),也可以为进行取平均值处理,还可以为取最大值处理等。
[0179][0180]
式中,表示待使用顶点point
use
的曲率表征数据;point
use
表示待使用顶点;表示待使用顶点的第m个邻接点;表示待使用顶点的参考邻接面上预设位置;表示待使用顶点的参考邻接面;表示待使用顶点的第m个邻接点到该待使用顶点的参考邻接面上预设位置的距离。
[0181]
基于上述示例2的相关内容可知,对于待使用顶点来说,可以参考该待使用顶点的所有邻接点到该待使用顶点的参考邻接面上预设位置的距离,确定该待使用顶点的曲率表征数据。其中,因“第m个邻接点到该参考邻接面上预设位置的距离”还能够表示出在待简化模型中包括该第m个邻接点的面与该参考邻接面之间的夹角是钝角还是锐角,使得基于该各个邻接点到参考邻接面上预设位置的距离确定的待使用顶点的曲率表征数据,能够更好地表示出在待简化模型中该待使用顶点所具有的曲率信息。
[0182]
示例3,当上述“待使用顶点的至少一个邻接点”包括m个邻接点,且第m个邻接点与参考邻接面之间的相对位置表征数据包括该第m个邻接点到参考邻接面的距离、以及该第m个邻接点到参考邻接面上预设位置的距离,m为正整数,m≤m时,步骤52具体可以包括步骤521-步骤522:
[0183]
步骤521:根据第m个邻接点到参考邻接面的距离与该第m个邻接点到参考邻接面上预设位置的距离之间的比值,确定该第m个邻接点的曲率贡献值。其中,m为正整数,m≤m,m为正整数。
[0184]
其中,“第m个邻接点的曲率贡献值”用于表示待使用顶点的第m个邻接点与该待使用顶点之间的曲率变化趋势;而且本技术实施例不限定“第m个邻接点的曲率贡献值”的确定过程,例如,可以直接将第m个邻接点到参考邻接面的距离与该第m个邻接点到参考邻接面上预设位置的距离之间的比值,确定为该第m个邻接点的曲率贡献值。
[0185]
步骤522:对第1个邻接点的曲率贡献值至第m个邻接点的曲率贡献值进行第三统计分析处理,得到待使用顶点的曲率表征数据。
[0186]
其中,“第三统计分析处理”可以预先设定,例如,其具体可以为进行加和处理(如公式(7)所示),也可以为进行取平均值处理,还可以为取最大值处理等。
[0187][0188]
式中,表示待使用顶点point
use
的曲率表征数据;point
use
表示待使用顶点;表示待使用顶点的第m个邻接点;表示待使用顶点的参考邻接面上预设位置;表示待使用顶点的参考邻接面;表
示待使用顶点的第m个邻接点到该待使用顶点的参考邻接面的距离;示待使用顶点的第m个邻接点到该待使用顶点的参考邻接面的距离;表示待使用顶点的第m个邻接点到该待使用顶点的参考邻接面上预设位置的距离。
[0189]
基于上述示例3的相关内容可知,对于待使用顶点来说,可以参考该待使用顶点的所有邻接点到该待使用顶点的参考邻接面的距离、以及该待使用顶点的所有邻接点到该待使用顶点的参考邻接面上预设位置的距离,确定该待使用顶点的曲率表征数据,以使该待使用顶点的曲率表征数据能够更准确地表示出在待简化模型中该待使用顶点所具有的曲率信息。
[0190]
基于上述步骤51至步骤52的相关内容可知,对于待简化模型中的任意一个顶点来说,可以借助该顶点的至少一个邻接点与该顶点的一个邻接面之间的距离描述信息,来确定该顶点的曲率表征数据,以使该顶点的曲率表征数据能够更准确地表示出该顶点所具有的曲率特征,如此有利于提高针对待简化模型的简化效果。
[0191]
另外,为了进一步提高上述“待使用顶点的曲率表征数据”的准确性,本技术实施例还提供了确定“待使用顶点的曲率表征数据”的一种可能的实施方式,其具体可以包括步骤61-步骤62:
[0192]
步骤61:从待简化模型中确定待使用顶点的至少一个邻接面和该待使用顶点的至少一个邻接点。
[0193]
需要说明的是,“邻接面”以及“邻接点”的相关内容请参见上文步骤51。
[0194]
步骤62:根据各个邻接点与各个邻接面之间的相对位置表征数据,确定待使用顶点的曲率表征数据。
[0195]
为了便于理解步骤62,下面结合示例进行说明。
[0196]
作为示例,当上述“待使用顶点的至少一个邻接面”包括n个邻接面,且上述“待使用顶点的至少一个邻接点”包括m个邻接点时,步骤62具体可以包括步骤621-步骤622:
[0197]
步骤621:根据第1个邻接点与第n个邻接面之间的相对位置表征数据至第m个邻接点与第n个邻接面之间的相对位置表征数据,确定第n个邻接面的曲率贡献表征数据。其中,n为正整数,n≤n。
[0198]
其中,“第n个邻接面的曲率贡献表征数据”是指以待使用顶点的第n个邻接面作为参考邻接面得到的曲率表征数据,以使该“第n个邻接面的曲率贡献表征数据”用于表示出通过该待使用顶点的第n个邻接面所呈现出的该待使用顶点的m个邻接点的曲率贡献值。
[0199]
另外,本技术实施例不限定“第n个邻接面的曲率贡献表征数据”的确定过程,例如,其可以采用上文步骤51-步骤52的任一实施方式进行实施,只需将上文步骤51-步骤52的任一实施方式中“参考邻接面”替换为“第n个邻接面”、以及“待使用顶点的曲率表征数据”替换为“第n个邻接面的曲率贡献表征数据”即可。
[0200]
步骤622:根据第1个邻接面的曲率贡献表征数据至第n个邻接面的曲率贡献表征数据,确定待使用顶点的曲率表征数据。
[0201]
本技术实施例中,在获取到第1个邻接面的曲率贡献表征数据至第n个邻接面的曲率贡献表征数据之后,可以将该第1个邻接面的曲率贡献表征数据至第n个邻接面的曲率贡献表征数据进行第四统计分析处理,得到待使用顶点的曲率表征数据。其中,“第四统计分
析处理”可以预先设定,例如,其具体可以为进行加和处理,也可以为进行取平均值处理,还可以为取最大值处理等。
[0202]
基于上述步骤61至步骤62的相关内容可知,对于待简化模型中的任意一个顶点来说,可以借助该顶点的至少一个邻接点与该顶点的多个邻接面之间的相对位置描述信息,来确定该顶点的曲率表征数据,以使该顶点的曲率表征数据能够更准确地表示出该顶点所具有的曲率特征,如此有利于提高针对待简化模型的简化效果。
[0203]
另外,为了进一步提高针对待简化模型的简化效果,本技术实施例还提供了确定“顶点对的曲率表征数据”的一种可能的实施方式;而且为了便于理解,下面以待处理点对的曲率表征数据的确定过程为例进行说明。
[0204]
作为示例,当上述“至少一个顶点对”包括待处理点对,且该待处理点对包括第一顶点和第二顶点时,该待处理点对的曲率表征数据的确定过程,具体可以包括步骤71-步骤73:
[0205]
步骤71:将第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的最大值,确定为第一参考数据。
[0206]
其中,上述“待处理点对”用于表示上述“至少一个顶点对”中任意一个顶点对。
[0207]
上述“第一参考数据”用于表示待处理点对中两个顶点的曲率表征数据(也就是,第一顶点的曲率表征数据与第二顶点的曲率表征数据)之间的最大值。
[0208]
另外,本技术实施例不限定步骤71的实施方式,例如,其具体可以包括:比较第一顶点的曲率表征数据与第二顶点的曲率表征数据;若确定第一顶点的曲率表征数据大于第二顶点的曲率表征数据,则将该第一顶点的曲率表征数据确定为第一参考数据;若确定第一顶点的曲率表征数据小于第二顶点的曲率表征数据,则将该第二顶点的曲率表征数据确定为第一参考数据;若确定第一顶点的曲率表征数据等于第二顶点的曲率表征数据,则从第一顶点的曲率表征数据和第二顶点的曲率表征数据中随机选择一个曲率表征数据,确定为第一参考数据。
[0209]
步骤72:将第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的最小值,确定为第二参考数据。
[0210]
其中,上述“第二参考数据”用于表示待处理点对中两个顶点的曲率表征数据(也就是,第一顶点的曲率表征数据与第二顶点的曲率表征数据)之间的最小值。
[0211]
另外,本技术实施例不限定步骤72的实施方式,例如,其具体可以包括:比较第一顶点的曲率表征数据与第二顶点的曲率表征数据;若确定第一顶点的曲率表征数据小于第二顶点的曲率表征数据,则将该第一顶点的曲率表征数据确定为第二参考数据;若确定第一顶点的曲率表征数据大于第二顶点的曲率表征数据,则将该第二顶点的曲率表征数据确定为第二参考数据;若确定第一顶点的曲率表征数据等于第二顶点的曲率表征数据,则从第一顶点的曲率表征数据和第二顶点的曲率表征数据中随机选择一个曲率表征数据,确定为第二参考数据。
[0212]
步骤73:根据第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的和值、以及第二参考数据与第一参考数据之间的比值,确定待处理点对的曲率表征数据。
[0213]
本技术实施例中,在获取到第一参考数据与第二参考数据之后,可以依据第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的和值、以及第二参考数据与第一参考
数据之间的比值,确定待处理点对的曲率表征数据(例如,可以直接将“第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的和值”与“第二参考数据与第一参考数据之间的比值”进行相乘,得到该待处理点对的曲率表征数据),以使该待处理点对的曲率表征数据能够更好的表示出在待简化模型中该待处理点对所包括的两个顶点之间的曲率变化趋势。
[0214]
基于上述步骤71至步骤73的相关内容可知,对于一个顶点对来说,可以借助该顶点对中所有顶点的曲率表征数据、该所有顶点的曲率表征数据中最大值、以及该所有顶点的曲率表征数据中最小值,确定该顶点对的曲率表征数据,以使该顶点对的曲率表征数据能够更好的表示出在待简化模型中该顶点对所包括的两个顶点之间的曲率变化趋势。
[0215]
另外,为了进一步提高上述“待处理点对的曲率表征数据”的准确性,本技术实施例还提供了步骤73的一种可能的实施方式,其具体可以包括步骤731-步骤732:
[0216]
步骤731:根据第一参考数据与预设校正值之间的和值,确定第三参考数据。
[0217]
其中,“预设校正值”用于针对上述“第二参考数据与第一参考数据之间的比值”进行校正处理,以使校正后的比值始终小于1。
[0218]
步骤732:根据第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的和值、以及第二参考数据与第三参考数据之间的比值,确定待处理点对的曲率表征数据。
[0219]
作为示例,如公式(8)所示,步骤732具体可以包括:先将预设数值、以及第二参考数据与第三参考数据之间的比值进行加和处理,得到中间处理数据;再将第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的和值、以及中间处理数据进行相乘,得到待处理点对的曲率表征数据。
[0220][0221]
式中,c
(p1,p2)
表示待处理点对(p1,p2)的曲率表征数据;(p1,p2)表示待处理点对;p1表示第一顶点;p2表示第二顶点;1表示预设数值;c
p1
表示第一顶点的曲率表征数据;c
p2
表示第二顶点的曲率表征数据;min(c
p1
,c
p2
)表示第一顶点的曲率表征数据与之间的最小值(也就是,第二参考数据);max(c
p1
,c
p2
)表示第一顶点的曲率表征数据与第二顶点的曲率表征数据之间的最大值(也就是,第一参考数据);ε表示预设校正值。
[0222]
基于上述公式(8)可知,对于c
(p1,p2)
来说,如果c
(p1,p2)
的值越大,则表示在待简化模型中第一顶点与第二顶点之间的弯曲程度越大,则表示包括第一顶点和第二顶点的待处理点对所携带的模型细节比较重要,故越不应该在待简化模型中将第一顶点和第二顶点进行合并。
[0223]
另外,上述c
(p1,p2)
能够有效地克服上述s2所示的“第r个顶点对的曲率表征数据”的确定过程存在的缺陷。下面结合示例进行说明。
[0224]
作为示例,假设,第一顶点对包括顶点pa和顶点pb,顶点pa的曲率表征数据为10,顶点pb的曲率表征数据为0;第二顶点对包括顶点pc和顶点pd,顶点pc的曲率表征数据为5,顶点pd的曲率表征数据为5。
[0225]
基于上述假设可知,在待简化模型中第一顶点对之间的曲率变化趋势对待简化模型所造成的实际影响程度弱于第二顶点对之间的曲率变化趋势对待简化模型所造成的实际影响程度,使得第二顶点对的实际被合并的可能性小于第一顶点对的实际被合并的可能性。
[0226]
但是,当利用上述s2所示的“第r个顶点对的曲率表征数据”的确定过程针对第一顶点对、以及第二顶点对进行曲率表征数据计算时,得到该第一顶点对的曲率表征数据以及该第二顶点对的曲率表征数据均为5,使得第一顶点对之间的曲率变化趋势以及第二顶点对之间的曲率变化趋势对待简化模型所造成的影响程度相同,从而使得第二顶点对的实际被合并的可能性等于第一顶点对的实际被合并的可能性,如此易导致模型细节的丢失。
[0227]
然而,当利用上述公式(8)所示的确定过程针对第一顶点对、以及第二顶点对进行曲率表征数据计算时,得到该第一顶点对的曲率表征数据小于该第二顶点对的曲率表征数据,使得第一顶点对之间的曲率变化趋势对待简化模型所造成的影响程度弱于第二顶点对之间的曲率变化趋势对待简化模型所造成的影响程度,从而使得第二顶点对的实际被合并的可能性小于第一顶点对的实际被合并的可能性。
[0228]
基于上述示例的分析内容可知,利用上述公式(8)针对第一顶点对以及第二顶点确定的曲率表征数据优于利用上述s2所示的“第r个顶点对的曲率表征数据”的确定过程针对第一顶点对以及第二顶点确定的曲率表征数据,使得上述c
(p1,p2)
能够有效地克服上述s2所示的“第r个顶点对的曲率表征数据”的确定过程存在的缺陷。
[0229]
基于上述步骤731至步骤732的相关内容可知,对于一个顶点对来说,可以借助上述公式(8)确定该顶点对的曲率表征数据,以使该顶点对的曲率表征数据能够更好的表示出在待简化模型中该顶点对所包括的两个顶点之间的曲率变化趋势。
[0230]
另外,为了进一步提高针对待简化模型的简化效果,本技术实施例还提供了确定“顶点对的合并代价”的一种可能的实施方式;而且为了便于理解,下面以待处理点对的合并代价的确定过程为例进行说明。
[0231]
作为示例,当上述“至少一个顶点对”包括待处理点对,且该待处理点对包括第一顶点和第二顶点时,该待处理点对的合并代价的确定过程,具体可以包括步骤81-步骤82:
[0232]
步骤81:根据待处理点对的曲率表征数据,确定该待处理点对的合并损失值。
[0233]
其中,“待处理点对的合并损失值”用于表征将待简化模型中该待处理点对进行合并之后对该待简化模型造成的影响;而且本技术实施例不限定“待处理点对的合并损失值”的确定过程,例如,其可以采用公式(9)进行实施。
[0234]
cost(p1,p2)=v
merget
·
q(p1,p2)
·vmerge
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0235]
式中,cost(p1,p2)表示待处理点对(p1,p2)的合并损失值;(p1,p2)表示待处理点对;p1表示第一顶点;p2表示第二顶点;v
merge
表示由待处理点对中两个顶点合并之后得到的合并顶点所处位置;v
merget
表示v
merge
的转置矩阵;q(p1,p2)表示待处理点对(p1,p2)的二次误差矩阵。
[0236]
需要说明的是,本技术实施例不限定v
merge
的确定过程,可以采用现有的或者未来出现的任一种合并位置确定方法(例如,采用针对“v
merget
·
q(p1,p2)
·vmerge”进行求导的方式)进行实施。
[0237]
步骤82:利用待处理点对的曲率表征数据对待处理点对的合并损失值进行预设校正处理,得到待处理点对的合并代价。
[0238]
其中,“预设校正处理”可以预先设定;而且本技术实施例不限定“预设校正处理”,例如其可以采用公式(10)进行实施。
[0239]
cost
(p1,p2)
=cost(p1,p2)+c
(p1,p2)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(10)
[0240]
式中,cost
(p1,p2)
表示待处理点对(p1,p2)的的合并代价;(p1,p2)表示待处理点对;p1表示第一顶点;p2表示第二顶点;cost(p1,p2)表示待处理点对(p1,p2)的合并损失值;c
(p1,p2)
表示待处理点对(p1,p2)的曲率表征数据。
[0241]
基于上述步骤81至步骤82的相关内容可知,对于一个顶点对来说,可以借助公式(10)来确定该顶点对的合并代价,以使该顶点对的合并代价能够更准确地表示出当将待简化模型中该顶点对合并成一个顶点之后对该待简化模型所造成的影响程度,如此有利于提高针对待简化模型的简化效果。
[0242]
基于上述提供的模型简化方法的相关内容,本技术实施例还提供了一种模型简化装置,为了便于理解,下面结合附图进行说明。
[0243]
参见图5,该图为本技术实施提供的一种模型简化装置的结构示意图。
[0244]
本技术实施例提供的模型简化装置500,包括:
[0245]
第一确定单元501,用于在获取到待简化模型之后,确定所述待简化模型中至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据;
[0246]
第二确定单元502,用于根据所述至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据,分别确定所述至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据;
[0247]
第三确定单元503,用于根据所述至少一个顶点对的二次误差矩阵和所述至少一个顶点对的曲率表征数据,确定所述至少一个顶点对的合并代价;
[0248]
模型简化单元504,用于根据所述至少一个顶点对的合并代价,对所述待简化模型进行顶点合并处理。
[0249]
在一种可能的实施方式中,所述模型简化单元504,具体用于:根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对;将所述待简化模型中目标点对进行合并,并返回所述第一确定单元501继续执行所述确定所述待简化模型中至少一个顶点的二次误差矩阵和所述至少一个顶点的曲率表征数据的步骤,直至达到预设停止条件。
[0250]
在一种可能的实施方式中,所述模型简化单元504,具体用于:根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对;将所述待简化模型中目标点对进行合并,得到至少一个待更新顶点;根据所述至少一个待更新顶点,更新所述至少一个顶点对的合并代价,并继续执行所述根据所述至少一个顶点对的合并代价,从所述至少一个顶点对中筛选满足预设合并条件的目标点对的步骤,直至达到预设停止条件。
[0251]
在一种可能的实施方式中,所述至少一个顶点包括待使用顶点,且所述待使用顶点的曲率表征数据的确定过程,包括:从所述待简化模型中确定所述待使用顶点的参考邻接面和所述待使用顶点的至少一个邻接点;根据各个所述邻接点与所述参考邻接面之间的相对位置表征数据,确定所述待使用顶点的曲率表征数据。
[0252]
在一种可能的实施方式中,所述至少一个邻接点包括待处理邻接点,且所述待处理邻接点与所述参考邻接面之间的相对位置表征数据包括所述待处理邻接点到所述参考邻接面的距离、和/或所述待处理邻接点到所述参考邻接面上预设位置的距离。
[0253]
在一种可能的实施方式中,当所述邻接点的个数为m,第m个邻接点与所述参考邻
接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:对第1个邻接点到所述参考邻接面的距离至第m个邻接点到所述参考邻接面的距离进行第一统计分析处理,得到所述待使用顶点的曲率表征数据;其中,m为正整数,m≤m,m为正整数;
[0254]
在一种可能的实施方式中,当所述邻接点的个数为m,所述第m个邻接点与所述参考邻接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面上预设位置的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:对第1个邻接点到所述参考邻接面上预设位置的距离至第m个邻接点到所述参考邻接面上预设位置的距离进行第二统计分析处理,得到所述待使用顶点的曲率表征数据;其中,m为正整数,m≤m,m为正整数;
[0255]
在一种可能的实施方式中,当所述邻接点的个数为m,所述第m个邻接点与所述参考邻接面之间的相对位置表征数据包括所述第m个邻接点到所述参考邻接面的距离、以及所述第m个邻接点到所述参考邻接面上预设位置的距离时,所述待使用顶点的曲率表征数据的确定过程,包括:根据所述第m个邻接点到所述参考邻接面的距离与所述第m个邻接点到所述参考邻接面上预设位置的距离之间的比值,确定所述第m个邻接点的曲率贡献值;其中,m为正整数,m≤m,m为正整数;对第1个邻接点的曲率贡献值至第m个邻接点的曲率贡献值进行第三统计分析处理,得到所述待使用顶点的曲率表征数据。
[0256]
在一种可能的实施方式中,所述至少一个顶点包括待使用顶点,且所述待使用顶点的曲率表征数据的确定过程,包括:从所述待简化模型中确定所述待使用顶点的至少一个邻接面和所述待使用顶点的至少一个邻接点;根据各个所述邻接点与各个所述邻接面之间的相对位置表征数据,确定所述待使用顶点的曲率表征数据。
[0257]
在一种可能的实施方式中,当所述邻接面的个数为n,且所述邻接点的个数为m时,所述待使用顶点的曲率表征数据的确定过程,包括:根据第1个邻接点与第n个邻接面之间的相对位置表征数据至第m个邻接点与第n个邻接面之间的相对位置表征数据,确定所述第n个邻接面的曲率贡献表征数据;其中,n为正整数,n≤n;根据第1个邻接面的曲率贡献表征数据至第n个邻接面的曲率贡献表征数据,确定所述待使用顶点的曲率表征数据。
[0258]
在一种可能的实施方式中,所述至少一个顶点对包括待处理点对,且所述待处理点对包括第一顶点和第二顶点;
[0259]
所述待处理点对的曲率表征数据的确定过程,包括:将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的最大值,确定为第一参考数据;将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的最小值,确定为第二参考数据;根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第一参考数据之间的比值,确定所述待处理点对的曲率表征数据。
[0260]
在一种可能的实施方式中,所述待处理点对的曲率表征数据的确定过程,包括:根据所述第一参考数据与预设校正值之间的和值,确定第三参考数据;根据所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和值、以及所述第二参考数据与所述第三参考数据之间的比值,确定所述待处理点对的曲率表征数据。
[0261]
在一种可能的实施方式中,所述待处理点对的曲率表征数据的确定过程,包括:将预设数值、以及所述第二参考数据与所述第三参考数据之间的比值进行加和处理,得到中间处理数据;将所述第一顶点的曲率表征数据与所述第二顶点的曲率表征数据之间的和
值、以及所述中间处理数据进行相乘,得到所述待处理点对的曲率表征数据。
[0262]
在一种可能的实施方式中,所述至少一个顶点对包括待处理点对,且所述待处理点对的合并代价的确定过程,包括:根据所述待处理点对的曲率表征数据,确定所述待处理点对的合并损失值;利用所述待处理点对的曲率表征数据对所述待处理点对的合并损失值进行预设校正处理,得到所述待处理点对的合并代价。
[0263]
基于上述模型简化装置500的相关内容可知,对于模型简化装置500来说,在获取到待简化模型(例如,三维数据模型等高维数据模型)之后,先确定该待简化模型中至少一个顶点的二次误差矩阵以及曲率表征数据;再根据该至少一个顶点的二次误差矩阵以及曲率表征数据,分别确定至少一个顶点对的二次误差矩阵以及曲率表征数据;然后,根据该至少一个顶点对的二次误差矩阵以及曲率表征数据,确定该至少一个顶点对的合并代价;最后,根据该至少一个顶点对的合并代价,对该待简化模型进行顶点合并处理,以使经顶点合并处理得到的待简化模型中顶点个数少于原始的待简化模型中顶点个数,从而使得在针对上述“经顶点合并处理得到的待简化模型”进行后续模型处理时所消耗的资源比较少,如此有利于提高针对高维数据模型的处理效果。
[0264]
另外,因本技术实施例提供的模型简化方法同时参考了各个顶点的二次误差矩阵以及曲率表征数据,使得在利用本技术实施例提供的模型简化方法针对待简化模型进行简化处理时能够尽可能地保留模型细节(尤其是,具有较大曲率的顶点所引起的模型细节),如此有利于进一步提高针对高维数据模型的简化效果,从而能够进一步针对高维数据模型的处理效果。
[0265]
另外,本技术实施例还提供了一种模型简化设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本技术实施例提供的模型简化方法的任一实施方式。
[0266]
另外,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行本技术实施例提供的模型简化方法的任一实施方式。
[0267]
另外,本技术实施例还提供了一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行本技术实施例提供的模型简化方法的任一实施方式。
[0268]
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0269]
应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
[0270]
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0271]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0272]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1