CN112419430B - 动画播放方法、装置及计算机设备 - Google Patents
动画播放方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN112419430B CN112419430B CN202010466650.0A CN202010466650A CN112419430B CN 112419430 B CN112419430 B CN 112419430B CN 202010466650 A CN202010466650 A CN 202010466650A CN 112419430 B CN112419430 B CN 112419430B
- Authority
- CN
- China
- Prior art keywords
- vertex
- model
- data
- animation
- tangent
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/44012—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving rendering scenes according to scene graphs, e.g. MPEG-4 scene graphs
Abstract
本发明公开了一种动画播放方法,该方法包括:获取按照动画播放时间逐帧导出的动画模型,获取各个动画模型中的模型顶点色数据,并根据模型顶点色数据确定动画模型中包含的各个顶点的顶点序号;根据各个动画模型的顶点序号对各个动画模型的模型顶点色数据以及模型切线数据进行处理,以得到各个顶点在动画中的位置变化数据和法线变化数据;将各个位置变化数据以及各个法线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图和法线贴图;获取贴图采样指令,根据贴图采样指令采样位置贴图和法线贴图的对应位置,并对采样得到的位置数据和法线数据进行渲染处理,以实现动画的播放。本发明能够提高动画播放效率。
Description
技术领域
本发明涉及图像处理技术领域,具体涉及一种动画播放方法、装置及计算机设备。
背景技术
当前,随着计算机技术的不断发展,动画的类型也越来越多,其中,3D动画因其不受时间、空间、地点、条件、对象的限制,不管有多丰富创意,多复杂的想法,都可以实现的优点变得越来越受用户的欢迎。
然而,现有的3D动画,比如,骨骼动画,blendshape,在播放的过程中,由于无法参与合批处理,导致动画播放效率较低。
发明内容
本发明的目的在于提供一种动画播放方法、装置、计算机设备及可读存储介质,用于解决现有技术动画的播放效率较低的问题。
根据本发明的一个方面,提供了一种动画播放方法,该方法包括:
获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据;
获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号;
根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据;
将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图;
获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
可选地,所述模型顶点色数据包括所有顶点的顶点色,每一个顶点的顶点色都通过R通道、G通道以及B通道进行存储,所述根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号的计算公式为:
顶点序号=顶点色的第一通道值*255+顶点色的第二通道值*255*256+顶点色的第三通道值*255*256*256,其中,所述第一通道、第二通道、第三通道为R通道、G通道以及B通道中的任意一个通道,且第一通道、第二通道、第三通道是不同的通道。
可选地,所述根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据,包括:
根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置;
对确定的各个顶点位置按照帧顺序进行排列,得到各个具有相同序号的顶点的位置变化数据;
根据各个动画模型的顶点序号和各个动画模型的模型法线数据以及模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线;
对确定的各个目标法线以及目标切线按照帧顺序进行排列,得到各个具有相同序号的顶点的法线变化数据和切线变化数据。
可选地,所述根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置的步骤之后,还包括:
对各个顶点位置进行归一化处理,以将各个顶点位置转换为对应的RGB值,其中R、G、 B表示纹理图片像素的颜色;
所述根据各个动画模型的顶点序号和各个动画模型的模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线的步骤之后,还包括:
对各个目标法线以及各个目标切线进行归一化处理,以将各个目标法线以及各个目标切线转换为对应的RGB值,其中R、G、B表示纹理图片像素的颜色。
可选地,归一化处理的公式为:
R=(x–xmin)/(xmax-xmin),xmax为所有顶点位置、所有目标法线或者所有目标切线在X 轴中的坐标值的最大值,xmin为所有顶点位置、所有目标法线或者所有目标切线在X轴中的坐标值的最小值,x为顶点位置、目标法线或者目标切线在X轴中的坐标值;
G=(y–ymin)/(ymax-ymin),ymax为所有顶点位置、所有目标法线或者所有目标切线在Y 轴中的坐标值的最大值,ymin为所有顶点位置、所有目标法线或者所有目标切线在Y轴中的坐标值的最小值,y为顶点位置、目标法线或者目标切线在Y轴中的坐标值;
B=(z–zmin)/(zmax-zmin),zmax为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最大值,zmin为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最小值,z为顶点位置、目标法线或者目标切线在Z轴中的坐标值。
可选地,所述方法还包括:
在获取到贴图采样指令时,将所述位置贴图和所述法线贴图中的待采样像素的正中心点设置为采样位置。
可选地,所述方法还包括:
根据用户触发的动画模型导出指令按照动画播放时间逐帧导出动画模型。
可选地,所述对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放包括:
将所述位置数据、法线数据和切线数据整合为一个实例属性的缓存,并将所述缓存发送至GPU进行绘制,以实现动画的播放。
为了实现上述目的,本发明还提供一种动画播放装置700,包括:
获取模块,用于获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型法线数据以及模型切线数据;
确定模块,用于获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号;
处理模块,用于根据各个动画模型的顶点序号对各个动画模型的模型顶点色数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据;
写入模块,用于将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图;
播放模块,用于获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
为了实现上述目的,本发明还提供一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的动画播放方法的步骤。
为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的动画播放方法的步骤。
本发明实施例提供的动画播放方法、计算机设备及可读存储介质,通过获取按照动画播放时间逐帧导出的动画模型,然后根获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号,接着,根据各个动画模型的顶点序号对各个动画模型的模型顶点色数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据,以及将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图,最后获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。本发明实施例通过获取逐帧导出的动画模型,然后通过计算得到位置贴图、法线贴图和切线贴图,最后对通过读取到的位置贴图数据以及法线贴图数据和切线贴图数据进行合批渲染处理,从而提高动画的播放效率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明所述游戏玩家匹配的系统框架图的一种实施例的框架图;
图2为本发明实施例提供的动画播放方法的一种可选的流程示意图;
图3为本发明根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据的步骤细化流程示意图;
图4为本发明一实施例中的位置贴图片段的示意图;
图5为本发明一实施例中的法线贴图片段的示意图;
图6为本发明一实施例中的切线贴图片段的示意图;
图7为本发明一实施例中对位置贴图、法线贴图或切线贴图进行采样的示意图;
图8为本发明实施例提供的动画播放装置的一种可选的程序模块示意图;
图9为本发明实施例提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1是示出了根据本申请实施例的动画播放方法的应用环境示意图。在示例性的实施例中,用户可以藉由计算机设备8上安装的客户端APP或者网页客户端通过网络6向服务器4发送动画模型获取请求,服务器4根据该动画模型获取请求为所述计算机设备8发送动画模型数据。所述计算机设备8可以是移动电话、平板个人计算机(tabletpersonal computer)、膝上型计算机(laptop computer)等具有数据发送功能的电子设备。所述网络6可以是因特网,所述服务器4可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。
图2为本发明动画播放方法的一种可选的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定,下面以计算机设备为执行主体进行示例性描述。所述计算机设备可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便携式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。
如图2所示,该方法具体包括以下步骤:
步骤S200:获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据。
具体地,所述动画模型是指三维软件里制作的3d模型,包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据。
其中,模型顶点数据为动画模型中包含的所有顶点的顶点色的集合,顶点色为模型顶点的颜色。以三角形举例,只需要3个顶点的颜色即可确定三角形内部所有像素的颜色。
模型顶点位置数据为动画模型中包含的所有顶点的位置的集合,其中,每一个顶点的位置通过三维坐标表示。
模型切线数据为动画模型中包含的所有顶点的切线数据的集合。
模型法线数据为动画模型中包含的所有顶点的法线数据的集合。
在本实施例中,预先对动画按照动画播放时间进行逐帧导出动画模型,从而,可以在需要对动画进行播放时,即可以直接获取到该动画模型,无需再次从动画中导出动画 模型,进而可以提高动画播放效率。
步骤S201:获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号。
具体地,在使用3D软件赋予动画模型中的各个顶点的顶点色时,是按照顶点顺序进行赋予的,且通过顶点色的RGB三个通道来进行存储,顶点色的精度为1/255,比如,当顶点数量小于或者等于256时,则仅仅使用R通道来存储顶点色,例如,顶点1的顶点色为0,顶点2的顶点色为1/255,顶点2的顶点色为2/255…,顶点256的顶点色为1;当顶点数量大于256且小于或者等于2 56*256时,则再使用顶点色的G通道存储顶点色,存储方法和R 通道相同,理论上最多存256*256*256个顶点。
在本实施例中,各个动画模型中包含的顶点数量是相同的,因此,各个动画模型中包含的模型顶点色数据都包含有所有顶点的顶点色,且,由于各个顶点的顶点色是按照顶点的顺序进行赋予的,因此,根据模型顶点色数据可以确定出各个顶点的顶点序号。
在示例性的实施例中,所述根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号的计算公式为:
顶点序号=顶点色的第一通道值*255+顶点色的第二通道值*255*256+顶点色的第三通道值*255*256*256,其中,所述第一通道、第二通道、第三通道为R通道、G通道以及B通道中的任意一个通道,且第一通道、第二通道、第三通道是不同的通道。
具体地,在一实施方式中,该第一通道可以为R通道,第二通道可以为G通道,该第三通道可以为B通道。在另一实施方式中,该第一通道也可以为G通道,第二通道可以为R 通道,该第三通道可以为B通道。
示例性的,假设该第一通道可以为R通道,第二通道为G通道,该第三通道为B通道,从模型顶点色数据中获取到某一个顶点的顶点色为(2/255,0,0),即该顶点的R通道值为2/255,G通道值为0,B通道值为0,则根据上述公式可计算得到该顶点的顶点序号为: 2/255*255+0*255*256+0*256*256=2,即该顶点的顶点序号为2。又比如,从模型顶点色数据中获取到某一个顶点的顶点色为(2/255,1/255,0),则根据上述公式可计算得到该顶点的顶点序号为:2/255 *255+1/255*255*256+0*256*256=258 ,即该顶点的顶点序号为258。
在本实施例中,通过对各个动画模型的模型顶点数据中包含的各个顶点色数据采用上述公式进行计算,从而可以确定各个顶点色数据分别是哪一个顶点的顶点色。
本实施例,通过顶点色来标记顶点序号,而无需额外的存储空间来存储顶点序号,从而可以节省存储空间。
步骤S202:根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据。
具体地,由于每一个动画模型的模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据中都具有所有顶点的顶点色数据、顶点位置数据、法线数据、切线数据,且每一个顶点都具有相应的顶点色、顶点位置、目标法线以及目标切线。此外,每一个模型中的模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据都是与各个顶点相对应的。因此,在根据模型顶点色数据得到各个顶点的顶点序号之后,即在各个动画模型中得到具有相同顶点序号的顶点的顶点位置数据以及法线数据、切线数据。然后可以根据顶点顺序,遍历各个具有相同顶点序号的顶点的顶点位置数据以及法线数据、切线数据,并将遍历得到的各个顶点位置数据作为该顶点的位置变化数据,将遍历得到的法线数据、切线数据作为该顶点的法线变化数据和切线变化数据。
在示例性的实施例中,如图3示,所述步骤S202可以包括步骤S300~S303:
步骤S300:根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置。
步骤S301:对确定的各个顶点位置按照帧顺序进行排列,得到各个具有相同序号的顶点的位置变化数据。
具体地,由于每一个顶点在动画模型中都具有顶点色、顶点位置、以及对应的目标法线以及目标切线。因此,在根据顶点序号确定出在不同动画模型中的同一个顶点之后,即可以根据顶点序号与顶点位置的对应关系以及模型顶点位置数据来确定该顶点在不同动画模型中的顶点位置。此外,由于不同动画帧对应的动画模型中的各个顶点的位置会发生变化,因而,同一个顶点在不同动画模型中的顶点位置也会相应的发生变化,故而,对同一个顶点在不同动画模型中的顶点位置按照动画帧的播放顺序进行排列,就可以得到该顶点的位置变化数据。
步骤S302:根据各个动画模型的顶点序号和各个动画模型的模型法线数据以及模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线。
步骤S303:对确定的各个目标法线以及目标切线按照帧顺序进行排列,得到各个具有相同序号的顶点的法线变化数据和切线变化数据。
具体地,由于每一个顶点在动画模型中都具有顶点色、顶点位置、以及对应的目标法线以及目标切线。因此,在根据顶点序号确定出在不同动画模型中的同一个顶点之后,即可以根据顶点序号与目标法线、目标切线的对应关系以及模型法线数据、模型切线数据来确定该顶点在不同动画模型中的目标法线以及目标切线。
需要说明的是,在本实施例中,目标法线以及目标切线都是指的模型空间数据中的法线以及切线,即该目标法线以及目标切线都是一个在三维空间中向量。
在得到该顶点在不同动画模型中的目标法线以及目标切线之后,对该顶点在不同动画模型中的目标法线以及目标切线按照动画帧的播放顺序进行排列,就可以得到该顶点的法线变化数据和切线变化数据。
本实施例根据顶点序号对模型顶点位置数据、模型法线数据以及模型切线数据进行处理,从而可以准确地得到各个顶点的位置变化数据、法线变化数据和切线变化数据。
在示例性的实施例中,所述动画播放方法,还包括:
对各个顶点位置、各个目标法线以及各个目标切线进行归一化处理,以将各个顶点位置、各个目标法线以及各个目标切线转换为对应的RGB值,其中R、G、B表示纹理图片像素的颜色。
具体地,为了便于将各个顶点位置、各个目标法线以及各个目标切线数据写入至纹理贴图中,需要对各个顶点位置、各个目标法线以及各个目标切线进行归一化处理,以便将各个顶点位置、各个目标法线以及各个目标切线转换为对应的RGB值。
在示例性的实施例中,该归一化处理的公式为:
R=(x–xmin)/(xmax-xmin),xmax为所有顶点位置、所有目标法线或者所有目标切线在X 轴中的坐标值的最大值,xmin为所有顶点位置、所有目标法线或者所有目标切线在X轴中的坐标值的最小值,x为顶点位置、目标法线或者目标切线在X轴中的坐标值;
G=(y–ymin)/(ymax-ymin),ymax为所有顶点位置、所有目标法线或者所有目标切线在Y 轴中的坐标值的最大值,ymin为所有顶点位置、所有目标法线或者所有目标切线在Y轴中的坐标值的最小值,y为顶点位置、目标法线或者目标切线在Y轴中的坐标值;
B=(z–zmin)/(zmax-zmin),zmax为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最大值,zmin为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最小值,z为顶点位置、目标法线或者目标切线在Z轴中的坐标值。
需要说明的是,本实施例中的RGB值是在0到1之间。
本发明实施例中,通过上述归一化公式将切线空间准确的转换为对应的纹理图片像素的颜色。
步骤S203,将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图。
具体地,可以通过烘焙技术将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图。
其中,烘焙技术是一种预计算数据到贴图中的技术,将需要使用的信息直接写入到图片中,使用时直接读取即可。
位置贴图是记录各个顶点位置变化的贴图,如图4所示,为一示例性的位置贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。
法线贴图以及切线贴图是各个像素切线法线的贴图,用于记录各个顶点法线变化以及切线变化。法线贴图和切线贴图可使3D表面拥有光影分布的渲染效果,能大大降低表现物体渲染时需要的面数和计算内容,从而达到优化动画和游戏的渲染效果。通常记录方式是RGB,分别对应模型三维空间的xyz。如图5所示,为一示例性的法线贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。如图6所示,为一示例性的切线贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。
步骤S204:获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
具体地,该贴图采样指令用于指示需要采集的位置贴图、法线贴图和切线贴图的位置,在本实施例中,该贴图采样指令可以由外部所控制的帧数进行确定,比如,当前需要播放前 5帧动画,则可以确定贴图采样指令包含5个纵坐标像素。
在示例性的实施例中,参照图7所示,在获取到贴图采样指令时,将所述位置贴图、法线贴图和切线贴中的待采样像素的正中心点设置为采样位置。
具体地,在采样位置贴图、所述法线贴图和切线贴图的时候,为了获得更加准确的RGB 值,可以将采样位置设置在像素的正中心,也就是单个像素的正中心。在实际应用时,需要将待采样的像素点偏移0.5,由于在该图7中,横坐标表示顶点数对应的横坐标像素,纵坐标表示为帧数对应的纵坐标像素,故而为了使得采样位置设置在待采样像素的正中心点,需要,将顶点数需要偏移0.5,帧数也要偏移0.5,从而达到采样到该像素点中心RGB值。
需要说明的是,在采样贴图纹理时,该贴图不能存在压缩,必须与设置的长宽一致,避免采样出现误差。
在本实例中,在完成第一个顶点采样之后,为了采样第二个顶点,则同理需要将顶点数偏移0.5,帧数也要偏移0.5,即第一个顶点的采样坐标为(0.5,0.5),第二个顶点的采样坐标为(1.5,0.5)。
在本实施中,通过控制采样贴图的纵坐标来控制对不同帧的位置数据、法线数据、切线数据的采样。
在本实施例中,在完成所有位置数据、法线数据、切线数据的采样之后,可以对采样得到的位置数据、法线数据、切线数据进行渲染处理,以实现动画的播放。
示例性的,在对采样得到的位置数据、法线数据、切线数据进行渲染处理时,可以将所述位置数据、法线数据和切线数据整合为一个实例属性(per instance attribute)的缓存,并将所述缓存发送至GPU(Graphic Processing Unit,图形处理器)进行绘制,以实现动画的播放。在本实施例中,可以采用GPUinstance技术将所述位置数据、法线数据和切线数据整合为一个实例属性(per instance attribute)的缓存,并将所述缓存发送至GPU进行绘制。
其中,GPUinstance技术是最新渲染API提供得一种技术,如果绘制1000个物体,它将一个模型得VBO(顶点缓存对象)一次性提交给GPU,至于1000个物体不同得位置,状态,颜色等等将他们整合成一个per instance attribute(实例属性)的缓存给GPU,从而让GPU对物体进行区别绘制,进而大大减少了提交次数。
本发明实施例提供的动画播放方法通过获取按照动画播放时间逐帧导出的动画模型,然后根获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号,接着,根据各个动画模型的顶点序号对各个动画模型的模型顶点色数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据,以及将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图,最后获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。本发明实施例通过获取逐帧导出的动画模型,然后通过计算得到位置贴图、法线贴图和切线贴图,最后通过读取到的位置贴图数据以及法线贴图数据和切线贴图数据后使用GPUInstance技术进行合批处理,从而提高动画的播放效率。
在示例性的实施例中,所述动画播放方法还包括:
根据用户触发的动画模型导出指令按照动画播放时间逐帧导出动画模型。
具体地,该动画模型导出指令的触发方式有多种,比如,可以通过用户触摸预设的动画指令导出图标来触发动画模型导出指令,也可以通过用户使用预设的手势操作的方式来触发动画模型导出指令。
在接收到动画模型导出指令之后,即可以按照动画的播放时间来逐帧导出动画模型,也就是说,导出的动画模型是按照动画播放时间顺序进行排列的。
本实施例中,通过用户触发动画模型导出指令时,才会将动画模型进行导出,从而可以避免在不需要播放动画时就将动画模型导出,浪费大量的存储空间来存储动画模型。
本实施例中提供一种动画播放装置700,所述动画播放装置700可以应用于计算机设备。具体地,图8示出了该动画播放装置700的可选的程序模块图,该动画播放装置700被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述动画播放装置700在存储介质中的执行过程,以下描述将具体介绍本实施例各程序模块的功能。
如图8所示,动画播放装置700具体包括以下组成部分:
获取模块701,用于获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据。
具体地,所述动画模型是指三维软件里制作的3d模型,包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据。
其中,模型顶点数据为动画模型中包含的所有顶点的顶点色的集合,顶点色为模型顶点的颜色。以三角形举例,只需要3个顶点的颜色即可确定三角形内部所有像素的颜色。
模型顶点位置数据为动画模型中包含的所有顶点的位置的集合,其中,每一个顶点的位置通过三维坐标表示。
模型切线数据为动画模型中包含的所有顶点的切线数据的集合。
模型法线数据为动画模型中包含的所有顶点的法线数据的集合。
在本实施例中,预先对动画按照动画播放时间进行逐帧导出动画模型,从而,可以在需要对动画进行播放时,即可以直接获取到该动画模型,无需再次从动画中导出动画 模型,进而可以提高动画播放效率。
确定模块702,用于获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号。
具体地,在使用3D软件赋予动画模型中的各个顶点的顶点色时,是按照顶点顺序进行赋予的,且通过顶点色的RGB三个通道来进行存储,顶点色的精度为1/255,比如,当顶点数量小于或者等于256时,则仅仅使用R通道来存储顶点色,例如,顶点1的顶点色为0,顶点2的顶点色为1/255,顶点2的顶点色为2/255…,顶点256的顶点色为1;当顶点数量大于256且小于或者等于2 56*256时,则再使用顶点色的G通道存储顶点色,存储方法和R 通道相同,理论上最多存256*256*256个顶点。
在本实施例中,各个动画模型中包含的顶点数量是相同的,因此,各个动画模型中包含的模型顶点色数据都包含有所有顶点的顶点色,且,由于各个顶点的顶点色是按照顶点的顺序进行赋予的,因此,根据模型顶点色数据可以确定出各个顶点的顶点序号。
在示例性的实施例中,所述根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号的计算公式为:
顶点序号=顶点色的第一通道值*255+顶点色的第二通道值*255*256+顶点色的第三通道值*255*256*256,其中,所述第一通道、第二通道、第三通道为R通道、G通道以及B通道中的任意一个通道,且第一通道、第二通道、第三通道是不同的通道。
具体地,在一实施方式中,该第一通道可以为R通道,第二通道可以为G通道,该第三通道可以为B通道。在另一实施方式中,该第一通道也可以为G通道,第二通道可以为R 通道,该第三通道可以为B通道。
示例性的,假设该第一通道可以为R通道,第二通道可以为G通道,该第三通道可以为B通道,从模型顶点色数据中获取到某一个顶点的顶点色为(2/255,0,0),即该顶点的R通道值为2/255,G通道值为0,B通道值为0,则根据上述公式可计算得到该顶点的顶点序号为:2/255*255+0*255*256+0*256*256=2,即该顶点的顶点序号为2。又比如,从模型顶点色数据中获取到某一个顶点的顶点色为(2/255,1/255,0),则根据上述公式可计算得到该顶点的顶点序号为:2/255 *255+1/255*255*256+0*256*256=258 ,即该顶点的顶点序号为258。
在本实施例中,通过对各个动画模型的模型顶点数据中包含的各个顶点色数据采用上述公式进行计算,从而可以确定各个顶点色数据分别是哪一个顶点的顶点色。
本实施例,通过顶点色来标记顶点序号,而无需额外的存储空间来存储顶点序号,从而可以节省存储空间。
处理模块703,用于根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据。
具体地,由于每一个动画模型的模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据中都具有所有顶点的顶点色数据、顶点位置数据、法线数据、切线数据,且每一个顶点都具有相应的顶点色、顶点位置、目标法线以及目标切线。此外,每一个模型中的模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据都是与各个顶点相对应的。因此,在根据模型顶点色数据得到各个顶点的顶点序号之后,即在各个动画模型中得到具有相同顶点序号的顶点的顶点位置数据以及法线数据、切线数据。然后可以根据顶点顺序,遍历各个具有相同顶点序号的顶点的顶点位置数据以及法线数据、切线数据,并将遍历得到的各个顶点位置数据作为该顶点的位置变化数据,将遍历得到的法线数据、切线数据作为该顶点的法线变化数据和切线变化数据。
在示例性的实施例中,所述处理模块703,还用于根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置;以及用于对确定的各个顶点位置按照帧顺序进行排列,得到各个具有相同序号的顶点的位置变化数据。
具体地,由于每一个顶点在动画模型中都具有顶点色、顶点位置、以及对应的目标法线以及目标切线。因此,在根据顶点序号确定出在不同动画模型中的同一个顶点之后,即可以根据顶点序号与顶点位置的对应关系以及模型顶点位置数据来确定该顶点在不同动画模型中的顶点位置。此外,由于不同动画帧对应的动画模型中的各个顶点的位置会发生变化,因而,同一个顶点在不同动画模型中的顶点位置也会相应的发生变化,故而,对同一个顶点在不同动画模型中的顶点位置按照动画帧的播放顺序进行排列,就可以得到该顶点的位置变化数据。
所述处理模块703,还用于根据各个动画模型的顶点序号和各个动画模型的模型法线数据以及模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线;以及用于对确定的各个目标法线以及目标切线按照帧顺序进行排列,得到各个具有相同序号的顶点的法线变化数据和切线变化数据。
具体地,由于每一个顶点在动画模型中都具有顶点色、以及对应的目标法线以及目标切线。因此,在根据顶点序号确定出在不同动画模型中的同一个顶点之后,即可以根据顶点与目标法线、目标切线的对应关系以及模型法线数据、模型切线数据来确定该顶点在不同动画模型中的目标法线以及目标切线。
需要说明的是,在本实施例中,目标法线以及目标切线都是指的模型空间数据中的法线以及切线,即该目标法线以及目标切线都是一个在三维空间中向量。
在得到该顶点在不同动画模型中的目标法线以及目标切线之后,对该顶点在不同动画模型中的目标法线以及目标切线按照动画帧的播放顺序进行排列,就可以得到该顶点的法线变化数据和切线变化数据。
本实施例根据顶点序号对模型顶点位置数据、模型法线数据以及模型切线数据进行处理,从而可以准确地得到各个顶点的位置变化数据、法线变化数据和切线变化数据。
在示例性的实施例中,所述动画播放装置700,还包括归一化模块。
所述归一化模块,用于对各个顶点位置、各个目标法线以及各个目标切线进行归一化处理,以将各个顶点位置、各个目标法线以及各个目标切线转换为对应的RGB值,其中R、G、 B表示纹理图片像素的颜色。
具体地,为了便于将各个顶点位置、各个目标法线以及各个目标切线数据写入至纹理贴图中,需要对各个顶点位置、各个目标法线以及各个目标切线进行归一化处理,以便将各个顶点位置、各个目标法线以及各个目标切线转换为对应的RGB值。
在示例性的实施例中,该归一化处理的公式为:
R=(x–xmin)/(xmax-xmin),xmax为所有顶点位置、所有目标法线或者所有目标切线在X 轴中的坐标值的最大值,xmin为所有顶点位置、所有目标法线或者所有目标切线在X轴中的坐标值的最小值,x为顶点位置、目标法线或者目标切线在X轴中的坐标值;
G=(y–ymin)/(ymax-ymin),ymax为所有顶点位置、所有目标法线或者所有目标切线在Y 轴中的坐标值的最大值,ymin为所有顶点位置、所有目标法线或者所有目标切线在Y轴中的坐标值的最小值,y为顶点位置、目标法线或者目标切线在Y轴中的坐标值;
B=(z–zmin)/(zmax-zmin),zmax为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最大值,zmin为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最小值,z为顶点位置、目标法线或者目标切线在Z轴中的坐标值。
需要说明的是,本实施例中的RGB值是在0到1之间。
本发明实施例中,通过上述归一化公式将切线空间准确的转换为对应的纹理图片像素的颜色。
写入模块704,用于将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图。
具体地,可以通过烘焙技术将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图。
其中,烘焙技术是一种预计算数据到贴图中的技术,将需要使用的信息直接写入到图片中,使用时直接读取即可。
位置贴图是记录各个顶点位置变化的贴图,如图4所示,为一示例性的位置贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。
法线贴图以及切线贴图是各个像素切线法线的贴图,用于记录各个顶点法线变化以及切线变化。法线贴图和切线贴图可使3D表面拥有光影分布的渲染效果,能大大降低表现物体渲染时需要的面数和计算内容,从而达到优化动画和游戏的渲染效果。通常记录方式是RGB,分别对应模型三维空间的xyz。如图5所示,为一示例性的法线贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。如图6所示,为一示例性的切线贴图片段,其中,图中的横坐标为顶点,纵坐标为帧数。
播放模块705,用于获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
具体地,该贴图采样指令用于指示需要采集的位置贴图、法线贴图和切线贴图的位置,在本实施例中,该贴图采样指令可以由外部所控制的帧数进行确定,比如,当前需要播放前 5帧动画,则可以确定贴图采样指令包含5个纵坐标像素。
在示例性的实施例中,参照图7所示,在获取到贴图采样指令时,将所述位置贴图、法线贴图和切线贴中的待采样像素的正中心点设置为采样位置。
具体地,在采样位置贴图、所述法线贴图和切线贴图的时候,为了获得更加准确的RGB 值,可以将采样位置设置在像素的正中心,也就是单个像素的正中心。在实际应用时,需要将待采样的像素点偏移0.5,由于在该图7中,横坐标表示顶点数对应的横坐标像素,纵坐标表示为帧数对应的纵坐标像素,故而为了使得采样位置设置在待采样像素的正中心点,需要,将顶点数需要偏移0.5,帧数也要偏移0.5,从而达到采样到该像素点中心RGB值。
需要说明的是,在采样贴图纹理时,该贴图不能存在压缩,必须与设置的长宽一致,避免采样出现误差。
在本实例中,在完成第一个顶点采样之后,为了采样第二个顶点,则同理需要将顶点数偏移0.5,帧数也要偏移0.5,即第一个顶点的采样坐标为(0.5,0.5),第二个顶点的采样坐标为(1.5,0.5)。
在本实施中,通过控制采样贴图的纵坐标来控制对不同帧的位置数据、法线数据、切线数据的采样。
在本实施例中,在完成所有位置数据、法线数据、切线数据的采样之后,可以对采样得到的位置数据、法线数据、切线数据进行渲染处理,以实现动画的播放。
示例性的,在对采样得到的位置数据、法线数据、切线数据进行渲染处理时,可以将所述位置数据、法线数据和切线数据整合为一个实例属性(per instance attribute)的缓存,并将所述缓存发送至GPU进行绘制,以实现动画的播放。在本实施例中,可以采用GPUinstance 技术将所述位置数据、法线数据和切线数据整合为一个实例属性(perinstance attribute)的缓存,并将所述缓存发送至GPU进行绘制。
其中,GPUinstance技术是最新渲染API提供得一种技术,如果绘制1000个物体,它将一个模型得VBO(顶点缓存对象)一次性提交给GPU,至于1000个物体不同得位置,状态,颜色等等将他们整合成一个per instance attribute(实例属性)的缓存给GPU,从而让GPU对物体进行区别绘制,进而大大减少了提交次数。
本发明实施例提供的动画播放方法通过获取按照动画播放时间逐帧导出的动画模型,然后根获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号,接着,根据各个动画模型的顶点序号对各个动画模型的模型顶点色数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据,以及将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图,最后获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。本发明实施例通过获取逐帧导出的动画模型,然后通过计算得到位置贴图、法线贴图和切线贴图,最后对通过读取到的位置贴图数据以及法线贴图数据和切线贴图数据进行合批渲染处理,从而提高动画的播放效率。
在示例性的实施例中,所述动画播放装置700还包括:导出模块。
所述导出模块,用于根据用户触发的动画模型导出指令按照动画播放时间逐帧导出动画模型。
具体地,该动画模型导出指令的触发方式有多种,比如,可以通过用户触摸预设的动画指令导出图标来触发动画模型导出指令,也可以通过用户使用预设的手势操作的方式来触发动画模型导出指令。
在接收到动画模型导出指令之后,即可以按照动画的播放时间来逐帧导出动画模型,也就是说,导出的动画模型是按照动画播放时间顺序进行排列的。
本实施例中,通过用户触发动画模型导出指令时,才会将动画模型进行导出,从而可以避免在不需要播放动画时就将动画模型导出,浪费大量的存储空间来存储动画模型。
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图9所示,本实施例的计算机设备8至少包括但不限于:可通过系统总线相互通信连接的存储器801、处理器802、网络接口803。需要指出的是,图9仅示出了具有组件801-803的计算机设备8,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器801(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器801可以是计算机设备8的内部存储单元,例如该计算机设备8的硬盘或内存。在另一些实施例中,存储器801也可以是计算机设备8的外部存储设备,例如该计算机设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器 801还可以既包括计算机设备8的内部存储单元也包括其外部存储设备。在本实施例中,存储器801通常用于存储安装于计算机设备8的操作系统和各类应用软件,例如上述实施例的动画播放装置700的程序代码等。此外,存储器801还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器802在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器802通常用于控制计算机设备8 的总体操作。例如执行与计算机设备8进行数据交互或者通信相关的控制和处理等。本实施例中,处理器802用于运行存储器801中存储的程序代码或者处理数据。
网络接口803可包括无线网络接口或有线网络接口,该网络接口803通常用于在计算机设备4与其他计算机设备之间建立通信链接。例如,网络接口803用于通过网络将计算机设备4与外部终端相连,在计算机设备4与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据;
获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号;
根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据;
将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图;
获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
上述方法步骤的具体实施例过程可参见上述实施例,本实施例在此不再重复赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种动画播放方法,其特征在于,所述方法包括:
获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据;
获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号;
根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据;
将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图;
获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
2.如权利要求1所述的动画播放方法,其特征在于,所述模型顶点色数据包括所有顶点的顶点色,每一个顶点的顶点色都通过R通道、G通道以及B通道进行存储,所述根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号的计算公式为:
顶点序号=顶点色的第一通道值*255+顶点色的第二通道值*255*256+顶点色的第三通道值*255*256*256,其中,所述第一通道、第二通道、第三通道为R通道、G通道以及B通道中的任意一个通道,且第一通道、第二通道、第三通道是不同的通道。
3.如权利要求2所述的动画播放方法,其特征在于,所述根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据,包括:
根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置;
对确定的各个顶点位置按照帧顺序进行排列,得到各个具有相同序号的顶点的位置变化数据;
根据各个动画模型的顶点序号和各个动画模型的模型法线数据以及模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线;
对确定的各个目标法线以及目标切线按照帧顺序进行排列,得到各个具有相同序号的顶点的法线变化数据和切线变化数据。
4.如权利要求3所述的动画播放方法,其特征在于,所述根据各个动画模型的顶点序号和各个动画模型的模型顶点位置数据确定具有相同顶点序号的顶点在各个动画模型中的顶点位置的步骤之后,还包括:
对各个顶点位置进行归一化处理,以将各个顶点位置转换为对应的RGB值,其中R、G、B表示纹理图片像素的颜色;
所述根据各个动画模型的顶点序号和各个动画模型的模型切线数据确定具有相同顶点序号的顶点在各个动画模型中的目标法线以及目标切线的步骤之后,还包括:
对各个目标法线以及各个目标切线进行归一化处理,以将各个目标法线以及各个目标切线转换为对应的RGB值,其中R、G、B表示纹理图片像素的颜色。
5.如权利要求4所述的动画播放方法,其特征在于,归一化处理的公式为:
R=(x–xmin)/(xmax-xmin),xmax为所有顶点位置、所有目标法线或者所有目标切线在X轴中的坐标值的最大值,xmin为所有顶点位置、所有目标法线或者所有目标切线在X轴中的坐标值的最小值,x为顶点位置、目标法线或者目标切线在X轴中的坐标值;
G=(y–ymin)/(ymax-ymin),ymax为所有顶点位置、所有目标法线或者所有目标切线在Y轴中的坐标值的最大值,ymin为所有顶点位置、所有目标法线或者所有目标切线在Y轴中的坐标值的最小值,y为顶点位置、目标法线或者目标切线在Y轴中的坐标值;
B=(z–zmin)/(zmax-zmin),zmax为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最大值,zmin为所有顶点位置、所有目标法线或者所有目标切线在Z轴中的坐标值的最小值,z为顶点位置、目标法线或者目标切线在Z轴中的坐标值。
6.如权利要求1所述的动画播放方法,其特征在于,所述方法还包括:
在获取到贴图采样指令时,将所述位置贴图和所述法线贴图中的待采样像素的正中心点设置为采样位置。
7.如权利要求1所述的动画播放方法,其特征在于,所述方法还包括:
根据用户触发的动画模型导出指令按照动画播放时间逐帧导出动画模型。
8.如权利要求1所述的动画播放方法,其特征在于,所述对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放包括:
将所述位置数据、法线数据和切线数据整合为一个实例属性的缓存,并将所述缓存发送至GPU进行绘制,以实现动画的播放。
9.一种动画播放装置,其特征在于,包括:
获取模块,用于获取按照动画播放时间逐帧导出的动画模型,其中,所述动画模型中包括模型顶点色数据、模型顶点位置数据、模型法线数据以及模型切线数据;
确定模块,用于获取各个动画模型中的模型顶点色数据,并根据所述模型顶点色数据确定所述动画模型中包含的各个顶点的顶点序号;
处理模块,用于根据各个动画模型的顶点序号对各个动画模型的模型顶点位置数据、模型法线数据以及模型切线数据进行处理,以得到所述各个顶点在所述动画中的位置变化数据、法线变化数据和切线变化数据;
写入模块,用于将各个位置变化数据、各个法线变化数据、各个切线变化数据按照顶点顺序分别写入至对应的纹理贴图中,以得到位置贴图、法线贴图和切线贴图;
播放模块,用于获取贴图采样指令,根据所述贴图采样指令采样所述位置贴图、法线贴图和切线贴图的对应位置,并对采样得到的位置数据、法线数据和切线数据进行渲染处理,以实现动画的播放。
10.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项的所述动画播放方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项的所述动画播放方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466650.0A CN112419430B (zh) | 2020-05-28 | 2020-05-28 | 动画播放方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010466650.0A CN112419430B (zh) | 2020-05-28 | 2020-05-28 | 动画播放方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112419430A CN112419430A (zh) | 2021-02-26 |
CN112419430B true CN112419430B (zh) | 2022-10-28 |
Family
ID=74844075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010466650.0A Active CN112419430B (zh) | 2020-05-28 | 2020-05-28 | 动画播放方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112419430B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112843704B (zh) * | 2021-03-12 | 2022-07-29 | 腾讯科技(深圳)有限公司 | 动画模型处理方法、装置、设备及存储介质 |
CN114494534B (zh) * | 2022-01-25 | 2022-09-27 | 成都工业学院 | 基于动作点捕捉分析的帧动画自适应显示方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109410332A (zh) * | 2018-09-17 | 2019-03-01 | 广西大学 | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 |
CN110533755A (zh) * | 2019-08-30 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 一种场景渲染的方法以及相关装置 |
CN110930492A (zh) * | 2019-11-20 | 2020-03-27 | 网易(杭州)网络有限公司 | 模型渲染的方法、装置、计算机可读介质及电子设备 |
CN110969690A (zh) * | 2019-12-19 | 2020-04-07 | 福建天晴数码有限公司 | 一种基于纹理的顶点动画数据存储方法及其系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030193503A1 (en) * | 2002-04-10 | 2003-10-16 | Mark Seminatore | Computer animation system and method |
US10430169B2 (en) * | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
US10762682B2 (en) * | 2018-03-21 | 2020-09-01 | Electronic Arts Inc. | Skinning weights and underlying object suppression of three-dimensional images |
EP3579196A1 (en) * | 2018-06-05 | 2019-12-11 | Cristian Sminchisescu | Human clothing transfer method, system and device |
-
2020
- 2020-05-28 CN CN202010466650.0A patent/CN112419430B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109410332A (zh) * | 2018-09-17 | 2019-03-01 | 广西大学 | 基于点线面的三维空间几何虚拟模型细节层次裁剪方法 |
CN110533755A (zh) * | 2019-08-30 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 一种场景渲染的方法以及相关装置 |
CN110930492A (zh) * | 2019-11-20 | 2020-03-27 | 网易(杭州)网络有限公司 | 模型渲染的方法、装置、计算机可读介质及电子设备 |
CN110969690A (zh) * | 2019-12-19 | 2020-04-07 | 福建天晴数码有限公司 | 一种基于纹理的顶点动画数据存储方法及其系统 |
Non-Patent Citations (1)
Title |
---|
基于AR的加工中心虚拟仿真教学系统的开发;朱肖龙;《中国优秀博硕士学位论文全文数据库(硕士)工程科技II辑》;20190915;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112419430A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11270497B2 (en) | Object loading method and apparatus, storage medium, and electronic device | |
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
CN108010112B (zh) | 动画处理方法、装置及存储介质 | |
CN111815755A (zh) | 虚拟物体被遮挡的区域确定方法、装置及终端设备 | |
CN111882634B (zh) | 一种图像渲染方法、装置、设备及存储介质 | |
CN112419430B (zh) | 动画播放方法、装置及计算机设备 | |
US20210343072A1 (en) | Shader binding management in ray tracing | |
CN110069191B (zh) | 基于终端的图像拖拽变形实现方法和装置 | |
KR20180056316A (ko) | 타일-기반 렌더링을 수행하는 방법 및 장치 | |
CN109445901B (zh) | 一种跨文件格式的矢量图形工具的绘制方法及装置 | |
CN110750664A (zh) | 图片的显示方法及装置 | |
CN111882631B (zh) | 一种模型渲染方法、装置、设备及存储介质 | |
US10115012B1 (en) | Capture object boundary jitter reduction | |
CN115375815A (zh) | 阴影渲染方法、装置、电子设备及存储介质 | |
CN109377552B (zh) | 图像遮挡计算方法、装置、计算设备及存储介质 | |
CN109448123B (zh) | 模型的控制方法及装置、存储介质、电子设备 | |
CN113724331B (zh) | 视频处理方法、视频处理装置和非瞬时性存储介质 | |
WO2024060949A1 (zh) | 用于增强现实的方法、装置、设备和存储介质 | |
CN110717405B (zh) | 人脸特征点定位方法、装置、介质及电子设备 | |
CN110874856A (zh) | 一种基于gpu特性的实时渲染gui的优化方法 | |
CN114119831A (zh) | 积雪模型的渲染方法、装置、电子设备及可读介质 | |
EP4231243A1 (en) | Data storage management method, object rendering method, and device | |
CN114049403A (zh) | 一种多角度三维人脸重建方法、装置及存储介质 | |
CN113791425A (zh) | 雷达p显界面生成方法、装置、计算机设备及存储介质 | |
CN114049674A (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 |