CN115908678B - 骨骼模型渲染方法、装置、电子设备及存储介质 - Google Patents
骨骼模型渲染方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115908678B CN115908678B CN202310164546.XA CN202310164546A CN115908678B CN 115908678 B CN115908678 B CN 115908678B CN 202310164546 A CN202310164546 A CN 202310164546A CN 115908678 B CN115908678 B CN 115908678B
- Authority
- CN
- China
- Prior art keywords
- floating point
- point number
- bone
- target
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请实施例公开了一种骨骼模型渲染方法、装置、电子设备及存储介质。该方法包括:从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;将所述目标骨骼数据缓存到所述图形处理器的寄存器;从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。本申请实施例有利于提高骨骼模型的渲染效率。
Description
技术领域
本申请涉及动画技术领域,具体涉及一种骨骼模型渲染方法、装置、电子设备及存储介质。
背景技术
随着科学技术的发展,骨骼动画技术应运而生,所谓的骨骼动画是一种模型动画;在骨骼动画中,模型具有相互连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。
目前在进行骨骼动画制作时,需要先渲染出角色的骨骼模型。在渲染角色的任意一个骨骼模型时,需要先获取该骨骼模型的旋转数据和位移数据。然后,将该骨骼模型的骨骼旋转数据和骨骼位移数据缓存到图形处理器(Graphics Processing Unit,GPU)中的寄存器,GPU再从寄存器中调用每个骨骼模型的骨骼旋转数据和骨骼位移数据,以完成每个骨骼模型的渲染。由于骨骼旋转数据和骨骼位移数据都包含有多个浮点数,在渲染每个骨骼模型需要占据GPU的多个寄存器,导致单次渲染的骨骼模型的数量有限,导致骨骼模型的渲染效率较低。
发明内容
本申请实施例提供了一种骨骼模型渲染方法、装置、电子设备及存储介质,通过对骨骼旋转数据和骨骼位移数据的融合,可以占用较少的寄存器即可完成骨骼模型的渲染,提高了骨骼模型的渲染效率。
第一方面,本申请实施例提供一种骨骼模型渲染方法,所述方法包括:
从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
将所述目标骨骼数据缓存到所述图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
第二方面,本申请实施例提供一种骨骼模型渲染装置,包括:获取单元和处理单元;
所述获取单元,用于从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
所述处理单元,用于对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
将所述目标骨骼数据缓存到所述图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
第三方面,本申请实施例提供一种电子设备,包括:处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述电子设备执行如第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得计算机执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机可操作来使计算机执行如第一方面所述的方法。
实施本申请实施例,具有如下有益效果:
可以看出,在本申请实施例中,在对骨骼旋转数据和骨骼位移数据进行融合之后,可以将原本的六个浮点数(三个第一浮点数和三个第二浮点数),融合为四个浮点数(三个第三浮点数和一个目标浮点数)。这样原本在渲染一个骨骼模型时,相比现有技术中六个浮点数需要占据两个寄存器(一个寄存器可以存储四个浮点数),本申请中只需要占据一个寄存器。即本申请中在渲染骨骼模型时,每个骨骼模型只需要占据一个寄存器。这样可以减少每个骨骼模型所占据的寄存器的数量,这样GPU一次性可以从CPU获取更多的骨骼模型的数据,减少了GPU和CPU之间的交互次数,实现一次性可以渲染更多的骨骼模型,提高骨骼模型的渲染效率。例如,GPU管理128个寄存器,现有技术中由于每个骨骼模型要占据两个寄存器,则GPU一次性只能加载64个骨骼模型的数据,一次性最多也就只能渲染64个骨骼模型。然而,本申请中每个骨骼模型只需占据一个寄存器,则GPU一次性可以渲染128个骨骼模型,故每次可以渲染128个骨骼模型,从而提高了骨骼模型的渲染效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种骨骼模型渲染装置的示意图;
图2为本申请实施例提供的一种骨骼模型渲染方法的流程示意图;
图3为本申请实施例提供的一种生成目标浮点数的示意图;
图4为本申请实施例提供的一种骨骼模型渲染装置的功能单元组成框图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结果或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参阅图1,图1为本申请实施例提供的一种骨骼模型渲染装置的示意图。骨骼模型渲染装置包括中央处理器(central processing unit,CPU)10和图形处理器(GraphicsProcessing Unit,GPU)20、多个寄存器30以及显示屏40。
示例性的,中央处理器10先计算每帧骨骼动画中的虚拟角色的每个骨骼模型的骨骼旋转数据和骨骼位移数据。因此,当图形处理器20需要对任意一帧骨骼动画进行渲染时,可从中央处理器10获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;然后,对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;将所述目标骨骼数据缓存到所述图形处理器的寄存器30,即缓存到任意一个空闲的寄存器。
最后,图形处理器20从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。这样图形处理器20完成对该帧骨骼动画中每个骨骼模型的渲染后,可完成对该帧骨骼动画的渲染,并可以在显示屏40上显示该帧骨骼动画。
参阅图2,图2为本申请实施例提供的一种骨骼模型渲染方法的流程示意图。该方法应用于上述骨骼模型渲染装置的图形处理器。该方法包括但不限于以下步骤内容:
201:从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据。
其中,该骨骼模型为待渲染的虚拟角色中的任意一个骨骼模型。进一步地,该骨骼模型为该虚拟角色在任意一帧骨骼动画中的骨骼模型。
首先说明,针对四元数表示旋转信息,一般通过四个浮点数表示旋转信息,具体为,通过x,y,z,w四个浮点数表示旋转信息。本申请中通过单元四元数表示旋转信息,即x2+y2+z2=1,因此本申请中z的取值可以通过x和y的取值确定,故本申请使用四元数表示旋转信息时,只需要使用三个浮点数即可表示旋转信息。因此,该多个第一浮点数为三个第一浮点数,本申请中将这三个第一浮点数称为x1、y1和w,则第四个浮点数z1可以通过x1和y1确定。
其中,骨骼位移数据指示骨骼模型在三维空间的位移量,故骨骼位移数据包括在三维空间中x方向上的位移量、y方向的位移量、z方向的位移量。故该多个第二浮点数包括三个第二浮点数,并且本申请中将这三个第二浮点数称为x2、y2和z2。
202:对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据。
其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应,即将每个第一浮点数与该第一浮点数对应的第二浮点数进行融合,得到与该第一浮点数对应的第三浮点数。故每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号。
具体地,先获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数;基于每个第一浮点数的放大系数,分别对每个第一浮点数进行放大处理,得到与每个第一浮点数对应的第四浮点数,即可得到多个第四浮点数。应说明,通过每个第一浮点数的放大系数对该第一浮点数进行放大主要是将该第一浮点数的小数部分转化为整数,即将该第一浮点数完全转化为整数。可选地,基于每个第二浮点数的缩小系数,分别对每个第二浮点数进行缩小处理,得到与每个第二浮点数对应的第五浮点数,即可得到多个第五浮点数。应说明,通过每个第二浮点数的缩小系数对该第二浮点数进行缩小,主要是将该第二浮点数的整数部分转化为小数,即将整个第二浮点数完全转化为小数。
下面介绍两种获取放大系数和缩小系数的方式。
第一种:
示例性的,基于fbx文件获取多个历史骨骼旋转数据和多个历史骨骼位移数据,其中,多个历史骨骼旋转数据和多个历史骨骼位移数据一一对应。同样的,每个历史骨骼旋转数据包括三个浮点数,每个历史骨骼位移数据也包含三个浮点数。然后,对多个历史骨骼旋转数据进行分析,即分别对每个历史骨骼旋转数据中的每个浮点数进行分析,得到每个浮点数的小数位数,进而得到多个历史骨骼旋转数据中的小数位数最大值。例如,历史骨骼旋转数据为(-0.0156889,-0.614567,7.99660),故对该历史骨骼旋转数据分析,可得到每个浮点数的小数位数分别为7,6和5,因此小数位数的最大值为7。最后,基于该小数位数的最大值,确定目标放大系数,其中,该目标放大系数为10k,其中,k为小数位数的最大值。然后,将该目标放大系数作为每个第一浮点数的放大系数,即多个第一浮点数的放大系数全部相同,即为该目标放大系数。应说明,基于历史骨骼旋转数据分析出小数位数的最大值,这样确定出的目标放大系数可以将每个第一浮点数完全转换为整数。
示例性的,对多个历史骨骼位移数据进行分析,即分别对每个历史骨骼位移数据中的每个浮点数进行分析,得到每个浮点数的整数位数,进而得到多个历史骨骼位移数据中的整数位数的最大值。例如,历史骨骼位移数据为(2.0505,15.0744,0.679434),则对该历史骨骼位移数据进行分析,可得到整数位数分别为1、2和0。故该整数位数的最大值为2。然后,基于该整数位数确定目标缩小系数,其中,目标缩小系数为10-m,m为整数位数最大值。最后,将目标缩小系数作为每个第二浮点数的缩小系数,即多个第二浮点数的缩小系数全部相同,即为该目标缩小系数。应说明,基于历史骨骼位移数据分析出整数位数的最大值,这样确定出的目标缩小系数可以将每个第二浮点数完全转换为小数。
第二种:
示例性的,获取每个第一浮点数的小数位数;根据每个第一浮点数的小数位数,确定每个第一浮点数的放大系数,其中,每个第一浮点数的放大系数为10n,n为每个第一浮点数的小数位数。即基于每个第一浮点数的实际小数位数动态确定每个第一浮点数的放大系数,从而可以确保将每个第一浮点数完全转换为整数。
示例性的,获取每个第二浮点数的整数位数;根据每个第二浮点数的整数位数,确定出每个第二浮点数的缩小系数,其中,每个第二浮点数的缩小系数为10h,h为每个第二浮点数的整数位数。即基于每个第二浮点数的实际整数位数动态确定每个第二浮点数的缩小系数,从而可以确保将每个第二浮点数完全转换为小数。
进一步地,在对第一浮点数放大,以及对第二浮点数缩小之后,将每个第四浮点数作为与浮点数的整数部分,以及将与该第四浮点数对应的第五浮点数作为该浮点数的小数部分,并将该第四浮点数的符号作为该浮点数的符号,则可得到与该第四浮点数对应的第三浮点数。具体地,将第四浮点数作为该第三浮点数的整数部分,将第五浮点数作为该第三浮点数的小数部分,并设置该第三浮点数的符号与该第四浮点数的符号相同,可得到该第三浮点数。这样就每个第四浮点数与对应的第五浮点数融合后,可得到多个第三浮点数。
举例来说,若第一浮点数为-0.0156889,放大系数为107,则第四浮点数为-156889,第二浮点数为2.0505,缩小系数为10-1,则第五浮点数为0.020505,故对第四浮点数和第五浮点数进行融合,所生成的第三浮点数为-156889.020505。
进一步地,上述对第四浮点数和第五浮点数融合后,并不能确定出第二浮点数的符号。故针对于此,还可以基于多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数,即通过目标浮点数表示每个第二浮点数的符号。示例性,每个第二浮点数的符号可以通过一个整数位的取值表示。例如,可以取值1表示浮点数的符号为正(+),通过取值0表示浮点数的符号为负(-)。故针对多个第二浮点数的符号可以通过一个浮点数的多个整数位的取值表示,并将该浮点数作为目标浮点数。举例来说,骨骼位移数据为(2.0505,15.0744,0.679434),则该目标浮点数为111。
203:将所述目标骨骼数据缓存到所述图形处理器的寄存器。
示例性的,将目标骨骼数据缓存到图形处理器所管理的寄存器中。具体地,图形处理器所管理的每个寄存器可缓存4个浮点数,由于目标骨骼数据刚好由四个浮点数组成,故可以将该目标骨骼数据缓存到图形处理器所管理的任意一个空闲的寄存器中。
204:从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
示例性的,当图形处理器进行骨骼模型的渲染时,从寄存器中调用该目标骨骼数据,完成骨骼模型的渲染。具体地,图形处理器调用该目标骨骼数据后,需要基于目标骨骼数据还原出骨骼旋转数据和骨骼位移数据。然后,基于骨骼旋转数据和骨骼位移数据进行骨骼模型的渲染。
在本申请的一个实施方式中,若每个第一浮点数的放大系数,以及每个第二浮点数的缩小系数是通过历史数据分析得到,即预先设定好的系数,则图形处理器可以在配置文件中存储有目标放大系数和目标缩小系数。可选地,针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数(即目标放大系数),对整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数,即将该整数部分还原为第一浮点数,并设置该第一浮点数的符号与该第三浮点数的符号相同。则在将每个第三浮点数的整数部分还原后,可得到上述多个第一浮点数;然后,根据每个第三浮点数对应的第一浮点数,得到骨骼旋转数据。可选地,获取每个第三浮点数,获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对小数部分进行放大处理,则可得到与该第三浮点数对应的第二浮点数,即确定出了该第二浮点数的取值。但是,还未确定出该第二浮点数的符号。故进一步地,根据目标浮点数,可确定该第二浮点数的符号。具体地,确定该目标浮点数中与该第二浮点数对应的整数位,根据该整数位的取值确定出该第二浮点数的符号。最后,根据从每个第三浮点数中还原出的第二浮点数,可得到骨骼位移数据。
举例来说,第三浮点数为-156889.020505,若放大系数为107,则基于该放大系数对整数部分“156889”进行缩小,可得到浮点数的取值0.0156889,又将该第一浮点数与该第三浮点数的符号保持相同,故可得到第一浮点数-0.0156889。若缩小系数为102,则基于该缩小系数对小数部分“.020505”进行放大,则可得到浮点数的取值为2.0505。若目标浮点数为111,则确定出与该浮点数对应的整数位的取值为1,则可确定第二浮点数的符号为正,故该第二浮点数为2.0505。
在本申请的另一个实施方式中,若每个第一浮点数的放大系数以及每个第二浮点数的缩小系数是动态确定的,则图形处理器在还原出骨骼旋转数据和骨骼位移数据时,需要获取每个第一浮点数的放大系数和每个第二浮点数的缩小系数。相应地,则在将目标骨骼数据缓存到寄存器时,还需要将每个第一浮点数的放大系数以及每个第二浮点数的缩小系数缓存到寄存器,这样图形处理器才能够还原骨骼数据。但是,为了不额外占用寄存器,则还可以通过目标浮点数记录每个第一浮点数的放大系数以及每个第二浮点数的缩小系数。
示例性的,如图3所示,首先根据每个第二浮点数的符号,确定与每个第二浮点数的符号对应的整数位的取值,即先确定用于记录每个第二浮点数的符号的整数位的取值;然后,根据每个第一浮点数的放大系数,确定与每个第一浮点数的放大系数对应的整数位的取值,即通过整数位的取值表示每个第一浮点数的放大系数。同样地,根据每个第二浮点数的缩小系数,可确定与每个第二浮点数的缩小系数对应的整数位的取值;最后,将每个第二浮点数的符号对应的整数位的取值、每个第一浮点数的放大系数对应的整数位的取值以及每个第二浮点数的缩小系数对应的整数位的取值进行组合,得到目标浮点数。
进一步地,为了组合出的目标浮点数,能够清楚的确定出哪些整数位是与哪个第一浮点数的放大系数所对应的,哪些整数位是与第二浮点数的缩小系数所对应的,则与每个第一浮点数的放大系数对应的整数位以及与每个第二浮点数的缩小系数对应的整数位中还包含结束标识,其中,该结束标识为预设值,比如,结束标识可以为“2”。这样按整数位从前往后遍历目标浮点数时,则可以基于结束标识,确定出与每个第一浮点数的放大系数对应的整数位,以及与每个第二浮点数的缩小系数对应的整数位,进而可以确定出每个第一浮点数对应的放大系数,以及每个第二浮点数对应的缩小系数。
举例来说,骨骼旋转数据为(-0.0156889,-0.614567,7.99660),骨骼位移数据为(2.0505,15.0744,0.679434),则可确定出与第二浮点数的符号所对应的整数位为111。然后,三个第一浮点数分别对应的放大系数为107、106、105,则三个第二浮点数分别对应的缩小系数为10-1、10-2、100。若通过三个整数位来表示每个第一浮点数的放大系数,则与三个第一浮点数分别对应的整数位的取值分别为111、110、101。然后再为整数位添加结束标识,则可得到三个第一浮点数分别对应的整数位为1112、1102、1012。同样地,可得到三个第二浮点数对应的整数位为0012、0102、0002。这样可以得到目标浮点数为111111211021012001201020002。
进一步地,上述通过目标浮点数记录每个第一浮点数的放大系数和每个第二浮点数的缩小系数后,则再调取目标骨骼数据后,则按照比整数位从前往后的顺序,按预设数量的整数位对所述目标浮点数的整数位进行分割,得到与每个第二浮点数的符号对应的整数位。例如,针对上述目标浮点数,分割出前三个整数位,则可得到与三个第二浮点数的符号所对应的整数位分别为111。然后基于根据每个第二浮点数的符号对应的整数位,确定每个第二浮点数的符号,即确定出三个第二浮点数的符号均为正。
然后针对目标浮点数中的剩余整数位(即目标浮点数中除去上述预设数量后的整数位的剩余整数位),识别所述剩余整数位中的结束标识,按照结束标识对所述剩余整数位进行分割,得到与每个第一浮点数的放大系数对应的整数位,以及与每个第二浮点数的缩小系数对应的整数位。最后,根据与每个第一浮点数的放大系数对应的整数位,确定每个第一浮点数的放大系数;根据与每个第二浮点数的缩小系数对应的整数位,确定每个第二浮点数的缩小系数;针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据。
可以看出,在本申请实施例中,在对骨骼旋转数据和骨骼位移数据进行融合之后,可以将原本的六个浮点数(三个第一浮点数和三个第二浮点数),融合为四个浮点数(三个第三浮点数和一个目标浮点数)。这样原本在渲染一个骨骼模型时,相比现有技术中六个浮点数需要占据两个寄存器(一个寄存器可以存储四个浮点数),本申请中只需要占据一个寄存器。即本申请中在渲染骨骼模型时,每个骨骼模型只需要占据一个寄存器。这样可以减少每个骨骼模型所占据的寄存器的数量,这样GPU一次性可以从CPU获取更多的骨骼模型的数据,减少了GPU和CPU之间的交互次数,实现一次性可以渲染更多的骨骼模型,提高骨骼模型的渲染效率。例如,GPU管理128个寄存器,现有技术中由于每个骨骼模型要占据两个寄存器,则GPU一次性只能加载64个骨骼模型的数据,一次性最多也就只能渲染64个骨骼模型。然而,本申请中每个骨骼模型只需占据一个寄存器,则GPU一次性可以渲染128个骨骼模型,故每次可以渲染128个骨骼模型,从而提高了骨骼模型的渲染效率。
参阅图4,图4本申请实施例提供的一种骨骼模型渲染装置的功能单元组成框图。骨骼模型渲染装置400包括:获取单元401和处理单元402。
获取单元401,用于从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
处理单元402,用于对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
将所述目标骨骼数据缓存到所述图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
在本申请的一个实施方式中,在对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据方面,处理单元402,具体用于:
获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数;
基于每个第一浮点数的放大系数,分别对每个第一浮点数进行放大处理,得到多个第四浮点数;
基于每个第二浮点数的缩小系数,分别对每个第二浮点数进行缩小处理,得到多个第五浮点数;
将每个第四浮点数作为整数部分,以及将该第四浮点数对应的第五浮点数作为小数部分,得到与每个第四浮点数对应的第三浮点数,其中,该第三浮点数的符号与该第四浮点数的符号相同;
根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数;
根据每个第四浮点数对应的第三浮点数以及所述目标浮点数,生成所述目标骨骼数据。
在本申请的一个实施方式中,在获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数方面,处理单元402,具体用于:
获取多个历史骨骼旋转数据和多个历史骨骼位移数据;
对所述多个历史骨骼旋转数据进行分析,确定所述多个历史骨骼旋转数据中的小数位数的最大值;
基于所述小数位数的最大值,确定目标放大系数;
将所述目标放大系数作为每个第一浮点数的放大系数;
对所述多个历史骨骼位移数据进行分析,确定所述多个历史骨骼位移数据中的整数位数的最大值;
基于所述整数位数的最大值,确定目标缩小系数;
将所述目标缩小系数,作为每个第二浮点数的缩小系数。
在本申请的一个实施方式中,在从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型方面,处理单元402,具体用于:
从所述寄存器中调用所述目标骨骼数据;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
在本申请的一个实施方式中,在获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数方面,处理单元402,具体用于:
获取每个第一浮点数的小数位数;
根据每个第一浮点数的小数位数,确定每个第一浮点数的放大系数;
获取每个第二浮点数的整数位数;
根据每个第二浮点数的整数位数,确定每个第二浮点数的缩小系数。
在本申请的一个实施方式中,在根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数方面,处理单元402,具体用于:
根据每个第二浮点数的符号,确定与每个第二浮点数的符号对应的整数位;
根据每个第一浮点数的放大系数,确定与每个第一浮点数的放大系数对应的整数位;
根据每个第二浮点数的缩小系数,确定与每个第二浮点数的缩小系数对应的整数位;
将每个第二浮点数的符号对应的整数位、每个第一浮点数的放大系数对应的整数位以及每个第二浮点数的缩小系数对应的整数位进行组合,得到所述目标浮点数。
在本申请的一个实施方式中与每个第一浮点数的放大系数对应的整数位以及与每个第二浮点数的缩小系数对应的整数位中均包括结束标识,在从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型方面,处理单元402,具体用于:
从所述寄存器中调用所述目标骨骼数据;
按预设数量的整数位对所述目标浮点数进行分割,得到与每个第二浮点数的符号对应的整数位;
根据每个第二浮点数的符号对应的整数位,确定每个第二浮点数的符号;
针对所述目标浮点数中的剩余整数位,识别所述剩余整数位中的结束标识;
按照结束标识对所述剩余整数位进行分割,得到与每个第一浮点数的放大系数对应的整数位,以及与每个第二浮点数的缩小系数对应的整数位;
根据与每个第一浮点数的放大系数对应的整数位,确定每个第一浮点数的放大系数;
根据与每个第二浮点数的缩小系数对应的整数位,确定每个第二浮点数的缩小系数;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
参阅图5,图5为本申请实施例提供的一种电子设备的结构示意图。如图5所示,电子设备500包括收发器501、中央处理器502、存储器503以及图形处理器504。它们之间通过总线505连接。存储器503用于存储计算机程序和数据,并可以将存储器503存储的数据传输给中央处理器502。
图形处理器504用于读取存储器503中的计算机程序执行以下操作:
从中央处理器502获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
将所述目标骨骼数据缓存到所述图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
在本申请的一个实施方式中,在对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据方面,图形处理器504具体用于执行以下操作:
获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数;
基于每个第一浮点数的放大系数,分别对每个第一浮点数进行放大处理,得到多个第四浮点数;
基于每个第二浮点数的缩小系数,分别对每个第二浮点数进行缩小处理,得到多个第五浮点数;
将每个第四浮点数作为整数部分,以及将该第四浮点数对应的第五浮点数作为小数部分,得到与每个第四浮点数对应的第三浮点数,其中,该第三浮点数的符号与该第四浮点数的符号相同;
根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数;
根据每个第四浮点数对应的第三浮点数以及所述目标浮点数,生成所述目标骨骼数据。
在本申请的一个实施方式中,在获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数方面,图形处理器504具体用于执行以下操作:
获取多个历史骨骼旋转数据和多个历史骨骼位移数据;
对所述多个历史骨骼旋转数据进行分析,确定所述多个历史骨骼旋转数据中的小数位数的最大值;
基于所述小数位数的最大值,确定目标放大系数;
将所述目标放大系数作为每个第一浮点数的放大系数;
对所述多个历史骨骼位移数据进行分析,确定所述多个历史骨骼位移数据中的整数位数的最大值;
基于所述整数位数的最大值,确定目标缩小系数;
将所述目标缩小系数,作为每个第二浮点数的缩小系数。
在本申请的一个实施方式中,在从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型方面,图形处理器504具体用于执行以下操作:
从所述寄存器中调用所述目标骨骼数据;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
在本申请的一个实施方式中,在获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数方面,图形处理器504具体用于执行以下操作:
获取每个第一浮点数的小数位数;
根据每个第一浮点数的小数位数,确定每个第一浮点数的放大系数;
获取每个第二浮点数的整数位数;
根据每个第二浮点数的整数位数,确定每个第二浮点数的缩小系数。
在本申请的一个实施方式中,在根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数方面,图形处理器504具体用于执行以下操作:
根据每个第二浮点数的符号,确定与每个第二浮点数的符号对应的整数位;
根据每个第一浮点数的放大系数,确定与每个第一浮点数的放大系数对应的整数位;
根据每个第二浮点数的缩小系数,确定与每个第二浮点数的缩小系数对应的整数位;
将每个第二浮点数的符号对应的整数位、每个第一浮点数的放大系数对应的整数位以及每个第二浮点数的缩小系数对应的整数位进行组合,得到所述目标浮点数。
在本申请的一个实施方式中,与每个第一浮点数的放大系数对应的整数位以及与每个第二浮点数的缩小系数对应的整数位中均包括结束标识,在从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型方面,图形处理器504具体用于执行以下操作:
从所述寄存器中调用所述目标骨骼数据;
按预设数量的整数位对所述目标浮点数进行分割,得到与每个第二浮点数的符号对应的整数位;
根据每个第二浮点数的符号对应的整数位,确定每个第二浮点数的符号;
针对所述目标浮点数中的剩余整数位,识别所述剩余整数位中的结束标识;
按照结束标识对所述剩余整数位进行分割,得到与每个第一浮点数的放大系数对应的整数位,以及与每个第二浮点数的缩小系数对应的整数位;
根据与每个第一浮点数的放大系数对应的整数位,确定每个第一浮点数的放大系数;
根据与每个第二浮点数的缩小系数对应的整数位,确定每个第二浮点数的缩小系数;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
具体地,上述收发器501可为图4所述的实施例的骨骼模型渲染装置400的获取单元401,上述中央处理器502可以为图4所述的实施例的骨骼模型渲染装置400的处理单元402。
应理解,本申请中的电子设备可以包括智能手机(如Android手机、iOS手机、Windows Phone手机等)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备MID(MobileInternet Devices,简称:MID)或穿戴式设备等。上述电子设备仅是举例,而非穷举,包含但不限于上述电子设备。在实际应用中,上述电子设备还可以包括:智能车载终端、计算机设备等等。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如上述方法实施例中记载的任何一种骨骼模型渲染方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种骨骼模型渲染方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory ,简称:ROM)、随机存取器(英文:Random AccessMemory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种骨骼模型渲染方法,其特征在于,所述方法包括:
从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
所述对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,具体包括:获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数;基于每个第一浮点数的放大系数,分别对每个第一浮点数进行放大处理,得到多个第四浮点数;基于每个第二浮点数的缩小系数,分别对每个第二浮点数进行缩小处理,得到多个第五浮点数;将每个第四浮点数作为整数部分,以及将该第四浮点数对应的第五浮点数作为小数部分,得到与每个第四浮点数对应的第三浮点数,其中,该第三浮点数的符号与该第四浮点数的符号相同;根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数;根据每个第四浮点数对应的第三浮点数以及所述目标浮点数,生成所述目标骨骼数据;
将所述目标骨骼数据缓存到图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
2.根据权利要求1所述的方法,其特征在于,所述获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数,包括:
获取多个历史骨骼旋转数据和多个历史骨骼位移数据;
对所述多个历史骨骼旋转数据进行分析,确定所述多个历史骨骼旋转数据中的小数位数的最大值;
基于所述小数位数的最大值,确定目标放大系数;
将所述目标放大系数作为每个第一浮点数的放大系数;
对所述多个历史骨骼位移数据进行分析,确定所述多个历史骨骼位移数据中的整数位数的最大值;
基于所述整数位数的最大值,确定目标缩小系数;
将所述目标缩小系数,作为每个第二浮点数的缩小系数。
3.根据权利要求1或2所述的方法,其特征在于,所述从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型,包括:
从所述寄存器中调用所述目标骨骼数据;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
4.根据权利要求1所述的方法,其特征在于,所述获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数,包括:
获取每个第一浮点数的小数位数;
根据每个第一浮点数的小数位数,确定每个第一浮点数的放大系数;
获取每个第二浮点数的整数位数;
根据每个第二浮点数的整数位数,确定每个第二浮点数的缩小系数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数,包括:
根据每个第二浮点数的符号,确定与每个第二浮点数的符号对应的整数位;
根据每个第一浮点数的放大系数,确定与每个第一浮点数的放大系数对应的整数位;
根据每个第二浮点数的缩小系数,确定与每个第二浮点数的缩小系数对应的整数位;
将每个第二浮点数的符号对应的整数位、每个第一浮点数的放大系数对应的整数位以及每个第二浮点数的缩小系数对应的整数位进行组合,得到所述目标浮点数。
6.根据权利要求5所述的方法,其特征在于,与每个第一浮点数的放大系数对应的整数位以及与每个第二浮点数的缩小系数对应的整数位中均包括结束标识,所述从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型,包括:
从所述寄存器中调用所述目标骨骼数据;
按预设数量的整数位对所述目标浮点数进行分割,得到与每个第二浮点数的符号对应的整数位;
根据每个第二浮点数的符号对应的整数位,确定每个第二浮点数的符号;
针对所述目标浮点数中的剩余整数位,识别所述剩余整数位中的结束标识;
按照结束标识对所述剩余整数位进行分割,得到与每个第一浮点数的放大系数对应的整数位,以及与每个第二浮点数的缩小系数对应的整数位;
根据与每个第一浮点数的放大系数对应的整数位,确定每个第一浮点数的放大系数;
根据与每个第二浮点数的缩小系数对应的整数位,确定每个第二浮点数的缩小系数;
针对每个第三浮点数,获取每个第三浮点数的整数部分,并基于与该第三浮点数对应的第一浮点数的放大系数,对所述整数部分进行缩小处理,得到与该第三浮点数对应的第一浮点数;
根据每个第三浮点数对应的第一浮点数,得到所述骨骼旋转数据;
获取每个第三浮点数的小数部分,并基于与该第三浮点数对应的第二浮点数的缩小系数,对所述小数部分进行放大处理,并基于所述目标浮点数中与该第二浮点数所对应的整数位的取值,确定该第二浮点数的符号,得到与每个第三浮点数对应的第二浮点数;
根据每个第三浮点数对应的第二浮点数,得到所述骨骼位移数据;
根据所述骨骼旋转数据和所述骨骼位移数据,渲染出所述骨骼模型。
7.一种骨骼模型渲染装置,其特征在于,包括:获取单元和处理单元;
所述获取单元,用于从中央处理器获取骨骼模型的骨骼旋转数据和骨骼位移数据,其中,所述骨骼旋转数据包括多个第一浮点数,所述骨骼位移数据包括多个第二浮点数;
所述处理单元,用于对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,其中,所述目标骨骼数据包括多个第三浮点数和目标浮点数;所述多个第一浮点数、所述多个第二浮点数以及所述多个第三浮点数一一对应;每个第三浮点数的整数部分用于确定与该第三浮点数对应的第一浮点数,小数部分用于确定与该第三浮点数对应的第二浮点数;每个第三浮点数与对应的第一浮点数的符号相同,所述目标浮点数用于确定所述多个第二浮点数的符号;
所述对所述骨骼旋转数据和所述骨骼位移数据进行融合,得到目标骨骼数据,具体包括:获取每个第一浮点数的放大系数以及每个第二浮点数的缩小系数;基于每个第一浮点数的放大系数,分别对每个第一浮点数进行放大处理,得到多个第四浮点数;基于每个第二浮点数的缩小系数,分别对每个第二浮点数进行缩小处理,得到多个第五浮点数;将每个第四浮点数作为整数部分,以及将该第四浮点数对应的第五浮点数作为小数部分,得到与每个第四浮点数对应的第三浮点数,其中,该第三浮点数的符号与该第四浮点数的符号相同;根据所述多个第二浮点数中每个第二浮点数的符号,生成所述目标浮点数;根据每个第四浮点数对应的第三浮点数以及所述目标浮点数,生成所述目标骨骼数据;
将所述目标骨骼数据缓存到图形处理器的寄存器;
从所述寄存器中调用所述目标骨骼数据,以渲染所述骨骼模型。
8.一种电子设备,其特征在于,包括:处理器和存储器,所述处理器与所述存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的计算机程序,以使得所述电子设备执行如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310164546.XA CN115908678B (zh) | 2023-02-25 | 2023-02-25 | 骨骼模型渲染方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310164546.XA CN115908678B (zh) | 2023-02-25 | 2023-02-25 | 骨骼模型渲染方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115908678A CN115908678A (zh) | 2023-04-04 |
CN115908678B true CN115908678B (zh) | 2023-05-30 |
Family
ID=85751854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310164546.XA Active CN115908678B (zh) | 2023-02-25 | 2023-02-25 | 骨骼模型渲染方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115908678B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104112288A (zh) * | 2014-07-24 | 2014-10-22 | 无锡梵天信息技术股份有限公司 | 基于三维骨骼模型的动作过渡实现方法 |
CN112652025A (zh) * | 2020-12-18 | 2021-04-13 | 完美世界(北京)软件科技发展有限公司 | 图像渲染方法、装置、计算机设备及可读存储介质 |
CN112933597A (zh) * | 2021-03-16 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN113779932A (zh) * | 2021-08-24 | 2021-12-10 | 深圳市明源云科技有限公司 | 数字格式化方法、装置、终端设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001042903A1 (fr) * | 1999-12-07 | 2001-06-14 | Hitachi, Ltd. | Appareil et systeme de traitement de donnees |
US7436412B2 (en) * | 2005-08-24 | 2008-10-14 | Qualcomm Incorporated | Graphics engine with efficient interpolation |
US9928637B1 (en) * | 2016-03-08 | 2018-03-27 | Amazon Technologies, Inc. | Managing rendering targets for graphics processing units |
CN110018784B (zh) * | 2018-01-09 | 2023-01-10 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
CN112669419A (zh) * | 2020-12-22 | 2021-04-16 | 北京像素软件科技股份有限公司 | 用于渲染的方法、中央处理器、图像处理器、***和存储介质 |
CN112642149A (zh) * | 2020-12-30 | 2021-04-13 | 北京像素软件科技股份有限公司 | 游戏动画更新方法、装置及计算机可读存储介质 |
CN114882149A (zh) * | 2022-03-31 | 2022-08-09 | 北京智明星通科技股份有限公司 | 动画渲染方法、装置、电子设备和存储介质 |
-
2023
- 2023-02-25 CN CN202310164546.XA patent/CN115908678B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104112288A (zh) * | 2014-07-24 | 2014-10-22 | 无锡梵天信息技术股份有限公司 | 基于三维骨骼模型的动作过渡实现方法 |
CN112652025A (zh) * | 2020-12-18 | 2021-04-13 | 完美世界(北京)软件科技发展有限公司 | 图像渲染方法、装置、计算机设备及可读存储介质 |
CN112933597A (zh) * | 2021-03-16 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、计算机设备及存储介质 |
CN113779932A (zh) * | 2021-08-24 | 2021-12-10 | 深圳市明源云科技有限公司 | 数字格式化方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115908678A (zh) | 2023-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108010112B (zh) | 动画处理方法、装置及存储介质 | |
TWI243987B (en) | An apparatus and method for facilitating memory data access with generic read/write patterns | |
CN111161365B (zh) | 一种骨骼动画数据的压缩方法及装置 | |
CN108492338B (zh) | 动画文件的压缩方法、装置、存储介质和电子装置 | |
JP2021531565A (ja) | 病巣検出方法、装置、機器および記憶媒体 | |
CN113409437B (zh) | 一种虚拟角色捏脸的方法、装置、电子设备及存储介质 | |
CN111798545A (zh) | 骨骼动画的播放方法、装置、电子设备和可读存储介质 | |
CN112233009A (zh) | 一种图片渲染方法、装置、设备和存储介质 | |
CN107423291A (zh) | 一种数据翻译方法以及客户端设备 | |
CN115908678B (zh) | 骨骼模型渲染方法、装置、电子设备及存储介质 | |
CN112669419A (zh) | 用于渲染的方法、中央处理器、图像处理器、***和存储介质 | |
Mosegaard et al. | Real-time Deformation of Detailed Geometry Based on Mappings to a Less Detailed Physical Simulation on the GPU. | |
CN116755823A (zh) | 虚拟展厅的加载方法、装置、设备、存储介质及程序产品 | |
CN105979021B (zh) | 一种信息处理方法及用户终端 | |
CN113781658A (zh) | 一种流式处理3d模型数据的方法及装置 | |
TW202312100A (zh) | 網格生成方法、電子設備及電腦可讀儲存介質 | |
CN105701858A (zh) | 一种基于alpha融合的贴图处理方法及装置 | |
CN113656331A (zh) | 基于高低位的确定访问地址的方法和装置 | |
CN113743610A (zh) | 量子态演化过程的展示方法及设备 | |
CN111368122A (zh) | 一种图片去重的方法及装置 | |
CN109544664A (zh) | 动画数据处理方法、装置、电子设备及可读存储介质 | |
CN114153409B (zh) | 光栅操作电路、装置、显示控制***及显示装置 | |
CA2308249C (en) | Triangle strip length maximization | |
CN114153539B (zh) | 前端应用界面生成方法、装置、电子设备和存储介质 | |
CN115713580A (zh) | 根骨骼关键帧数据的生成方法、装置、介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |