CN115731324A - 处理数据的方法、装置、系统及介质 - Google Patents

处理数据的方法、装置、系统及介质 Download PDF

Info

Publication number
CN115731324A
CN115731324A CN202111002126.9A CN202111002126A CN115731324A CN 115731324 A CN115731324 A CN 115731324A CN 202111002126 A CN202111002126 A CN 202111002126A CN 115731324 A CN115731324 A CN 115731324A
Authority
CN
China
Prior art keywords
dimensional
vertex
dimensional model
compressed
residual
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
Application number
CN202111002126.9A
Other languages
English (en)
Inventor
张雷锋
梅文朝
黄巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111002126.9A priority Critical patent/CN115731324A/zh
Publication of CN115731324A publication Critical patent/CN115731324A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请公开了一种处理数据的方法、装置、系统及介质,属于通信领域。所述压缩数据的方法包括:获取参考三维模型,所述参考三维模型与待压缩三维模型之间的相似度满足指定条件,所述参考三维模型和所述待压缩三维模型是同一物体在三维动画的不同帧中的模型;基于所述参考三维模型获取所述待压缩三维模型的压缩数据,所述压缩数据包括所述参考三维模型对应的帧号和残差数据,所述残差数据用于指示所述参考三维模型与所述待压缩三维模型之间的差异。本申请能够提高压缩数据的压缩率。

Description

