一种网格模型变形方法、装置、电子设备及存储介质与流程

文档序号:36609109发布日期:2024-01-06 23:12阅读:18来源:国知局
一种网格模型变形方法、装置、电子设备及存储介质与流程

本技术涉及图形处理,特别是涉及一种网格模型变形方法、装置、电子设备及存储介质。


背景技术:

1、在动画和游戏等领域中,可以通过搭建网格模型来呈现动画或游戏中的人物角色、建筑和花草树木等元素。通过建立网格模型来呈现一个物体的过程,称为建模。每个网格模型可以包括多个多边形网格,每个多边形网格可以包括多个顶点。通过改变网格模型中的部分或全部顶点的参数,可以实现网格模型的变形。

2、随着建模的精细化发展,网格模型中的顶点数量也逐渐增加。当网格模型中待变形的顶点的数量较多时,网格模型变形的计算量也会相应增大,进而,网格模型变形的时间会相应增长,网格模型变形的效率会相应降低。


技术实现思路

1、本技术实施例的目的在于提供一种网格模型变形方法、装置、电子设备及存储介质,以缩短网格模型变形的时间,提高网格模型变形的效率。具体技术方案如下:

2、第一方面,本技术实施例提供了一种网格模型变形方法,所述方法包括:

3、确定处于第一状态的待变形的原始网格模型;

4、获取与所述原始网格模型拓扑结构相同的基础网格模型由第一状态变形至第二状态时,所述基础网格模型所包括的各个顶点中,属性值存在变化的多个基础顶点的顶点变化量;其中,所述第二状态为所述原始网格模型待变化至的状态;每个基础顶点的顶点变化量包括该基础顶点的至少一个属性的子变化量,且每个属性包括至少一个子变化量;

5、将所述多个基础顶点的顶点变化量分配给多个目标线程;其中,每个目标线程所分配的顶点变化量属于同一基础顶点的同一属性;

6、通过并行调用所述多个目标线程,并行计算所述多个基础顶点的顶点变化量中,属于同一基础顶点的同一属性的各子变化量的和值,得到每个基础顶点对应的原始顶点的目标变化量;其中,每个基础顶点与该基础顶点对应的原始顶点在所述拓扑结构中的所处位置相同;

7、按照每个原始顶点的目标变化量,更新该原始顶点的当前属性值,得到处于所述第二状态的目标网格模型。

8、可选的,一种具体实现方式中,所述目标线程的数量等于所述多个基础顶点的顶点变化量所包括的子变化量的个数;

9、所述将所述多个基础顶点的顶点变化量分配给多个目标线程,包括:

10、将所述多个基础顶点的顶点变化量中所包括的每个子变化量分配给一个目标线程;

11、所述通过并行调用所述多个目标线程,并行计算所述多个基础顶点的顶点变化量中,属于同一基础顶点的同一属性的各子变化量的和值,得到每个基础顶点对应的原始顶点的目标变化量,包括:

12、通过并行调用所述多个目标线程,针对被分配了属于同一指定基础顶点的同一指定属性的子变化量的各个指定目标线程,并行计算属于所述指定基础顶点的指定属性的各个子变化量的和值,得到所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量;

13、所述按照每个原始顶点的目标变化量,更新该原始顶点的当前属性值,得到处于所述第二状态的目标网格模型,包括:

14、按照每个原始顶点的每个属性的目标属性变化量,更新该原始顶点的该属性的当前属性值,得到处于所述第二状态的目标网格模型。

15、可选的,一种具体实现方式中,所述针对被分配了属于同一指定基础顶点的同一指定属性的子变化量的各个指定目标线程,并行计算属于所述指定基础顶点的指定属性的各个子变化量的和值,得到所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量,包括:

16、若属于所述指定基础顶点的指定属性的各个子变化量均为整数,则针对各个指定目标线程,通过原子累加,并行计算属于所述指定基础顶点的指定属性的各个子变化量的和值,得到所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量;

17、否则,针对各个指定目标线程,并行执行如下步骤:

18、读取第一变量的当前值,并判断所述第一变量的当前值是否与该指定目标线程对应的第二变量的当前值相等;其中,该指定目标线程对应的第二变量的初始值为0;

19、若相等,则请求获取所述第一变量的修改权限;若所述修改权限获取成功,则确定所述第一变量的当前值与该指定目标线程所对应的子变化量的目标和值,并将所述第一变量的当前值更新为所述目标和值;其中,同一时刻具有所述第一变量的修改权限的线程数量不大于1;

20、若所述修改权限获取失败,则返回所述读取第一变量的当前值的步骤;

21、若不相等,则将该指定目标线程对应的第二变量的当前值更新为所述第一变量的当前值,并返回所述读取第一变量的当前值的步骤;

22、在各个指定目标线程均结束后,将所述第一变量的当前值作为所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量。

23、可选的,一种具体实现方式中,在所述通过并行调用所述多个目标线程,针对被分配了属于同一指定基础顶点的同一指定属性的子变化量的各个指定目标线程,并行计算属于所述指定基础顶点的指定属性的各个子变化量的和值,得到所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量之前,所述方法还包括:

24、将属于第一类属性的各个子变化量转换为整数;其中,所述第一类属性的属性值始终位于指定数值区间内;

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、读取第一变量的当前值,并判断所述第一变量的当前值是否与该指定目标线程对应的第二变量的当前值相等;其中,该指定目标线程对应的第二变量的初始值为0;

