CN112862939A - 用于显示优化的gltf处理方法、装置、电子设备及存储介质 - Google Patents
用于显示优化的gltf处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112862939A CN112862939A CN202110201885.1A CN202110201885A CN112862939A CN 112862939 A CN112862939 A CN 112862939A CN 202110201885 A CN202110201885 A CN 202110201885A CN 112862939 A CN112862939 A CN 112862939A
- Authority
- CN
- China
- Prior art keywords
- gltf
- node
- file
- merging
- patches
- 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.)
- Withdrawn
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 34
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 239000000463 material Substances 0.000 claims abstract description 84
- 238000005516 engineering process Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000009877 rendering Methods 0.000 claims abstract description 20
- 239000011159 matrix material Substances 0.000 claims description 39
- 230000009466 transformation Effects 0.000 claims description 15
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 5
- 230000009191 jumping Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种用于显示优化的GLTF处理方法、装置、电子设备及存储介质,其中,方法包括:S1.检测GLTF文件中每个构件的出现次数;S2.利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化;S3.将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。本申请实施例的用于显示优化的GLTF处理方法,解决了因GLTF中的构件数量过多,直接展示时,出现的渲染次数过多、加载时间长甚至加载失败的问题,大大降低了渲染次数,提升用户的浏览体验。
Description
技术领域
本申请涉及显示优化技术领域,特别涉及一种用于显示优化的GLTF(The GLTransmission Format,文件格式)处理方法、装置、电子设备及存储介质。
背景技术
GLTF是一种便捷的记录三维几何数据的格式,可以跨平台进行展示。
然而,如果GLTF中的构件数量过多,在不进行任何处理的情况下直接展示,将出现渲染次数过多、加载时间长甚至加载失败的问题,亟待解决。
申请内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一目的在于提出一种用于显示优化的GLTF处理方法,解决了因GLTF中的构件数量过多,直接展示时,出现的渲染次数过多、加载时间长甚至加载失败的问题,大大降低了渲染次数,提升用户的浏览体验。
本发明的第二个目的在于提出一种用于显示优化的GLTF处理装置。
本发明的第三个目的在于提出一种电子设备。
本发明的第四个目的在于提出一种计算机可读存储介质。
为达到上述目的,本申请第一方面实施例提供一种用于显示优化的GLTF处理方法,包括以下步骤:
S1.检测所述GLTF文件中每个构件的出现次数;
S2.利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化;以及
S3.将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
另外,根据本发明上述实施例的用于显示优化的GLTF处理方法还可以具有以下附加的技术特征:
可选地,所述利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化,包括:
S21.在所述GLTF文件中,建立当前面片与基于几何体的节点间的索引;
S22.统计所述当前面片被节点使用的次数,其中,如果所述次数大于所述预设次数,则判定所述当前面片为instance的可执行对象;
S23.将作为所述可执行对象的面片构造为带单位矩阵的节点,生成一个仅携带该节点的子GLTF文件;
S24.将在所述GLTF中使用到所述当前面片的节点的转换矩阵记录到矩阵文件中。
可选地,所述将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,包括:
S31.在GLTF文件中,遍历所有面片,使得节点中的面片执行所节点的矩阵变换,生成多个新面片,并基于所述多个新面片生成多个新节点;
S32.遍历所有所述新面片,建立所述多个新面片与所述多个新节点的索引,其中,如果新面片的材质数为小于或等于1,则所述新面片保持不变,否则对按照材质拆分成多个单材质新面片;
S33.遍历所述所有新面片,提取引用面片对应的所有新节点,合并相同材质的新节点,得到至少一个合并节点。
可选地,还包括:
在所述至少一个合并节点的合并节点的尺寸超过节点尺寸阈值时,将所述合并节点的面片拆分成多个独立面片,且给每个独立面片生成独立节点,所述独立节点使用所述合并节点的转换矩阵;
输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件。
可选地,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为所述GLTF文件中的每个节点生成唯一编码,并将所述唯一编码反写入所述GLTF中每个节点的属性中,得到所述修改后的GLTF文件;
可选地,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为每个合并拆分节点生成唯一编码,并为所述每个合并拆分节点生成一个GLTF文件,得到所述合并拆分节点GLTF文件。
可选地,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
通过所述合并拆分节点的唯一编码,找到所述合并拆分节点合并前的GLTF文件,得到所述索引文件。
为达到上述目的,本申请第二方面实施例提供一种用于显示优化的GLTF处理装置,包括:
检测模块,用于检测所述GLTF文件中每个构件的出现次数;
实例化模块,用于利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化;以及
处理模块,用于将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
可选地,所述实例化模块,包括:
建立单元,用于在所述GLTF文件中,建立当前面片与基于几何体的节点间的索引;
统计单元,用于统计所述当前面片被节点使用的次数,其中,如果所述次数大于所述预设次数,则判定所述当前面片为instance的可执行对象;
第一生成单元,用于将作为所述可执行对象的面片构造为带单位矩阵的节点,生成一个仅携带该节点的子GLTF文件;
记录单元,用于将在所述GLTF中使用到所述当前面片的节点的转换矩阵记录到矩阵文件中。
可选地,所述处理模块,包括:
第二生成单元,用于在GLTF文件中,遍历所有面片,使得节点中的面片执行所节点的矩阵变换,生成多个新面片,并基于所述多个新面片生成多个新节点;
第一处理单元,用于遍历所有所述新面片,建立所述多个新面片与所述多个新节点的索引,其中,如果新面片的材质数为小于或等于1,则所述新面片保持不变,否则对按照材质拆分成多个单材质新面片;
合并单元,用于遍历经所述第一处理单元处理后的所有新面片,提取引用面片对应的所有新节点,合并相同材质的新节点,得到至少一个合并节点。
可选地,还包括:
第二处理单元,用于在所述至少一个合并节点的合并节点的尺寸超过节点尺寸阈值时,将所述合并节点的面片拆分成多个独立面片,且给每个独立面片生成独立节点,所述独立节点使用所述合并节点的转换矩阵;
输出单元,用于输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件。
可选地,所述输出单元,包括:
为所述GLTF文件中的每个节点生成唯一编码,并将所述唯一编码反写入所述GLTF中每个节点的属性中,得到所述修改后的GLTF文件;
可选地,所述输出单元,包括:
为每个合并拆分节点生成唯一编码,并为所述每个合并拆分节点生成一个GLTF文件,得到所述合并拆分节点GLTF文件。
可选地,所述输出单元,包括:
通过所述合并拆分节点的唯一编码,找到所述合并拆分节点合并前的GLTF文件,得到所述索引文件。
为达到上述目的,本申请第三方面实施例提供一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被设置为用于执行如上述实施例所述的用于显示优化的GLTF处理方法。
为达到上述目的,本申请第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上述实施例所述的用于显示优化的GLTF处理方法。
由此,可以检测GLTF文件中每个构件的出现次数,并利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化,并将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染,解决了因GLTF中的构件数量过多,直接展示时,出现的渲染次数过多、加载时间长甚至加载失败的问题,大大降低了渲染次数,提升用户的浏览体验。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本申请实施例提供的一种用于显示优化的GLTF处理方法的流程图;
图2为根据本申请一个实施例的节点单位化的流程图;
图3为根据本申请一个实施例的材质独立化的流程图;
图4为根据本申请一个实施例的同材质合并的流程图;
图5为根据本申请一个实施例的拆分较大节点的流程图;
图6为根据本申请一个实施例的输出结果文件的流程图;
图7为根据本申请一个实施例的用于显示优化的GLTF处理方法的流程图;
图8为根据本申请实施例的用于显示优化的GLTF处理装置的示例图;
图9为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
下面参照附图描述根据本发明实施例提出的用于显示优化的GLTF处理方法、装置、电子设备及存储介质,首先将参照附图描述根据本发明实施例提出的用于显示优化的GLTF处理方法。
具体而言,图1为本申请实施例所提供的一种用于显示优化的GLTF处理方法的流程示意图。
如图1所示,该用于显示优化的GLTF处理方法包括以下步骤:
在步骤S1中,检测GLTF文件中每个构件的出现次数。
可以理解的是,一个构件内部一种材质的几何体需要渲染一次,因此,在不进行处理的情况下,GLTF模型当中几何体的数量越多,渲染次数就变得越高,对于大模型而言甚至出现加载时间过长,影响浏览体验。
本申请实施例通过对相同材质的几何体合并成一个几何体,每个合并后的几何体作为单独一个节点,使得整个模型的节点数量降低为材质数量通过对相同材质的几何体合并成一个几何体,每个合并后的几何体作为单独一个节点,使得整个模型的节点数量降低为材质数量。由于每个节点只有一种材质,因此渲染次数等于材质数量,大大降低了渲染次数,也降低了加载时间。
需要说明的是,对GLTF文件进行同材质合并后,渲染次数可以得到大幅下降,但是该方法会产生内存占用过高的问题。在同材质合并方法下,每一个节点中面片的点都需要乘以转换节点,从而产生了新的面片数据。如果有n个节点引用同一个面片,这个面片的数据则会产生出n次。随着面片数据量的增大,加载同材质合并后的GLTF将会占用更多的内存。例如,100M的模型使用同材质合并处理后,占用内存可高达2G。其中,面片在GLTF中指mesh,一个面片包含一个几何体列表(primitives),允许有多个几何体。一个几何体当中有点信息(POSITION)、法向量信息(NORMAL)、面索引(indices)、材质(material)等描述一个几何体的信息;节点在GLTF中指node,一个节点包含引用面片的索引、转换矩阵(matrix)、名字(name)等信息。一个节点等价于一个构件。一个面片可以被多个节点引用,使用不同的转换矩阵。
因此,本申请实施例可以检测GLTF文件中每个构件的出现次数,以便将数量超过阈值的构件实例化,再对剩余的构件做同材质合并,从而有效地减少同材质合并带来的内存占用。
在步骤S2中,利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化。
可选地,在一些实施例中,利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化,包括:S21.在GLTF文件中,建立当前面片与基于几何体的节点间的索引;S22.统计当前面片被节点使用的次数,其中,如果次数大于预设次数,则判定当前面片为instance的可执行对象;S23.将作为可执行对象的面片构造为带单位矩阵的节点,生成一个仅携带该节点的子GLTF文件;S24.将在GLTF中使用到当前面片的节点的转换矩阵记录到矩阵文件中。
可以理解的是,Instance技术是一种前端常用的实例化技术。通过instance技术,使得同一个构件可以通过实例化的方法复制出多个,并通过矩阵变换实现原构件的平移、旋转和缩放,因此instance技术允许以极低内存维持数量较多的相同构件同时展示Instance技术是一种前端常用的实例化技术。通过instance技术,使得同一个构件可以通过实例化的方法复制出多个,并通过矩阵变换实现原构件的平移、旋转和缩放,因此,instance技术允许以极低内存维持数量较多的相同构件同时展示。
具体而言,首先输出符合instance技术条件的GLTF、矩阵文件。
在GLTF中,建立当前面片与基于几何体的节点间的索引,并统计当前面片被节点使用的次数,如果该次数大于instance对象判断阈值,即大于预设次数,则判定该面片为instance的可执行对象,从而将作为可执行对象的面片构造成一个带单位矩阵的节点,生成一个仅携带该节点的GLTF文件;将在原始GLTF中使用到该面片的节点的转换矩阵记录到矩阵文件中。
在步骤S3中,将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
可选地,将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质在一些实施例中,的几何体合并为一个几何体,包括:S31.在GLTF文件中,遍历所有面片,使得节点中的面片执行所节点的矩阵变换,生成多个新面片,并基于多个新面片生成多个新节点;S32.遍历所有新面片,建立多个新面片与多个新节点的索引,其中,如果新面片的材质数为小于或等于1,则新面片保持不变,否则对按照材质拆分成多个单材质新面片;S33.遍历所有新面片,提取引用面片对应的所有新节点,合并相同材质的新节点,得到至少一个合并节点;
可选地,还包括:在至少一个合并节点的合并节点的尺寸超过节点尺寸阈值时,将合并节点的面片拆分成多个独立面片,且给每个独立面片生成独立节点,独立节点使用合并节点的转换矩阵;输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件。
可选地,输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为GLTF文件中的每个节点生成唯一编码,并将唯一编码反写入GLTF中每个节点的属性中,得到修改后的GLTF文件;
可选地,输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为每个合并拆分节点生成唯一编码,并为每个合并拆分节点生成一个GLTF文件,得到合并拆分节点GLTF文件。
可选地,输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
通过合并拆分节点的唯一编码,找到合并拆分节点合并前的GLTF文件,得到索引文件。
具体地,本申请实施例可以在GLTF中,遍历所有面片,对每一个面片中的几何体列表进行拆分,拆分以后的每一个面片中的几何体列表只有一种材质的节点。相对应地统计使用这些需要拆分的面片的节点,并根据拆分的程度增加节点数量
具体而言,首先是节点单位化。
在GLTF中,遍历所有节点,节点中的面片执行节点的矩阵变换,产生了新面片数据;并创建新节点,将新面片作为新节点的面片,新节点的变换矩阵为单位矩阵,在节点单位化后,每块面片只被一个节点引用一次,每块面片均记录了原始节点全部几何数据。
如图2所示,上述的节点单位化包括以下步骤:
S201,在GLTF中。
S202,判断是否完成遍历所有面片,如果是,执行步骤S205,否则,执行步骤S203。
S203,节点中的面片执行节点的矩阵变换,产生新面片数据。
S204,基于新面片产生新节点,并返回执行步骤S202。
S205,结束,完成节点单位化。
其次,进行材质独立化。
具体地,遍历所有面片,建立新面片与新节点的索引。遍历所有新面片,如果新面片的材质数为小于等于1,则新面片保持不变,否则如果新面片大于1,则对该面片按照材质拆分成若干个但材质面片。由于面片的拆分,相应地拆分对应节点数据,使得每个节点只有一种材质。
如图3所示,上述的材质独立化包括以下步骤:
S301,建立新面片与新节点的索引。
S302,判断是否完成遍历所有新面片,如果是,执行步骤S306,否则,执行步骤S303。
S303,判断新面片的材质数是否小于等于1,如果是,执行步骤S302,否则,执行步骤S304。
S304,对该面片按材质进行拆分。
S305,拆分该面片对应的新节点。
S306,结束,完成材质独立化。
然后,同材质合并处理。
具体地,遍历所有新面片,对引用该面片的所有新节点都取出来,基于面片合并成一个节点,这些节点的材质都是相同的,合并以后,相同材质的节点只剩下一个,面片数据进行了合并,包括几何体列表、面索引、点法向量数据的增加,合并后的节点材质也是只有一种。
如图4所示,上述的同材质合并包括以下步骤:
S401,判断是否完成遍历所有新面片,如果是,执行步骤S403,否则,执行步骤S402。
S402,将引用该面片的所有节点取出来进行面片合并。
S403,结束,完成同材质合并。
进一步地,拆分较大节点。
具体地,如果合并节点的尺寸超过节点尺寸阈值,则对该合并节点进行拆分,即将该合并节点的面片拆分成多个独立面片,给每个面片生成一个独立节点,该节点使用合并节点的转换矩阵。
如图5所示,拆分较大节点包括以下步骤:
S501,判断是否遍历所有新节点,如果是,执行步骤S505,否则,执行步骤S502。
S502,判断该节点尺寸是否大于阈值,如果是,执行步骤S503,否则,执行步骤S501。
S503,对该节点的面片拆分成多个独立面片。
S504,为每个面片生成一个独立节点,并跳转执行步骤S501。
S505,结束,完成拆分较大节点。
进一步地,输出结果文件
具体地,结果文件输出,包括修改后的原始GLTF文件、生成合并拆分节点GLTF文件、生成合并拆分节点GLTF文件。
生成修改后的原始GLTF文件:为原始GLTF中的每个节点生成唯一编码,并反写到原始GLTF中每个节点的属性中。其中,唯一编码:为标记一个事物而生成的一个标识编码,生成技术如uuid等技术。
生成合并拆分节点GLTF文件:为每个合并拆分节点生成唯一编码,为每一个合并拆分节点生成一个GLTF文件。
生成索引文件:以每个单位节点的唯一编码为主键,将合并拆分节点的唯一编码、原始节点的点在合并拆分节点中的起点索引、终点索引输出到索引文件中记录下来。通过索引文件可以通过合并拆分节点的唯一编码,找到它合并前的原始GTLF几何数据。
如图6所示,上述的输出结果文件,包括以下步骤:
S601,开始。
S602,为每个节点生成唯一编码。
在执行步骤S602的同时,执行步骤S604和S606。
S603,生成修改后的原始GLTF文件,并跳转执行步骤S608。
S604,为每个拆份节点生成唯一编码。
S605,生成合并拆分节点GLTF文件,并跳转执行步骤S608。
S606,记录原始节点与拆分节点的关联。
S607,生成索引文件,并跳转执行步骤S608。
S608,结束,完成输出结果文件。
为使得本领域技术人员进一步了解本申请实施例的用于显示优化的GLTF处理方法,下面以一个具体实施例进行详细阐述。
如图7所示,对GLTF文件进行叠加instance后的同材质合并处理,包括以下步骤:
S701,在GLTF图形中。
S702,建立新面片与新节点的索引。
S703,判断是否完成遍历所有面片,如果是,执行步骤S708,否则,执行步骤S704。
S704,统计面片的使用次数。
S705,判断面片使用次数是否大于阈值,如果是,执行步骤S706,否则,执行步骤S707。
S706,面片记录到采用instance技术列表,并跳转执行步骤S703。
S707,面片记录到采用偶同材质合并技术列表,并跳转执行步骤S703。
S708,对于采用instance技术的面片对应的节点,直接输出矩阵即可,并进一步生成生成矩阵文件(如图7中A位置所示)。
S709,对于采用同材质合并技术的面片,直接执行同材质合并。
具体地,对应生成修改后的原始GLTF文件,生成合并拆分节点GLTF文件,生成索引文件(如图7中B位置所示)。
S710,结束。
根据本申请实施例提出的用于显示优化的GLTF处理方法,可以检测GLTF文件中每个构件的出现次数,并利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化,并将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染,解决了因GLTF中的构件数量过多,直接展示时,出现的渲染次数过多、加载时间长甚至加载失败的问题,大大降低了渲染次数,提升用户的浏览体验。
其次参照附图描述根据本申请实施例提出的用于显示优化的GLTF处理装置。
图8是本申请实施例的用于显示优化的GLTF处理装置的方框示意图。
如图8所示,该用于显示优化的GLTF处理装置10包括:检测模块100、实例化模块200和处理模块300。
其中,检测模块100用于检测GLTF文件中每个构件的出现次数;
实例化模块200用于利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化;以及
处理模块300用于将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
可选地,实例化模块200包括:
建立单元,用于在GLTF文件中,建立当前面片与基于几何体的节点间的索引;
统计单元,用于统计当前面片被节点使用的次数,其中,如果次数大于预设次数,则判定当前面片为instance的可执行对象;
第一生成单元,用于将作为可执行对象的面片构造为带单位矩阵的节点,生成一个仅携带该节点的子GLTF文件;
记录单元,用于将在GLTF中使用到当前面片的节点的转换矩阵记录到矩阵文件中。
可选地,处理模块300包括:
第二生成单元,用于在GLTF文件中,遍历所有面片,使得节点中的面片执行所节点的矩阵变换,生成多个新面片,并基于多个新面片生成多个新节点;
第一处理单元,用于遍历所有新面片,建立多个新面片与多个新节点的索引,其中,如果新面片的材质数为小于或等于1,则新面片保持不变,否则对按照材质拆分成多个单材质面片;
合并单元,用于遍历经第一处理单元处理后的所有新面片,提取引用面片对应的所有新节点,合并相同材质的新节点,得到至少一个合并节点。
可选地,还包括:
第二处理单元,用于在至少一个合并节点的合并节点的尺寸超过节点尺寸阈值时,将合并节点的面片拆分成多个独立面片,且给每个独立面片生成独立节点,独立节点使用合并节点的转换矩阵;
输出单元,用于输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件。
可选地,输出单元,包括:
为GLTF文件中的每个节点生成唯一编码,并将唯一编码反写入GLTF中每个节点的属性中,得到修改后的GLTF文件;
可选地,输出单元,包括:
为每个合并拆分节点生成唯一编码,并为每个合并拆分节点生成一个GLTF文件,得到合并拆分节点GLTF文件。
可选地,输出单元,包括:
通过合并拆分节点的唯一编码,找到合并拆分节点合并前的GLTF文件,得到索引文件。
需要说明的是,前述对用于显示优化的GLTF处理方法实施例的解释说明也适用于该实施例的用于显示优化的GLTF处理装置,此处不再赘述。
根据本申请实施例提出的用于显示优化的GLTF处理装置,可以检测GLTF文件中每个构件的出现次数,并利用instance技术将GLTF文件中出现次数大于预设次数的构件进行实例化,并将GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染,解决了因GLTF中的构件数量过多,直接展示时,出现的渲染次数过多、加载时间长甚至加载失败的问题,大大降低了渲染次数,提升用户的浏览体验。
图9为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
存储器901、处理器902及存储在存储器901上并可在处理器902上运行的计算机程序。
处理器902执行程序时实现上述实施例中提供的用于显示优化的GLTF处理方法。
进一步地,电子设备还包括:
通信接口903,用于存储器901和处理器902之间的通信。
存储器901,用于存放可在处理器902上运行的计算机程序。
存储器901可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
如果存储器901、处理器902和通信接口903独立实现,则通信接口903、存储器901和处理器902可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(PeripheralComponent,简称为PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器901、处理器902及通信接口903,集成在一块芯片上实现,则存储器901、处理器902及通信接口903可以通过内部接口完成相互间的通信。
处理器902可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上的用于显示优化的GLTF处理方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或N个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种用于显示优化的GLTF处理方法,其特征在于,包括以下步骤:
S1.检测所述GLTF文件中每个构件的出现次数;
S2.利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化;以及
S3.将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
2.根据权利要求1所述的方法,其特征在于,所述利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化,包括:
S21.在所述GLTF文件中,建立当前面片与基于几何体的节点间的索引;
S22.统计所述当前面片被节点使用的次数,其中,如果所述次数大于所述预设次数,则判定所述当前面片为instance的可执行对象;
S23.将作为所述可执行对象的面片构造为带单位矩阵的节点,生成一个仅携带该节点的子GLTF文件;
S24.将在所述GLTF中使用到所述当前面片的节点的转换矩阵记录到矩阵文件中。
3.根据权利要求2所述的方法,其特征在于,所述将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,包括:
S31.在GLTF文件中,遍历所有面片,使得节点中的面片执行所节点的矩阵变换,生成多个新面片,并基于所述多个新面片生成多个新节点;
S32.遍历所有所述新面片,建立所述多个新面片与所述多个新节点的索引,其中,如果新面片的材质数为小于或等于1,则所述新面片保持不变,否则对按照材质拆分成多个单材质新面片;
S33.遍历经步骤S32处理后的所有新面片,提取引用面片对应的所有新节点,合并相同材质的新节点,得到至少一个合并节点。
4.根据权利要求3所述的方法,其特征在于,还包括:
在所述至少一个合并节点的合并节点的尺寸超过节点尺寸阈值时,将所述合并节点的面片拆分成多个独立面片,且给每个独立面片生成独立节点,所述独立节点使用所述合并节点的转换矩阵;
输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件。
5.根据权利要求4所述的方法,其特征在于,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为所述GLTF文件中的每个节点生成唯一编码,并将所述唯一编码反写入所述GLTF中每个节点的属性中,得到所述修改后的GLTF文件。
6.根据权利要求4所述的方法,其特征在于,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
为每个合并拆分节点生成唯一编码,并为所述每个合并拆分节点生成一个GLTF文件,得到所述合并拆分节点GLTF文件。
7.根据权利要求4所述的方法,其特征在于,所述输出修改后的GLTF文件、合并拆分节点GLTF文件、索引文件,包括:
通过所述合并拆分节点的唯一编码,找到所述合并拆分节点合并前的GLTF文件,得到所述索引文件。
8.一种用于显示优化的GLTF处理装置,其特征在于,包括:
检测模块,用于检测所述GLTF文件中每个构件的出现次数;
实例化模块,用于利用instance技术将所述GLTF文件中出现次数大于预设次数的构件进行实例化;以及
处理模块,用于将所述GLTF文件中实例化后剩余的构件进行同材质合并,以将相同材质的几何体合并为一个几何体,以基于合并后的几何体进行渲染。
9.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-7任一项所述的用于显示优化的GLTF处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-7任一项所述的用于显示优化的GLTF处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201885.1A CN112862939A (zh) | 2021-02-23 | 2021-02-23 | 用于显示优化的gltf处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110201885.1A CN112862939A (zh) | 2021-02-23 | 2021-02-23 | 用于显示优化的gltf处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112862939A true CN112862939A (zh) | 2021-05-28 |
Family
ID=75990072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110201885.1A Withdrawn CN112862939A (zh) | 2021-02-23 | 2021-02-23 | 用于显示优化的gltf处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862939A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253724A (zh) * | 2021-12-15 | 2022-03-29 | 中煤科工重庆设计研究院(集团)有限公司 | 一种bim模型渲染方法及*** |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126451A1 (en) * | 2003-06-11 | 2006-06-15 | Sony Corporation | Information processsing device and method, program, and recording medium |
KR20180025757A (ko) * | 2016-09-01 | 2018-03-09 | 주식회사 포스코아이씨티 | 연속공정용 대용량 데이터를 실시간으로 처리하기 위한 스마트팩토리 플랫폼 |
CN109978981A (zh) * | 2019-03-15 | 2019-07-05 | 广联达科技股份有限公司 | 一种提高建筑模型显示效率的批次渲染方法 |
CN110245368A (zh) * | 2018-03-09 | 2019-09-17 | 北京东晨工元科技发展有限公司 | 一种bim数据的结构化处理与存储方法 |
CN110309458A (zh) * | 2018-03-30 | 2019-10-08 | 北京东晨工元科技发展有限公司 | 基于WebGL的BIM模型显示及渲染方法 |
CN110489692A (zh) * | 2019-07-19 | 2019-11-22 | 厦门海迈科技股份有限公司 | 一种基于WebGL实例化技术构件级操作的实现方法及*** |
CN110675466A (zh) * | 2019-09-27 | 2020-01-10 | 广州华多网络科技有限公司 | 渲染***及渲染方法、装置、电子设备和存储介质 |
CN111643897A (zh) * | 2020-04-26 | 2020-09-11 | 完美世界(北京)软件科技发展有限公司 | 信息处理方法以及装置、***、设备 |
CN112348954A (zh) * | 2020-11-30 | 2021-02-09 | 久瓴(江苏)数字智能科技有限公司 | 一种建筑模型处理方法、装置、计算机设备以及存储介质 |
-
2021
- 2021-02-23 CN CN202110201885.1A patent/CN112862939A/zh not_active Withdrawn
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060126451A1 (en) * | 2003-06-11 | 2006-06-15 | Sony Corporation | Information processsing device and method, program, and recording medium |
KR20180025757A (ko) * | 2016-09-01 | 2018-03-09 | 주식회사 포스코아이씨티 | 연속공정용 대용량 데이터를 실시간으로 처리하기 위한 스마트팩토리 플랫폼 |
CN110245368A (zh) * | 2018-03-09 | 2019-09-17 | 北京东晨工元科技发展有限公司 | 一种bim数据的结构化处理与存储方法 |
CN110309458A (zh) * | 2018-03-30 | 2019-10-08 | 北京东晨工元科技发展有限公司 | 基于WebGL的BIM模型显示及渲染方法 |
CN109978981A (zh) * | 2019-03-15 | 2019-07-05 | 广联达科技股份有限公司 | 一种提高建筑模型显示效率的批次渲染方法 |
CN110489692A (zh) * | 2019-07-19 | 2019-11-22 | 厦门海迈科技股份有限公司 | 一种基于WebGL实例化技术构件级操作的实现方法及*** |
CN110675466A (zh) * | 2019-09-27 | 2020-01-10 | 广州华多网络科技有限公司 | 渲染***及渲染方法、装置、电子设备和存储介质 |
CN111643897A (zh) * | 2020-04-26 | 2020-09-11 | 完美世界(北京)软件科技发展有限公司 | 信息处理方法以及装置、***、设备 |
CN112348954A (zh) * | 2020-11-30 | 2021-02-09 | 久瓴(江苏)数字智能科技有限公司 | 一种建筑模型处理方法、装置、计算机设备以及存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114253724A (zh) * | 2021-12-15 | 2022-03-29 | 中煤科工重庆设计研究院(集团)有限公司 | 一种bim模型渲染方法及*** |
CN114253724B (zh) * | 2021-12-15 | 2023-10-13 | 中煤科工重庆设计研究院(集团)有限公司 | 一种bim模型渲染方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107807989B (zh) | 小文件处理方法及装置 | |
CN112862939A (zh) | 用于显示优化的gltf处理方法、装置、电子设备及存储介质 | |
CN111159130A (zh) | 一种小文件合并方法及电子设备 | |
CN114465956A (zh) | 虚拟机流量限速的方法、装置、电子设备及存储介质 | |
CN114625696A (zh) | 文件恢复方法、装置、电子设备及存储介质 | |
CN113064556A (zh) | 一种bios的数据存储方法、装置、设备及存储介质 | |
CN112052157B (zh) | 测试报文的构造方法、装置及*** | |
CN110399132B (zh) | 项目代码的维护方法、装置、计算机设备和存储介质 | |
US8683168B2 (en) | Memory card including a computing device for obtaining a physical address corresponding to a logical address and computer system including the memory card | |
CN112612753B (zh) | 一种动态管理Java Card存储空间的***和方法 | |
CN114816252A (zh) | 车载存储设备的读取方法、装置、车辆及存储介质 | |
CN114064653A (zh) | 数据的***方法、装置、计算机设备和存储介质 | |
CN111708288B (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN114861003A (zh) | 一种指定目录下的对象列举方法、装置及其介质 | |
CN113806365A (zh) | 一种单数据源数据管理方法、装置及存储介质 | |
CN113986828A (zh) | 存储海量文件的方法、装置、电子设备及存储介质 | |
CN111126395A (zh) | R-cnn网络中选择性搜索算法的优化方法、存储介质 | |
KR20210058533A (ko) | 복수개의 커뮤니티를 포함하는 네트워크에서 커뮤니티 재구성 방법 및 이를 위한 전자 장치 | |
CN111124306A (zh) | 一种数据删除方法、***、设备及计算机可读存储介质 | |
CN114724276B (zh) | 一种多类型日志数据的处理方法、播放方法及相关设备 | |
CN111126571B (zh) | 基于dht网络的r-cnn网络优化方法、存储介质 | |
CN110096555B (zh) | 一种分布式***的表匹配处理方法及装置 | |
CN103853670A (zh) | 一种信息处理方法及电子设备 | |
CN117171419B (zh) | 内容处理方法、装置、电子设备、存储介质及程序产品 | |
CN109992421B (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230706 Address after: A4-04, Floor 4, Building A1, No. 1, Panpu Road, Country Garden Community, Beijiao Town, Shunde District, Foshan, Guangdong 528311 Applicant after: Guangdong Bozhilin Software Technology Co.,Ltd. Address before: 528311 a2-05, 2nd floor, building A1, 1 Panpu Road, Biguiyuan community, Beijiao Town, Shunde District, Foshan City, Guangdong Province Applicant before: GUANGDONG BOZHILIN ROBOT Co.,Ltd. |
|
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210528 |