处理数据的方法、装置、系统及介质
技术领域
本申请涉及通信领域,特别涉及一种处理数据的方法、装置、系统及介质。
背景技术
三维动画可以应用于三维游戏或三维电影等场景。三维动画是由一帧帧的三维图片组成,对于任意一帧三维图片,该帧三维图片包括至少一个三维模型,三维模型实质是该帧三维图片中的三维图像。
通常服务端生成属于一帧三维图片的至少一个三维模型,向客户端发送该至少一个三维模型。客户端对该至少一个三维模型进行渲染得到该帧三维图片,播放该帧三维图片,从而实现播放三维游戏的动画画面或者播放三维电影的动画画面。
对于每个三维模型,该三维模型的数据量往往很大,如果直接传输三维模型,将需要大量的带宽资源。
发明内容
本申请提供了一种处理数据的方法、装置、系统及介质,以提高压缩数据的压缩率。所述技术方案如下:
第一方面,本申请提供了一种处理数据的方法,在所述方法中,获取参考三维模型,参考三维模型与待压缩三维模型之间的相似度满足指定条件,参考三维模型和待压缩三维模型是同一物体在三维动画的不同帧中的模型。基于参考三维模型获取待压缩三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待压缩三维模型之间的差异。
由于基于参考三维模型获取待压缩三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待压缩三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待压缩三维模型之间的差异信息,而参考三维模型和待压缩三维模型之间的相似度满足指定条件,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。
在一种可能的实现方式中,基于待压缩三维模型和参考三维模型,获取至少一个三维顶点中的每个三维顶点的残差;其中,至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的第一顶点信息和参考三维模型中的第一三维顶点的第二顶点信息不同,第一三维顶点的残差用于指示第一顶点信息,残差数据用于指示每个三维顶点和每个三维顶点的残差。该至少一个三维顶点是相比参考三维模型,待压缩三维模型中顶点信息发生变化的三维顶点,而残差数据用于指示该至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,如此可以大幅减少压缩数据的数据量。
在另一种可能的实现方式中,第一三维顶点的残差包括第一顶点信息,这样可以简化获取压缩数据的运算复杂度。
在另一种可能的实现方式中,第一顶点信息和第二顶点信息之间的差异信息,这样使得压缩数据包括差异信息,以减少压缩数据的数据量。
在另一种可能的实现方式中,残差数据包括位图和残差序列,残差序列包括每个三维顶点的残差,位图包括待压缩三维模型中的每个三维顶点对应的顶点字段,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。
在另一种可能的实现方式中,获取待压缩三维模型与物体对应的参考三维模型序列中的多个参考三维模型之间的相似度,多个参考三维模型是物体在三维动画的不同帧中的模型;选择与待压缩三维模型之间的相似度满足指定条件的参考三维模型。如此,选择与待压缩三维模型之间的相似度满足指定条件的参考三维模型,这样基于参考三维模型获取待压缩三维模型的压缩数据,使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。
在另一种可能的实现方式中,基于待压缩三维模型和参考三维模型,获取至少一个三维顶点,至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的顶点信息和参考三维模型中的第一三维顶点的顶点信息不同;基于至少一个三维顶点和待压缩三维模型,获取待压缩三维模型和参考三维模型之间的相似度,如此通过相似度可以参考三维模型中选择满足需求的参考三维模型,使用选择的参考三维模型来压缩待压缩三维模型,以提高压缩数据的压缩率。
在另一种可能的实现方式中,第一三维顶点的顶点信息包括第一三维顶点的位置信息。
在另一种可能的实现方式中,压缩数据还包括待压缩三维模型对应的帧号和/或物体的物体标识。
在另一种可能的实现方式中,三维动画包括三维游戏。
第二方面,本申请提供了一种处理数据的方法,在所述方法中,获取待解压三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据,参考三维模型与待解压三维模型之间的相似度满足指定条件,参考三维模型和待解压三维模型是同一物体在三维动画的不同帧中的模型;基于该帧号获取参考三维模型;基于参考三维模型和该残差数据,获取待解压三维模型。
由于待解压三维模型的压缩数据包括的帧号获取参考三维模型,基于参考三维模型和该残差数据,获取待解压三维模型,如此在解压侧能够成功地将三维模型压缩的压缩数据进行解压,从而在压缩侧能够将三维模型压缩成压缩数据,而压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待解压三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待解压三维模型之间的差异信息,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。
在一种可能的实现方式中,残差数据用于指示至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,至少一个三维顶点包括第一三维顶点,待解压三维模型中的第一三维顶点的第一顶点信息和参考三维模型中的所述第一三维顶点的第二顶点信息不同,第一三维顶点的残差用于指示第一顶点信息。该至少一个三维顶点是相比参考三维模型,待解压三维模型中顶点信息发生变化的三维顶点,而残差数据用于指示该至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,如此可以大幅减少压缩数据的数据量。
在另一种可能的实现方式中,第一三维顶点的残差包括第一顶点信息,这样可以简化压缩三维模型的运算复杂度。
在另一种可能的实现方式中,第一顶点信息和第二顶点信息之间的差异信息,这样使得压缩数据包括差异信息,以减少压缩数据的数据量。
在另一种可能的实现方式中,残差数据包括位图和残差序列,残差序列包括每个三维顶点的残差,位图包括待解压三维模型中的每个三维顶点对应的顶点字段,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。
在另一种可能的实现方式中,基于残差数据获取所述至少一个三维顶点。从参考三维模型中获取除至少一个三维顶点之外的其他三维顶点,待解压三维模型包括至少一个三维顶点和获取的其他三维顶点。
在另一种可能的实现方式中,三维动画包括三维游戏。
第三方面,本申请提供了一种处理数据的装置,用于执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。
第四方面,本申请提供了一种处理数据的装置,用于执行第二方面或第二方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第二方面或第二方面的任意一种可能的实现方式中的方法的单元。
第五方面,本申请提供了一种处理数据的装置,所述装置包括处理器和存储器。其中,所述处理器以及所述存储器之间可以通过内部连接相连。所述存储器用于存储程序,所述处理器用于执行所述存储器中的程序,使得所述装置完成第一方面或第一方面的任意可能的实现方式中的方法。
第六方面,本申请提供了一种处理数据的装置,所述装置包括处理器和存储器。其中,所述处理器以及所述存储器之间可以通过内部连接相连。所述存储器用于存储程序,所述处理器用于执行所述存储器中的程序,使得所述装置完成第二方面或第二方面的任意可能的实现方式中的方法。
第七方面,本申请提供了一种计算机程序产品,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现上述第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式的方法。
第八方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序通过处理器进行加载来执行第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式的方法的指令。
第九方面,本申请提供了一种处理数据的系统,所述系统包括第三方面所述的装置和第四方面所述的装置,或者,所述系统包括第五方面所述的装置和第六方面所述的装置。
附图说明
图1是本申请实施例提供的一种三维模型的示意图;
图2是本申请实施例提供的一种网络架构结构示意图;
图3是本申请实施例提供的一种处理数据的方法流程图;
图4是本申请实施例提供的一种服务器结构示意图;
图5是本申请实施例提供的一种残差数据的示意图;
图6是本申请实施例提供的另一种残差数据的示意图;
图7是本申请实施例提供的另一种残差数据的示意图;
图8是本申请实施例提供的另一种处理数据的方法流程图;
图9是本申请实施例提供的一种处理数据的装置结构示意图;
图10是本申请实施例提供的另一种处理数据的装置结构示意图;
图11是本申请实施例提供的另一种处理数据的装置结构示意图;
图12是本申请实施例提供的另一种处理数据的装置结构示意图;
图13是本申请实施例提供的一种处理数据的系统结构示意图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
三维动画可以是三维游戏或三维电影等,三维动画的每帧包括至少一个三维模型,属于同一帧中的每个三维模型对应的帧号相同。也就是说:在生成三维动画时,生成属于同一帧的至少一个三维模型,属于该帧的每个三维模型对应的帧号均为该帧的帧号。
对于三维动画的不同帧包括的三维模型,在渲染三维动画的一帧画面时,获取该帧的帧号对应的至少一个三维模型,对该至少一个三维模型进行渲染得到该帧画面。
对于该帧中的任一个三维模型,该三维模型是某个物体在该帧中的模型。物体可以为人物、动物或建筑物等。例如,该帧包括一个人物对应的三维模型,或者,多个人物中的每个人物对应的三维模型。
参见图1,对于该帧中的任一个三维模型,该三维模型包括多个三维顶点,该多个三维顶点组成多个多边形平面,由该多个多边形平面组成该三维模型。
例如,如图1所示的三维模型,该三维模型包括三维顶点1、2、3、……。三维顶点1、2和3组成一个三角形平面11,三维顶点2、3和4组成一个三角平面12,……。其中,组成的三角平面11、三角平面12等多边形平面构成该三维模型。
该三维模型包括多个三维顶点的序号和顶点信息。三维动画包括物体的面信息,该面信息包括多个顶点组合,该多个顶点组合与多个多边形平面一一对应,该多个多边形平面用于组成该物体的三维模型。对于顶点组合对应的多边形平面,该顶点组合包括组成该多边形平面的多个三维顶点的序号。
对于该物体的三维模型中的任一个三维顶点,该三维顶点的顶点信息包括该三维顶点的位置信息。该三维模型还包括坐标系和该坐标系的坐标系原点在帧中的位置,该坐标系是三维坐标系,该三维顶点的位置信息是该三维顶点在该坐标系中的位置信息,该帧是该三维模型属于的帧。
在渲染该物体的三维模型时,获取该物体对应的面信息,以及,获取该三维模型的坐标系原点在该帧中的位置。这样基于该三维模型中的每个三维顶点的顶点信息,确定该三维模型包括的多个三维顶点,基于该多个顶点组合,绘制由该多个三维顶点组成的多个多边形平面,该多个多边形平面组成该三维模型。基于该三维模型的坐标系原点的位置,在该帧画面中放置该三维模型。按上述相同方式将属于该帧的每个三维模型放置到该帧画面中,然后对该帧画面进行渲染。
例如,仍参见图1,图1所示的三维模型是一个物体对应的模型,该物体对应的面信息包括顶点组合1、顶点组合2、……。其中,顶点组合1包括三维顶点1的序号1、三维顶点2的序号2和三维顶点3的序号3,顶点组合2包括三维顶点2的序号2、三维顶点3的序号3和三维顶点4的序号4。
这样基于该三维模型中的每个三维顶点的顶点信息,确定三维顶点1、三维顶点2、三维顶点3、三维顶点4、……。基于顶点组合1,绘制由三维顶点1、三维顶点2和三维顶点3组成的多边形平面11,基于顶点组合2,绘制由三维顶点2、三维顶点3和三维顶点4组成的多边形平面12,……。由绘制的多边形平面11、多边形平面12等平面组成如图1所示的三维模型。如图1所示三维模型是某一帧画面中的模型,基于图1所示三维模型的坐标系原点在该帧画面中的位置,将如图1所示的三维模型放置在该帧画面中。
在一些实施例中,对于三维模型中的每个三维顶点,该三维顶点的位置信息包括该三维顶点在该三维模型对应坐标系中的坐标,该坐标包括三个坐标分量,该三个坐标分量分别为横坐标、纵坐标和竖坐标。
在一些实施例中,坐标分量的数据类型为浮点数类型,即该横坐标、纵坐标和竖坐标的数据类型为浮点数类型。坐标分量的数据量为w个字节,w为大于或等于1的整数。
例如,假设三维模型中的存在某个三维顶点的顶点信息包括坐标(3.634,4.255,6.785),该坐标中的每个坐标分量的数据量为四字节且数据类型为浮点数类型。该坐标中的横坐标x1=3.634,纵坐标y1=4.255,竖坐标z1=6.785。横坐标x1,纵坐标y1,竖坐标z1的二进制表示可以为:
x1=01000000,01101000,10010011,01110100,y1=01000000,10001000,00101000,11110101,z1=01000000,11011001,00011110,10111000。
该坐标系包括横轴x,纵轴y和竖轴z。在一些实施例中,当显示该三维模型时,可以定义横轴x的方向为水平向右方向或水平向左方向,定义纵轴y的方向为竖直向上方向或竖直向下方向,定义竖轴z为垂直显示设备的方向。
其中,对于该三维模型中的每个三维顶点,该每个三维顶点的竖坐标均为指定数值,使得该三维模型为一个平面模型,指定数值可以等于0,小于0或大于0;或者,该每个三维顶点的竖坐标不相等,使得该三维模型为一个立体模型。
在一些实施例中,该三维顶点的顶点信息还包括该三维顶点的颜色信息等。
在一些实施例中,三维模型还包括该三维模型对应的物体的物体标识和/或该三维模型对应的帧号等内容。
其中,如果三维动画的某帧包括多个三维模型,该多个三维模型中的每个三维模型对应的物体不同,即每个三维模型对应的物体标识不同。例如,假设该帧包括多个人物的三维模型,且每个三维模型对应的人物不同,即每个三维模型对应的物体标识不同。
对于同一个物体,该物体可能在三维动画连续相邻的多帧中存在对应的三维模型,即该物体对应多个三维模型,该多个三维模型可能较相似,从而可以对该多个三维模型进行压缩,以减小三维动画的数据量。具体来说:
对于连续相邻的c帧,c为大于1的整数,对于该物体分别在该c帧中的每帧中的三维模型,共c个三维模型,第一个三维模型是该物体在第一帧中的三维模型,第二个三维模型是该物体在第二帧中的三维模型,……,第c个三维模型是该物体在第c帧中的三维模型。第一个三维模型可能分别与第2至c个三维模型较相似,因此可以将第一个三维模型作为参考三维模型,然后对第2至c个三维模型进行压缩,从而减小三维动画的数据量。对于压缩三维模型的过程,接下来,通过如下实施例进行详细说明。
参见图2,本申请实施例提供了一种网络架构200,该网络架构200包括:服务器201和终端设备202,服务器201与终端设备202通信。
例如,服务器201和终端设备202在网络中之间建立网络连接,以实现服务器201与终端设备202之间的通信,该网络可以为广域网、局域网、互联网或无线网络等。当然还有其他实现服务器201与终端设备202之间通信的方式,在此不再一一说明。
在一些实施例中,服务器201与终端设备202之间采用的通信协议包括传输控制协议(transmission control protocol,TCP)协议或用户数据报协议(user datagramprotocol,UDP)协议等。
该网络架构200可以应用于三维游戏的场景,该三维游戏可以为三维云游戏等。在该场景下服务器201用于生成三维动画的每帧包括的三维动画,终端设备202用于渲染该三维动画,以显示该三维动画。在实现时:
服务器201生成三维动画当前帧包括的三维模型,并作为待压缩三维模型,获取与待压缩三维模型之间的相似度满足指定条件的参考三维模型,该参考三维模型和待压缩三维模型是同一物体在该三维动画的不同帧中的模型,该参考三维模型属于的帧早于当前帧。基于该参考三维模型对待压缩三维模型进行压缩,得到待压缩三维模型的压缩数据,该压缩数据包括该参考三维模型对应的帧号和该残差数据,该残差数据用于指示待压缩三维模型和该参考三维模型之间的差异。向终端设备202发送待压缩三维模型的压缩数据。
终端设备202接收该压缩数据,基于该压缩数据中的帧号获取该参考三维模型,基于该参考三维模型和该压缩数据,获取该三维模型。终端设备202按上述方式获取属于三维动画的当前帧包括的各个三维模型,对该各个三维模型进行渲染得到三维动画的当前帧画面。
在一些实施例中,服务器201用于运行三维应用,该三维应用用于生成三维动画的当前帧包括的三维模型。服务器201调用图形应用程序接口(application programminginterface,API),通过该图形API获取该三维应用生成的三维模型。
在一些实施例中,该三维应用可以是三维游戏应用,增强现实(augmentedreality,AR)应用或虚拟现实技术(virtual reality,VR)应用等。
该网络架构200可以应用于三维电影的场景。在该场景下,服务器201和/或终端设备202包括三维动画,该三维动画是三维电影等。服务器201和/或终端设备202可以对该三维动画进行压缩,得到该三维动画的压缩包,该压缩包包括该三维动画中的各个三维模型的压缩数据。在实现时:
从三维动画包括的三维模型中选择一个三维模型作为待压缩三维模型,获取与待压缩三维模型之间的相似度满足指定条件的参考三维模型,该参考三维模型和待压缩三维模型是同一物体在该三维动画的不同帧中的模型,该参考三维模型属于的帧早于待压缩三维模型属于的帧。基于该参考三维模型对待压缩三维模型进行压缩,得到待压缩三维模型的压缩数据,该压缩数据包括该参考三维模型对应的帧号和该残差数据,该残差数据用于指示待压缩三维模型和该参考三维模型之间的差异。按上述相同方式,对该三维动画中的每个三维模型进行压缩,从而得到每个三维模型的压缩数据,而该三维动画的压缩包括该每个三维模型的压缩数据。
在一些实施例中,服务器201用于对该三维动画进行压缩,终端设备202用于从服务器201中下载该三维动画的压缩包,对该压缩包中的三维模型进行解压得到该三维动画。或者,服务器201或终端设备202当压缩三维动画后,在需要播放三维动画时,对该压缩包中的三维模型进行解压得到该三维动画。
在一些实施例中,终端设备202用于运行客户端,该客户端用于解压三维模型。该客户端可以为用于播放三维动画的播放器,或者,是三维游戏的游戏客户端等。
在一些实施例中,服务器201为物理服务器或虚拟服务器,例如该虚拟服务器可以为虚拟机等。
在一些实施例中,终端设备202为手机或电脑等。
对于上述压缩三维模型的过程,以及解压三维模型的过程,接下来,通过如下实施例进行详细说明。
参见图3,本申请实施例提供了一种处理数据的方法300,所述方法300可以应用于图2所示的网络架构200,所述方法300的执行主体可以为服务器201或终端设备202等设备,包括:
步骤301:获取待压缩三维模型,待压缩三维模型是一个物体在三维动画的某一帧中的模型。
待压缩三维模型可以是设备生成的且需要发送的三维模型,或者,待压缩三维模型是设备中的三维动画中的三维模型等。设备是上述服务器或终端设备等。
对于待压缩三维模型是设备生成的且需要发送的三维模型的情况,为了便于说明称该情况为第一情况,第一情况可以是上述介绍的三维游戏的场景,在第一情况中该设备为服务器,用于生成三维动画的每帧包括的一个或多个三维模型。在实现时:
服务器从三维动画的第一帧开始顺序生成三维动画的每一帧,在服务器生成当前帧包括的一个或多个三维模型时,服务器将当前帧包括的每个三维模型分别作为待压缩三维模型。
所以待压缩三维模型可能是三维动画的第一帧中的模型,也可能是三维动画的第i帧中的模型,i=2、3、……。当待压缩三维模型为第一帧中的模型,将待压缩三维模型作为一个参考三维模型,将该参考三维模型添加到物体对应的参考三维模型序列,该物体是待压缩三维模型对应的物体,然后重新获取该三维动画的其他三维模型作为待压缩三维模型。当待压缩三维模型为第i帧中的模型,则继续执行如下步骤302的操作。
当待压缩三维模型为第一帧中的模型的情况,服务器向终端设备发送待压缩三维模型。例如,该三维动画为三维游戏,服务器生成三维游戏的第一帧中的三维模型,将该三维模型作为参考三维模型,将该参考三维模型添加到物体对应的参考三维模型序列,并向终端设备发送该三维模型,该物体为该三维模型对应的物体。
在一些实施例中,服务器还对该三维模型进行无损压缩,向终端设备发送无损压缩的该三维模型。
其中,无损压缩的算法可以为LZ4(是一种无损压缩算法,压缩速度为每核心400MB/s(0.16字节/周期)),Zstandard(简称为Zstd,是一款快速实时的开源数据压缩程序)或lzma(是一种无损压缩算法)等。
该参考三维模型序列可以保存在服务器的存储器中,该存储器包括内存,硬盘或固态硬盘(solid state disk,SSD)等。
服务器还向终端设备发送该物体的面信息。该物体的面信息是服务器生成的。
在一些实施例中,在该三维动画包括多个物体的情况下,服务器同时向终端设备发送每个物体的面信息;例如,服务器向终端设备发送数据包,该数据包包括物体标识与面信息的对应关系,物体标识与面信息的对应关系包括该每个物体的物体标识和面信息。或者,服务器首次生成某个物体的三维模型时,向终端设备发送该物体的面信息;例如,服务器在首次生成一个物体的三维模型时,向终端设备发送数据包,该数据包包括该物体的物体标识和面信息。
在第一情况下,服务器包括三维应用,服务器通过运行该三维应用生成三维动画的当前帧包括的一个或多个三维模型,调用图形API获取该三维应用生成的一个或多个三维模型,将获取的三维模型作为待压缩三维模型。
在一些实施例中,服务器还包括渲染模块,该渲染模块用于对属于同一帧的一个或多个三维模型进行渲染,以得到该帧画面。参见图4,服务器中的三维应用生成三维动画的当前帧包括的一个或多个三维模型,通过图形API向渲染模块输入当前帧包括的一个或多个三维动画。渲染模块对该一个或多个三维动画进行渲染,得到该当前帧画面。
为了能够获取到该当前帧包括的一个或多个三维模型,可以调用该图形API,从该图形API获取当前帧包括的一个或多个三维模型,将获取的三维模型作为待压缩三维模型。
在一些实施例中,服务器也可不包括渲染模块,也就是说服务器不用对当前帧包括的一个或多个三维模型进行渲染。此情况下,服务器调用图形API,通过图形API从三维应用中获取当前帧包括的一个或多个三维模型,将获取的三维模型作为待压缩三维模型。
渲染模块可以为物理图形处理器(graphics processing unit,GPU)或者是虚拟GPU等,该虚拟GPU可以通过服务器的中央处理器(central processing unit,CPU)进行模拟得到。
该渲染模块具有执行图形绘制指令的能力,该图形绘制指令包括以下一个或多个指令:开放图形库(open graphics library,OpenGL)、面向嵌入式系统的开放图形库(opengraphics library for embeded system,OpenGL ES)、Direct3D(是一种三维规格界面)和Vulkan(是一个跨平台的二维和三维绘图应用程序接口)等。
在第一情况下,服务器在生成当前帧包括的一个或多个三维模型,通过如下步骤302-303压缩每个三维模型,并向终端设备发送被压缩的三维模型,以使终端设备基于压缩的三维模型,渲染并显示三维动画的当前帧。
例如,在上述三维游戏的场景中,服务器生成三维游戏的当前帧包括的一个或多个三维模型,通过如下步骤302-303压缩每个三维模型,并向终端设备发送被压缩的三维模型,以使终端设备基于压缩的三维模型,渲染并显示三维游戏的当前帧。
对于待压缩三维模型是设备中的三维动画中的三维模型的情况,为了便于说明称该情况为第二情况,第二情况可以是上述介绍的三维电影的场景。在第二情况中,设备包括三维动画的每帧,三维动画的每帧包括一个或多个三维模型。该三维动画可以是该设备接收用户输入的三维动画,用户在该设备上制作的三维动画,或者,是该设备下载的三维动画等。该设备可以为服务器或终端设备等。
三维动画的数据量很大,为了减小存储三维动画所需要的存储空间,设备可以对三维动画包括的三维模型进行压缩,得到该三维动画的压缩包,该压缩包的数据量大小远小于该三维动画的数据量大小。在实现时:
设备从三维动画的第一帧开始顺序选择三维动画的每一帧,将当前选择的帧包括的每个三维模型分别为作为待压缩三维模型,然后执行本申请实施例提供压缩方法对待压缩三维模型进行压缩。
所以待压缩模型可能是三维动画的第一帧中的模型,也可能是三维动画的第i帧中的模型,i=2、3、……。当待压缩三维模型为第一帧中的模型,将待压缩三维模型作为一个参考三维模型,将该参考三维模型添加到物体对应的参考模型序列,该物体是待压缩三维模型对应的物体,然后重新获取该三维动画的其他三维模型作为待压缩三维模型。当待压缩三维模型为第i帧中的模型,则继续执行如下步骤302的操作。
当待压缩三维模型为第一帧中的模型的情况,设备将待压缩三维模型保存到该三维动画的压缩包中。在一些实施例中,设备还对该三维模型进行无损压缩,将无损压缩后的该三维模型保存到该三维动画的压缩包中。
三维动画中包括该物体的面信息,设备将该物体的面信息保存到该三维动画的压缩包中。其中,在三维动画中包括多个物体的面信息,该设备在三维动画的压缩包中保存物体标识与面信息的对应关系,物体标识与面信息的对应关系包括该多个物体中的每个物体的物体标识和面信息。
在一些实施例中,在上述第一情况或第二情况中,将待压缩三维模型添加至参考模型序列的操作为:
在三维动画包括一个物体的三维模型的情况下,设备包括该一个物体的参考三维模型序列,将待压缩三维模型添加到该参考三维模型序列。在三维动画包括多个物体的三维模型的情况下,设备包括物体标识与参考三维模型序列的对应关系,该对应关系中的每条记录用于保存一个物体的物体标识和该一个物体对应的参考三维模型序列。这样在将待压缩三维模型添加到参考三维模型序列时,基于待压缩三维模型对应的物体标识,从该对应关系中查找该物体标识对应的参考三维模型序列,将待压缩三维模型添加到查找的参考三维模型序列中。
待压缩三维模型由多个三维顶点组成的多个多边形平面组成,且待压缩三维模型包括该多个三维顶点中的每个三维顶点的序号和顶点信息。
在一些实施例中,待压缩三维模型还包括物体的物体标识和/或待压缩三维模型对应的帧号,该物体是待压缩三维模型对应的物体。
在一些实施例中,在三维动画中只包括一个物体对应的三维模型时,待压缩三维模型可以不包括物体的物体标识,或者,也可以包括物体的物体标识。在三维动画包括多个物体对应的三维模型时,待压缩三维模型包括物体的物体标识。
步骤302:获取参考三维模型,参考三维模型与待压缩三维模型之间的相似度满足指定条件,该参考三维模型和待压缩三维模型是该物体在三维动画的不同帧中的模型。
该参考三维模型属于的帧早于待压缩三维模型属于的帧。
指定条件可以为参考三维模型与待压缩三维模型之间的相似度超过指定相似度阈值,或者,可以为参考三维模型与待压缩三维模型之间的相似度最大且超过指定相似度阈值。
在步骤302中,可以通过如下3021-3023的操作获取与待压缩三维模型之间的相似度满足指定条件的参考三维模型。该3021-3023的操作分别为:
3021:获取物体对应的参考三维模型序列,该参考三维模型序列包括一个或多个参考三维模型,该物体为待压缩三维模型对应的物体。
在三维动画包括一个物体的三维模型时,设备包括该物体的参考三维模型序列,则直接获取设备中包括的该参考三维模型序列。
在三维动画包括多个物体的三维模型时,设备包括物体标识与参考三维模型序列的对应关系,待压缩三维模型包括待压缩三维模型对应的物体标识。这样基于待压缩三维模型对应的物体标识,从该对应关系中获取对应的参考三维模型序列。
3022:获取待压缩三维模型与该参考三维模型序列中的每个参考三维模型之间的相似度。
对于该参考三维模型序列中的任一个参考三维模型,通过如下(1)-(2)的操作,获取待压缩三维模型与该参考三维模型之间的相似度,该(1)-(2)的操作分别为:
(1):基于待压缩三维模型和该参考三维模型,获取至少一个三维顶点,该至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的第一顶点信息和该参考三维模型中的第一三维顶点的第二顶点信息不同。
相比该参考三维模型,该至少一个三维顶点是待压缩三维模型中的顶点信息发生变化的三维顶点。
在操作(1)中,从待压缩三维模型中获取一个三维顶点的序号和第一顶点信息,为了便于说明将该三维顶点称为第一三维顶点,基于第一三维顶点的序号,从该参考三维模型中获取第一三维顶点的第二顶点信息,比较第一顶点信息和第二顶点信息,如果两者不同,表示相比参考三维模型,待压缩三维模型中的第一三维顶点的顶点信息发生变化。
第一顶点信息包括第一三维顶点在待压缩三维模型中的第一坐标,第一坐标包括三个坐标分量,分别为第一横坐标、第一纵坐标和第一竖坐标。第二顶点信息包括第一三维顶点在该参考三维模型中的第二坐标,第二坐标包括三个坐标分量,分别为第二横坐标、第二纵坐标和第二竖坐标。在一些实施例中,比较第一顶点信息和第二顶点信息的操作为:比较第一坐标和第二坐标中的相同类型的坐标分量,即比较第一横坐标和第二横坐标,第一纵坐标和第二纵坐标,以及第一竖坐标和第二竖坐标,如果比较出一个或多个相同类型的坐标分量不同,则表示相比参考三维模型,待压缩三维模型中的第一三维顶点的一个或多个坐标分量发生变化,也就是说待压缩三维模型中的第一三维顶点的顶点信息发生变化。
例如,如果比较第一横坐标和第二横坐标不同,第一纵坐标和第二纵坐标不同,和/或,第一竖坐标和第二竖坐标不同,则第一三维顶点发生变化的坐标分量包括第一横坐标、第一纵坐标和/或第一竖坐标。
从待压缩三维模型中获取其他三维顶点,按上述相同方式得出待压缩三维模型中的其他三维顶点的顶点信息是否发生变化,从而得出上述至少一个三维顶点。
例如,假设从待压缩三维模型中获取一个三维顶点的序号为“2”以及第一顶点信息,第一顶点信息包括该三维顶点的坐标,该坐标包括的横坐标x1,纵坐标y1,竖坐标z1如下所示。该坐标中的每个坐标分量为四个字节的浮点数,该坐标为(3.634,4.255,6.785)。
x1=01000000,01101000,10010011,01110100,y1=01000000,10001000,00101000,11110101,z1=01000000,11011001,00011110,10111000。
基于该序号“2”,从参考三维模型中获取该三维顶点的第二顶点信息,第二顶点信息包括该三维顶点的坐标,该坐标包括的横坐标x2,纵坐标y2,竖坐标z2如下所示。该坐标中的每个坐标分量为四个字节的浮点数,该坐标为(3.634,5.751,6.725)。
x2=01000000,01101000,10010011,01110100,y2=01000000,10111000,00001000,00110001,z2=01000000,11010111,00110011,00110011。
比较上述第一顶点信息和第二顶点信息,可以得出两者不同,因此相比该参考三维模型,待压缩三维模型中的序号“2”对应的三维顶点的顶点信息发生变化。按上述相同方式,得出待压缩三维模型中顶点信息发生变化的其他三维顶点。
(2):基于该至少一个三维顶点包括的三维顶点个数和待压缩三维模型包括的三维顶点总个数,获取待压缩三维模型和该参考三维模型之间的相似度。
在一些实施例中,基于该至少一个三维顶点包括的三维顶点个数和待压缩三维模型包括的三维顶点总个数,获取待压缩三维模型和该参考三维模型之间的相似度。
在操作(2)中,统计该至少一个三维顶点包括的三维顶点个数,以及统计待压缩三维模型包括的三维顶点总个数,基于该三维顶点个数和该三维顶点总个数,按如下第一公式获取待压缩三维模型和该参考三维模型之间的相似度。
第一公式为:S=1-m/n,
其中,在第一公式中,S为待压缩三维模型和该参考三维模型之间的相似度,m为该至少一个三维顶点包括的三维顶点个数,n为待压缩三维模型包括的三维顶点总个数。
在一些实施例中,至少一个三维顶点包括第一三维顶点,第一三维顶点的坐标分量中存在一个或多个坐标分量发生变化。对于该至少一个三维顶点中的每个三维顶点,从每个三维顶点的坐标分量中统计出发生变化的坐标分量个数。对于待压缩三维模型包括的每个三维顶点的坐标分量进行统计,得到待压缩三维模型中的坐标分量总个数,基于该发生变化的坐标分量个数和该坐标分量总个数,按如下第一公式获取待压缩三维模型和该参考三维模型之间的相似度。其中,此时,m为该发生变化的坐标分量个数,n为该坐标分量总个数,S仍为待压缩三维模型和该参考三维模型之间的相似度。
对于该参考三维模型序列中的其他每个参考三维模型,重复上述操作(1)-(2),得到待压缩三维模型分别与其他每个参考三维模型之间的相似度。
3023:从该参考三维模型序列中,选择与待压缩三维模型之间的相似度满足指定条件的参考三维模型。
在3023的操作中,在该参考三维模型序列中,确定是否存在与待压缩三维模型之间的相似度超过相似度阈值的参考三维模型,如果存在,从与待压缩三维模型之间的相似度超过相似度阈值的参考三维模型中,选择一个参考三维模型,或者,选择与待压缩三维模型之间的相似度最大的参考三维模型。
其中,在该参考三维模型序列中,如果不存在与待压缩三维模型之间的相似度超过相似度阈值的参考三维模型,则表示待压缩三维模型分别与该参考三维模型序列中的每个参考三维模型之间的差异较大。因此,将待压缩三维模型作为一个参考三维模型,并将该参考三维模型添加到该参考三维模型序列中。
在一些实施例中,在上述第一情况下,在将该参考三维模型添加到该参考三维模型序列中后,如果该参考三维模型序列包括的参考三维模型个数超过指定个数阈值,还从该参考三维模型序列中删除最久未选择的一个参考三维模型。
在一些实施例中,在将待压缩三维模型作为一个参考三维模型后,在上述第一情况下,服务器还向终端设备发送待压缩三维模型;在上述第二情况下,设备还向该三维动画的压缩包中添加待压缩三维模型。此时待压缩三维模型的压缩数据就是待压缩三维模型。
在一些实施例中,在上述第一情况下,服务器还对待压缩三维模型进行无损压缩,向终端设备发送无损压缩后的待压缩三维模型。在上述第二情况下,设备还对待压缩三维模型进行无损压缩,向该三维动画的压缩包中添加无损压缩后的待压缩三维模型。
步骤303:基于该参考三维模型获取待压缩三维模型的压缩数据,该压缩数据包括该参考三维模型对应的帧号和残差数据,该残差数据用于指示该参考三维模型与待压缩三维模型之间的差异。
在步骤302中,获取到至少一个三维顶点,该至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的第一顶点信息和该参考三维模型中的第一三维顶点的第二顶点信息不同。该至少一个三维顶点就是相比参考三维模型,待压缩三维模型中顶点信息发生变化的三维顶点。
残差数据用于指示该至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,其中,第一三维顶点的残差用于指示第一顶点信息。
残差数据的形式有多种,在步骤303中列举了如下两种形式的残差数据。当前除了该两种形式外,还有其他形式的残差数据,在此不再一一列举。
第一种形式:该残差数据包括序号与残差的对应关系,该序号与残差的对应关系用于保存该至少一个三维顶点中的每个三维顶点的序号和残差。
第二种形式,该残差数据包括位图和残差序列,该残差序列包括该至少一个三维项点中的每个三维顶点的残差,该位图包括待压缩三维模型中的每个三维顶点对应的顶点字段,该至少一个三维顶点包括第一三维顶点,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。
在一些实施例中,第一三维顶点对应的顶点字段还用于指示第一三维顶点的残差数据量。
在第二种形式的残差数据中,第一三维顶点对应的顶点字段包括第一指示信息,第一指示信息用于指示残差序列包括第一三维顶点的残差,第一指示信息在位图中的存储位置用于指示第一三维顶点的残差在残差序列中的位置。对于待压缩三维模型中除该至少一个三维顶点之外的其他三维顶点,为了便于说明,将该其他三维顶点称为第二三维顶点,第二三维顶点对应的顶点字段包括第二指示信息,第二指示信息用于指示残差序列不包括第二三维顶点的残差。
例如,第一指示信息为大于0的数值,用于指示残差序列包括第一三维顶点的残差;第二指示信息为0的数值,用于指示残差序列不包括第二三维顶点的残差。
在一些实施例中,第一三维顶点的残差包括第一顶点信息,或者,第一三维顶点的残差包括第一顶点信息与第二顶点信息之间的差异信息。
第一三维顶点的残差有多种类型,对于每种类型的残差,需要采用相应形式的残差数据,接下来对每种类型的残差进行一一说明。
第一种类型,第一三维顶点的残差包括第一顶点信息。
残差数据可以为上述第一种形式的残差数据,即该残差数据包括序号与残差的对应关系,该序号与残差的对应关系用于保存该至少一个三维顶点中的每个三维顶点的序号和顶点信息。或者,
残差数据可以为上述第二种形式的残差数据,每个三维顶点的残差数据量相等,位图中的每个三维顶点对应的顶点字段包括a个比特,a为大于或等于1的整数。第一三维顶点对应的顶点字段包括第一指示信息,第一指示信息用于指示残差序列包括第一三维顶点的残差和第一三维顶点的残差位于残差序列中的位置。第二三维顶点对应的顶点字段包括第二指示信息,第二指示信息用于指示残差序列不包括第二三维顶点的残差。
假设a=1,使用比特值“1”表示第一指示信息,使用比特值“0”表示第二指示信息。例如,参见图5,假设该至少一个三维顶点包括待压缩三维模型中的第二个三维顶点,第四个三维顶点。残差序列包括第二个三维顶点的残差(顶点信息2)和第四个三维顶点的残差(顶点信息4),位图中包括待压缩三维模型中的每个三维顶点对应的顶点字段。每个三维顶点对应的顶点字段包括一个比特。
其中,第一个三维顶点对应的顶点字段包括第二指示信息“0”,用于指示残差序列中不包括第一个三维顶点的残差。第二个三维顶点对应的顶点字段包括第一指示信息“1”,用于指示残差序列中包括第二个三维顶点的残差,第二个三维顶点对应的顶点字段是位图中的第一个包括第一指示信息的顶点字段,而第二个三维顶点的残差是残差序列中的第一个残差。如此,通过第一指示信息在位图中的存储位置,指示第二个三维顶点的残差在残差序列中的位置。第三个三维顶点对应的顶点字段包括第二指示信息“0”,用于指示残差序列中不包括第三个三维顶点的残差。第四个三维顶点对应的顶点字段包括第一指示信息“1”,用于指示残差序列中包括第四个三维顶点的残差,第四个三维顶点对应的顶点字段是位图中的第二个包括第一指示信息的顶点字段,而第四个三维顶点的残差是残差序列中的第二个残差。如此,通过第一指示信息在位图中的存储位置,指示第四个三维顶点的残差在残差序列中的位置。
对于第一三维顶点的残差包括第一顶点信息与第二顶点信息之间的差异信息的情况,在此情况下,第一顶点信息包括待压缩三维模型中的第一三维顶点的第一坐标,第二顶点信息包括该参考三维模型中的第一三维顶点的第二坐标。第一顶点信息与第二顶点信息之间的差异信息包括第一坐标分量和第二坐标分量之间的差异信息。第一坐标分量是第一坐标中的坐标分量,第二坐标分量是第二坐标中的坐标分量,第一坐标分量和第二坐标分量是相同类型的分量,且第一坐标分量和第二坐标分量不同。
第一顶点信息与第二顶点信息之间的差异信息包括一个或多个差异信息,即第一三维顶点的残差包括一个或多个差异信息。例如,第一坐标包括第一横坐标、第一纵坐标和第一竖坐标,第二坐标包括第二横坐标,第二纵坐标和第二竖坐标。第一坐标分量为第一横坐标,第二坐标分量为第二横坐标;或者,第一坐标分量为第一纵坐标,第二坐标分量为第二纵坐标;或者,第一坐标分量为第一竖坐标,第二坐标分量为第二竖坐标。第一顶点信息与第二顶点信息之间的差异信息包括第一横坐标与第二横坐标之间的差异信息,第一纵坐标与第二纵坐标之间的差异信息和/或第一竖坐标与第二竖坐标之间的差异信息。
在一些实施例中,第一坐标分量与第二坐标分量之间的差异信息包括第一坐标分量和第二坐标分量之间的差值,或者,第一坐标分量中的第j至w个字节和第二坐标分量中的第j至w个字节之间的异或值,j=1、2、……、w,第一坐标分量的第j个字节和第二坐标分量的第j个字节不同,第一坐标分量的第1至j-1个字节分别与第二坐标分量的第1至j-1个字节相同。
也就是说,在此情况下,第一三维顶点的残差有如下第二种类型和第三种类型,第二种类型为:第一三维顶点的残差包括第一坐标分量和第二坐标分量之间的差值,第一三维顶点的残差包括一个或多个差值,每个差值对应不同的坐标分量。第三种类型为:第一三维顶点的残差包括第一坐标分量中的第j至w个字节和第二坐标分量中的第j至w个字节之间的异或值,第一三维顶点的残差包括一个或多个异或值,每个异或值对应不同的坐标分量。
其中,第一坐标分量包括w个字节,第一个字节为第一坐标分量的最高位字节,第w个字节为第一坐标分量的最低位字节。以及,第二坐标分量包括w个字节,第一个字节为第二坐标分量的最高位字节,第w个字节为第二坐标分量的最低位字节。
例如,第一三维顶点在待压缩三维模型中的第一坐标为(3.634,4.255,6.785),第一坐标中的第一横坐标x1,第一纵坐标y1和第一竖坐标z1的二进制表示分别为:
x1=01000000,01101000,10010011,01110100,y1=01000000,10001000,00101000,11110101,z1=01000000,11011001,00011110,10111000。
第一横坐标x1包括四个字节,分别为01000000,01101000,10010011,01110100,其中最左边的字节“01000000”可以为最高位字节,最右边的字节“01110100”可以为最低位字节。第一坐标中的其他坐标分量中的最高位字节点和最低位字节的含义与此处的含义相同,在本文中不再一一列举说明。当然还有其他对坐标分量的最高位字节和最低位字节的定义,在此也不再一一列举说明。
第一三维顶点在该参考三维模型中的第二坐标为(3.634,5.751,6.725),第二坐标中的第二横坐标x2,第二纵坐标y2和第二竖坐标z2的二进制表示分别为:
x2=01000000,01101000,10010011,01110100,y2=01000000,10111000,00001000,00110001,z2=01000000,11010111,00110011,00110011。
其中,第一坐标的第一纵坐标y1和第二坐标的第二纵坐标y2不同,以及第一坐标的第一竖坐标z1和第二坐标的第二竖坐标z2不同,所以第一坐标和第二坐标之间的差异信息包括第一纵坐标y1与第二纵坐标y2之间的差值“-1.496”,以及第一竖坐标z1与第二竖坐标z2之间的差值“0.06”。或者,
第一纵坐标y1的第二个字节点和第二纵坐标y2的第二个字节不同,第一竖坐标z1的第二个字节和第二竖坐标z2的第二个字节不同,第一坐标和第二坐标之间的差异信息包括第一纵坐标y1的第2至4个字节和第二纵坐标y2的第2至4个字节之间的异或值“00110000,00100000,11000100”,以及,第一竖坐标z1的第2至4个字节和第二竖坐标z2的第2至4个字节之间的异或值“00001110,00101101,10001011”。
其中,第一三维顶点的每个坐标分量包括w个字节,在每个坐标分量的数据类型为浮点数且w的数值较大时,每个坐标分量的数据量很大。且对于任一个坐标分量,该坐标分量的第v至w个字节的取值对该坐标分量的影响较小,v为大于1且小于或等于w的整数。例如,对于第一横坐标x1=3.634(01000000,01101000,10010011,01110100),假设v=4,第四个字节“01110100”对第一横坐标x1的影响较小,如果将第四个字节的取值设置为0,第一横坐标x1的取值由3.634变为3.6339721679688,第一横坐标的变化不大。
在一些实施例中,在执行步骤303之前,可以将待压缩三维模型中的第一三维顶点的每个坐标分量的第v至w个字节的值设置为0,以及将该参考三维模型中的第一三维顶点的每个坐标分量的第v至w个字节的值设置为0。这样使得待压缩模型中的第一三维顶点的每个坐标分量的字节数变为v-1,在压缩待压缩三维模型时,可以不需要处理每个坐标分量的第v至w个字节,从而减小压缩的数据量。为了方便后文描述,还使用w表示设置的每个坐标分量的字节数,即w=v-1。
例如,假设v=4,将第一坐标中的第一横坐标x1的第四个字节的值设置为0,得到如下x11,x11=3.6339721679688,将第一坐标中的第一纵坐标y1的第四个字节的值均设置为0,得到如下y11,y11=4.2548828125,以及将第一坐标的第一竖坐标z1的第四个字节的值设置为0,得到如下z11,z11=6.784912109375。其中,如下x11、y11、z11的数据量均为v-1个字节,为3个字节,w由4变为3。
x11=01000000,01101000,10010011,y11=01000000,10001000,00101000,z11=01000000,11011001,00011110。
将第二坐标中的第二横坐标x2的第四个字节的值设置为0,得到如下x21,x21=3.6339721679688,将第二坐标中的第二纵坐标y2的第四个字节的值均设置为0,得到如下y21,y21=5.7509765625,以及将第二坐标的第二竖坐标z2的第四个字节的值设置为0,得到如下z21,z21=6.7249755859375。其中,如下x21、y21、z21的数据量均为v-1个字节,即为3个字节,w由4变3。
x21=01000000,01101000,10010011,y21=01000000,10111000,00001000,z21=01000000,11010111,00110011。
在该例子中,第一坐标的第一纵坐标y11和第二坐标的第二纵坐标y21不同,以及第一坐标的第一竖坐标z11和第二坐标的第二竖坐标z21不同,所以第一坐标和第二坐标之间的差异信息包括第一纵坐标y11与第二纵坐标y21之间的差值“-1.49609375”,以及第一竖坐标z11与第二竖坐标z21之间的差值“0.0599365234275”。或者,
第一纵坐标y11的第二个字节和第二纵坐标y21的第二个字节不同,第一竖坐标z11的第二个字节和第二竖坐标z21的第二个字节不同,第一坐标和第二坐标之间的差异信息包括第一纵坐标y11的第2至3个字节和第二纵坐标y21的第2至3个字节之间的异或值“00110000,00100000”,以及,第一竖坐标z11的第2至3个字节和第二竖坐标z21的第2至3个字节之间的异或值“00001110,00101101”。
对于上述第二种类型的残差,即第一三维顶点的残差包括第一坐标分量和第二坐标分量之间的差值,该差值与第一坐标分量相对应。
在第二种类型的情况下,残差数据可以为上述第二种形式的残差数据,第一三维顶点的残差包括一个或多个差值,每个差值对应不同的坐标分量,任一个差值是相同类型的两个坐标分量之间的差值,且每个差值的数据量相等,每个差值的数据量为w个字节。
对于位图中的第一三维顶点对应的顶点字段,该顶点字段包括每个坐标分量对应的子字段,即该顶点字段包括横坐标分量对应的第一子字段,纵坐标分量对应的第二子字段和竖坐标分量对应的第三子字段,第一子字段、第二子字段和第三子字段的数据量均相等。
对于第一三维顶点中的任一个坐标分量,在该坐标分量对应的差值不为0,该坐标分量对应的子字段包括第一指示信息,第一指示信息用于指示残差序列包括该坐标分量对应的差值以及该坐标分量对应的差值在残差序列中的位置。在该坐标分量对应的差值为0,该坐标分量对应的子字段包括第二指示信息,第二指示信息用于指示残差序列不包括该坐标分量对应的差值。
第一三维顶点中的每个子字段包括a个比特,a为大于或等于1的整数,第一三维顶点对应的顶点字段包括3a个比特。
假设a=1,使用比特值“1”表示第一指示信息,使用比特值“0”表示第二指示信息。例如,参见图6,假设该至少一个三维顶点包括待压缩三维模型中的第二个三维顶点,第四个三维顶点。残差序列包括第二个三维顶点的残差和第四个三维顶点的残差,假设第二个三维顶点的坐标为上述(x11,y11,z11),第二个三维顶点的残差包括第二个三维顶点的纵坐标对应的差值“-1.49609375”和竖坐标对应的差值“0.0599365234275”,第四个三维顶点的残差包括第四个三维顶点的纵坐标对应的差值“0.496”。
位图中包括待压缩三维模型中的每个三维顶点对应的顶点字段。每个三维顶点对应的顶点字段包括三个比特。其中,对于第一个三维顶点对应的顶点字段中的三个比特,该三个比特中的每个比特包括第二指示信息“0”,用于指示残差序列中不包括第一个三维顶点中的每个坐标分量对应的差值。对于第二个三维顶点对应的顶点字段中的三个比特,该三个比特中的第一个比特包括第二指示信息“0”,用于指示残差序列中不包括第二个三维顶点中的横坐标对应的差值,该三个比特中的第二个比特和第三个比特均包括第一指示信息“1”,用于指示残差序列中包括第二个三维顶点中的纵坐标对应的差值和竖坐标对应的差值。对于第三个三维顶点对应的顶点字段中的三个比特,该三个比特中的每个比特包括第二指示信息“0”,用于指示残差序列中不包括第三个三维顶点中的每个坐标分量对应的差值。对于第四个三维顶点对应的顶点字段中的三个比特,该三个比特中的第一个比特包括第二指示信息“0”,用于指示残差序列中不包括第四个三维顶点中的横坐标对应的差值,该三个比特中的第二个比特包括第一指示信息“1”,用于指示残差序列中包括第四个三维顶点中的纵坐标对应的差值,该三个比特中的第三个比特包括第二指示信息“0”,用于指示残差序列中不包括第四个三维顶点中的竖坐标对应的差值。
对于上述第三种类型的残差,即第一三维顶点的残差包括第一坐标分量的第j至w个字节和第二坐标分量的第j至w个字节之间的异或值,该异或值与第一坐标分量相对应。
在第三种类型的情况下,残差数据可以为上述第二种形式的残差数据,第一三维顶点的残差包括一个或多个异或值,每个异或值对应不同的坐标分量,任一个异或值是相同类型的两个坐标分量之间的异或值,且每个异或值的数据量可能相等,也可能不相等。
对于位图中的第一三维顶点对应的顶点字段,该顶点字段包括每个坐标分量对应的子字段,即该顶点字段包括横坐标分量对应的第一子字段,纵坐标分量对应的第二子字段和竖坐标分量对应的第三子字段,第一子字段、第二子字段和第三子字段的数据量均相等。
对于第一三维顶点中的任一个坐标分量,在该坐标分量对应的异或值不为0,该坐标分量对应的子字段包括第一指示信息,第一指示信息用于指示残差序列包括该坐标分量对应的异或值,该坐标分量对应的异或值在残差序列中的位置以及该坐标分量对应的异或值数据量,第一指示信息的取值为w-j+1,w-j+1为该坐标分量对应的异或值数据量。在该坐标分量对应的异或值为0,该坐标分量对应的子字段包括第二指示信息,第二指示信息用于指示残差序列不包括该坐标分量对应的异或值。
第一三维顶点中的每个子字段包括a个比特,a为大于或等于1的整数,使得第一三维顶点对应的顶点字段包括3a个比特,其中a个比特的最大取值大于或等于一个坐标分量的字节数。例如,如果坐标分量包括三个字节,a大于或等于2,这样才能保证a个比特的最大取值大于或等于3。
假设a=2,第一三维顶点的每个子字段包括两个比特。参见图7,假设该至少一个三维顶点包括待压缩三维模型中的第二个三维顶点,第四个三维顶点,待压缩三维模型中的第二个三维顶点与参考三维模型中的第二个三维顶点是同一序号对应的三维顶点,以及,待压缩三维模型中的第四个三维顶点与参考三维模型中的第四个三维顶点是同一序号对应的三维顶点,且每个三维顶点的坐标分量的数据量为三个字节。为了区别,将待压缩三维模型中的第二个三维顶点和第四个三维顶点分别称为第二个三维顶点1和第四个三维顶点1,将参考三维模型中的第二个三维顶点和第四个三维顶点分别称为第二个三维顶点2和第四个三维顶点2。
假设第二个三维顶点1的坐标为上述(x11,y11,z11),第二个三维顶点2的坐标为上述(x21,y21,z21),第二个三维顶点1的纵坐标的第二个字节和第二个三维顶点2的纵坐标的第二个字节不同,第二个三维顶点1的竖坐标的第二个字节和第二个三维顶点2的竖坐标的第二个字节不同。第二个三维顶点1的残差包括第二个三维顶点1的纵坐标的第二至第三个字节和第二个三维顶点2的纵坐标的第二至第三个字节之间的异或值21,以及第二个三维顶点1的竖坐标的第二至第三个字节和第二个三维顶点2的竖坐标的第二至第三个字节之间的异或值22。假设该异或值21为“00110000,00100000”,异或值22为“00001110,00101101”。
第四个三维顶点1的纵坐标的第三个字节和第四个三维顶点2的纵坐标的第三个字节不同。第四个三维顶点1的残差包括第四个三维顶点1的纵坐标的第三个字节和第四个三维顶点2的纵坐标的第三个字节之间的异或值41。假设异或值41为“00001001”。
残差序列包括上述异或值21“00110000,00100000”,异或值22“00001110,00101101”,异或值41“00001001”。其中,异或值21和异或值22的数据量均为2个字节,异或值41的数据量为1个字节。
位图中包括待压缩三维模型中的每个三维顶点对应的顶点字段。每个三维顶点对应的顶点字段包括三个子字段。其中,对于第一个三维顶点对应的顶点字段中的三个子字段,该三个子字段中的每个子字段包括第二指示信息“0”,用于指示残差序列中不包括第一个三维顶点中的每个坐标分量对应的异或值。对于第二个三维顶点对应的顶点字段中的三个子字段,该三个子字段中的第一个子字段包括第二指示信息“0”,用于指示残差序列中不包括第二个三维顶点中的横坐标对应的异或值,该三个子字段中的第二个子字段包括第一指示信息“2”,用于指示残差序列中包括第二个三维顶点1中的纵坐标对应的异或值21以及异或值21的数据量为2个字节,该三个子字段中的第三个子字段包括第一指示信息“2”,用于指示残差序列中包括第二个三维顶点1中的竖坐标对应的异或值22以及异或值22的数据量为2个字节。对于第三个三维顶点对应的顶点字段中的三个子字段,该三个子字段中的每个子字段包括第二指示信息“0”,用于指示残差序列中不包括第三个三维顶点中的每个坐标分量对应的异或值。对于第四个三维顶点对应的顶点字段中的三个子字段,该三个子字段中的第一个子字段包括第二指示信息“0”,用于指示残差序列中不包括第四个三维顶点中的横坐标对应的异或值,该三个子字段中的第二个子字段包括第一指示信息“1”,用于指示残差序列中包括第四个三维顶点1中的纵坐标对应的异或值41以及异或值41的数据量为1个字节,该三个子字段中的第三个子字段包括第二指示信息“0”,用于指示残差序列中不包括第四个三维顶点1中的竖坐标对应的异或值。
在一些实施例中,在上述第一种情况,服务器向终端设备发送待压缩三维模型的压缩数据,然后服务器继续生成三维动画的三维模型,将该三维模型作为待压缩三维模型,并执行上述步骤301-303的操作。
在一些实施例中,在上述第一种情况,服务器对该压缩数据进行无损压缩,以进一步减小压缩数据的数据量,向终端设备发送无损压缩的该压缩数据。
在上述第二种情况,设备向三维模型的压缩包中保存待压缩三维模型的压缩数据,然后设备继续从三维动画中获取三维模型作为待压缩三维模型,并执行上述步骤301-303的操作,直至获取完三维动画中的每个三维模型。
在一些实施例中,在上述第二种情况,设备对该压缩数据进行无损压缩,以进一步减小压缩数据的数据量,向三维模型的压缩包中保存无损压缩的该压缩数据。
在本申请实施例中,由于基于参考三维模型获取待压缩三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据,该残差数据用于指示参考三维模型与待压缩三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待压缩三维模型之间的差异信息,而参考三维模型和待压缩三维模型之间的相似度满足指定条件,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。另外,残差数据中包括位图和残差序列,该残差序列包括至少一个三维顶点中的每个三维顶点的残差,该至少一个三维顶点是相对该参考三维模型,待压缩三维模型中顶点信息发生变化的三维顶点。该至少一个三维顶点包括第一三维顶点,第一三维顶点的残差包括第一坐标分量的第j至w个字节和第二坐标分量的第j至w个字节之间的异或值,第一坐标分量是第一三维顶点在待压缩三维模型中的坐标分量,第二坐标分量是第一三维顶点在该参考三维模型中的坐标分量,第一坐标分量的第j个字节和第二坐标分量的第j个节点不同。该位图中的第一三维顶点的顶点字段包括第一坐标分量对应的子字段,该子字段用于指示该异或值在残差序列的位置和该异或值的数据量。其中,该异或值的数据量为w-j+1个字节,小于或等于w个字节,从而可以进一步减小残差序列的数据量,进一步提高了压缩数据的压缩率。
参见图8,本申请实施例提供了一种处理数据的方法800,所述方法800可以应用于图2所示的网络架构200,所述方法800的执行主体可以为服务器201或终端设备202等设备,包括:
步骤801:获取待解压三维模型的压缩数据,该压缩数据包括参考三维模型对应的帧号和残差数据,参考三维模型与待解压三维模型之间的相似度满足指定条件,该参考三维模型和待解压三维模型是同一物体在三维动画的不同帧中的模型。
在图3所示的方法300中介绍了第一情况和第二情况,接下来分别说明在第一情况和第二情况下获取待解压三维模型的压缩数据的详细过程。
在上述第一情况下,终端设备接收服务器发送的待解压三维模型的压缩数据。
待解压三维模型可能是参考三维模型,也可能是非参考三维模型。
在待解压三维模型是参考三维模型时,待解压三维模型的压缩数据就是待解压三维模型,将待解压三维模型添加到物体对应的参考三维模型序列中,该物体为待解压三维模型对应的物体,然后继续接收服务器发送的待解压三维模型的压缩数据。在待解压三维模型是非参考三维模型时,执行如下步骤802的操作。
在待解压三维模型是参考三维模型时,如果服务器对待解压三维模型进行无损压缩,则终端设备对待解压三维模型进行无损解压,再将无损解压的待解压三维模型添加到物体对应的参考三维模型序列中。
在待解压三维模型是非参考三维模型时,如果服务器对该压缩数据进行过无损压缩,则终端设备还对待解压三维模型的压缩数据进行无损解压,然后执行步骤802的操作。
其中,服务器和终端设备可以事先约定是否对参考三维模型进行无损压缩。和/或,服务器和终端设备可以事先约定是否对压缩数据进行无损压缩。
在一些实施例中,上述将待解压三维模型添加到物体对应的参考三维模型序列的操作为:在该三维动画包括一个物体的三维模型时,如果待解压三维模型是终端设备首次接收的该物体的参考三维模型,则保存包括待解压三维模型的参考三维模型序列,如果待解压三维模型不是终端设备首次接收的该物体的参考三维模型,则表示终端设备已保存该物体的参考三维模型序列,将待解压三维模型添加到该物体的参考三维模型序列。
在该三维动画包括多个物体的三维模型时,待解压三维模型还包括待解压三维对应的物体标识。如果待解压三维模型是终端设备首次接收的该物体的参考三维模型,则保存包括待解压三维模型的参考三维模型序列,该参考三维模型序列与待解压三维模型中的物体标识相对应,如果待解压三维模型不是终端首次接收的该物体的参考三维模型,则表示终端设备已保存该物体的参考三维模型序列,基于待解压三维模型包括的该物体的特体标识,将待解压三维模型添加到该物体标识对应的参考三维模型序列。
在上述第一情况下,终端设备还接收服务器发送的该物体的面信息。在实现时,接收服务器发送的数据包。在该三维动画包括一个物体的三维模型时,该数据包包括该物体的面信息,保存该物体的面信息。在该三维动画包括多个物体的三维模型时,该数据包包括物体标识和面信息的对应关系,该对应关系包括每个物体的物体标识和面信息,保存该对应关系。
综上所述,在三维动画包括一个物体的情况下,终端设备包括一个参考三维模型序列,该参考三维模型序列为该物体对应的参考三维模型序列,终端设备包括一个物体的面信息。在三维动画包括多个物体的情况下,终端设备包括多个参考三维模型序列,每个参考三维模型序列对应不同的物体标识,以及终端设备包括每个物体的物体标识和面信息。
在一些实施例中,在将待解压三维模型作为参考三维模型并添加到参考三维模型序列后,在该参考三维模型序列包括的参考三维模型个数超过指定个数阈值,还从该参考三维模型序列中删除最久未使用的参考三维模型。
在一些实施例中,在待解压三维模型为参考三维模型时,终端设备基于待解压三维模型对应的物体的面信息,渲染待解压三维模型。
在上述第二情况下,设备获取到三维动画的压缩包,从该压缩包中获取被压缩的三维模型的压缩数据,作为待解压三维模型的压缩数据。该设备可以为服务器或终端设备等。
在该待解压三维模型是一个参考三维模型时,从该压缩包中重新获取被压缩的三维模型的压缩数据,作为待解压三维模型的压缩数据。在该待解压三维模型是一个非参考三维模型时,执行如下步骤802的操作。
该压缩包还包括三维动画中的物体的面信息和该物体对应的参考三维模型序列,该参考三维模型序列包括该物体对应的每个参考三维模型。
在该待解压三维模型是一个参考三维模型时,设备还从该压缩包中获取该待解压三维模型对应的物体的面信息,基于该面信息,渲染待解压三维模型。
在待解压三维模型是参考三维模型时,如果该压缩包中的待解压三维模型是经过无损压缩的参考三维模型,则设备对待解压三维模型进行无损解压,再基于该面信息渲染无损解压的待解压三维模型。
在待解压三维模型是非参考三维模型时,如果该压缩包中的待解压三维模型的压缩数据经过无损压缩,则设备还对待解压三维模型的压缩数据进行无损解压,然后执行步骤802的操作。
步骤802:基于该参考三维模型的帧号,获取该参考三维模型。
在上述第一种情况下,当三维动画包括一个物体的三维模型时,终端设备包括一个参考三维模型序列,且该参考三维模型序列为该物体对应的参考三维模型序列。基于该参考三维模型的帧号,从该参考三维模型序列中获取对应的参考三维模型。
当三维动画包括多个物体的三维模型时,终端设备包括多个参考三维模型序列,每个参考三维模型序列对应不同的物体标识。待解压三维模型的压缩数据还包括待解压三维模型属于的物体的物体标识,基于该物体标识,获取该物体标识对应的参考三维模型序列,基于该参考三维模型的帧号,从该参考三维模型序列中获取对应的参考三维模型。
在上述第二种情况下,当三维动画包括一个物体的三维模型时,三维动画的压缩包包括一个参考三维模型序列,且该参考三维模型序列为该物体对应的参考三维模型序列。基于该参考三维模型的帧号,从该压缩包中的该参考三维模型序列中获取对应的参考三维模型。
当三维动画包括多个物体的三维模型时,该三维动画的压缩包包括多个参考三维模型序列,每个参考三维模型序列对应不同的物体标识。待解压三维模型的压缩数据还包括待解压三维模型属于的物体的物体标识,基于该物体标识,从该压缩包中获取该物体标识对应的参考三维模型序列,基于该参考三维模型的帧号,从该参考三维模型序列中获取对应的参考三维模型。
步骤803:基于该参考三维模型和该残差数据,获取待解压三维模型。
在步骤803中,可以通过如下8031-8032的操作,获取待解压三维模型。该8031-8032的操作分别为:
8031:基于该残差数据获取至少一个三维顶点,该至少一个三维顶点包括第一三维顶点,待解压三维模型中的第一三维顶点的第一顶点信息和该参考三维模型中的第一三维顶点的第二顶点信息不同。该至少一个三维顶点就是相比参考三维模型,待解压三维模型中顶点信息发生变化的三维顶点。
残差数据用于指示该至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,其中,第一三维顶点的残差用于指示第一顶点信息。
在图3所示方法300中介绍了第一种形式和第二种形式的残差数据。
对于上述第一种形式的残差数据,该残差数据包括序号与残差的对应关系,该序号与残差的对应关系用于保存该至少一个三维顶点中的每个三维顶点的序号和残差。
在第一种形式的残差数据中,每个三维顶点的残差分别包括每个三维顶点的顶点信息。因此,从该残差数据包括的序号与残差的对应关系中,获取该每个三维顶点的序号和顶点信息,从而得到该至少一个三维顶点。
对于上述第二种形式的残差数据,该残差数据包括位图和残差序列,该残差序列包括该至少一个三维项点中的每个三维顶点的残差,该位图包括待解压三维模型中的每个三维顶点对应的顶点字段,该至少一个三维顶点包括第一三维顶点,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。在一些实施例中,第一三维顶点对应的顶点字段还用于第一三维顶点的残差数据量。
这样设备可以从该位图中获取该至少一个三维顶点中的任一个三维顶点对应的序号和顶点字段,基于该顶点字段,从残差序列中获取该三维顶点的残差,基于该残差,获取该三维顶点的顶点信息。重复上述获取过程,得到该至少一个三维顶点中的每个三维顶点的序号和顶点信息,从而得到该至少一个三维顶点。
在第二种形式的残差数据中,三维顶点的残差有如下第一种类型、第二种类型和第三种类型,接下来详细说明在该三种类型下,获取该至少一个三维顶点的序号和顶点信息的过程。
第一种类型,第一三维顶点的残差包括第一三维顶点的第一顶点信息。参见图5,该残差序列包括该至少一个三维顶点中的每个三维顶点的顶点信息,位图包括待解压三维模型中的每个三维顶点对应的顶点字段,每个顶点字段包括a个比特,a为大于或等于1的整数。
在操作8031中,基于数值a,在该位图中确定待解压三维模型中的每个三维顶点对应的顶点字段,确定的每个顶点字段包括a个比特。从该位图的第一个顶点字段开始依次解析该位图中的每个顶点字段,当首次解析到包括第一指示信息的顶点字段时,获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。从残差序列中读取第一个顶点信息,得到该三维顶点的顶点信息,并记录读取结束位置,该读取结束位置为第一个顶点信息的结束存储位置,也是第二个顶点信息的起始存储位置。在一些实施例中,第一指示信息为大于0的数值。
继续在该位图中解析下一个顶点字段,当再次解析到包括第一指示信息的顶点字段时,获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。在残差序列中,从记录的上一次读取结束位置处读取一个顶点信息,得到该三维顶点的顶点信息,将记录的读取结束位置更新为该三维顶点的顶点信息的结束存储位置。重复上述操作,直至解析完该位图中的每个顶点字段。
例如,参见图5,a=1,每个三维顶点的顶点字段包括一个比特。从该位图的第一比特开始解析,首次解析到第二个比特包括数值“1”的第一指示信息,获取第二个比特在该位图中的序号2,得到第二个比特对应的第二个三维顶点的序号2。从残差序列中读取第一个顶点信息,得到该第二个三维顶点的顶点信息,并记录该读取结束位置1。在该位图中解析第三个比特,第三个比特包括数值“0”的第二指示信息。继续在该位图中解析第四个比特,解析到包括数值“1”的第一指示信息,获取第四个比特在该位图中的序号4,得到第四个比特对应的第四个三维顶点的序号4。在残差序列中,从记录的读取结束位置1处读取一个顶点信息,得到第四个三维顶点的顶点信息,将记录的读取结束位置1更新为读取结束位置2。重复上述操作,直至解析完该位图中的每个顶点字段。
第二种类型,第一三维顶点的残差包括第一坐标分量对应的差值,该差值是第一坐标分量和第二坐标分量之间的差值,该差值与第一坐标分量相对应,第一坐标分量是第一坐标中的坐标分量,第二坐标分量是第二坐标中的坐标分量,第一坐标分量和第二坐标分量是相同类型的分量,且第一坐标分量和第二坐标分量不同,第一坐标是待解压三维模型中的第一三维顶点的坐标,第二坐标是该参考三维模型中的第一三维顶点的坐标。其中,第一三维顶点的残差包括一个或多个坐标分量对应的差值,每个坐标分量对应的差值的数据量大小相等,均为w个字节。
参见图6,对于位图中的第一三维顶点对应的顶点字段,该顶点字段包括每个坐标分量对应的子字段,每个坐标分量对应的子字段包括a个比特,a为大于或等于1的整数,第一三维顶点对应的顶点字段包括3a个比特。该残差序列包括该至少一个三维顶点中的每个三维顶点的一个或多个坐标分量对应的差值。
在操作8031中,可以通过如下11-18的操作,获取该每个三维顶点的顶点信息。该11-18的操作分别为:
11:基于数值3a,在该位图中确定待解压三维模型中的每个三维顶点对应的顶点字段,确定的每个顶点字段包括3a个比特。
例如,参见图6,a=1,每个三维顶点的顶点字段包括3个比特。在图6所示的位图起始位置开始,将连续的三个比特划分为一个顶点字段,从而得到待解压三维模型中的每个三维顶点对应的顶点字段。
12:从该位图中的第一个顶点字段开始依次解析该位图中的每个顶点字段,当首次解析到包括Q个第一指示信息的顶点字段时,Q为大于或等于1且小于或等于3的整数,该Q个第一指示信息分别与Q个坐标分量一一对应。
例如,从图6所示的位图的第一顶点字段开始依次解析每个顶点字段,首次解析到第二个顶点字段包括两个数值“1”的第一指示信息,两个第一指示信息分别为纵坐标对应的第一指示信息和竖坐标对应的第一指示信息。
13:获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。
其中,该顶点字段包括三个子字段,每个子字段对应不同的坐标分量,在某个坐标分量对应的子字段包括第一指示信息时,该残差序列包括该坐标分量对应的差值,分量类型可以为横坐标、纵坐标和竖坐标。
例如,获取第二个顶点字段在该位图中的序号2,得到第二个顶点字段对应的第二个三维顶点的序号2。
14:从残差序列的起始位置处读取Q个差值,每个差值包括w个字节,从而得到该Q个坐标分量中的每个坐标分量对应的差值,并记录该读取结束位置,该读取结束位置是该Q个差值的存储结束位置。
例如,从如图6所示的残差序列的起始位置处读取两个差值,该两个差值分别为纵坐标对应的差值“-1.49609375”和竖坐标对应的差值“0.0599365234275”,并记录读取结束位置1。
15:基于该三维顶点的序号,从该参考三维模型中获取该三维顶点对应的三个第二坐标分量,该三个第二坐标分量包括第二横坐标、第二纵坐标和第二竖坐标。
例如,假设,基于第二个三维顶点的序号2,从参考三维模型中读取第二个三维顶点对应的第二横坐标x21,第二纵坐标y21和第二竖坐标z21,其中,x21=3.6339721679688,y21=5.7509765625,z21=6.7249755859375。
16:基于Q个第二坐标分量和该Q个差值,获取Q个第一坐标分量,该Q个第二坐标分量与该Q个差值一一对应。对于该三个第二坐标分量中除该Q个第二坐标分量之外的其他第二坐标分量,将该其他第二坐标分量和Q个第一坐标分量组成该三维顶点的顶点信息。
例如,基于第二纵坐标y21“5.7509765625”和第二纵坐标y21对应的差值“-1.49609375”,获取第一纵坐标y11为“4.2548828125”,基于第二竖坐标z21“6.7249755859375”和第二竖坐标z21对应的差值“0.0599365234275”,获取第一竖坐标z11为“6.784912109375”,将第二横坐标x21“3.6339721679688”作为第一横坐标x11,如此得到第二个三维顶点的顶点信息,该顶点信息包括第一横坐标x11为“3.6339721679688”,第一纵坐标y11为“4.2548828125”和第一竖坐标z11为“6.784912109375”。
17:继续在该位图中解析下一个顶点字段,当再次解析到包括Q个第一指示信息的顶点字段时,获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。
18:在残差序列中,从记录的读取结束位置处读取Q个差值,每个差值包括w个字节,从而得到该Q个坐标分量中的每个坐标分量对应的差值,将记录的读取结束位置更新为该Q个差值的存储结束位置,返回执行操作15。
重复上述15-18的操作,直至解析完该位图中的每个顶点字段时为止。
第三种类型,第一三维顶点的残差包括第一坐标分量对应的异或值,该异或值是第一坐标分量的第j至w个字段和第二坐标分量的第j至w个字段之间的异或值,该异或值与第一坐标分量相对应,j为大于或等于1且小于或等于w的整数。第一坐标分量是第一坐标中的坐标分量,第二坐标分量是第二坐标中的坐标分量,第一坐标分量和第二坐标分量是相同类型的分量,且第一坐标分量和第二坐标分量不同,第一坐标是待解压三维模型中的第一三维顶点的坐标,第二坐标是该参考三维模型中的第一三维顶点的坐标。其中,第一三维顶点的残差包括一个或多个坐标分量对应的异或值,每个坐标分量对应的异或值的数据量大小可能相等,也可能不相等。
参见图7,对于位图中的第一三维顶点对应的顶点字段,该顶点字段包括每个坐标分量对应的子字段,每个坐标分量对应的子字段包括a个比特,a为大于或等于1的整数,第一三维顶点对应的顶点字段包括3a个比特。该残差序列包括该至少一个三维顶点中的每个三维顶点的一个或多个坐标分量对应的异或值。
在操作8031中,可以通过如下21-28的操作,获取该每个三维顶点的顶点信息。该21-28的操作分别为:
21:基于数值3a,在该位图中确定待解压三维模型中的每个三维顶点对应的顶点字段,确定的每个顶点字段包括3a个比特。
例如,参见图7,a=2,每个三维顶点的顶点字段包括6个比特。在图7所示的位图起始位置开始,将连续的六个比特划分为一个顶点字段,从而得到待解压三维模型中的每个三维顶点对应的顶点字段。
22:从该位图中的第一个顶点字段开始依次解析每个顶点字段,当首次解析到包括Q个第一指示信息的顶点字段时,Q为大于或等于1的整数,该Q个第一指示信息分别与Q个坐标分量一一对应。
例如,从图7所示的位图的第一顶点字段开始解析,首次解析到第二个顶点字段包括两个第一指示信息,两个第一指示信息分别为纵坐标对应的第一指示信息“10”和竖坐标对应的第一指示信息“10”。
23:获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。
其中,该顶点字段包括三个子字段,每个子字段对应不同的坐标分量,在某个坐标分量对应的子字段包括第一指示信息时,该残差序列包括该坐标分量对应的差值,该坐标分量对应的差值数据量大小等于该第一指示信息指示的数据量大小,该分量类型可以为横坐标、纵坐标或竖坐标。
例如,获取第二个顶点字段在该位图中的序号2,得到第二个顶点字段对应的第二个三维顶点的序号2。
24:基于该Q个第一指示信息,从残差序列的起始位置处读取Q个异或值,从而得到该Q个坐标分量中的每个坐标分量对应的异或值,并记录该读取结束位置,该读取结束位置是该Q个异或值的存储结束位置。
该Q个第一指示信息与该Q个异或值一一对应,对于任一个第一指示信息,以及对于该第一指示信息对应的异或值,该第一指示信息指示的数据量大小等于该异或值的数据量大小,即该第一指示信息指示的字节数等于该异或值包括的字节数。
对于第一个第一指示信息,基于第一个第一指示信息指示的数据量,从残差序列的起始位置读取第一个第一指示信息对应的异或值,该异或值与第一个第一指示信息对应的坐标分量相对应。对于第二个第一指示信息,基于第二个第一指示信息指示的数据量,从残差序列中继续读取第二个第一指示信息对应的异或值,该异或值与第二个第一指示信息对应的坐标分量相对应。……,对于第Q个第一指示信息,基于第Q个第一指示信息指示的数据量,从残差序列的起始位置读取第Q个第一指示信息对应的异或值,该异或值与第Q个第一指示信息对应的坐标分量相对应。
例如,纵坐标对应的第一指示信息“10”,表示该第一指示信息对应的异或值的数据量为2个字节,从如图7所示的残差序列的起始位置处读取2个字节的数据,得到纵坐标对应的异或值21“00110000,00100000”;竖坐标对应的第一指示信息“10”,表示该第一指示信息对应的异或值的数据量为2个字节,从如图7所示的残差序列中继续读取2个字节的数据,得到竖坐标对应的异或值22“00001110,00101101”,并记录读取结束位置1。
在操作23中,基于w和每个坐标分量对应的第一指示信息,确定每个坐标分量对应的数值j,w为待解压三维模型中的每个坐标分量的数据量。
例如,假设待解压三维模型中的每个坐标分量的数据量为3个字节,即w=3。其中,纵坐标对应的第一指示信息“10”,即第一指示信息为2,从而基于第一指示信息“2”和w(3)可以确定纵坐标对应的j=2。竖坐标对应的第一指示信息“10”,即第一指示信息为2,从而基于第一指示信息“2”和w(3)可以确定竖坐标对应的j=2。
25:基于该三维顶点的序号,从该参考三维模型中获取该三维顶点对应的三个第二坐标分量,该三个第二坐标分量包括第二横坐标、第二纵坐标和第二竖坐标。
例如,基于第二个三维顶点的序号2,从参考三维模型中读取第二个三维顶点对应的第二横坐标x21,第二纵坐标y21和第二竖坐标z21。x21、y21、z21如下所示。
x21=01000000,01101000,10010011,y21=01000000,10111000,00001000,z21=01000000,11010111,00110011。
26:基于Q个第二坐标分量和该Q个异或值,获取Q个第一坐标分量,该Q个第二坐标分量与该Q个异或值一一对应。对于该三个坐标分量中除该Q个第二坐标分量之外的其他第二坐标分量,将该其他第二坐标分量和Q个第一坐标分量组成该三维顶点的顶点信息。
在操作26中,对于上述Q个坐标分量中的任一个坐标分量对应的数值j,获取与该坐标分量的类型相同的第二坐标分量,以及该坐标分量对应的异或值,将该第二坐标分量的第j至w个字节和该异或值进行异或运算,得到第一坐标分量。
例如,对于纵坐标对应的数值j=2,将第二纵坐标y21“01000000,10111000,00001000”中的第2至3个字节和纵坐标对应的异或值21“00110000,00100000”进行异或运算,得到第一纵坐标y11为“01000000,10001000,00101000”,对于竖坐标对应的数值j=2,将第二竖坐标z21“01000000,11010111,00110011”中的第2至3个字节和竖坐标对应的异或值22“00001110,00101101”进行异或运算,得到第一竖坐标z11为“01000000,11011001,00011110”。将第二横坐标x21“00000011,00000110,00000011”作为第一横坐标x11,如此得到第二个三维顶点的顶点信息,该顶点信息包括第一横坐标x11,第一纵坐标y11和第一竖坐标z11。
27:继续在该位图中解析下一个顶点字段,当再次解析到包括Q个第一指示信息的顶点字段时,获取该顶点字段在该位图中的序号,得到该顶点字段对应的三维顶点的序号。
28:在残差序列中,从记录的读取结束位置处读取Q个差值,从而得到该Q个坐标分量中的每个坐标分量对应的差值,并将记录读取结束位置更新为该Q个差值的存储结束位置,返回执行操作25。
重复上述25-28的操作,直至解析完该位图中的每个顶点字段时为止。
8032:从该参考三维模型中获取除至少一个三维顶点之外的其他三维顶点,待解压三维模型包括至少一个三维顶点和获取的其他三维顶点。
在上述8031中,获取到至少一个三维顶点中的每个三维顶点的序号和顶点信息,这样基于该每个三维顶点的序号,从该参考三维模型中确定该每个三维顶点,从该参考三维模型中获取除该每个三维顶点之外的其他三维顶点。
在一些实施例中,如果在压缩三维模型时将三维顶点的每个坐标分量的部分字节的值设置为0,假设将每个坐标分量的最低h个字节的值设置为0,则在解压出三维顶点的每个坐标分量时,还需要在解压的每个坐标分量中补充h个字节,补充的每个字节的取值均为0。补充后的每个坐标分量的长度等于渲染三维模型定义的坐标分量长度。
例如,假设渲染三维模型定义的坐标分量长度为四个字节,对于解压出的上述三维顶点的坐标(x11、y11、z11),该坐标中的每个坐标分量包括三个字节,在每个坐标分量补充一个字节,该一个字节的取值均为0,补充后的x11、y11、z11均包括四个字节,分别如下所示:
x11=01000000,01101000,10010011,00000000,y11=01000000,10001000,00101000,00000000,z11=01000000,11011001,00011110,00000000。
在本申请实施例中,由于待解压三维模型的压缩数据包括的帧号获取参考三维模型,基于参考三维模型和该残差数据,获取待解压三维模型,如此在解压侧能够成功地将三维模型压缩的压缩数据进行解压,从而在压缩侧能够将三维模型压缩成压缩数据,而压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待解压三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待解压三维模型之间的差异信息,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。
参见图9,本申请实施例提供了一种处理数据的装置900,所述装置900可以部署在图2所示网络架构200中的服务器或终端设备上,或者可以部署在图3方法300中的设备上,包括:
获取单元901,用于获取参考三维模型,参考三维模型与待压缩三维模型之间的相似度满足指定条件,参考三维模型和待压缩三维模型是同一物体在三维动画的不同帧中的模型;
处理单元902,用于基于参考三维模型获取待压缩三维模型的压缩数据,该压缩数据包括参考三维模型对应的帧号和残差数据,该残差数据用于指示参考三维模型与待压缩三维模型之间的差异。
可选的,获取单元901获取参考三维模型的详细实现过程,可以参见图3所示方法300的步骤302中的相关内容,在此不再详细说明。
可选的,处理单元902获取待压缩三维模型的压缩数据的详细实现过程,可以参见图3所示方法300的步骤303中的相关内容,在此不再详细说明。
可选的,处理单元302,用于:
基于待压缩三维模型和参考三维模型,获取至少一个三维顶点中的每个三维顶点的残差;
其中,至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的第一顶点信息和参考三维模型中的第一三维顶点的第二顶点信息不同,第一三维顶点的残差用于指示第一顶点信息,残差数据用于指示每个三维顶点和每个三维顶点的残差。
可选的,处理单元902获取至少一个三维顶点中的每个三维顶点的残差的详细实现过程,可以参见图3所示方法300的步骤303中的相关内容,在此不再详细说明。
可选的,第一三维顶点的残差包括第一顶点信息,或者,第一顶点信息和第二顶点信息之间的差异信息。
可选的,残差数据包括位图和残差序列,残差序列包括每个三维顶点的残差,位图包括待压缩三维模型中的每个三维顶点对应的顶点字段,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。
可选的,获取单元901,用于:
获取待压缩三维模型与所述物体对应的参考三维模型序列中的多个参考三维模型之间的相似度,该多个参考三维模型是物体在所述三维动画的不同帧中的模型;
选择与待压缩三维模型之间的相似度满足指定条件的参考三维模型。
可选的,获取单元901获取相似度的详细实现过程,可以参见图3所示方法300的3021-3022中的相关内容,在此不再详细说明。
可选的,获取单元901选择参考三维模型的详细实现过程,可以参见图3所示方法300的3023中的相关内容,在此不再详细说明。
可选的,获取单元901,用于:
基于待压缩三维模型和参考三维模型,获取至少一个三维顶点,至少一个三维顶点包括第一三维顶点,待压缩三维模型中的第一三维顶点的顶点信息和参考三维模型中的第一三维顶点的顶点信息不同;
基于至少一个三维顶点和待压缩三维模型,获取待压缩三维模型和参考三维模型之间的相似度。
可选的,获取单元901获取至少一个三维顶点的详细实现过程,可以参见图3所示方法300的3022中的操作(1)中的相关内容,在此不再详细说明。
可选的,获取单元901获取相似度的详细实现过程,可以参见图3所示方法300的3022中的操作(2)中的相关内容,在此不再详细说明。
可选的,第一三维顶点的顶点信息包括第一三维顶点的位置信息。
可选的,压缩数据还包括待压缩三维模型对应的帧号和/或物体的物体标识。
可选的,三维动画包括三维游戏。
在本申请实施例中,获取单元获取参考三维模型。处理单元基于参考三维模型获取待压缩三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据。由于基于参考三维模型获取待压缩三维模型的压缩数据,压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待压缩三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待压缩三维模型之间的差异信息,而参考三维模型和待压缩三维模型之间的相似度满足指定条件,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。
参见图10,本申请实施例提供了一种处理数据的装置1000,所述装置1000可以部署在图2所示网络架构200中的服务器或终端设备上,或者可以部署在图8所示方法800中的设备上,包括:
获取单元1001,用于获取待解压三维模型的压缩数据,该压缩数据包括参考三维模型对应的帧号和残差数据,参考三维模型与待解压三维模型之间的相似度满足指定条件,参考三维模型和待解压三维模型是同一物体在三维动画的不同帧中的模型;
处理单元1002,用于基于该帧号获取参考三维模型;基于参考三维模型和残差数据,获取待解压三维模型。
可选的,获取单元1001获取压缩数据的详细实现过程,可以参见图8所示方法800的801中的相关内容,在此不再详细说明。
可选的,处理单元1002获取待解压三维模型的详细实现过程,可以参见图8所示方法800的802-803中的相关内容,在此不再详细说明。
可选的,该残差数据用于指示至少一个三维顶点中的每个三维顶点和每个三维顶点的残差,该至少一个三维顶点包括第一三维顶点,待解压三维模型中的第一三维顶点的第一顶点信息和参考三维模型中的第一三维顶点的第二顶点信息不同,第一三维顶点的残差用于指示第一顶点信息。
可选的,第一三维顶点的残差包括第一顶点信息,或者,第一顶点信息和第二顶点信息之间的差异信息。
可选的,该残差数据包括位图和残差序列,残差序列包括每个三维顶点的残差,位图包括待解压三维模型中的每个三维顶点对应的顶点字段,第一三维顶点对应的顶点字段用于指示第一三维顶点的残差在残差序列中的位置。
可选的,处理单元1002,用于:
基于残差数据获取至少一个三维顶点;
从参考三维模型中获取除至少一个三维顶点之外的其他三维顶点,待解压三维模型包括至少一个三维顶点和获取的其他三维顶点。
可选的,处理单元1002获取至少一个三维顶点的详细实现过程,可以参见图8所示方法800的8031中的相关内容,在此不再详细说明。
可选的,处理单元1002获取其他三维顶点的详细实现过程,可以参见图8所示方法800的8032中的相关内容,在此不再详细说明。
可选的,三维动画包括三维游戏。
在本申请实施例中,获取单元获取待解压三维模型的压缩数据,处理单元基于该帧号获取参考三维模型;基于参考三维模型和该残差数据,获取待解压三维模型。由于待解压三维模型的压缩数据包括的帧号获取参考三维模型,处理单元基于参考三维模型和该残差数据,获取待解压三维模型,如此在解压侧能够成功地将三维模型压缩的压缩数据进行解压,从而在压缩侧能够将三维模型压缩成压缩数据,而压缩数据包括参考三维模型对应的帧号和残差数据,残差数据用于指示参考三维模型与待解压三维模型之间的差异,也就是说,压缩数据包括参考三维模型与待解压三维模型之间的差异信息,这样使得该差异信息的数据量较小,即使得压缩数据的数据量较小,从而提高了压缩数据的压缩率。如此在传输该压缩数据时可以减小传输压缩数据所需要的带宽资源,在存储该压缩数据时可以减小所需要的存储资源。
参见图11,本申请实施例提供了一种处理数据的装置1100示意图。该装置1100可以是图2所示网络架构200中的服务器或终端设备上,或者可以是图3方法300中的设备。该装置1100包括至少一个处理器1101,内部连接1102和存储器1103。
该装置1100是一种硬件结构的装置,可以用于实现图9所述的装置900中的功能模块。例如,本领域技术人员可以想到图9所示的装置900中的获取单元901和处理单元902可以通过该至少一个处理器1101调用存储器1103中的代码来实现。
可选的,该装置1100还包括收发器1104。
可选的,该装置1100还可用于实现上述任一实施例中服务器或终端设备的功能。
可选的,上述处理器1101可以是一个GPU,通用中央处理器(central processingunit,CPU),网络处理器(network processor,NP),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
上述内部连接1102可包括一通路,在上述组件之间传送信息。可选的,内部连接1102为单板或总线等。
上述收发器1104,用于与其他设备或通信网络通信。
上述存储器1103可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1103用于存储执行本申请方案的应用程序代码,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的应用程序代码,以及配合至少一个收发器1104,从而使得该装置1100实现本专利方法中的功能。
在具体实现中,作为一种实施例,处理器1101可以包括一个或多个CPU,例如图11中的CPU0和CPU1。
在具体实现中,作为一种实施例,该装置1100可以包括多个处理器,例如图11中的处理器1101和处理器1107。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
参见图12,本申请实施例提供了一种处理数据的装置1200示意图。该装置1200可以是图2所示网络架构200中的服务器或终端设备上,或者可以是图8方法800中的设备。该装置1200包括至少一个处理器1201,内部连接1202和存储器1203。
该装置1200是一种硬件结构的装置,可以用于实现图10所述的装置1000中的功能模块。例如,本领域技术人员可以想到图10所示的装置1000中的获取单元1001和处理单元1002可以通过该至少一个处理器1201调用存储器1203中的代码来实现。
可选的,该装置1200还包括收发器1204。
可选的,该装置1200还可用于实现上述任一实施例中服务器或终端设备的功能。
可选的,上述处理器1201可以是一个GPU,通用中央处理器(central processingunit,CPU),网络处理器(network processor,NP),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
上述内部连接1202可包括一通路,在上述组件之间传送信息。可选的,内部连接1202为单板或总线等。
上述收发器1204,用于与其他设备或通信网络通信。
上述存储器1203可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1203用于存储执行本申请方案的应用程序代码,并由处理器1201来控制执行。处理器1201用于执行存储器1203中存储的应用程序代码,以及配合至少一个收发器1204,从而使得该装置1200实现本专利方法中的功能。
在具体实现中,作为一种实施例,处理器1201可以包括一个或多个CPU,例如图12中的CPU0和CPU1。
在具体实现中,作为一种实施例,该装置1200可以包括多个处理器,例如图12中的处理器1201和处理器1207。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
参见图13,本申请实施例提供了一种处理数据的系统1300,所述系统包括压缩数据的装置1301和解压数据的装置1302。压缩数据的装置1301可以是如图9所示的装置900或如图11所示的压缩数据的装置1100,解压数据的装置1302可以是如图10所示的装置1000或如图12所示的压缩数据的装置1200。
可选的,压缩数据的装置1301为服务器,解压数据的装置1302为终端设备。或者,压缩数据的装置1301为终端设备,解压数据的装置1302为服务器。或者,压缩数据的装置1301和解压数据的装置1302部署在服务器或终端设备上。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (33)