54、若相等,则请求获取所述第一变量的修改权限;若所述修改权限获取成功,则确定所述第一变量的当前值与该指定目标线程所对应的子变化量的目标和值,并将所述第一变量的当前值更新为所述目标和值;其中,同一时刻具有所述第一变量的修改权限的线程数量不大于1;

55、若所述修改权限获取失败,则返回所述读取第一变量的当前值的步骤;

56、若不相等,则将该指定目标线程对应的第二变量的当前值更新为所述第一变量的当前值,并返回所述读取第一变量的当前值的步骤;

57、在各个指定目标线程均结束后,将所述第一变量的当前值作为所述指定基础顶点对应的指定原始顶点的指定属性的目标属性变化量;

58、可选的,一种具体实现方式中,所述装置还包括:

59、变化量转换模块,用于将属于第一类属性的各个子变化量转换为整数;其中,所述第一类属性的属性值始终位于指定数值区间内;

60、属性值确定模块,用于确定各个原始顶点的第一类属性的当前属性值对应的整数属性值;

61、所述属性值更新子模块具体用于:

62、针对每个原始顶点的每个第一类属性,确定该原始顶点的该第一类属性的整数属性值和目标属性变化量的和值,作为该原始顶点的该第一类属性的整数目标值;将所述整数目标值缩放至指定数值区间,得到该原始顶点的该第一类属性的目标属性值;

63、针对每个原始顶点的每个第二类属性,确定该原始顶点的该第二类属性的当前属性值和目标属性变化量的和值,作为该原始顶点的该第二类属性的目标属性值;其中,所述第二类属性为除所述第一类属性外的属性;

64、针对每个原始顶点的每个属性,将该原始顶点的该属性的当前属性值更新为该原始顶点的该属性的目标属性值,得到处于所述第二状态的目标网格模型;

65、可选的,一种具体实现方式中,所述属性值更新模块具体用于:

66、并行调用多个指定线程,针对每个原始顶点,根据该原始顶点的目标变化量,更新该原始顶点的当前属性值,得到处于所述第二状态的目标网格模型;

67、可选的,一种具体实现方式中,所述多个基础顶点的顶点变化量的确定方式包括:

68、获取第一网格模型和第二网格模型;其中,所述第一网格模型为:处于所述第一状态的所述基础网格模型,所述第二网格模型为:处于所述第二状态的所述基础网格模型;

69、确定所述第一网格模型和所述第二网格模型中,属性值不同的各组顶点;其中,每组顶点包括:所述第一网格模型中的第一顶点和所述第二网格模型中的第二顶点,所述第一顶点和所述第二顶点在所述拓扑结构中的所处位置相同;

70、计算每组顶点所包括的第二顶点的属性值相对于该组顶点所包括的所述第一顶点的属性值的变化量,得到所述多个基础顶点的顶点变化量。

71、第三方面,本技术实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

72、存储器,用于存放计算机程序;

73、处理器,用于执行存储器上所存放的程序时,实现上述任一所述的网格模型变形方法。

74、第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一所述的网格模型变形方法。

75、本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的网格模型变形方法。

76、本技术实施例有益效果:

77、以上可见,应用本技术实施例提供的方案,在将处于第一状态的待变形的原始网格模型变形为第二状态时,可以先确定处于第一状态的待变形的原始网格模型;基础网格模型可以为与原始网格模型拓扑结构相同的网格模型,在确定了原始网格模型后,可以获取基础网格模型由第一状态变形至第二状态时,基础网格模型所包括的各个顶点中,属性值存在变化的多个基础顶点的顶点变化量。其中,每个基础顶点的顶点变化量包括该基础顶点的至少一个属性的子变化量,且每个属性包括至少一个子变化量。

78、在获取了多个基础顶点的顶点变化量后,可以将该多个基础顶点的顶点变化量分配给多个目标线程,并且每个目标线程所分配的顶点变化量可以属于同一基础顶点的同一属性。由于基础网格模型与原始网格模型的拓扑结构相同,因此,每个基础顶点均可以对应原始网格模型中的一个原始顶点,且每个基础顶点与该基础顶点对应的原始顶点在拓扑结构中的所处位置相同。进而,通过并行调用该多个目标线程,便可以并行计算多个基础顶点的顶点变化量中,属于同一基础顶点的同一属性的各子变化量的和值,从而得到每个基础顶点对应的原始顶点的目标变化量。最后,按照每个原始顶点的目标变化量,更新该原始顶点的当前属性值,便可以得到处于第二状态的目标网格模型。

79、基于此,该多个原始顶点也就是原始网格模型在由第一状态变形至第二状态时,原始网格模型中属性值存在变化的顶点。由于在网格模型变形的过程中,该多个原始顶点的目标变化量可以通过调用多个目标线程并行计算得到,因此,应用本技术实施例提供的方案,可以缩短网格模型变形的时间,提高网格模型变形的效率。

80、另外,应用本技术实施例提供的方案,与基础网格模型拓扑结构相同的各个网格模型在由第一状态变形至第二状态时,均可以利用基础网格模型的多个基础顶点的变化参数,因此,针对与基础网格模型拓扑结构相同的各个网格模型由第一状态变形至第二状态的变形过程,存储空间中可以只存储有基础网格模型的多个基础顶点的变化参数,而不必存储其他网格模型的变形参数。因此,应用本技术实施例提供的方案,还可以提高存储空间的利用率,节省存储资源。

81、当然,实施本技术的任一产品或方法并不一定需要同时达到以上所述的所有优点。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1