CN109872402A - 3d模型处理方法、装置、计算机设备和存储介质 - Google Patents

3d模型处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN109872402A
CN109872402A CN201910069991.1A CN201910069991A CN109872402A CN 109872402 A CN109872402 A CN 109872402A CN 201910069991 A CN201910069991 A CN 201910069991A CN 109872402 A CN109872402 A CN 109872402A
Authority
CN
China
Prior art keywords
vertex
data
index
vector
attribute
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.)
Granted
Application number
CN201910069991.1A
Other languages
English (en)
Other versions
CN109872402B (zh
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910069991.1A priority Critical patent/CN109872402B/zh
Publication of CN109872402A publication Critical patent/CN109872402A/zh
Application granted granted Critical
Publication of CN109872402B publication Critical patent/CN109872402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Abstract

本申请涉及一种3D模型处理方法、装置、计算机设备和存储介质,获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。如此,可以提高3D模型的处理效率。

Description

3D模型处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及图像处理领域,特别是涉及一种3D模型处理方法、装置、计算机设备和存储介质。
背景技术
随着视觉需求的不断提升,3D模型在图像处理领域的应用越来越广泛。3D模型处理过程中,顶点缓冲中包括大量的重复数据,因此,3D应用一般都会有一步关键的优化——顶点去重,以节省内存、磁盘、网络传输和GPU存储渲染开销,特别是对于大规模3D数据,此步骤不可或缺。
假设一3D模型包含300万面,如不作任何优化,其顶点将高达900万之巨,不作任何优化的前提下,模型顶点缓冲数据超过300M,而对于一个闭包模型,大部分顶点都会被多个三角形所共用,也就是说,不同三角面可能包含完全相同的顶点(所有属性值都相等),根据统计一般模型共用均值大概在2~3之间,也就是说超过一半以上顶点是重复的,对于300万面的模型,经去重优化后,可能会小于100M,可见去重优化对于3D模型处理过程中数据量的减少是必要的。
传统的3D模型处理方法,在对顶点进行去重时,可以采用冒泡比较去重法。冒泡比较去重法可以灵活去掉顶点的重复,但冒泡比较去重算法存在时间复杂度较高的问题,其最差时间复杂度为O((n2+n)/2)。在模型面数不可控的情况下,其处理时间将成指数上升,在相关应用中,如将模型导入到游戏引擎,或用户将模型传输到网上,而且用户通过浏览器WebGL(Web Graphics Library,一种3D绘图协议)进行预览,这个处理等待过程过长。
因此,传统的3D模型处理的处理效率有待进一步提高。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高处理效率的3D模型处理方法、装置、计算机设备和存储介质。
一种3D模型处理方法,所述方法包括:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
一种3D模型处理装置,所述装置包括:
数据获取模块,用于获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
缓冲构建模块,用于将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
缓冲更新模块,用于联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
目标数据确定模块,用于根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
上述3D模型处理方法、装置、计算机设备和存储介质,获取原始3D模型数据,原始3D模型数据包括顶点数据及索引数据;顶点数据的属性包括第一属性及后续属性;将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异;根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。由于在顶点去重的过程中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同,如此将时间复杂度被控制在O(n),在模型面数不可控的情况下,其处理时间呈线性增长,这个处理等待过程相较于呈指数增长的方式较短。从而,可以提高3D模型处理的处理效率。
附图说明
图1为一个实施例中3D模型处理方法的应用环境图示意图;
图2为一个实施例中3D模型处理方法的流程示意图;
图3为一具体实施例中的3D模型处理方法中一个椎体3D模型的整体示意图;
图4为图3的椎体3D模型中顶点的顶点位置的示意图;
图5为图3的椎体3D模型中顶点的顶点法线的示意图;
图6为图3的椎体3D模型中顶点的顶点纹理坐标的示意图;
图7为图2的3D模型处理方法的一个具体步骤的流程示意图;
图8为一个具体实施例中3D模型数据处理方法应用于在线资源网站场景的交互示意图;
图9为顶点缓冲构建时的一个顶点缓冲结构示意图;
图10为一个第二缓冲结构示意图;
图11为顶点缓冲更新过程中的一顶点缓冲结构示意图;
图12为一个示例中的3D模型图像;
图13为一个实施例中3D模型处理装置的结构框图;
图14为一个实施例中计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中3D模型处理方法的应用环境图示意图。该3D模型处理方法可以应用于在线3D模型资源网站。终端102与3D模型转换服务器104通过互联网通信连接。终端102上传原始3D模型数据至3D模型转换服务器104。3D模型转换服务器104获取原始3D模型数据,原始3D模型数据包括顶点数据及索引数据;顶点数据的属性包括第一属性及后续属性;将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及顶点数据和索引数据构建索引缓冲;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲;根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。
其中,终端102可以是台式设备或者移动终端。3D模型转换服务器可以是独立的物理服务器、物理服务器集群或者虚拟服务器。
如图2所示,在一个实施例中,提供了一种3D模型处理方法。该方法可以运行于图1中的3D模型转换服务器104,也可以运行于图1中的终端102。该3D模型处理方法,包括以下步骤:
S202,获取原始3D模型数据。
终端或3D模型转换服务器获取原始3D模型数据。获取原始3D模型数据的方式可以是在预设的存储位置读取到原始3D模型数据,还可以是接收原始3D模型数据。如,可以是终端在预设的存储位置读取到原始3D模型数据。又如,可以是3D模型转换服务器接收原始3D模型数据。原始3D模型数据为在对相同的顶点数据进行去重之前,每个顶点数据均包括各个属性的3D模型数据。其中,相同的顶点数据为顶点的每一个属性值都相同的顶点数据。原始3D模型数据包括顶点数据及索引数据。顶点数据的属性包括第一属性及后续属性,也即顶点数据的属性数量至少为2。第一属性是指顶点数据的第一个属性,后续属性只指顶点数据第一各属性之后的属性。索引数据为将顶点数据组成三角面的索引信息。
以一个椎体3D模型为例,假设有一个椎体3D模型,如图3所示,共38个面,114个顶点,假设每个顶点具有位置(position)、法线(normal)、纹理坐标(UV)、颜色(color)四种属性(element)。如图4所示,所有顶点一共有21个不同位置值(position):[P0,P1,P2,…,P19,P20]。如图5所示,椎体底面所有顶点(V0~V19)共享一个法线(0,0,-1),一共有22个不同法线值:[N0,N1,N2,…,N20,N21],设N0~N19为底边一周顶点侧面法线,N20为椎体顶部法线(0,0,1),N21为底面法线(0,0,-1)。椎体的纹理坐标分布如图6所示,一共44个不同的纹理坐标值:[U0,U1,U2,…,U42,U43]。其中,U41、U42、U43分别是与U38、U26、U34位置相同但纹理坐标值不同的三个纹理坐标值。
原始的3D模型数据,将所有面的顶点数据集合起来,如第一个面Face0,由顶点[V0,V1,V20]组成,各顶点数据如下:
V0:{P0,N0,U0,C0}
V1:{P1,N1,U1,C0}
V20:{P20,N20,U20,C0}
以此类推,所有面都由三个顶点构成,每个顶点对应的顶点数据都包含四个属性,所以整个椎体由38个面,即38条索引数据,114个顶点数据组成。
这些顶点数据如下:
[
{P0,N0,U0,C0},
{P1,N1,U1,C0},
{P20,N20,U20,C0},
{P1,N1,U1,C0},
{P2,N2,U2,C0},
{P20,N20,U20,C0},
{P17,N21,U41,C0},
{P5,N21,U42,C0},
{P13,N21,U43,C0}
]
通过索引数据表示哪些顶点数据对应的顶点构成三角形:
[
{0,1,2},
{3,4,5},
{111,112,113}
]
包括这些顶点数据及索引数据的原始3D模型数据,可以通过3D渲染接口如Direct3D或者OpenGL送入GPU(Graphics Processing Unit,图形处理器)进行模型渲染。其中,Direct3d是微软公司所制定的3D规格界面。OpenGL(OpenGraphics Library,开放图形库)是指定义了一个跨编程语言、跨平台的编程接口规格的图形程序接口。在此示例中,若不进行后续处理,则在3D模型数据的处理过程中,根据顶点数据建立的原始顶点缓冲的大小为4104B,根据索引数据建立的原始索引缓冲的大小为228B,该原始顶点缓冲中的顶点有大量重复,如V20被20个三角面所共用,因此在顶点缓冲中出现了20次,重复了19次,而且(V0~V19)也存在侧面底面共用的情况,也有重复发生。
S204,将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲。
终端或3D模型转换服务器将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲。顶点缓冲中的每个顶点向量用于记录一个顶点数据值。索引缓冲用于记录3D模型的各个面的顶点索引信息。顶点数据的第一属性可以为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性,当然,也可以为其它属性,如亮度、色相等。其中,顶点位置(position),可以简写为P加数字,表示某一特定位置值,如P0,表示顶点位置0。采用光滑组控制面之间是否共享法线,该顶点法线(normal),可以简写为N加数字,表示某一特定法线值,如N0,表示顶点法线0。顶点纹理可以通过顶点纹理坐标表示,顶点纹理坐标(uv),可以简写为U加数字,表示某一特定纹理坐标值,如U0,表示顶点纹理坐标0。顶点颜色(color),可以简写为C加数字,表示某一特定颜色值,如C0,表示顶点颜色0。
各顶点数据中相异的第一属性值是指属性值不同的第一属性的值。该第一属性值的数量是指第一属性值去重复后的数量,如两个顶点的第一属性值相同时,在计数时只计一次。当第一属性为顶点位置时,如图3所示,第一属性值的数量为21,此时,顶点缓冲中包括21个顶点向量。这21个顶点向量每个顶点向量包括N个元素,N的数量由顶点数据的属性数量决定。这21个顶点向量的第一个元素的值分别等于各顶点数据中相异的第一属性值。
根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲时,将索引数据对应的顶点数据的第一属性值在顶点缓冲中的位置确定为索引缓冲的值。如,继续采用上述的椎体3D模型为例,第0个面的索引数据为{0,1,2},即其在顶点数据中的第0,1,2个位置处,其对应的第一属性值在顶点缓冲中的第0,1,20个位置,因此,其对应的索引缓冲的值为{0,1,20}。
S206,联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异。
终端或3D模型转换服务器联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异。顶点向量相异是指顶点向量的各元素值不完全相同。如,可以两个顶点向量的某一个元素的值不同,也即顶点数据的某一个属性值不同。
联合考虑第一属性和后续属性,根据顶点数据的第一属性值及后续属性值,更新顶点数据对应的顶点向量。在本实施例中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同,也即实现顶点数据的去重,如此,使得顶点去重的时间复杂度控制在O(n)。
在本实施例中,可以是将后续属性作为一个整体,使得后续属性与第一属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同。也可以将后续属性按照后续属性的数量进一步拆分,进一步分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同。
S208,根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。
终端或3D模型转换服务器根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。对更新后的顶点缓冲及索引缓冲进行数据编码可以得到目标3D模型数据。可以通过该目标3D模型数据进行3D模型预览。
上述3D模型处理方法,获取原始3D模型数据,原始3D模型数据包括顶点数据及索引数据;顶点数据的属性包括第一属性及后续属性;将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异;根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。由于在顶点去重的过程中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同,如此将时间复杂度被控制在O(n),在模型面数不可控的情况下,其处理时间呈线性增长,这个处理等待过程相较于呈指数增长的方式较短。从而,可以提高3D模型处理的处理效率。
为了进一步提高3D模型处理的处理效率,可以将顶点去重的过程拆分成不同任务分配到不同设备上执行。即将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲的步骤;以及,联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异的步骤,可以拆分成不同的子任务。如按照不同的属性来拆分任务,又如,按照任务量来拆分任务。如此,使得顶点去重的过程拆分成不同的任务分配到不同的设备上执行,通过并行计算的方式换取时间执行的缩短,从而进一步提高3D模型处理的处理效率。
如图7所示,在其中一实施例中,联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异,包括:
S702,根据各顶点数据相异的后续属性值构建后续缓冲,并根据索引数据、顶点数据及后续缓冲确定后续索引。
各顶点数据相异的后续属性值是指属性值不同的后续属性的值。构建的后续缓冲的长度初始值等于后续属性值的数量。该后续属性值的数量是指后续属性值去重复后的数量,如两个顶点的后续属性值相同时,在计数时只计一次。
根据索引数据、顶点数据及后续缓冲确定后续索引时,将索引数据对应的顶点数据的第一属性值及后续属性值联合后,在顶点缓冲中的位置确定为更新后索引缓冲的值。
S704,将后续索引与索引缓冲中的相同元素对应的后续属性值,添加至对应的第一个元素之后作为后续元素。
后续索引与索引缓冲中的相同元素是指根据第一属性值与后续属性值分别进行索引时,顶点的索引值相同。此时,可以将该元素对应的后续属性值对应添加至顶点向量的第一个元素之后,作为后续元素。
S706,将后续索引与索引缓冲中的相异元素对应的后续属性值,联合对应的第一属性值,对应添加至顶点缓冲中,并更新索引缓冲。
将后续索引与索引缓冲中的相异元素对应的后续属性值,联合对应的第一属性值新增一顶点向量,对应添加至顶点缓冲中,并根据新增的顶点向量更新索引缓冲。
后续索引与索引缓冲中的相异元素是指,根据第一属性值与后续属性值分别进行索引时,顶点的索引值不同。此时,需要联合索引缓存中对应的第一属性值,将该第一属性值及后续属性值作为新增的顶点向量的第一元素及第二元素,添加至顶点缓冲中,并根据该新增的顶点向量的位置更新索引缓存。
基于本实施例的3D模型处理方法,根据各顶点数据相异的后续属性值构建后续缓冲,并根据索引数据、顶点数据及后续缓冲确定后续索引;将后续索引与索引缓冲中的相同元素对应的后续属性值,添加至对应的第一个元素之后作为后续元素;将后续索引与索引缓冲中的相异元素对应的后续属性值,联合对应的第一属性值,对应添加至顶点缓冲中,并更新索引缓冲。如此,使顶点缓冲中的各顶点向量各不相同。
在其中一实施例中,后续属性包括第二属性及第三属性;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异,包括:联合第一属性值及第二属性值,将顶点数据的第二属性值作为顶点向量的第二元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异;联合第一属性值、第二属性值及第三属性值,将顶点数据的第三属性值作为顶点向量的第三元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异。
在本实施例中,顶点的属性数量至少为3,在顶点去重的过程中,至少拆分成三层,进行顶点缓冲及索引缓存的构建及更新。
联合第一属性值及第二属性值,将顶点数据的第二属性值作为顶点向量的第二元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异时,可以:根据各顶点数据相异的第二属性值构建第二缓冲,并根据索引数据、顶点数据及第二缓冲确定第二索引;将第二索引与索引缓冲中的相同元素对应的第二属性值,添加至对应的第一个元素之后作为第二元素;将第二索引与索引缓冲中的相异元素对应的第二属性值,联合对应的第一属性值,对应添加至顶点缓冲中,并更新索引缓冲。
联合第一属性值、第二属性值及第三属性值,将顶点数据的第三属性值作为顶点向量的第三元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异时,可以:根据各顶点数据相异的第三属性值构建第三缓冲,并根据索引数据、顶点数据及第三缓冲确定第三索引;将第三索引与索引缓冲中的相同元素对应的第三属性值,添加至对应的第二个元素之后作为第三元素;将第三索引与索引缓冲中的相异元素对应的第三属性值,联合对应的第一属性值及第二属性值,对应添加至顶点缓冲中,并更新索引缓冲。
如此,将顶点属性数量不小于3的3D模型数据在顶点去重的过程中的时间复杂度控制在O(n)级别,从而提高顶点属性数量不小于3的3D模型数据处理的处理效率。
进一步地,后续属性还包括第四属性;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异,还包括:联合第一属性值、第二属性值、第三属性值及第四属性值,将顶点数据的第四属性值作为顶点向量的第四元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异。
在本实施例中,顶点的属性数量至少为4,在顶点去重的过程中,至少拆分成四层,进行顶点缓冲及索引缓存的构建及更新。
联合第一属性值、第二属性值、第三属性值及第四属性值,将顶点数据的第四属性值作为顶点向量的第四元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异时,可以:根据各顶点数据相异的第四属性值构建第四缓冲,并根据索引数据、顶点数据及第四缓冲确定第四索引;将第四索引与索引缓冲中的相同元素对应的第四属性值,添加至对应的第三个元素之后作为第四元素;将第四索引与索引缓冲中的相异元素对应的第四属性值,联合对应的第一属性值、第二属性值及第三属性值,对应添加至顶点缓冲中,并更新索引缓冲。
如此,将顶点属性数量不小于4的3D模型数据在顶点去重的过程中的时间复杂度控制在O(n)级别,从而提高顶点属性数量不小于4的3D模型数据处理的处理效率。
在其中一实施例中,第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;后续属性包括四种属性中与第一属性不同的至少一种属性。
也即顶点属性的数量至少为2,且第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;后续属性包括四种属性中与第一属性不同的至少一种属性。
如此,使得在顶点去重过程中,也即,将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲,及联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异的过程中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同。
在其中一实施例中,根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据,包括:对顶点缓冲中的顶点向量进行重排序,并按照重排序结果更新索引缓冲;对重排序之后的顶点缓冲及更新之后的索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。
终端或3D模型转换服务器对顶点缓冲中的顶点向量进行重排序,并按照重排序结果更新索引缓冲,并对重排序之后的顶点缓冲及更新之后的索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。对顶点缓冲中的顶点向量进行重排序,以为对顶点缓冲和索引缓冲中的数据进行数据编码及数据压缩作准备。对重排序之后的顶点缓冲及更新之后的索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据,如此可以降低需存储的数据量,从而节约物理资源。
进一步地,可以对顶点缓冲按照顶点向量的距离远近关系进行重排序,如此,在存储顶点向量时可以仅存储距离差量,如此,可进一步降低需存储的数据量,从而进一步节约物理资源。
在其中一实施例中,根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据之后,还包括:发送目标3D模型数据至数据存储服务器,并接收数据存储服务器返回的存储路径信息。
在本实施例中,终端或3D模型转换服务器发送目标3D模型数据至数据存储服务器,并接收数据存储服务器返回的存储路径信息。该存储路径信息可以为文件路径、URL(Uniform Resource Locator,统一资源定位符)。目标3D模型数据存储在数据存储服务器中,可以通过数据服务器返回的存储路径信息,从数据存储服务器获取到该目标3D模型数据。如此,可以降低3D模型数据的传输压力,提高3D模型数据的处理效率。
上述3D模型处理法方法,可以运行在Linux、Windows、Mac等多种平台,而不受平台限制。
在一个具体实施例中,如图8所示,将上述3D模型数据处理应用于在线3D模型资源网站。终端上传原始3D模型数据至3D模型转换服务器(转换服务器1)。3D模型转换服务器接收该原始3D模型数据,对该原始3D模型数据进行顶点数据分析,从而确定顶点数据的单个属性的各属性值;然后将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲,联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异,如此通过拆分分层的方式对顶点数据进行去重。再对顶点缓冲中的顶点向量进行重排序,按照重排序结果更新索引缓冲,对重排序之后的顶点缓冲及更新之后的索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。3D模型转换服务器还将该目标3D模型数据上传至数据存储服务器,并接收数据存储服务器返回的第一存储路径信息,然后将第一存储路径信息返回至终端。同时,终端还上传纹理数据,如纹理贴图,至纹理转换服务器(转换服务器2)。纹理转换服务器接收到纹理数据之后,对纹理数据进行纹理尺寸的修改,然后生成压缩格式和mipmap(一种二维纹理映射结果),再对mipmap进行高级拆分之后,进行纹理压缩,并将压缩后的纹理数据上传至数据存储服务器,然后接收数据存储服务器返回的第二存储路径信息,并将该第二存储路径信息返回终端。终端可以根据该第一存储路径信息及第二存储路径信息,从数据存储服务器获取到目标3D模型数据及压缩的纹理数据,进而对该目标3D模型数据及压缩的纹理数据进行解压得到3D数据,然后使用该3D数据渲染3D模型,以在终端上对3D模型数据进行预览。
在其中一具体实施例中,提供一种3D模型处理方法,包括:
获取原始3D模型数据,原始3D模型数据包括顶点数据及索引数据;顶点数据的属性包括第一属性、第二属性、第三属性及第四属性;
将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲;
根据各顶点数据相异的第二属性值构建第二缓冲,并根据索引数据、顶点数据及第二缓冲确定第二索引;将第二索引与索引缓冲中的相同元素对应的第二属性值,添加至对应的第一个元素之后作为第二元素;将第二索引与索引缓冲中的相异元素对应的第二属性值,联合对应的第一属性值,对应添加至顶点缓冲中,并更新索引缓冲;
根据各顶点数据相异的第三属性值构建第三缓冲,并根据索引数据、顶点数据及第三缓冲确定第三索引;将第三索引与索引缓冲中的相同元素对应的第三属性值,添加至对应的第二个元素之后作为第三元素;将第三索引与索引缓冲中的相异元素对应的第三属性值,联合对应的第一属性值及第二属性值,对应添加至顶点缓冲中,并更新索引缓冲;
根据各顶点数据相异的第四属性值构建第四缓冲,并根据索引数据、顶点数据及第四缓冲确定第四索引;将第四索引与索引缓冲中的相同元素对应的第四属性值,添加至对应的第三个元素之后作为第四元素;将第四索引与索引缓冲中的相异元素对应的第四属性值,联合对应的第一属性值、第二属性值及第三属性值,对应添加至顶点缓冲中,并更新索引缓冲;
对顶点缓冲中的顶点向量进行重排序,并按照重排序结果更新索引缓冲;
对重排序之后的顶点缓冲及更新之后的索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据;
发送目标3D模型数据至数据存储服务器,并接收数据存储服务器返回的存储路径信息。
该3D模型处理方法,在顶点去重的过程中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同,如此将时间复杂度被控制在O(n),在模型面数不可控的情况下,其处理时间呈线性增长,这个处理等待过程相较于呈指数增长的方式较短。可以提高3D模型处理的处理效率。同时,可以降低需存储的数据量,节约物理资源。还可以降低3D模型数据的传输压力。
继续以上述的椎体3D模型为例,假设第一属性为顶点位置,第二属性为顶点法线,第三属性为顶点纹理,第四属性为顶点颜色。
将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,得到的顶点缓冲结构如图9所示,包括[P0,P1,P2,…,P19,P20]。根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲,得到的38个面的索引缓冲为:{0 1 20,1 2 20,2 3 20,3 4 20,4 5 20,5 6 20,6 720,7 8 20,8 9 20,9 10 20,10 11 20,11 12 20,1213 20,13 14 20,1415 20,15 16 20,16 17 20,17 18 20,18 19 20,19 0 20,19 0 1,1 23,3 4 5,5 6 7,7 8 9,9 10 11,11 12 13,13 14 15,15 16 17,17 18 19,13 5,5 7 9,911 13,13 15 17,17 19 1,5 9 13,13 17 5,17 1 5}。
根据各顶点数据相异的第二属性值构建第二缓冲,得到的第二缓冲结构可以如图10所示,包括[N0,N1,N2,…,N20,N21]。根据索引数据、顶点数据及第二缓冲确定第二索引,得到的第二索引为:{0 1 20,1 2 20,2 3 20,34 20,4 5 20,5 6 20,6 7 20,7 8 20,8 920,9 10 20,10 11 20,11 1220,12 13 20,13 14 20,14 15 20,15 16 20,16 17 20,1718 20,18 1920,19 0 20,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 21 21,21 2121,21 21 21,21 21 21,21 21 21}。
将第二索引与索引缓冲中的相同元素对应的第二属性值,添加至对应的第一个元素之后作为第二元素。从当前的索引缓冲可见,如,第一个三角形的三个顶点分别位于顶点缓冲的第0、1、20处,将第一个三角形的各第二属性值分别对应添加到顶点缓冲中对应的位置属性上。
将第二索引与索引缓冲中的相异元素对应的第二属性值,联合对应的第一属性值,对应添加至顶点缓冲中,并更新索引缓冲。如,待添加到第21个三角形时,从第二索引中可见,它的第二属性值都是N21,均位于第二索引的21处。但从当前的索引缓冲来看,它的三个顶点分别位于顶点缓冲的19、0、1处。此时,顶点缓冲的这三个位置已经添加了三个第二属性值N19、N0、N1,说明这个三个顶点与其它三角形三个顶点的第一属性相同,但第二属性值并不相同。此时,分别将这三个顶点的第二属性值联合对应的第一属性值,依次添加到顶点缓冲的下一位置处21、22、23,并更新第21个三角形的索引缓冲为21 22 23。
联合第一属性值及第二属性值,将顶点数据的后续属性值作为顶点向量的第二元素,更新完顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异之后,得到的顶点缓冲如图11所示,包括40个不同的顶点向量:[{P0,N0},{P1,N1},{P2,N2},{P3,N3},{P4,N4},{P5,N5},{P6,N6},{P7,N7},{P8,N8},{P9,N9},{P10,N10},{P11,N11},{P12,N12},{P13,N13},{P14,N14},{P15,N15},{P16,N16},{P17,N17},{P18,N18},{P19,N19},{P20,N20},{P19,N21},{P0,N21},{P1,N21},{P2,N21},{P3,N21},{P4,N21},{P5,N21},{P6,N21},{P7,N21},{P8,N21},{P9,N21},{P10,N21},{P11,N21},{P12,N21},{P13,N21},{P14,N21},{P15,N21},{P16,N21},{P17,N21},{P18,N21}]。索引缓冲为{0 1 20,1 2 20,23 20,3 4 20,4 5 20,5 6 20,6 7 20,7 8 20,8 9 20,9 10 20,10 1120,11 12 20,12 1320,13 14 20,14 15 20,15 16 20,16 17 20,17 1820,18 19 20,19 0 20,21 22 23,2324 25,25 26 27,27 28 29,29 30 31,31 32 33,33 34 35,35 36 37,37 38 39,39 4021,23 25 27,27 29 31,3133 35,35 37 39,39 21 23,27 31 35,35 39 27,39 23 27}。
与第二元素的添加类似,将第三属性值和第四属性值添加为顶点向量的第三元素及第四元素,可以得到最终的顶点缓冲及索引缓冲。
上述3D模型处理方法一般用于将3D模型转换为图形引擎格式,如在线3D模型预览、3D游戏模型渲染等。如此,可以显著减少用户模型导入等待时间,提高工作效率和用户体验。以一个在线3D模型资源网站为例说明此算法应用,用户可以在线360度浏览模型,应用此方法后,模型转换和加载速度有巨大提升,如图12是一个尺寸为50M左右的3D模型,在10Mb/s的网速下,加载速度只需不到3秒。同时在压缩尺寸的基础上,顶点精度仍然可以得到良好的保存,即使在网页中渲染,光影效果由于精度原因仍然可以表现得非常出色。在3D转换服务器端,以一个270万面的人体模型为例,大小106M,在同样的硬件平台上,该硬件平台的处理器为Corei7 6700 3.4G。如果采用上述具体实施例的方法进行3D模型转换,处理效率将会提高120倍以上,用户等待转换时间将由1小时以上降低至30秒左右,而且模型尺寸将被压缩为20.2M,大幅度地降低存储空间和网络传输时间。
应该理解的是,虽然图2、7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种与上述3D模型处理方法对应的3D模型处理装置,包括:
数据获取模块1302,用于获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
缓冲构建模块1304,用于将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
缓冲更新模块1306,用于联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
目标数据确定模块1308,用于根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
该3D模型处理装置,获取原始3D模型数据,原始3D模型数据包括顶点数据及索引数据;顶点数据的属性包括第一属性及后续属性;将各顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据顶点缓冲以及索引数据和顶点数据的第一属性值构建索引缓冲;联合第一属性值及后续属性值,将顶点数据的后续属性值作为顶点向量的后续元素,更新顶点向量、顶点缓冲及索引缓冲,使顶点缓冲中的各顶点向量相异;根据更新后的顶点缓冲及索引缓冲确定目标3D模型数据。由于在顶点去重的过程中,将原本作为一个数据结构的顶点数据包括的第一属性和后续属性拆分开来,按照属性分层次地进行顶点向量、顶点缓冲及索引缓冲的更新,以使顶点缓冲的各顶点向量各不相同,如此将时间复杂度被控制在O(n),在模型面数不可控的情况下,其处理时间呈线性增长,这个处理等待过程相较于呈指数增长的方式较短。从而,可以提高3D模型处理的处理效率。
在其中一实施例中,缓冲更新模块1306,包括:
后续索引确定单元,用于根据各所述顶点数据相异的后续属性值构建后续缓冲,并根据所述索引数据、所述顶点数据及所述后续缓冲确定后续索引;
后续元素添加单元,用于将所述后续索引与所述索引缓冲中的相同元素对应的所述后续属性值,添加至对应的所述第一个元素之后作为后续元素;
索引缓冲更新单元,用于将所述后续索引与所述索引缓冲中的相异元素对应的所述后续属性值,联合对应的所述第一属性值,对应添加至所述顶点缓冲中,并更新所述索引缓冲。
在其中一实施例中,所述后续属性包括第二属性及第三属性。缓冲更新模块1206,包括:
第二元素添加单元,用于联合所述第一属性值及所述第二属性值,将所述顶点数据的所述第二属性值作为所述顶点向量的第二元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
第三元素添加单元,用于联合所述第一属性值、所述第二属性值及所述第三属性值,将所述顶点数据的所述第三属性值作为所述顶点向量的第三元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述后续属性还包括第四属性。缓冲更新模块1206,还包括:
第四元素添加单元,用于联合所述第一属性值、所述第二属性值、所述第三属性值及所述第四属性值,将所述顶点数据的所述第四属性值作为所述顶点向量的第四元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;所述后续属性包括所述四种属性中与所述第一属性不同的至少一种属性。
在其中一实施例中,目标数据确定模块1308,包括:
重排序单元,用于对所述顶点缓冲中的所述顶点向量进行重排序,并按照重排序结果更新所述索引缓冲;
压缩编码单元,用于对重排序之后的所述顶点缓冲及更新之后的所述索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。
在其中一实施例中,还包括:
存储路径接收模块,用于发送所述目标3D模型数据至数据存储服务器,并接收所述数据存储服务器返回的存储路径信息。
如图14所示,在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端或服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种3D模型处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施方式中,提供了一种计算机设备,该计算机设备可以是服务器或终端。该计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述3D模型处理方法的步骤。
在其中一实施例中,该计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
在其中一实施例中,所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
根据各所述顶点数据相异的后续属性值构建后续缓冲,并根据所述索引数据、所述顶点数据及所述后续缓冲确定后续索引;
将所述后续索引与所述索引缓冲中的相同元素对应的所述后续属性值,添加至对应的所述第一个元素之后作为后续元素;
将所述后续索引与所述索引缓冲中的相异元素对应的所述后续属性值,联合对应的所述第一属性值,对应添加至所述顶点缓冲中,并更新所述索引缓冲。
在其中一实施例中,所述后续属性包括第二属性及第三属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
联合所述第一属性值及所述第二属性值,将所述顶点数据的所述第二属性值作为所述顶点向量的第二元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
联合所述第一属性值、所述第二属性值及所述第三属性值,将所述顶点数据的所述第三属性值作为所述顶点向量的第三元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述后续属性还包括第四属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,还包括:
联合所述第一属性值、所述第二属性值、所述第三属性值及所述第四属性值,将所述顶点数据的所述第四属性值作为所述顶点向量的第四元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;所述后续属性包括所述四种属性中与所述第一属性不同的至少一种属性。
在其中一实施例中,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据,包括:
对所述顶点缓冲中的所述顶点向量进行重排序,并按照重排序结果更新所述索引缓冲;
对重排序之后的所述顶点缓冲及更新之后的所述索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。
在其中一实施例中,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据之后,还包括:
发送所述目标3D模型数据至数据存储服务器,并接收所述数据存储服务器返回的存储路径信息。
在其中一实施方式中,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述3D模型处理方法的步骤。
在其中一实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
在其中一实施例中,所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
根据各所述顶点数据相异的后续属性值构建后续缓冲,并根据所述索引数据、所述顶点数据及所述后续缓冲确定后续索引;
将所述后续索引与所述索引缓冲中的相同元素对应的所述后续属性值,添加至对应的所述第一个元素之后作为后续元素;
将所述后续索引与所述索引缓冲中的相异元素对应的所述后续属性值,联合对应的所述第一属性值,对应添加至所述顶点缓冲中,并更新所述索引缓冲。
在其中一实施例中,所述后续属性包括第二属性及第三属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
联合所述第一属性值及所述第二属性值,将所述顶点数据的所述第二属性值作为所述顶点向量的第二元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
联合所述第一属性值、所述第二属性值及所述第三属性值,将所述顶点数据的所述第三属性值作为所述顶点向量的第三元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述后续属性还包括第四属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,还包括:
联合所述第一属性值、所述第二属性值、所述第三属性值及所述第四属性值,将所述顶点数据的所述第四属性值作为所述顶点向量的第四元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
在其中一实施例中,所述第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;所述后续属性包括所述四种属性中与所述第一属性不同的至少一种属性。
在其中一实施例中,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据,包括:
对所述顶点缓冲中的所述顶点向量进行重排序,并按照重排序结果更新所述索引缓冲;
对重排序之后的所述顶点缓冲及更新之后的所述索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。
在其中一实施例中,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据之后,还包括:
发送所述目标3D模型数据至数据存储服务器,并接收所述数据存储服务器返回的存储路径信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种3D模型处理方法,所述方法包括:
获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
2.根据权利要求1所述的方法,其特征在于,所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
根据各所述顶点数据相异的后续属性值构建后续缓冲,并根据所述索引数据、所述顶点数据及所述后续缓冲确定后续索引;
将所述后续索引与所述索引缓冲中的相同元素对应的所述后续属性值,添加至对应的所述第一个元素之后作为后续元素;
将所述后续索引与所述索引缓冲中的相异元素对应的所述后续属性值,联合对应的所述第一属性值,对应添加至所述顶点缓冲中,并更新所述索引缓冲。
3.根据权利要求2所述的方法,其特征在于,所述后续属性包括第二属性及第三属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,包括:
联合所述第一属性值及所述第二属性值,将所述顶点数据的所述第二属性值作为所述顶点向量的第二元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
联合所述第一属性值、所述第二属性值及所述第三属性值,将所述顶点数据的所述第三属性值作为所述顶点向量的第三元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
4.根据权利要求3所述的方法,其特征在于,所述后续属性还包括第四属性;所述联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异,还包括:
联合所述第一属性值、所述第二属性值、所述第三属性值及所述第四属性值,将所述顶点数据的所述第四属性值作为所述顶点向量的第四元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异。
5.根据权利要求1所述的方法,其特征在于,所述第一属性为顶点位置、顶点法线、顶点纹理及顶点颜色四种属性中的任意一种属性;所述后续属性包括所述四种属性中与所述第一属性不同的至少一种属性。
6.根据权利要求1所述的方法,其特征在于,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据,包括:
对所述顶点缓冲中的所述顶点向量进行重排序,并按照重排序结果更新所述索引缓冲;
对重排序之后的所述顶点缓冲及更新之后的所述索引缓冲中的数据,进行数据编码及数据压缩得到目标3D模型数据。
7.根据权利要求6所述的方法,其特征在于,所述根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据之后,还包括:
发送所述目标3D模型数据至数据存储服务器,并接收所述数据存储服务器返回的存储路径信息。
8.一种3D模型处理装置,所述装置包括:
数据获取模块,用于获取原始3D模型数据,所述原始3D模型数据包括顶点数据及索引数据;所述顶点数据的属性包括第一属性及后续属性;
缓冲构建模块,用于将各所述顶点数据中相异的第一属性值,作为顶点向量的第一个元素加入顶点缓冲,并根据所述顶点缓冲以及所述索引数据和所述顶点数据的所述第一属性值构建索引缓冲;
缓冲更新模块,用于联合所述第一属性值及后续属性值,将所述顶点数据的所述后续属性值作为所述顶点向量的后续元素,更新所述顶点向量、所述顶点缓冲及所述索引缓冲,使所述顶点缓冲中的各所述顶点向量相异;
目标数据确定模块,用于根据更新后的所述顶点缓冲及所述索引缓冲确定目标3D模型数据。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7任意一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述的方法的步骤。
CN201910069991.1A 2019-01-24 2019-01-24 3d模型处理方法、装置、计算机设备和存储介质 Active CN109872402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910069991.1A CN109872402B (zh) 2019-01-24 2019-01-24 3d模型处理方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910069991.1A CN109872402B (zh) 2019-01-24 2019-01-24 3d模型处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN109872402A true CN109872402A (zh) 2019-06-11
CN109872402B CN109872402B (zh) 2021-03-02

Family

ID=66918108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910069991.1A Active CN109872402B (zh) 2019-01-24 2019-01-24 3d模型处理方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN109872402B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3889788A1 (en) * 2020-04-02 2021-10-06 Intel Corporation Gpu memory saving by buffer sharing among similar instances on same gpu
CN114373041A (zh) * 2021-12-15 2022-04-19 聚好看科技股份有限公司 一种三维重建方法及设备
CN115374129A (zh) * 2022-10-24 2022-11-22 杭州欧若数网科技有限公司 一种数据库联合索引编码方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997964A (zh) * 2004-07-02 2007-07-11 辉达公司 顶点和片段程序的优化链接
CN102663119A (zh) * 2012-04-19 2012-09-12 北京天下图数据技术有限公司 一种渲染海量矢量数据的方法
CN102999946A (zh) * 2012-09-17 2013-03-27 Tcl集团股份有限公司 一种3d图形数据处理方法、装置及设备
CN103559374A (zh) * 2013-11-25 2014-02-05 中国科学院自动化研究所 一种多子网格模型上进行面分裂型曲面细分的方法
US20160005140A1 (en) * 2014-07-03 2016-01-07 Arm Limited Graphics processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1997964A (zh) * 2004-07-02 2007-07-11 辉达公司 顶点和片段程序的优化链接
CN102663119A (zh) * 2012-04-19 2012-09-12 北京天下图数据技术有限公司 一种渲染海量矢量数据的方法
CN102999946A (zh) * 2012-09-17 2013-03-27 Tcl集团股份有限公司 一种3d图形数据处理方法、装置及设备
CN103559374A (zh) * 2013-11-25 2014-02-05 中国科学院自动化研究所 一种多子网格模型上进行面分裂型曲面细分的方法
US20160005140A1 (en) * 2014-07-03 2016-01-07 Arm Limited Graphics processing

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3889788A1 (en) * 2020-04-02 2021-10-06 Intel Corporation Gpu memory saving by buffer sharing among similar instances on same gpu
US11574381B2 (en) 2020-04-02 2023-02-07 Intel Corporation Method and apparatus for buffer sharing
CN114373041A (zh) * 2021-12-15 2022-04-19 聚好看科技股份有限公司 一种三维重建方法及设备
CN114373041B (zh) * 2021-12-15 2024-04-02 聚好看科技股份有限公司 一种三维重建方法及设备
CN115374129A (zh) * 2022-10-24 2022-11-22 杭州欧若数网科技有限公司 一种数据库联合索引编码方法和系统

Also Published As

Publication number Publication date
CN109872402B (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN109840931B (zh) 骨骼动画的合批渲染方法、装置、系统及存储介质
US5905507A (en) Compression of geometric models using spanning trees
CN109872402A (zh) 3d模型处理方法、装置、计算机设备和存储介质
US5825369A (en) Compression of simple geometric models using spanning trees
US5278983A (en) Boundary representation solid modeling system
US8947431B2 (en) Method and system for providing scene data of virtual world
CN104952032B (zh) 图的处理方法、装置以及栅格化表示及存储方法
CN103997346B (zh) 一种基于流水线的数据匹配方法和装置
Steinberger et al. On‐the‐fly generation and rendering of infinite cities on the GPU
CN111279384B (zh) 图形流水线中的索引的压缩和解压缩
CN101853162A (zh) 一种可编辑的网页三维几何造型渲染方法
CN110297924A (zh) 点云数据的处理及渲染方法、装置、设备及存储介质
CN112003814B (zh) 行情数据处理方法、装置、终端设备及存储介质
US20170228894A1 (en) System, method and computer program product for automatic optimization of 3d textured models for network transfer and real-time rendering
CN112489183A (zh) 基于Unity3D的骨骼动画渲染方法及系统
Lee et al. Parallel mesh simplification using embedded tree collapsing
Lauterbach et al. ReduceM: Interactive and memory efficient ray tracing of large models
WO2017139500A1 (en) System and method for manipulating acceleration structures
CN108920300A (zh) 一种数据操作方法及相关装置
CN113496538B (zh) 图像特效的生成方法、装置、电子设备及存储介质
EP2715564B1 (en) Mesh sequence file format
CN104156999A (zh) 一种三维场景渲染方法
CN117095086B (zh) 动画处理方法、装置、设备及存储介质
CN115129233B (zh) 数据处理装置、方法及相关产品
US10437911B2 (en) Fast bulk z-order for graphic elements

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