1.一种处理数据的方法,其特征在于,所述方法包括:
获取参考三维模型,所述参考三维模型与待压缩三维模型之间的相似度满足指定条件,所述参考三维模型和所述待压缩三维模型是同一物体在三维动画的不同帧中的模型;
基于所述参考三维模型获取所述待压缩三维模型的压缩数据,所述压缩数据包括所述参考三维模型对应的帧号和残差数据,所述残差数据用于指示所述参考三维模型与所述待压缩三维模型之间的差异。
2.如权利要求1所述的方法,其特征在于,所述基于所述参考三维模型获取所述待压缩三维模型的压缩数据,包括:
基于所述待压缩三维模型和所述参考三维模型,获取至少一个三维顶点中的每个三维顶点的残差;
其中,所述至少一个三维顶点包括第一三维顶点,所述待压缩三维模型中的所述第一三维顶点的第一顶点信息和所述参考三维模型中的所述第一三维顶点的第二顶点信息不同,所述第一三维顶点的残差用于指示所述第一顶点信息,所述残差数据用于指示所述每个三维顶点和所述每个三维顶点的残差。
3.如权利要求2所述的方法,其特征在于,所述第一三维顶点的残差包括所述第一顶点信息,或者,所述第一顶点信息和所述第二顶点信息之间的差异信息。
4.如权利要求2或3所述的方法,其特征在于,所述残差数据包括位图和残差序列,所述残差序列包括所述每个三维顶点的残差,所述位图包括所述待压缩三维模型中的每个三维顶点对应的顶点字段,所述第一三维顶点对应的顶点字段用于指示所述第一三维顶点的残差在所述残差序列中的位置。
5.如权利要求1-4任一项所述的方法,其特征在于,所述获取参考三维模型,包括:
获取所述待压缩三维模型与所述物体对应的参考三维模型序列中的多个参考三维模型之间的相似度,所述多个参考三维模型是所述物体在所述三维动画的不同帧中的模型;
选择与所述待压缩三维模型之间的相似度满足指定条件的参考三维模型。
6.如权利要求5所述的方法,其特征在于,所述获取所述待压缩三维模型与所述物体对应的参考三维模型序列中的每个参考三维模型之间的相似度,包括:
基于所述待压缩三维模型和所述参考三维模型,获取至少一个三维顶点,所述至少一个三维顶点包括第一三维顶点,所述待压缩三维模型中的所述第一三维顶点的顶点信息和所述参考三维模型中的所述第一三维顶点的顶点信息不同;
基于所述至少一个三维顶点和所述待压缩三维模型,获取所述待压缩三维模型和所述参考三维模型之间的相似度。
7.如权利要求6所述的方法,其特征在于,所述第一三维顶点的顶点信息包括所述第一三维顶点的位置信息。
8.如权利要求1-7任一项所述的方法,其特征在于,所述压缩数据还包括所述待压缩三维模型对应的帧号和/或所述物体的物体标识。
9.如权利要求1-8任一项所述的方法,其特征在于,所述三维动画包括三维游戏。
10.一种处理数据的方法,其特征在于,所述方法包括:
获取待解压三维模型的压缩数据,所述压缩数据包括参考三维模型对应的帧号和残差数据,所述参考三维模型与待解压三维模型之间的相似度满足指定条件,所述参考三维模型和所述待解压三维模型是同一物体在三维动画的不同帧中的模型;
基于所述帧号获取所述参考三维模型;
基于所述参考三维模型和所述残差数据,获取所述待解压三维模型。
11.如权利要求10所述的方法,其特征在于,所述残差数据用于指示至少一个三维顶点中的每个三维顶点和所述每个三维顶点的残差,所述至少一个三维顶点包括第一三维顶点,所述待解压三维模型中的所述第一三维顶点的第一顶点信息和所述参考三维模型中的所述第一三维顶点的第二顶点信息不同,所述第一三维顶点的残差用于指示所述第一顶点信息。
12.如权利要求11所述的方法,其特征在于,所述第一三维顶点的残差包括所述第一顶点信息,或者,所述第一顶点信息和所述第二顶点信息之间的差异信息。
13.如权利要求11或12所述的方法,其特征在于,所述残差数据包括位图和残差序列,所述残差序列包括所述每个三维顶点的残差,所述位图包括所述待解压三维模型中的每个三维顶点对应的顶点字段,所述第一三维顶点对应的顶点字段用于指示所述第一三维顶点的残差在所述残差序列中的位置。
14.如权利要求11-13任一项所述的方法,其特征在于,所述基于所述参考三维模型和所述残差数据,获取所述待解压三维模型,包括:
基于所述残差数据获取所述至少一个三维顶点;
从所述参考三维模型中获取除所述至少一个三维顶点之外的其他三维顶点,所述待解压三维模型包括所述至少一个三维顶点和所述获取的其他三维顶点。
15.如权利要求10-14任一项所述的方法,其特征在于,所述三维动画包括三维游戏。
16.一种处理数据的装置,其特征在于,所述装置包括:
获取单元,用于获取参考三维模型,所述参考三维模型与待压缩三维模型之间的相似度满足指定条件,所述参考三维模型和所述待压缩三维模型是同一物体在三维动画的不同帧中的模型;
处理单元,用于基于所述参考三维模型获取所述待压缩三维模型的压缩数据,所述压缩数据包括所述参考三维模型对应的帧号和残差数据,所述残差数据用于指示所述参考三维模型与所述待压缩三维模型之间的差异。
17.如权利要求16所述的装置,其特征在于,所述处理单元,用于:
基于所述待压缩三维模型和所述参考三维模型,获取至少一个三维顶点中的每个三维顶点的残差;
其中,所述至少一个三维顶点包括第一三维顶点,所述待压缩三维模型中的所述第一三维顶点的第一顶点信息和所述参考三维模型中的所述第一三维顶点的第二顶点信息不同,所述第一三维顶点的残差用于指示所述第一顶点信息,所述残差数据用于指示所述每个三维顶点和所述每个三维顶点的残差。
18.如权利要求17所述的装置,其特征在于,所述第一三维顶点的残差包括所述第一顶点信息,或者,所述第一顶点信息和所述第二顶点信息之间的差异信息。
19.如权利要求17或18所述的装置,其特征在于,所述残差数据包括位图和残差序列,所述残差序列包括所述每个三维顶点的残差,所述位图包括所述待压缩三维模型中的每个三维顶点对应的顶点字段,所述第一三维顶点对应的顶点字段用于指示所述第一三维顶点的残差在所述残差序列中的位置。
20.如权利要求16-19任一项所述的装置,其特征在于,所述获取单元,用于:
获取所述待压缩三维模型与所述物体对应的参考三维模型序列中的多个参考三维模型之间的相似度,所述多个参考三维模型是所述物体在所述三维动画的不同帧中的模型;
选择与所述待压缩三维模型之间的相似度满足指定条件的参考三维模型。
21.如权利要求20所述的装置,其特征在于,所述获取单元,用于:
基于所述待压缩三维模型和所述参考三维模型,获取至少一个三维顶点,所述至少一个三维顶点包括第一三维顶点,所述待压缩三维模型中的所述第一三维顶点的顶点信息和所述参考三维模型中的所述第一三维顶点的顶点信息不同;
基于所述至少一个三维顶点和所述待压缩三维模型,获取所述待压缩三维模型和所述参考三维模型之间的相似度。
22.如权利要求21所述的装置,其特征在于,所述第一三维顶点的顶点信息包括所述第一三维顶点的位置信息。
23.如权利要求16-22任一项所述的装置,其特征在于,所述压缩数据还包括所述待压缩三维模型对应的帧号和/或所述物体的物体标识。
24.如权利要求16-23任一项所述的装置,其特征在于,所述三维动画包括三维游戏。
25.一种处理数据的装置,其特征在于,所述装置包括:
获取单元,用于获取待解压三维模型的压缩数据,所述压缩数据包括参考三维模型对应的帧号和残差数据,所述参考三维模型与待解压三维模型之间的相似度满足指定条件,所述参考三维模型和所述待解压三维模型是同一物体在三维动画的不同帧中的模型;
处理单元,用于基于所述帧号获取所述参考三维模型;基于所述参考三维模型和所述残差数据,获取所述待解压三维模型。
26.如权利要求25所述的装置,其特征在于,所述残差数据用于指示至少一个三维顶点中的每个三维顶点和所述每个三维顶点的残差,所述至少一个三维顶点包括第一三维顶点,所述待解压三维模型中的所述第一三维顶点的第一顶点信息和所述参考三维模型中的所述第一三维顶点的第二顶点信息不同,所述第一三维顶点的残差用于指示所述第一顶点信息。
27.如权利要求26所述的装置,其特征在于,所述第一三维顶点的残差包括所述第一顶点信息,或者,所述第一顶点信息和所述第二顶点信息之间的差异信息。
28.如权利要求26或27所述的装置,其特征在于,所述残差数据包括位图和残差序列,所述残差序列包括所述每个三维顶点的残差,所述位图包括所述待解压三维模型中的每个三维顶点对应的顶点字段,所述第一三维顶点对应的顶点字段用于指示所述第一三维顶点的残差在所述残差序列中的位置。
29.如权利要求26-28任一项所述的装置,其特征在于,所述处理单元,用于:
基于所述残差数据获取所述至少一个三维顶点;
从所述参考三维模型中获取除所述至少一个三维顶点之外的其他三维顶点,所述待解压三维模型包括所述至少一个三维顶点和所述获取的其他三维顶点。
30.如权利要求25-29任一项所述的装置,其特征在于,所述三维动画包括三维游戏。
31.一种处理数据的系统,其特征在于,所述系统包括:如权利要求16-24任一项所述的装置和如权利要求25-30任一项所述的装置。
32.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机执行时,实现如权利要求1-15任一项所述的方法。
33.一种计算机程序产品,其特征在于,所述计算机程序产品包括在计算机可读存储介质中存储的计算机程序,并且所述计算程序通过处理器进行加载来实现如权利要求1-15任一项所述的方法。
CN202111002126.9A 2021-08-30 2021-08-30 处理数据的方法、装置、系统及介质 Pending CN115731324A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111002126.9A CN115731324A (zh) 2021-08-30 2021-08-30 处理数据的方法、装置、系统及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111002126.9A CN115731324A (zh) 2021-08-30 2021-08-30 处理数据的方法、装置、系统及介质

