CN108635849A - 一种动画数据压缩、解压缩方法及装置 - Google Patents
一种动画数据压缩、解压缩方法及装置 Download PDFInfo
- Publication number
- CN108635849A CN108635849A CN201810463300.1A CN201810463300A CN108635849A CN 108635849 A CN108635849 A CN 108635849A CN 201810463300 A CN201810463300 A CN 201810463300A CN 108635849 A CN108635849 A CN 108635849A
- Authority
- CN
- China
- Prior art keywords
- data
- animation data
- bone
- frame
- animation
- 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.)
- Pending
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/355—Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/534—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/50—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
- A63F2300/53—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
- A63F2300/538—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for performing operations on behalf of the game client, e.g. rendering
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/60—Methods for processing data by generating or executing the game program
- A63F2300/66—Methods for processing data by generating or executing the game program for rendering three dimensional images
- A63F2300/6607—Methods for processing data by generating or executing the game program for rendering three dimensional images for animating game characters, e.g. skeleton kinematics
Abstract
本发明涉及计算机技术领域,尤其涉及一种动画数据压缩、解压缩方法及装置,服务器获取动画数据;对动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;将压缩处理后的动画数据传输给客户端,客户端将压缩后的动画数据进行相应的解压缩,并展示动画,这样,可以对动画数据的每一帧内的骨骼动画数据进行专门的压缩处理,可以有效压缩骨骼动画数据的数量,从而提高了动画数据的压缩率,降低了传输的网络流量。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种动画数据压缩、解压缩方法及装置。
背景技术
云游戏是以云计算为基础的游戏方式,游戏响应速度快,提升了用户体验。但是,云游戏运行时需要大量传输游戏动画数据,带宽要求更高,传输的网络流量比较高,因此,需要对动画数据进行压缩。
现有技术中,云游戏的动画数据压缩方式为,采用帧间差异(Difference,Diff)压缩算法,利用动画数据的帧与帧之间的数据差异,进行帧间压缩,仅保存相对于前一帧的差异部分,压缩与关键帧相邻的帧的原始数据。
但是,这种压缩方式,将一帧内所有数据作为一个整体,只能利用帧与帧之间的差异进行压缩处理,无法对一帧中某部分特定数据进行压缩,压缩效率较低,尤其是对于目前云游戏的动画数据中骨骼动画数据占比很大的情形,由于帧与帧中包含的骨骼动画数据之间的差异比较大,因此,采用帧间Diff压缩算法,骨骼动画数据压缩率很低,也就导致了动画数据压缩率很低,从而造成了传输的网络流量比较高。
发明内容
本发明实施例提供一种动画数据压缩、解压缩方法及装置,以解决现有技术中动画数据压缩效率较低,从而造成传输的网络流量较高的问题。
本发明实施例提供的具体技术方案如下:
第一方面,提供了一种动画数据压缩方法,包括:
服务器获取动画数据;
对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;
将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画。
可选的,所述骨骼动画数据,具体包括:所述动画数据的每一帧中生成骨骼动画的应用程序接口的标识对应的应用程序接口数据。
可选的,所述对骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量之前,进一步包括:确定所述每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离;每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
可选的,所述向量分量,具体包括:一个平移向量、一个缩放向量和一个旋转向量。
可选的,所述压缩处理,进一步包括:将进行了几何变换后的骨骼动画数据的类型由单精度浮点型类型转换为半精度浮点型类型。
可选的,所述压缩处理,进一步包括:分别对所述动画数据的每一帧进行帧间压缩。
可选的,所述的压缩处理,进一步包括:将进行帧间压缩后的动画数据的每一帧压缩为标准的数据压缩格式。
第二方面,提供了一种动画数据解压缩方法,包括:
接收服务器发送的压缩后的动画数据;其中,所述压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量;
对所述动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵;
展示解压缩处理后的动画数据。
可选的,针对骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵之前,进一步包括:若确定任一帧中有丢弃骨骼动画数据,则复用所述任一帧的上一帧中相应的骨骼动画数据。
第三方面,提供了一种动画数据压缩装置,包括:
获取模块,用于获取动画数据;
压缩处理模块,用于对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;
发送模块,用于将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画。
可选的,所述骨骼动画数据,具体包括:所述动画数据的每一帧中生成骨骼动画的应用程序接口的标识对应的应用程序接口数据。
可选的,所述对骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量之前,所述压缩处理模块进一步用于:
确定所述每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离;
每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
可选的,所述向量分量,具体包括:一个平移向量、一个缩放向量和一个旋转向量。
可选的,所述压缩处理模块进一步用于:将进行了几何变换后的骨骼动画数据的类型由单精度浮点型类型转换为半精度浮点型类型。
可选的,所述压缩处理模块进一步用于:分别对所述动画数据的每一帧进行帧间压缩。
可选的,所述的压缩处理模块进一步用于:将进行帧间压缩后的动画数据的每一帧压缩为标准的数据压缩格式。
第四方面,一种动画数据解压缩装置,包括:
接收模块,用于接收服务器发送的压缩后的动画数据;其中,所述压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量;
解压缩处理模块,用于对所述动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵;
展示模块,用于展示解压缩处理后的动画数据。
可选的,针对骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵之前,解压缩处理模块进一步用于:若确定任一帧中有丢弃骨骼动画数据,则复用所述任一帧的上一帧中相应的骨骼动画数据。
可选的,还可以包括上述动画数据压缩装置。
第五方面,提供了一种电子设备,包括:
至少一个存储器,用于存储程序指令;
至少一个处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行上述任一种动画数据压缩方法或动画数据解压缩方法。
第六方面,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种动画数据压缩方法或动画数据解压缩方法的步骤。
本发明实施例中,服务器获取动画数据;对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画,这样,对动画数据的每一帧内的特定数据即骨骼动画数据进行专门的压缩处理,将骨骼变换矩阵数据转换为相应的向量分量,降低了骨骼变换矩阵数据的数据量,从而可以有效降低骨骼动画数据的数据量,提高骨骼动画数据的压缩率,因此可以降低动画数据的数据量,提高动画数据的压缩率,从而降低了整体的传输的网络流量,保证了云游戏的服务器和客户端之间高效流畅的通信。
附图说明
图1为本发明实施例中动画数据压缩及解压缩方法的应用场景架构图;
图2为现有技术中动画数据压缩及解压缩方法的流程示意图;
图3为现有技术中云游戏网络流量数据组成比例图;
图4为本发明实施例中动画数据压缩方法的流程图;
图5为本发明实施例中动画数据解压缩方法的流程图;
图6为本发明实施例中动画数据压缩及解压缩方法时序图;
图7为本发明实施例中动画数据压缩装置结构示意图;
图8为本发明实施例中动画数据解压缩装置结构示意图;
图9为本发明实施例中动画数据压缩及解压缩装置结构示意图;
图10为本发明实施例中电子设备结构示意图;
图11为本发明实施例中客户端结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面先对几个概念进行简单介绍:
追踪录制(Trace)端:运行在云游戏服务器上的游戏客户端,即云游戏的云端或服务器端,执行游戏的主要逻辑运行,把与用户交互有关的图形界面,经过网络传送给Retrace端。
回放(Retrace)端:运行在用户侧的客户端,即云游戏的用户端,用于表现Trace端的游戏图形界面,可以把用户的鼠标、键盘等设备输入,经过网络传送给Trace端。
云游戏化:把原本一个正常的游戏,通过技术方案改造成支持Trace端与Retrace端的游戏过程。
云游戏:是以云计算为基础的游戏方式,在云游戏的运行模式下,所有游戏都在服务器端运行,并将渲染完毕后的游戏画面压缩后通过网络传送给客户端,客户端只需要进行解压缩即可。
骨骼动画(Skeleton animation):又称骨架动画,是一种计算机动画技术,它将三维模型分为两部分:用于绘制模型的蒙皮(Skin),以及用于控制动作的骨架。跟传统逐格动画相异,骨骼动画利用建立好的骨架套用到一张或多张图片,使之动作,比起一张一张绘制出动作节省了很多时间与精力,并且能表现更生动的动作。
参阅图1所示,为本发明实施例中动画数据压缩及解压缩方法的应用场景架构图,至少包括客户端、服务器。
客户端可以是智能手机、平板电脑、便携式个人计算机、智能电视等任何智能设备。这里的客户端即为云游戏的Retrace端,客户端上可以安装有各种应用程序(Application,APP),例如某游戏APP,客户端可以通过游戏APP向用户提供游戏服务,用户也可以通过客户端向服务器发送指令,请求获取游戏画面或其它游戏数据。
客户端与服务器之间通过互联网相连,实现相互之间的通信。
服务器可以为客户端提供各种网络服务,对于不同的客户端或客户端上的应用程序,服务器可以认为是提供相应网络服务的后台服务器,例如,本发明实施例中,服务器可以是游戏服务器,即为云游戏的Trace端。对于不同的游戏应用,服务器可以为相应游戏的后台服务器。
其中,服务器可以是一台服务器、若干台服务器组成的服务器集群或云计算中心。
参阅图1所示,在一种可能的实施方式中,客户端上安装并运行有游戏APP,相应地,服务器为相应的游戏服务器,服务器根据图形渲染指令,进行图形渲染,并将渲染后的动画数据进行压缩返回给客户端,以使客户端通过解压缩后播放动画。
现有技术中在这个过程中,服务器端进行动画数据压缩时,主要是采用帧间Diff压缩算法,参阅图2所示,为现有技术中动画数据压缩及解压缩方法流程图,在服务器端即Trace端,由于动画数据的每一帧中都包含有多个图形渲染指令数据,截获图形渲染指令,即各应用程序接口(Application Program Interface,API)指令,例如API1、API2、…APIn,就可以获取到各图形渲染指令数据,分别对每一帧进行压缩处理,以一帧为例,获取一帧的图形渲染指令数据,利用帧与帧之间的数据差异,进行帧间Diff压缩,最后再进行Zlib压缩,从而实现对动画数据的压缩,并将压缩后的动画数据通过网络传输到Retrace端,Retrace端相应的进行解压缩,针对动画数据的每一帧,先进行UnZip解压,然后进行帧间UnDiff解压,获得相应的一帧的图形渲染指令数据,例如API1、API2、…APIn数据,这样可以分别获得每一帧的图形渲染指令数据,最后进行图形渲染指令播放,就可以在客户端展示动画。
但是,现有技术中,主要是利用帧与帧之间的差异进行帧间压缩处理,完全没有考虑一帧内数据的不同组成部分,无法对一帧中某部分特征数据进行压缩,压缩效率低。尤其是对于目前云游戏中在某些游戏场景下,动画数据中骨骼动画数据会占据很大一部分,例如,游戏中出现较多玩家聚集的场景,骨骼动画数据的数据量会在动画数据总数据量中占据很大一部分,并且由于骨骼动画数据是每帧根据时间进行插值得到的,因此每帧之间的骨骼动画数据的差异比较大,因此,采用帧间Diff压缩算法,压缩率很低,造成压缩后的骨骼动画数据的数据量也很大,在最终传送给客户端的网络流量中占比很大,从而造成传输的网络流量也很高。例如参阅图3所示,为现有技术中云游戏网络流量数据组成比例图。以CF游戏为例,其中距离横轴最上边的两条线中颜色较黑的线为总网络流量数据,以下各线为动画数据中各API数据在网络流量中占的数据量,从图3可知,距离横轴最上边的两条线中颜色较浅的线为骨骼动画数据中变换矩阵数据的数据量,其占了90%以上的网络流量,因此对动画数据中的骨骼动画数据进行专门压缩是很有必要的,现有技术中的动画数据压缩方法无法有效压缩骨骼动画数据。
为了解决现有技术中动画数据压缩效率较低,从而造成传输的网络流量较高的问题,本发明实施例中,提供了一种动画数据压缩方法,在一种可能的实施方式中,获取动画数据,对动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量,并将压缩处理后的动画数据传输给客户端,以使客户端根据压缩后的动画数据展示动画,这样,针对每一帧进行压缩处理,考虑动画数据中一帧内数据的不同组成部分,实现对一帧内的部分数据的特定压缩,针对一帧中的骨骼动画数据,将骨骼动画数据中的骨骼变换矩阵数据转换为向量分量,可以有效降低骨骼变换矩阵数据的数据量,提高骨骼动画数据的压缩率,从而提高动画数据整体的压缩率,降低传输的网络流量,保证云游戏的Trace端和Retrace端高效流畅的通信。
为进一步提高压缩效率,本发明实施例中还提供了其它动画数据压缩方法,一种为降低骨骼动画的更新频率,也称为骨骼动画多细节层次(Levels of Detail,LOD),具体为:确定每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离,每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据,这样,对于一些不是很重要的数据,例如距离参考位置较远,对用户的游戏动画体验的影响较小,则可以每隔一定帧数目,丢弃一帧中的这部分数据,可以进一步提高压缩率。
另一种为对浮点数量化处理,具体为:将进行了几何变换后的骨骼动画数据的类型由单精度浮点型(float)类型转换为半精度浮点型(half-float)类型,这样,可以进一步降低一半的数据量,并且由于对于骨骼动画数据,half-float的精度就可以满足其数据运算需求,因此即使降低了数据精度,对骨骼动画数据的影响也不会太大。
较佳的,本发明实施例中,对一帧中的骨骼动画数据进行专门压缩后,还可以再采用帧间Diff压缩算法进行压缩,以进一步压缩整体的动画数据的数据量。
可选地,上述的互联网使用标准通信技术和/或协议。互联网通常为因特网、但也可以是任何网络,包括但不限于局域网(Local Area Network,LAN)、城域网(MetropolitanArea Network,MAN)、广域网(Wide Area Network,WAN)、移动、有线或者无线网络、专用网络或者虚拟专用网络的任何组合。在一些实施例中,使用包括超文本标记语言(Hyper TextMark-up Language,HTML)、可扩展标记语言(Extensible Markup Language,XML)等的技术和/或格式来代表通过网络交换的数据。此外还可以使用诸如安全套接字层(SecureSocket Layer,SSL)、传输层安全(Transport Layer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
值得说明的是,本发明实施例中的应用场景架构图是为了更加清楚地说明本发明实施例中的技术方案,并不构成对本发明实施例提供的技术方案的限制,并且,本发明实施例中,并不仅限于云游戏的动画数据,这里仅是以云游戏的动画数据压缩为例进行说明,对于其它的应用场景架构和业务应用,本发明实施例提供的技术方案对于类似的问题,同样适用。
本发明各个实施例中,以动画数据压缩方法用于图1所示的客户端和服务器为例进行示意性说明。
为了解决现有技术中动画数据压缩效率较低,从而增加了传输的网络流量的问题,本发明实施例中,对动画数据每一帧中的骨骼数据进行针对性的压缩,能够提高骨骼动画数据的压缩率,从而提高动画数据的压缩率,降低整体的网络流量。基于上述实施例,参阅图4所示,为本发明实施例中动画数据压缩方法的流程图,该方法包括:
步骤400:获取动画数据。
步骤401:分别针对动画数据的每一帧,截获图形渲染指令。
实际中,云游戏是基于图形渲染指令数据流的,服务器将图形渲染指令数据流传输到客户端,客户端接收这些数据流并进行解压缩。云游戏的动画数据的一帧中会包括有很多的图形渲染指令数据,可能会有几百或几千个,这些图形渲染指令数据可能为多种不同种类的数据。
本发明实施例中,主要是针对其中的骨骼动画数据,因此需要先识别出骨骼动画数据相应的图形渲染指令数据,具体可以根据生成骨骼动画数据的图形渲染指令来识别,即生成骨骼动画数据的API,因此,需要先截获各图形渲染指令。
步骤402:判断是否为骨骼动画数据,若是,则执行步骤403,否则,则执行步骤407。
本发明实施例中,由于生成骨骼动画的API不同,因此骨骼动画数据的识别可以根据使用的API和云游戏具体实现方案来确定。
例如,在3D加速卡(Direct3D,D3D)中,固定管线的软件蒙皮API为IDirect3DDevice9::SetTransform,而使用了硬件蒙皮则API为IDirect3DDevice9::SetVertexShaderConstF。
执行步骤402时,具体地可以分别判断各图形渲染指令是否为生成骨骼动画的API,若是,则确定该API数据为骨骼动画数据,否则,则确定不是骨骼动画数据。这样,可以从动画数据的每一帧中提取出所有生成骨骼动画的API的标识对应的API数据,将提取出的API数据作为骨骼动画数据。
其中,骨骼动画数据,具体包括:动画数据的每一帧中生成骨骼动画的API的标识对应的API数据。
步骤403:骨骼动画LOD处理。
执行步骤403时,具体包括:
首先,确定每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离。
其中,参考位置,例如为相机的位置、玩家自己的角色对象的位置等,也可以为设置的一个中心点位置,表示比较重要的位置,本发明实施例中并不进行限制。
然后,每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
其中,间隔的预设帧数目,可以根据实际情况进行设置,本发明实施例中并不进行限制。
例如,每隔3帧,对下一帧即第4帧丢弃距离大于预设阈值的角色对象对应的骨骼动画数据。
值得说明的是,骨骼动画LOD处理,也就是降低骨骼动画的更新频率,这是一种有损压缩,可以针对距离较远的角色对象,降低动画更新频率,例如隔帧丢弃一帧中距离较远的角色对象对应的骨骼动画数据,从而可以减少骨骼动画数据的数据量,在客户端解压缩播放动画时,对于丢弃距离较远的角色对象对应的骨骼动画数据的一帧,可以通过复用上一帧中相应的骨骼动画数据来完成该帧的播放。
步骤404:变换矩阵的转换。
执行步骤404时,具体包括:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量。
其中,向量分量,具体包括:一个平移向量、一个缩放向量和一个旋转向量。
其中,骨骼变换矩阵数据表示骨骼在预设的空间坐标系中运动的偏移量,骨骼变换矩阵包含了平移变换、缩放变换和旋转变换,对于每个骨头的运动,用一个骨骼变换矩阵来表示平移、缩放、旋转等变换,为一个三维几何变换矩阵,由于用齐次坐标表示,骨骼变换矩阵通常为4x 4的矩阵,这样一个骨骼变换矩阵的数据量为4*4=16float。本发明实施例中为了降低骨骼动画数据的数据量,将其中的骨骼变换数据进行拆分,通过几何变换,转换为三个向量分量,可以减少骨骼变换矩阵的数据量,从而降低骨骼动画数据的数量。
为了便于说明骨骼变换矩阵的几何变换,下面先对三维空间的平移变换、缩放变换和旋转变换进行简单说明。
例如,1)平移变换。
将三维空间中的一个点[x,y,z,1]移动到另外一个点[x’,y’,z’,1],三个坐标轴的移动分量分别为dx=Tx,dy=Ty,dz=Tz,即x’=x+Tx,y’=y+Ty,z’=z+Tz,则平移变换的矩阵可以表示为:
2)缩放变换。
对某个点进行放大和缩小,即顶点坐标值变大或变小,若变换前的点是[x,y,z,1],变换后的点是[x’,y’,z’,1],x’=x*Sx,y’=y*Sy,z’=z*Sz,则缩放变换的矩阵可以表示为:
3)旋转变换。以绕坐标轴旋转为例进行简单介绍。
a、绕X轴旋转。x坐标不发生变化,y坐标和z坐标绕X轴旋转θ度,旋转的正方向为顺时针方向。若[x,y,z,1]表示变换前的点,[x’,y’,z’,1]表示变换后的点,则绕X轴旋转的矩阵可以表示为:
b、绕Y轴旋转。y坐标不发生变化,x坐标和z坐标绕Y轴旋转θ度,若[x,y,z,1]表示变换前的点,[x’,y’,z’,1]表示变换后的点,则绕Y轴旋转的矩阵可以表示为:
c、绕Z轴旋转。z坐标不发生变化,x坐标和y坐标绕Z轴旋转θ度,若[x,y,z,1]表示变换前的点,[x’,y’,z’,1]表示变换后的点,则绕Z轴旋转的矩阵可以表示为:
本发明实施例中将骨骼变换矩阵转换为平移向量、缩放向量和旋转向量的过程是上述过程的逆变换过程,可以基于相应的逆矩阵进行变换,其中,本发明实施例中,旋转向量用四元数表示,平移向量和缩放向量分别用一个有3个数值的向量表示。
例如,可以将一个4x 4float的骨骼变换矩阵,等价转换为一个3float的平移向量、一个3float的缩放向量和一个4float的旋转四元数。这样,就可以将一个骨骼变换矩阵的数据量由16个float降低为(3+3+4)=10个float,降低了骨骼变换矩阵数据的数据量。
本发明实施例中,主要是对骨骼动画数据中的骨骼变换矩阵数据进行转换,来达到提高压缩率的效果,这是因为,在图形渲染指令数据中,骨骼动画数据主要包括每块骨头的骨骼变换矩阵数据,模型顶点的蒙皮索引数据等,其中骨头的骨骼变换矩阵数据是每帧都会发生改变的,每帧中骨骼变换矩阵数据都是不同的,因此在进行帧间Diff压缩后,骨骼变换矩阵数据基本上不能压缩掉,骨骼变换矩阵数据会占很大一部分,为网络流量的主要构成部分,因此,本发明实施例中,对这部分不能被帧间Diff压缩掉的骨骼变换矩阵数据进行几何变换,以压缩骨骼变换矩阵数据。
步骤405:获得转换后的向量分量。
即分别为一个平移向量、一个缩放向量和一个旋转向量。
步骤406:浮点数量化。
执行步骤406时,具体包括:将进行了几何变换后的骨骼动画数据的类型由float类型转换为half-float类型。
一个标准的float数据为32bit,但通常一个16bit的half-float数据就可以满足骨骼动画的数据运算需求,因此,对于对精度要求不是特别高的云游戏,可以将骨骼动画数据的类型由float类型转换为half-float类型,这样,虽然损失了部分数据精度,但是可以降低一半的数据量,并且对骨骼动画的数据运算等影响也不会很大。
步骤407:骨骼动画数据处理后的每一帧。
其中,这里的每一帧中的数据,可以包括经过骨骼动画LOD、变换矩阵的转换以及浮点类型数据的量化处理后的骨骼动画数据,也包括除骨骼动画数据之外的一帧中其它动画数据。
步骤408:进行帧间压缩。
具体地:分别对动画数据的每一帧进行帧间压缩,例如可以采用帧间Diff压缩算法进行帧间压缩,具体为:分别确定动画数据的帧与帧之间的数据差异部分,进行帧间压缩,仅保存相对于前一帧的差异部分。
这样,可以进一步对处理后的骨骼动画数据以及除骨骼动画数据的其它动画数据进行压缩,提高压缩率。
步骤409:压缩为标准的数据压缩格式。
具体地:将进行帧间压缩后的动画数据的每一帧压缩为标准的数据压缩格式。
例如,标准的数据压缩格式,可以为常用的数据压缩格式,例如可以为zlib格式、zip格式等,本发明实施例中并不进行限制。
步骤410:将压缩处理后的动画数据传输给客户端,以使客户端根据压缩后的动画数据展示动画。
值得说明的是,上述步骤401-步骤409是对动画数据进行压缩处理的过程,包括每一帧中包含的骨骼动画数据进行变换矩阵的几何变换、降低更新频率即每隔预设帧数目丢弃部分骨骼动画数据、浮点类型数据的量化等处理,降低骨骼动画数据的数据量,并可以在对骨骼动画数据处理之后,再进行帧间Diff压缩、zlib压缩处理,从而可以进一步压缩动画数据。并且,上述步骤401-步骤406的执行顺序本发明实施例中并不进行限制,也可以只执行其中一个步骤或几个步骤的任意组合,对此本发明实施例中都不进行限制,都是进一步降低骨骼动画数据的数据量的可选方式,这里本发明实施例中仅是提供了一种较佳的可能的实施方式。
本发明实施例中,对动画数据的每一帧的骨骼动画数据进行处理,将骨骼变换矩阵数据进行几何变换,转换为相应的向量分量,降低了骨骼动画数据,例如针对4*4的骨骼变换矩阵,转换后的数据量由16个float降低为10个float,提高了骨骼动画数据的压缩率,从而提高了动画数据的压缩率,降低了整体的传输的网络流量。
并且,本发明实施例中还可以将进行了几何变换后的骨骼动画数据的类型由float类型转换为half-float类型,可以再降低一半的数据量,因此可以降低大约70%左右的骨骼动画数据的数量。进一步地本发明实施例中还可以根据距离降低更新频率,每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据,还可以进一步减少骨骼动画数据的数据量,提高压缩率,从而可以显著降低云游戏的传输的网络流量。
基于上述实施例中的动画数据压缩方法,还相应地提供了一种动画数据解压缩方法,参阅图5所示,为本发明实施例中动画数据解压缩方法的流程图,该方法包括:
步骤500:接收服务器发送的压缩后的动画数据。
其中,压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量。
当然,压缩后的动画数据为基于上述实施例中动画数据压缩方法进行压缩获得的,因此基于上述实施例,这里压缩后的动画数据,不仅仅是包括骨骼变换矩阵数据的几何变换的转换,还可以包括骨骼动画LOD处理、浮点数量化、帧间Diff压缩、zlib压缩等处理。
步骤510:对动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵。
执行步骤510时,具体地可以将骨骼的一个平移向量、一个缩放向量和一个旋转向量,转换合并为一个变换矩阵。
进一步地,解压缩处理还可以包括:
1)对动画数据的压缩格式进行相应的解压缩。
例如,动画数据压缩为zip格式,则可以进行相应的unzip解压缩。
2)针对每一帧,根据当前帧的差异数据和该当前帧的上一帧的数据,获得当前帧的数据。
这里是针对帧间Diff压缩的逆变换,可以通过差异数据还原每一帧的数据。
3)在针对骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵之前,还包括:
若确定任一帧中有丢弃骨骼动画数据,则复用任一帧的上一帧中相应的骨骼动画数据。
本发明实施例中,针对骨骼动画LOD处理后的动画数据进行解压缩时,对于一帧中丢弃的骨骼动画数据,可以复用上一帧中相应的骨骼动画数据,也就是说直接使用上一帧中相应的骨骼动画数据,这样,相当于有前后相邻两帧中该部分的骨骼动画数据是相同的,没有发生变化,虽然可能会降低一点动画中角色对象运动的流畅性,但是,由于这部分骨骼动画数据是距离较远的不太重要的角色对象的数据,用户感知不明显,对用户体验影响也比较小。
4)可以将骨骼动画数据的类型再由half-float类型转换为float类型。
当然,本发明实施例中这个解压缩处理也可以不执行,在对骨骼动画数据进行运算时也不会有太大影响,不影响其它解压缩的操作。
步骤520:展示解压缩处理后的动画数据。
这样,客户端接收到服务器发送的压缩后的动画数据后,可以进行相应的逆变换进行解压缩,从而实现在客户端可以有效正确地展示和播放动画。
基于上述实施例,可知云游戏运行周期的活动时序,可以包括以下几部分:云游戏、帧数据、帧间差异数据、压缩/解压缩数据,按照次序进行,参阅图6所示,为本发明实施例中动画数据压缩及解压缩方法时序图,包括:
步骤600:针对云游戏,录制图形渲染指令,获得图形渲染指令数据,即得到动画数据的每一帧数据。
步骤601:分别针对每一帧包含的骨骼动画数据,进行骨骼动画LOD处理。
这样,可以丢弃一帧中部分不重要的骨骼动画数据,减少骨骼动画数据的数据量。
步骤602:进行变换矩阵的转换。
具体地:将骨骼动画数据中的骨骼变换矩阵数据进行几何变换,转换为一个平移向量、一个缩放向量和一个旋转向量。
这样,可以将一个通常骨骼变换矩阵的数据量由16float降低为10float,有效降低骨骼变换数据矩阵,从而降低骨骼动画数据。
步骤603:进行浮点数量化。
具体地:将骨骼动画数据的类型由float类型转换为half-float类型。
这样,可以进一步地降低骨骼动画数据一半的数据量。
步骤604:进行帧间Diff压缩。
具体地可以分别针对每一帧,获得当前一帧相对于上一帧的帧间差异数据,或者,也可以针对每一帧,获得当前一帧相对于关键帧的帧间差异数据。
这样,可以将经过压缩后的骨骼动画数据和一帧中除骨骼动画数据之外的其它动画数据,进行进一步压缩。
步骤605:进行zlib压缩。
这样,通过上述步骤600-步骤605,对动画数据进行压缩,这个过程在云游戏的服务器端执行,进而服务器将压缩后的动画数据发送到客户端,由客户端进行解压缩并展示动画。
步骤606:进行unzip解压缩。
步骤607:根据每一帧中的帧间差异数据,获得每一帧的数据。
步骤608:针对通过帧间差异数据获得的每一帧,进行骨骼动画LOD处理的还原。
具体地:若确定任一帧中有丢弃骨骼动画数据,则复用任一帧的上一帧中相应的骨骼动画数据。
步骤609:针对还原后的每一帧,将骨骼变换矩阵数据由向量分量转换为变换矩阵。
步骤610:将骨骼动画数据的类型再由half-float类型转换为float类型,获得解压缩后的动画数据的每一帧数据。
步骤611:播放动画的每一帧。
本发明实施例中,对动画数据的每一帧的骨骼动画数据进行处理,降低骨骼动画数据的数据量,再进行帧间Diff压缩和zlib压缩,可以有效降低动画数据的数据量,提高动画数据的压缩率,从而降低了整体的传输的网络流量,对压缩后的动画数据进行解压缩时,进行相应的逆变换即可,实现简单,可以准确地实现解压缩和动画的播放。
基于上述实施例,参阅图7所示,本发明实施例中,动画数据压缩装置,具体包括:
获取模块70,用于获取动画数据;
压缩处理模块71,用于对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;
发送模块72,用于将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画。
可选的,所述骨骼动画数据,具体包括:
所述动画数据的每一帧中生成骨骼动画的应用程序接口的标识对应的API数据。
可选的,所述对骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量之前,所述压缩处理模块71进一步用于:
确定所述每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离;
每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
可选的,所述向量分量,具体包括:
一个平移向量、一个缩放向量和一个旋转向量。
可选的,所述压缩处理模块71进一步用于:
将进行了几何变换后的骨骼动画数据的类型由单精度浮点型类型转换为半精度浮点型类型。
可选的,所述压缩处理模块71进一步用于:
分别对所述动画数据的每一帧进行帧间压缩。
可选的,所述的压缩处理模块71进一步用于:
将进行帧间压缩后的动画数据的每一帧压缩为标准的数据压缩格式。
基于上述实施例,参阅图8所示,本发明实施例中,动画数据解压缩装置,具体包括:
接收模块80,用于接收服务器发送的压缩后的动画数据;其中,所述压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量;
解压缩处理模块81,用于对所述动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵;
展示模块82,用于展示解压缩处理后的动画数据。
可选的,针对骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵之前,解压缩处理模块81进一步用于:
若确定任一帧中有丢弃骨骼动画数据,则复用所述任一帧的上一帧中相应的骨骼动画数据。
基于上述实施例,参阅图9所示,本发明实施例中,动画数据压缩及解压缩装置,具体包括:上述图7的动画数据压缩装置中的各模块,即获取模块70、压缩处理模块71、发送模块72,和上述图8的动画数据解压缩装置中的各模块,即接收模块80、解压缩处理模块81、展示模块82。
也就是说,可以将动画数据的压缩和解压缩功能集成在一个装置中,可能在一个装置中实现动画数据的压缩和解压缩过程,例如,可能在测试或实验阶段,在某电子设备中进行动画数据压缩后,同时在该电子设备中进行解压缩以进行动画展示效果的检测等。
基于上述实施例,参阅图10所示,本发明实施例中,一种电子设备的结构示意图。
本发明实施例提供了一种电子设备,该电子设备可以包括处理器1010(CenterProcessing Unit,CPU)、存储器1020、输入设备1030和输出设备1040等,输入设备1030可以包括键盘、鼠标、触摸屏等,输出设备1040可以包括显示设备,如液晶显示器(LiquidCrystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器1020可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器1010提供存储器1020中存储的程序指令和数据。在本发明实施例中,存储器1020可以用于存储动画数据压缩和/或动画数据解压缩方法的程序。
处理器1010通过调用存储器1020存储的程序指令,处理器1010用于按照获得的程序指令执行本发明实施例中的动画数据压缩方法,和/或执行本发明实施例中的动画数据解压缩方法。
为便于说明,本发明中的实施例以包括触摸屏的便携式多功能装置1100作示例性说明,本领域技术人员可以理解的,本发明中的实施例同样适用于其他装置,例如手持设备、车载设备、可穿戴设备、计算设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile station,MS),终端(terminal),终端设备(Terminal Equipment)等等。
图11示出了根据一些实施例的包括触摸屏的便携式多功能装置1100的框图,所述装置1100可以包括输入单元1130、显示单元1140、重力加速度传感器1151、接近光传感器1152、环境光传感器1153、存储器1120、处理器1190、射频单元1110、音频电路1160、扬声器1161、麦克风1162、WiFi(wireless fidelity,无线保真)模块1170、蓝牙模块1180、电源1193、外部接口1197等部件。
本领域技术人员可以理解,图11仅仅是便携式多功能装置的举例,并不构成对便携式多功能装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所述输入单元1130可用于接收输入的数字或字符信息,以及产生与所述便携式多功能装置的用户设置以及功能控制有关的键信号输入。具体地,输入单元1130可包括触摸屏1131以及其他输入设备1132。所述触摸屏1131可收集用户在其上或附近的触摸操作(比如用户使用手指、关节、触笔等任何适合的物体在触摸屏上或在触摸屏附近的操作),并根据预先设定的程序驱动相应的连接装置。触摸屏可以检测用户对触摸屏的触摸动作,将所述触摸动作转换为触摸信号发送给所述处理器1190,并能接收所述处理器1190发来的命令并加以执行;所述触摸信号至少包括触点坐标信息。所述触摸屏1131可以提供所述装置1100和用户之间的输入界面和输出界面。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触摸屏。除了触摸屏1131,输入单元1130还可以包括其他输入设备。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键1132、开关按键1133等)、轨迹球、鼠标、操作杆等中的一种或多种。
所述显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及装置1100的各种菜单。进一步的,触摸屏1131可覆盖显示面板1141,当触摸屏1131检测到在其上或附近的触摸操作后,传送给处理器1190以确定触摸事件的类型,随后处理器1190根据触摸事件的类型在显示面板1141上提供相应的视觉输出。在本实施例中,触摸屏与显示单元可以集成为一个部件而实现装置1100的输入、输出、显示功能;为便于描述,本发明实施例以触摸屏代表触摸屏和显示单元的功能集合;在某些实施例中,触摸屏与显示单元也可以作为两个独立的部件。
所述重力加速度传感器1151可检测各个方向上(一般为三轴)加速度的大小,同时,所述重力加速度传感器1151还可用于检测终端静止时重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等。
装置1100还可以包括一个或多个接近光传感器1152,用于当所述装置1100距用户较近时(例如当用户正在打电话时靠近耳朵)关闭并禁用触摸屏以避免用户对触摸屏的误操作;装置1100还可以包括一个或多个环境光传感器1153,用于当装置1100位于用户口袋里或其他黑暗区域时保持触摸屏关闭,以防止装置1100在锁定状态时消耗不必要的电池功耗或被误操作,在一些实施例中,接近光传感器和环境光传感器可以集成在一颗部件中,也可以作为两个独立的部件。至于装置1100还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。虽然图11示出了接近光传感器和环境光传感器,但是可以理解的是,其并不属于装置1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
所述存储器1120可用于存储指令和数据,存储器1120可主要包括存储指令区和存储数据区,存储数据区可存储关节触摸手势与应用程序功能的关联关系;存储指令区可存储操作系统、至少一个功能所需的指令等;所述指令可使处理器1190执行本发明实施例中的动画数据压缩,和/或动画数据解压缩方法。
处理器1190是装置1100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1120内的指令以及调用存储在存储器1120内的数据,执行装置1100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1190可包括一个或多个处理单元;优选的,处理器1190可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1190中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,他们也可以在独立的芯片上分别实现。在本发明实施例中,处理器1190还用于调用存储器中的指令以实现本发明实施例中的动画数据压缩,和/或动画数据解压缩方法。
所述射频单元1110可用于收发信息或通话过程中信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1190处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,射频单元1110还可以通过无线通信与网络设备和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,GSM)、通用分组无线服务(General PacketRadio Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
音频电路1160、扬声器1161、麦克风1162可提供用户与装置1100之间的音频接口。音频电路1160可将接收到的音频数据转换后的电信号,传输到扬声器1161,由扬声器1161转换为声音信号输出;另一方面,麦克风1162将收集的声音信号转换为电信号,由音频电路1160接收后转换为音频数据,再将音频数据输出处理器1190处理后,经射频单元1110以发送给比如另一终端,或者将音频数据输出至存储器1120以便进一步处理,音频电路也可以包括耳机插孔1163,用于提供音频电路和耳机之间的连接接口。
WiFi属于短距离无线传输技术,装置1100通过WiFi模块1170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了WiFi模块1170,但是可以理解的是,其并不属于装置1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
蓝牙是一种短距离无线通讯技术。利用蓝牙技术,能够有效地简化掌上电脑、笔记本电脑和手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网(Internet)之间的通信,装置1100通过蓝牙模块1180使装置1100与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙技术是能够实现语音和数据无线传输的开放性方案。虽然图11示出了WiFi模块1170,但是可以理解的是,其并不属于装置1100的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
装置1100还包括给各个部件供电的电源1193(比如电池),优选的,电源可以通过电源管理系统1194与处理器1190逻辑相连,从而通过电源管理系统1194实现管理充电、放电、以及功耗管理等功能。
装置1100还包括外部接口1197,所述外部接口可以是标准的Micro USB接口,也可以使多针连接器,可以用于连接装置1100与其他装置进行通信,也可以用于连接充电器为装置1100充电。
尽管未示出,装置1100还可以包括摄像头、闪光灯等,在此不再赘述。
基于上述实施例,本发明实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例中的动画数据压缩,和/或动画数据解压缩方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (15)
1.一种动画数据压缩方法,其特征在于,包括:
服务器获取动画数据;
对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;
将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画。
2.如权利要求1所述的方法,其特征在于,所述骨骼动画数据,具体包括:
所述动画数据的每一帧中生成骨骼动画的应用程序接口的标识对应的应用程序接口数据。
3.如权利要求1所述的方法,其特征在于,所述对骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量之前,进一步包括:
确定所述每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离;
每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
4.如权利要求1所述的方法,其特征在于,所述向量分量,具体包括:
一个平移向量、一个缩放向量和一个旋转向量。
5.如权利要求1所述的方法,其特征在于,所述压缩处理,进一步包括:
将进行了几何变换后的骨骼动画数据的类型由单精度浮点型类型转换为半精度浮点型类型。
6.如权利要求1-5任一项所述的方法,其特征在于,所述压缩处理,进一步包括:
分别对所述动画数据的每一帧进行帧间压缩。
7.如权利要求6所述的方法,其特征在于,所述的压缩处理,进一步包括:
将进行帧间压缩后的动画数据的每一帧压缩为标准的数据压缩格式。
8.一种动画数据解压缩方法,其特征在于,包括:
接收服务器发送的压缩后的动画数据;其中,所述压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量;
对所述动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵;
展示解压缩处理后的动画数据。
9.如权利要求8所述的方法,其特征在于,针对骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵之前,进一步包括:
若确定任一帧中有丢弃骨骼动画数据,则复用所述任一帧的上一帧中相应的骨骼动画数据。
10.一种动画数据压缩装置,其特征在于,包括:
获取模块,用于获取动画数据;
压缩处理模块,用于对所述动画数据进行如下压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量;
发送模块,用于将压缩处理后的动画数据传输给客户端,以使所述客户端根据压缩后的动画数据展示动画。
11.如权利要求10所述的装置,其特征在于,所述对骨骼动画数据中的骨骼变换矩阵数据进行几何变换,将骨骼变换矩阵数据转换为相应的向量分量之前,所述压缩处理模块进一步用于:
确定所述每一帧中的骨骼动画数据中各角色对象与参考位置之间的距离;
每间隔预设帧数目,丢弃一帧中距离大于预设阈值的角色对象对应的骨骼动画数据。
12.如权利要求10所述的装置,其特征在于,所述压缩处理模块进一步用于:
将进行了几何变换后的骨骼动画数据的类型由单精度浮点型类型转换为半精度浮点型类型。
13.一种动画数据解压缩装置,其特征在于,包括:
接收模块,用于接收服务器发送的压缩后的动画数据;其中,所述压缩后的动画数据中骨骼动画数据的骨骼变换矩阵数据的表示形式为:通过几何变换转换的相应的向量分量;
解压缩处理模块,用于对所述动画数据进行如下解压缩处理:分别针对每一帧中包含的骨骼动画数据中的骨骼变换矩阵数据,将骨骼变换矩阵数据由向量分量转换为变换矩阵;
展示模块,用于展示解压缩处理后的动画数据。
14.一种电子设备,其特征在于,包括:
至少一个存储器,用于存储程序指令;
至少一个处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行上述权利要求1-7或8~9任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-7或8~9任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810463300.1A CN108635849A (zh) | 2018-05-15 | 2018-05-15 | 一种动画数据压缩、解压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810463300.1A CN108635849A (zh) | 2018-05-15 | 2018-05-15 | 一种动画数据压缩、解压缩方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108635849A true CN108635849A (zh) | 2018-10-12 |
Family
ID=63755958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810463300.1A Pending CN108635849A (zh) | 2018-05-15 | 2018-05-15 | 一种动画数据压缩、解压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108635849A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109785413A (zh) * | 2018-12-06 | 2019-05-21 | 珠海西山居互动娱乐科技有限公司 | 基于Unity的可配置动画文件树形压缩方法及装置 |
CN110227264A (zh) * | 2019-06-06 | 2019-09-13 | 腾讯科技(成都)有限公司 | 虚拟对象控制方法、装置、可读存储介质和计算机设备 |
CN110289861A (zh) * | 2019-05-20 | 2019-09-27 | 湖南大学 | 半精度压缩感知采样方法 |
CN111161365A (zh) * | 2019-12-30 | 2020-05-15 | 珠海金山网络游戏科技有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN111462283A (zh) * | 2020-03-27 | 2020-07-28 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
CN111773700A (zh) * | 2020-07-24 | 2020-10-16 | 网易(杭州)网络有限公司 | 一种动画数据的处理方法和装置 |
CN112169322A (zh) * | 2019-07-04 | 2021-01-05 | 广州虎牙科技有限公司 | 远程渲染方法、装置、电子设备及可读存储介质 |
CN113033787A (zh) * | 2019-12-24 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 一种量化神经网络矩阵的方法、设备、计算机产品及板卡 |
CN111773700B (zh) * | 2020-07-24 | 2024-05-10 | 网易(杭州)网络有限公司 | 一种动画数据的处理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画系统 |
CN104092467A (zh) * | 2014-07-09 | 2014-10-08 | 无锡梵天信息技术股份有限公司 | 一种利用双重四元数压缩矩阵的方法 |
CN104732574A (zh) * | 2014-12-30 | 2015-06-24 | 北京像素软件科技股份有限公司 | 一种角色游戏的压缩装置及装置 |
CN105513099A (zh) * | 2015-11-27 | 2016-04-20 | 北京像素软件科技股份有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN105894555A (zh) * | 2016-03-30 | 2016-08-24 | 腾讯科技(深圳)有限公司 | 一种动画模型的肢体动作模拟方法和装置 |
CN107213638A (zh) * | 2017-04-06 | 2017-09-29 | 珠海金山网络游戏科技有限公司 | 一种3d游戏骨骼处理系统及其处理方法 |
-
2018
- 2018-05-15 CN CN201810463300.1A patent/CN108635849A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077797A (zh) * | 2014-05-19 | 2014-10-01 | 无锡梵天信息技术股份有限公司 | 三维游戏动画系统 |
CN104092467A (zh) * | 2014-07-09 | 2014-10-08 | 无锡梵天信息技术股份有限公司 | 一种利用双重四元数压缩矩阵的方法 |
CN104732574A (zh) * | 2014-12-30 | 2015-06-24 | 北京像素软件科技股份有限公司 | 一种角色游戏的压缩装置及装置 |
CN105513099A (zh) * | 2015-11-27 | 2016-04-20 | 北京像素软件科技股份有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN105894555A (zh) * | 2016-03-30 | 2016-08-24 | 腾讯科技(深圳)有限公司 | 一种动画模型的肢体动作模拟方法和装置 |
CN107213638A (zh) * | 2017-04-06 | 2017-09-29 | 珠海金山网络游戏科技有限公司 | 一种3d游戏骨骼处理系统及其处理方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109785413A (zh) * | 2018-12-06 | 2019-05-21 | 珠海西山居互动娱乐科技有限公司 | 基于Unity的可配置动画文件树形压缩方法及装置 |
CN109785413B (zh) * | 2018-12-06 | 2023-03-14 | 珠海西山居互动娱乐科技有限公司 | 基于Unity的可配置动画文件树形压缩方法及装置 |
CN110289861B (zh) * | 2019-05-20 | 2021-09-07 | 湖南大学 | 半精度压缩感知采样方法 |
CN110289861A (zh) * | 2019-05-20 | 2019-09-27 | 湖南大学 | 半精度压缩感知采样方法 |
CN110227264A (zh) * | 2019-06-06 | 2019-09-13 | 腾讯科技(成都)有限公司 | 虚拟对象控制方法、装置、可读存储介质和计算机设备 |
CN110227264B (zh) * | 2019-06-06 | 2023-07-11 | 腾讯科技(成都)有限公司 | 虚拟对象控制方法、装置、可读存储介质和计算机设备 |
CN112169322A (zh) * | 2019-07-04 | 2021-01-05 | 广州虎牙科技有限公司 | 远程渲染方法、装置、电子设备及可读存储介质 |
CN113033787A (zh) * | 2019-12-24 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 一种量化神经网络矩阵的方法、设备、计算机产品及板卡 |
CN111161365A (zh) * | 2019-12-30 | 2020-05-15 | 珠海金山网络游戏科技有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN111161365B (zh) * | 2019-12-30 | 2023-05-09 | 珠海金山数字网络科技有限公司 | 一种骨骼动画数据的压缩方法及装置 |
CN111462283B (zh) * | 2020-03-27 | 2023-03-03 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
CN111462283A (zh) * | 2020-03-27 | 2020-07-28 | 厦门梦加网络科技股份有限公司 | 大量相同角色动画播放方法、介质、设备及装置 |
CN111773700A (zh) * | 2020-07-24 | 2020-10-16 | 网易(杭州)网络有限公司 | 一种动画数据的处理方法和装置 |
CN111773700B (zh) * | 2020-07-24 | 2024-05-10 | 网易(杭州)网络有限公司 | 一种动画数据的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108635849A (zh) | 一种动画数据压缩、解压缩方法及装置 | |
CN109427083B (zh) | 三维虚拟形象的显示方法、装置、终端及存储介质 | |
CN109218731B (zh) | 移动设备的投屏方法、装置及系统 | |
CN107247548B (zh) | 图像显示方法、图像处理方法及装置 | |
CN111544886A (zh) | 一种画面显示的方法以及相关装置 | |
CN109644294B (zh) | 一种直播分享的方法、相关设备及系统 | |
JP2017511514A (ja) | 画像処理方法および装置ならびにコンピュータデバイス | |
CN105183296B (zh) | 交互界面显示方法及装置 | |
WO2019114185A1 (zh) | 一种app远程控制方法及相关设备 | |
CN108234276A (zh) | 一种虚拟形象之间互动的方法、终端及系统 | |
US20220241689A1 (en) | Game Character Rendering Method And Apparatus, Electronic Device, And Computer-Readable Medium | |
US10650596B2 (en) | Electronic device for providing VR image based on polyhedron and image providing method thereof | |
CN107977272A (zh) | 应用运行的方法及装置 | |
CN112312144B (zh) | 一种直播方法、装置、设备和存储介质 | |
CN109067582A (zh) | 一种数据管理系统、方法及装置 | |
CN110166794A (zh) | 一种直播音频处理方法、装置及系统 | |
CN107886321A (zh) | 一种支付方法及移动终端 | |
CN108804130A (zh) | 程序安装包生成方法及装置 | |
CN114071197A (zh) | 投屏数据处理方法和装置 | |
CN109005314A (zh) | 一种图像处理方法及终端 | |
US20240144625A1 (en) | Data processing method and apparatus, and electronic device and storage medium | |
CN109474833B (zh) | 一种网络直播的方法、相关装置和系统 | |
CN106709856B (zh) | 一种图形渲染方法及相关设备 | |
CN109358796A (zh) | 一种游戏视野共享方法、终端及可读存储介质 | |
CN109087081A (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 |