Publications (1)

Publication Number Publication Date
CN115731324A true CN115731324A (zh) 2023-03-03

Family

ID=85290673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111002126.9A Pending CN115731324A (zh) 2021-08-30 2021-08-30 处理数据的方法、装置、系统及介质

Country Status (1)

Country Link
CN (1) CN115731324A (zh)

Similar Documents

Publication Publication Date Title
CN103329526B (zh) 运动图像分配服务器和控制方法
CN112933597B (zh) 图像处理方法、装置、计算机设备及存储介质
JP5792773B2 (ja) プログラム、情報処理装置及び制御方法
CN113457160B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
JP5306317B2 (ja) ベクトルを使用する画像処理
US20090202160A1 (en) Method for coding and decoding 3d data implemented as a mesh model
JP2000132704A (ja) 画像情報処理装置及び方法
CN111667544B (zh) 动画数据压缩方法、装置、设备及存储介质
JP2004234285A (ja) テクスチャ画像圧縮装置及び方法、テクスチャ画像抽出装置及び方法、データ構造、記憶媒体
CN113826029B (zh) 点云信息编码方法、装置、计算机设备及存储介质
CN113096198B (zh) 一种双向点云属性预测压缩方法,装置,设备及介质
KR20160059237A (ko) 텍스쳐 처리 방법 및 장치
CN113946402A (zh) 基于渲染分离的云手机加速方法、系统、设备及存储介质
US20100046847A1 (en) Vector-based image processing
Derzapf et al. Dependency‐free parallel progressive meshes
EP3836548A1 (en) Method and apparatus for compressing and decompressing 3d graphic data
CN117456079A (zh) 场景渲染方法、装置、设备、存储介质及程序产品
US6512515B1 (en) Data compression through motion and geometric relation estimation functions
CN115731324A (zh) 处理数据的方法、装置、系统及介质
CN112489203B (zh) 模型处理方法、模型处理装置、电子设备及存储介质
US11908062B2 (en) Efficient real-time shadow rendering
CN113961344A (zh) 资源处理方法及系统
Beacco et al. A flexible approach for output‐sensitive rendering of animated characters
CN114904274A (zh) 云游戏的画面渲染方法、装置、电子设备以及存储介质
KR101228118B1 (ko) 다각형 중요도에 기반을 둔 교차 검사 가속화 자료 구조 구성 방법

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