一种三维模型文件解析方法、装置、设备及存储介质与流程
未命名
09-22
阅读:74
评论:0
1.本发明涉及三维模型文件处理技术领域,具体而言,涉及一种三维模型文件解析方法、装置、设备及存储介质。
背景技术:
2.3dxml文件格式是一种由达索公司(dassault syst
è
mes)基于xml(可扩展标记语言)文件格式开发的、用于存储和交换三维数据的文件格式。基于3dxml文件格式生成的3dxml文件(3dxml格式的三维模型文件)被广泛应用于计算机辅助设计(cad)和计算机辅助制造(cam)领域。3dxml文件采用基于xml的格式,使得数据在不同的软件平台之间可以进行无缝的共享和交流。3dxml文件通常包含有三维模型的几何形状、目录树(装配关系)、材质属性等大量信息,解析3dxml文件、从中提取出重要信息是一项具有挑战性的任务。
3.目前,一些3dxml文件解析方法只能解析3dxml文件中的几何信息,无法得到3dxml文件中的目录树信息,一些3dxml文件解析方法得到的结果文件存在大量的冗余数据,结果文件较大,还有一些3dxml解析方式只能得到特定数据格式的数据,数据的灵活性与交换性较差。因此,需要研究一种新的三维模型文件解析方法来解析3dxml文件。
技术实现要素:
4.本发明实施例的目的在于提供一种三维模型文件解析方法、装置、设备及存储介质,用以实现完整地从3dxml文件中解析出关键信息的技术效果。
5.第一方面,本发明实施例提供一种三维模型文件解析方法,包括:
6.解压三维模型文件,得到三维模型主文件;
7.解析所述三维模型主文件,得到三维模型数据;
8.根据所述三维模型数据,生成目录树;
9.将所述目录树的信息存储在第一结果文件。
10.在上述实现过程中,通过从三维模型主文件中解析出三维模型数据来生成目录树及存储目录树信息,能够完整地从三维模型文件中解析出目录树信息这一关键信息。
11.进一步地,所述三维模型文件解析方法,还包括:
12.根据所述三维模型数据,获取三维模型要素文件;
13.解析所述三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件;
14.压缩所述第一结果文件和所述第二结果文件,得到解析结果文件。
15.在上述实现过程中,通过从三维模型要素文件中解析出三维模型要素数据来获取三维模型要素信息,将第一结果文件和第二结果文件压缩成解析结果文件,能够完整地从三维模型文件中解析出三维模型要素信息这一关键信息,同时减少结果文件的存储空间。
16.进一步地,所述解压三维模型文件,得到三维模型主文件,具体包括:
17.解压所述三维模型文件,得到三维模型入口文件;
18.解析所述三维模型入口文件的根标签,得到所述三维模型主文件的文件名;
19.根据所述三维模型主文件的文件名,获取所述三维模型主文件。
20.在上述实现过程中,通过解析三维模型入口文件的根标签,获取三维模型主文件,能够快速准确地获取三维模型主文件,有利于提高三维模型文件解析效率。
21.进一步地,所述解析所述三维模型主文件,得到三维模型数据,具体包括:
22.解析所述三维模型主文件的头部标签,得到三维模型基本信息;
23.解析所述三维模型主文件的结构标签,得到三维模型结构信息;
24.结合所述三维模型基本信息和所述三维模型结构信息,得到所述三维模型数据。
25.在上述实现过程中,通过解析三维模型主文件的头部标签和结构标签,将得到的三维模型基本信息和三维模型结构信息整理为三维模型数据,能够快速准确地获取完整的三维模型数据,有利于保证完整地从三维模型文件中解析出目录树信息这一关键信息。
26.进一步地,所述根据所述三维模型数据,生成目录树,具体包括:
27.根据所述三维模型数据中的三维模型结构信息,建立三维模型组件关系;
28.基于所述三维模型组件关系,生成所述目录树。
29.在上述实现过程中,通过根据三维模型数据中的三维模型结构信息来建立三维模型组件关系,基于三维模型组件关系生成目录树,能够快速准确地生成目录树,有利于提高三维模型文件解析效率。
30.进一步地,所述根据所述三维模型数据,获取三维模型要素文件,具体包括:
31.根据所述三维模型数据中的三维模型结构信息,建立三维模型组件关系;
32.基于所述三维模型组件关系,确定所述三维模型要素文件的文件路径;
33.根据所述三维模型要素文件的文件路径,获取所述三维模型要素文件。
34.在上述实现过程中,通过根据三维模型数据中的三维模型结构信息来建立三维模型组件关系,基于三维模型组件关系获取三维模型要素文件,能够快速准确地获取三维模型要素文件,有利于提高三维模型文件解析效率。
35.进一步地,所述解析所述三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件,具体包括:
36.当所述三维模型要素文件包括三维模型组件文件时,解析所述三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件;
37.当所述三维模型要素文件包括三维模型材质文件时,解析所述三维模型材质文件,将得到的三维模型材质数据存储在第四结果文件;
38.当所述三维模型要素文件包括三维模型贴图文件时,解析所述三维模型贴图文件,将得到的三维模型贴图数据存储在第五结果文件;
39.其中,所述三维模型要素文件至少包括所述三维模型组件文件、所述三维模型材质文件、所述三维模型贴图文件中的一个,所述第二结果文件至少包括所述第三结果文件、所述第四结果文件、所述第五结果文件中的一个。
40.在上述实现过程中,通过将不同类型的三维模型要素文件中的三维模型要素数据存储在不同的结果文件,能够针对各种类型的三维模型要素文件选择合适的数据存储格式,有利于提高数据的通用性和灵活性。
41.进一步地,在所述当所述三维模型要素文件包括三维模型组件文件时,解析所述三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件之后,还包括:
42.判断所述第三结果文件是否与历史第三结果文件对应同一所述三维模型组件文件;
43.当所述第三结果文件与所述历史第三结果文件对应同一所述三维模型组件文件时,删除所述第三结果文件,并从所述三维模型数据中提取三维模型组件的变换矩阵信息,将所述变换矩阵信息存储在第六结果文件;
44.重新压缩所述第一结果文件、所述第二结果文件和所述第六结果文件,得到新的解析结果文件。
45.在上述实现过程中,通过在当前的第三结果文件与历史第三结果文件对应同一三维模型组件文件时,删除第三结果文件,仅存储三维模型组件的编号矩阵信息,能够对重复的三维模型组件进行去重处理,减少冗余数据,避免解析结果文件过大。
46.第二方面,本发明实施例提供一种三维模型文件解析装置,包括:
47.主文件获取模块,用于解压三维模型文件,得到三维模型主文件;
48.主文件解析模块,用于解析所述三维模型主文件,得到三维模型数据;
49.目录树生成模块,用于根据所述三维模型数据,生成目录树;
50.目录树存储模块,用于将所述目录树的信息存储在第一结果文件。
51.第三方面,本发明实施例提供一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现如上所述的三维模型文件解析方法。
52.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上所述的三维模型文件解析方法。
附图说明
53.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
54.图1为本发明第一实施例提供的一种三维模型文件解析方法的流程示意图;
55.图2为本发明第一实施例中一可选实施例提供的一种三维模型文件解析方法的流程示意图;
56.图3为本发明第一实施例中示例的一种三维模型文件解析方法的数据流图;
57.图4为本发明第一实施例中示例的三维模型组件关系的示意图;
58.图5为本发明第一实施例中示例的目录树的示意图;
59.图6为本发明第二实施例提供的一种三维模型文件解析装置的结构示意图;
60.图7为本发明第二实施例中一可选实施例提供的一种三维模型文件解析装置的结构示意图;
61.图8为本发明第三实施例提供的一种电子设备的结构示意图。
具体实施方式
62.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
63.应注意到:在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。同时,文中的步骤编号,仅为了方便本发明实施例的解释,不作为限定步骤执行先后顺序的作用。本发明实施例提供的方法可以由相关的终端设备执行,且下文均以处理器作为执行主体为例进行说明。
64.请参看图1,图1为本发明第一实施例提供的一种三维模型文件解析方法的流程示意图。本发明第一实施例提供一种三维模型文件解析方法,包括步骤s101~s104:
65.s101、解压三维模型文件,得到三维模型主文件;
66.s102、解析三维模型主文件,得到三维模型数据;
67.s103、根据三维模型数据,生成目录树;
68.s104、将目录树的信息存储在第一结果文件。
69.作为示例性地,3dxml格式的三维模型文件,即3dxml文件是采用压缩算法压缩多个文件得到的文件,一个3dxml文件通常包括以下文件:一个三维模型入口文件,包含三维模型主文件;一个三维模型主文件,包含实际的三维模型数据;至少一个三维模型组件文件,包含三维模型组件的几何信息;一个三维模型材质文件,包含用于渲染三维模型的材质信息;一个三维模型贴图文件,包含用于渲染三维模型的贴图信息。
70.采用解压工具解压3dxml文件,得到三维模型主文件,采用解析工具解析三维模型主文件,得到三维模型数据,根据三维模型数据,生成目录树,将目录树的信息存储在第一结果文件。其中,第一结果文件可以是数据库文件,例如data.bj文件。
71.本发明实施例通过从三维模型主文件中解析出三维模型数据来生成目录树及存储目录树信息,能够完整地从三维模型文件中解析出目录树信息这一关键信息。
72.请参看图2,图2为本发明第一实施例中一可选实施例提供的一种三维模型文件解析方法的流程示意图。在可选的实施例当中,所述三维模型文件解析方法,还包括步骤s105~s107:
73.s105、根据三维模型数据,获取三维模型要素文件;
74.s106、解析三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件;
75.s107、压缩第一结果文件和第二结果文件,得到解析结果文件。
76.作为示例性地,在得到三维模型数据后,根据三维模型数据,获取三维模型组件文件、三维模型材质文件或三维模型贴图文件等三维模型要素文件。采用解析工具解析三维模型要素文件,得到三维模型要素数据,将三维模型要素数据存储在第二结果文件。其中,当三维模型要素文件包括三维模型组件文件、三维模型材质文件或三维模型贴图文件中的至少两个文件时,将不同文件中的要素数据对应存储在不同的第二结果文件。调取第一结果文件,压缩第一结果文件和第二结果文件,得到解析结果文件。
77.本发明实施例通过从三维模型要素文件中解析出三维模型要素数据来获取三维模型要素信息,将第一结果文件和第二结果文件压缩成解析结果文件,能够完整地从三维模型文件中解析出三维模型要素信息这一关键信息,同时减少结果文件的存储空间。
78.在可选的实施例当中,所述解压三维模型文件,得到三维模型主文件,具体包括:解压三维模型文件,得到三维模型入口文件;解析三维模型入口文件的根标签,得到三维模
型主文件的文件名;根据三维模型主文件的文件名,获取三维模型主文件。
79.作为示例性地,采用解压工具解压三维模型文件,得到三维模型入口文件。考虑到三维模型入口文件中包含三维模型主文件,采用解析工具解析三维模型入口文件根标签《root》中的内容,由于三维模型入口文件根标签《root》中的内容是三维模型主文件的文件名,因此可以得到三维模型主文件的文件名。根据三维模型主文件的文件名,获取三维模型主文件。
80.本发明实施例通过解析三维模型入口文件的根标签,获取三维模型主文件,能够快速准确地获取三维模型主文件,有利于提高三维模型文件解析效率。
81.在可选的实施例当中,所述解析三维模型主文件,得到三维模型数据,具体包括:解析三维模型主文件的头部标签,得到三维模型基本信息;解析三维模型主文件的结构标签,得到三维模型结构信息;结合三维模型基本信息和三维模型结构信息,得到三维模型数据。
82.作为示例性地,采用解析工具解析三维模型主文件头部标签《header》中的内容,由于三维模型主文件头部标签《header》中一般包含子标签《author》、子标签《generator》、子标签《created》,子标签《author》中的内容是三维模型文件的创建者,子标签《generator》中的内容是生成三维模型文件的软件,子标签《created》中的内容是三维模型文件的创建时间,因此可以得到三维模型文件的创建者、生成三维模型文件的软件、三维模型文件的创建时间这些三维模型基本信息。
83.采用解析工具解析三维模型主文件结构标签《productstructure》中的内容,由于三维模型主文件结构标签《productstructure》中一般包括子标签《reference3d》、子标签《instance3d》、子标签《instancerep》、子标签《referencerep》,子标签《reference3d》中的内容是参考对象的id值和name值,子标签《instance3d》中的内容是实例对象的id值和name值,子标签《instancerep》中的内容是实例对象图形要素数据的id值和name值,子标签《referencerep》中的内容是参考对象图形要素文件的id值和name值,因此可以获取三维模型中各个结构对象的信息,整理三维模型中所有结构对象的信息得到三维模型结构信息。
84.整理所有三维模型基本信息和所有三维模型结构信息,得到三维模型数据。
85.本发明实施例通过解析三维模型主文件的头部标签和结构标签,将得到的三维模型基本信息和三维模型结构信息整理为三维模型数据,能够快速准确地获取完整的三维模型数据,有利于保证完整地从三维模型文件中解析出目录树信息这一关键信息。
86.在可选的实施例当中,所述根据三维模型数据,生成目录树,具体包括:根据三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于三维模型组件关系,生成目录树。
87.作为示例性地,从三维模型数据中提取三维模型结构信息,根据三维模型结构信息,确定三维模型各个结构对象,即组件之间的关联关系,建立三维模型组件关系。
88.基于三维模型组件关系,以三维模型主文件结构标签《productstructure》中各个子标签的id值代表各自位置,采用深度优先遍历(depth first search,dfs)算法确定三维模型要素文件的所有文件路径,保留子标签《reference3d》和子标签《instance3d》的id值进行文件路径合并,生成目录树。
89.本发明实施例通过根据三维模型数据中的三维模型结构信息来建立三维模型组
件关系,基于三维模型组件关系生成目录树,能够快速准确地生成目录树,有利于提高三维模型文件解析效率。
90.在可选的实施例当中,所述根据三维模型数据,获取三维模型要素文件,具体包括:根据三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于三维模型组件关系,确定三维模型要素文件的文件路径;根据三维模型要素文件的文件路径,获取三维模型要素文件。
91.作为示例性地,从三维模型数据中提取三维模型结构信息,根据三维模型结构信息,确定三维模型各个结构对象,即组件之间的关联关系,建立三维模型组件关系。
92.基于三维模型组件关系,确定三维模型组件文件、三维模型材质文件或三维模型贴图文件等三维模型要素文件的文件路径,根据三维模型要素文件的文件路径,获取三维模型要素文件。
93.本发明实施例通过根据三维模型数据中的三维模型结构信息来建立三维模型组件关系,基于三维模型组件关系获取三维模型要素文件,能够快速准确地获取三维模型要素文件,有利于提高三维模型文件解析效率。
94.在可选的实施例当中,所述解析三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件,具体包括:当三维模型要素文件包括三维模型组件文件时,解析三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件;当三维模型要素文件包括三维模型材质文件时,解析三维模型材质文件,将得到的三维模型材质数据存储在第四结果文件;当三维模型要素文件包括三维模型贴图文件时,解析三维模型贴图文件,将得到的三维模型贴图数据存储在第五结果文件;其中,三维模型要素文件至少包括三维模型组件文件、三维模型材质文件、三维模型贴图文件中的一个,第二结果文件至少包括第三结果文件、第四结果文件、第五结果文件中的一个。
95.作为示例性地,在得到三维模型要素文件后,确定三维模型要素文件中各个文件的文件类型。
96.当三维模型要素文件包括三维模型组件文件时,采用解析工具解析三维模型组件文件,得到三维模型组件的几何信息,将三维模型组件的几何信息作为三维模型组件数据存储在第三结果文件。其中,第三结果文件可以是文本文件,例如obj文件。
97.当三维模型要素文件包括三维模型材质文件时,采用解析工具解析三维模型材质文件,得到用于渲染三维模型的材质信息,将用于渲染三维模型的材质信息作为三维模型材质数据存储在第四结果文件。其中,第四结果文件可以是材质库文件,例如mtl文件。
98.当三维模型要素文件包括三维模型贴图文件时,采用解析工具解析三维模型贴图文件,得到用于渲染三维模型的贴图信息,将用于渲染三维模型的贴图信息作为三维模型贴图数据存储在第五结果文件。其中,第五结果文件可以包括贴图文件。
99.本发明实施例通过将不同类型的三维模型要素文件中的三维模型要素数据存储在不同的结果文件,能够针对各种类型的三维模型要素文件选择合适的数据存储格式,有利于提高数据的通用性和灵活性。
100.在可选的实施例当中,在所述当三维模型要素文件包括三维模型组件文件时,解析三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件之后,还包括:判断第三结果文件是否与历史第三结果文件对应同一三维模型组件文件;当第三结果文件与历
史第三结果文件对应同一三维模型组件文件时,删除第三结果文件,并从三维模型数据中提取三维模型组件的变换矩阵信息,将变换矩阵信息存储在第六结果文件;重新压缩第一结果文件、第二结果文件和第六结果文件,得到新的解析结果文件。
101.作为示例性地,考虑到可以通过多个不同的文件路径获取同一个三维模型组件文件,得到多个第三结果文件,为过滤冗余数据,在得到第三结果文件时,判断当前的第三结果文件是否与历史第三结果文件对应同一个三维模型组件文件。
102.当当前的第三结果文件与历史第三结果文件对应同一个三维模型组件文件时,删除当前的第三结果文件,并从三维模型数据中提取三维模型组件的变换矩阵信息,将三维模型组件的变换矩阵信息存储在第六结果文件。其中,三维模型组件的变换矩阵信息是三维模型组件相对于原始组件的旋转信息、偏移信息,第六结果文件可以是文本文件,例如elementlist.txt文件。
103.本发明实施例通过在当前的第三结果文件与历史第三结果文件对应同一三维模型组件文件时,删除第三结果文件,仅存储三维模型组件的编号矩阵信息,能够对重复的三维模型组件进行去重处理,减少冗余数据,避免结果文件过大。
104.请参看图3,图3为本发明第一实施例中示例的一种三维模型文件解析方法的数据流图。作为示例性地,为了更清楚地说明本发明第一实施例提供的一种三维模型文件解析方法,应用所述三维模型文件解析方法,对汽车三维模型的3dxml文件car.3dxml进行解析,假设汽车三维模型的3dxml文件包含一个三维模型入口文件manifest.xml,一个三维模型主文件file_01.3dxml和一个三维模型组件文件wheel.xml,则具体应用过程如下:
105.1、采用任意的解压工具解压汽车三维模型的3dxml文件car.3dxml,得到三维模型入口文件manifest.xml。
106.2、采用任意的xml解析器解析三维模型入口文件manifest.xml根标签《root》中的内容,根标签《root》中的内容是三维模型主文件的文件名file_01.3dxml,可获取到三维模型主文件file_01.3dxml。
107.3、采用任意的xml解析器解析三维模型主文件file_01.3dxml的头部标签《header》中的内容,头部标签《header》中包括子标签《author》、子标签《generator》、子标签《created》,解析得到三维模型文件的创建者、生成三维模型文件的软件、三维模型文件的创建时间等三维模型基本信息。
108.例如,三维模型主文件file_01.3dxml头部标签《header》中的内容如下:
[0109]“《header》
[0110]
《schemaversion》4.3《/schemaversion》
[0111]
《title》demo《/title》
[0112]
《author》bj《/author》
[0113]
《generator》dassault systemes v6《/generator》
[0114]
《created》2022-12-12《/created》
[0115]
《/header》”,
[0116]
则得到三维模型文件的创建者为bj、生成三维模型文件的软件为dassault systemes v6、三维模型文件的创建时间为2022-12-12这些三维模型基本信息。
[0117]
4、采用任意的xml解析器解析三维模型主文件file_01.3dxml的结构标签《
productstructure》中的内容,结构标签《productstructure》中包含子标签《reference3d》、子标签《instance3d》、子标签《instancerep》、子标签《referencerep》,具体包括:解析所有子标签《reference3d》中的id值和name值,在3dxml格式的三维模型文件,即3dxml是3dexperience软件所生成的情况下,子标签《reference3d》中可能还包括子标签《v_name》,当存在子标签《v_name》时,一并解析子标签《v_name》中的值;解析所有子标签《instance3d》中的id值和name值,以及各个子标签《instance3d》中子标签《isaggregatedby》、子标签《isinstanceof》、子标签《relativematrix》中的值;解析所有子标签《instancerep》中的id值和name值,以及各个子标签《instancerep》中子标签《isaggregatedby》、子标签《isinstanceof》中的值;解析所有子标签《referencerep》中的id值和name值,以及各个子标签《referencerep》中associatedfile字段,associatedfile字段中的内容是三维模型组件文件wheel.xml的文件路径。
[0118]
例如,三维模型主文件file_01.3dxml结构标签《productstructure》中的内容如下:
[0119]“《productstructure root="1"xmlns:_3dshape="http://www.3ds.com/xsd/3dxml/product/3dshape"xsi:schemalocation="http://www.3ds.com/xsd/3dxml/product/3dshape 3dshape.xsd"》
[0120]
《reference3d xsi:type="reference3dtype"id="1"name="车"》
[0121]
《v_name》车《/v_name》
[0122]
《/reference3d》
[0123]
《reference3d xsi:type="reference3dtype"id="4"name="车轮总成"》
[0124]
《v_name》车轮总成《/v_name》
[0125]
《/reference3d》
[0126]
《reference3d xsi:type="reference3dtype"id="7"name="车轮"》
[0127]
《v_name》车轮《/v_name》
[0128]
《/reference3d》
[0129]
《instance3d xsi:type="instance3dtype"id="2"name="前车轮总成"》
[0130]
《isaggregatedby》1《/isaggregatedby》
[0131]
《isinstanceof》4《/isinstanceof》
[0132]
《relativematrix》1 0 0 0 1 0 0 0 1 0 0 0《/relativematrix》
[0133]
《/instance3d》
[0134]
《instance3d xsi:type="instance3dtype"id="3"name="后车轮总成"》
[0135]
《isaggregatedby》1《/isaggregatedby》
[0136]
《isinstanceof》4《/isinstanceof》
[0137]
《relativematrix》1 0 0 0 1 0 0 0 1 0 0 0《/relativematrix》
[0138]
《/instance3d》
[0139]
《instance3d xsi:type="instance3dtype"id="5"name="左车轮"》
[0140]
《isaggregatedby》4《/isaggregatedby》
[0141]
《isinstanceof》7《/isinstanceof》
[0142]
《relativematrix》1 0 0 0 1 0 0 0 1 0 0 0《/relativematrix》
[0143]
《/instance3d》
[0144]
《instance3d xsi:type="instance3dtype"id="6"name="右车轮"》
[0145]
《isaggregatedby》4《/isaggregatedby》
[0146]
《isinstanceof》7《/isinstanceof》
[0147]
《relativematrix》1 0 0 0 1 0 0 0 1 0 0 0《/relativematrix》
[0148]
《/instance3d》
[0149]
《referencerep xsi:type="_3dshape:_addedprefix_3dshape"id="9"name=""format="tessellated"associatedfile="urn:3dxml:wheel.xml"
[0150]
version="1.1"》
[0151]
《/referencerep》
[0152]
《instancerep xsi:type="instancereptype"id="8"name=""》
[0153]
《isaggregatedby》7《/isaggregatedby》
[0154]
《isinstanceof》9《/isinstanceof》
[0155]
《/instancerep》
[0156]
《/productstructure》”,
[0157]
则得到结构标签《productstructure》中各个子标签的值这些三维模型结构信息。
[0158]
5、根据三维模型结构信息中子标签《reference3d》的id值,子标签《instance3d》标签的isaggregatedby值、isinstanceof值,子标签《instancerep》的isaggregatedby值、isinstanceof值,子标签《referencerep》的id值建立三维模型组件关系。
[0159]
例如,确定各个子标签之间的关联关系,子标签《instance3d》通过isaggregatedby值与上层的子标签《reference3d》关联,通过isinstanceof值与下层的子标签《reference3d》相关联;子标签《instancerep》通过isaggregatedby值与上层的子标签《reference3d》关联,通过isinstanceof值与下层的子标签《referencerep》关联;子标签《referencerep》通过associatedfile字段值与三维模型组件文件wheel.xml关联,按照上述规则,建立如图4所示的三维模型组件关系。
[0160]
6、基于三维模型组件关系,以三维模型主文件结构标签《productstructure》中各个子标签的id值代表各自位置,采用深度优先遍历算法确定三维模型组件文件wheel.xml的所有文件路径,仅保留子标签《reference3d》和子标签《instance3d》的id值进行文件路径合并,当子标签《reference3d》中不含有子标签《v_name》时,使用子标签《reference3d》的name值和子标签《instance3d》的name值生成目录树,当子标签《reference3d》中含有子标签《v_name》时,使用子标签《reference3d》的v_name值和子标签《instance3d》的name值生成目录树。
[0161]
例如,基于三维模型组件关系确定三维模型组件文件wheel.xml的所有文件路径分别为:1-2-4-5-7-8-9;1-2-4-6-7-8-9;1-3-4-5-7-8-9;1-3-4-6-7-8-9。仅保留作为根结点的子标签《reference3d》的id值和子标签《instance3d》的id值,得到四条文件路径:1-2-5;1-2-6;1-3-5;1-3-6。而子标签《reference3d》含有子标签《v_name》,合并四条文件路径,生成如图5所示的目录树。
[0162]
子标签《instance3d》中的relativematrix值代表该子标签《instance3d》相对于原始xml文件的偏移信息、旋转信息,relativematrix中一共有12个数字,前9个数字代表旋
转信息,后三个数字代表偏移信息。如果将这12个数字使用长度为12的double类型的数组relative[12]表示,使用这12个数组可组成一个4
×
4的double类型的变换矩阵matrix[4][4]={relative[0],relative[3],relative[6],relative[9],relative[1],relative[4],relative[7],relative[10],relative[2],relative[5],relative[8],relative[11],0,0,0,1}。如果在到达三维模型组件文件wheel.xml的文件路径上存在多个子标签《instance3d》,则将得到的变换矩阵按照文件路径上的顺序相乘,得到最终的变换矩阵信息。
[0163]
7、根据三维模型结构信息中子标签《referencerep》的associatedfile字段值,得到三维模型组件文件wheel.xml的文件路径,然后解析三维模型组件文件wheel.xml中三维模型组件的几何信息。
[0164]
三维模型组件文件wheel.xml仅存有三维模型组件的颜色信息,用于渲染三维模型的材质信息存储在三维模型材质文件catmaterialref.3dxml,用于渲染三维模型的贴图信息存储在三维模型贴图文件catrepimage.3dxml中,此示例仅描述三维模型主文件的解析过程,不描述三维模型组件文件wheel.xml、三维模型材质文件catmaterialref.3dxml、三维模型贴图文件catrepimage.3dxml的解析过程。
[0165]
使用关系型数据库sqlite来存储三维模型的目录树信息,将目录树信息存放在data.bj文件。将从三维模型组件文件wheel.xml中解析出的三维模型组件的几何信息存放到obj文件中,材质信息(包含xml文件中的颜色信息)存放在mtl文件中。三维模型每个组件的几何信息可存储为一个或多个obj文件,三维模型每个组件的材质信息可存储为一个或多个mtl文件。
[0166]
8、对相同几何信息的三维模型组件进行去重处理,具体地,在第6步中,当经过不同的文件路径到达了相同的三维模型组件文件wheel.xml时,只保留一份wheel.xml生成的obj文件,重复组件只记录相对于原始xml文件的旋转信息、偏移信息,旋转信息、偏移信息通过第6步得到,存储在elementlist.txt文件。
[0167]
9、最终将汽车三维模型的3dxml文件car.3dxml解析为以下结果文件:包含三维模型组件旋转信息、偏移信息的elementlist.txt文件;包含三维模型组件几何信息、材质信息和贴图信息的meshfiles文件夹,meshfiles文件夹中包含至少一个obj文件、至少一个mtl文件和至少一个贴图文件;包含三维模型目录树信息的data.bj文件。这些结果文件最终被压缩成名为pak的解析结果文件。
[0168]
请参看图6,图6为本发明第二实施例提供的一种三维模型文件解析装置的结构示意图。本发明第二实施例提供一种三维模型文件解析装置,包括:主文件获取模块201,用于解压三维模型文件,得到三维模型主文件;主文件解析模块202,用于解析三维模型主文件,得到三维模型数据;目录树生成模块203,用于根据三维模型数据,生成目录树;目录树存储模块204,用于将目录树的信息存储在第一结果文件。
[0169]
请参看图7,图7为本发明第二实施例中一可选实施例提供的一种三维模型文件解析装置的结构示意图。在可选的实施例当中,所述三维模型文件解析装置,还包括:要素文件获取模块205,用于根据三维模型数据,获取三维模型要素文件;要素文件解析模块206,用于解析三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件;结果文件压缩模块207,用于压缩第一结果文件和第二结果文件,得到解析结果文件。
[0170]
在可选的实施例当中,所述解压三维模型文件,得到三维模型主文件,具体包括:解压三维模型文件,得到三维模型入口文件;解析三维模型入口文件的根标签,得到三维模型主文件的文件名;根据三维模型主文件的文件名,获取三维模型主文件。
[0171]
在可选的实施例当中,所述解析三维模型主文件,得到三维模型数据,具体包括:解析三维模型主文件的头部标签,得到三维模型基本信息;解析三维模型主文件的结构标签,得到三维模型结构信息;结合三维模型基本信息和三维模型结构信息,得到三维模型数据。
[0172]
在可选的实施例当中,所述根据三维模型数据,生成目录树,具体包括:根据三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于三维模型组件关系,生成目录树。
[0173]
在可选的实施例当中,所述根据三维模型数据,获取三维模型要素文件,具体包括:根据三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于三维模型组件关系,确定三维模型要素文件的文件路径;根据三维模型要素文件的文件路径,获取三维模型要素文件。
[0174]
在可选的实施例当中,所述解析三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件,具体包括:当三维模型要素文件包括三维模型组件文件时,解析三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件;当三维模型要素文件包括三维模型材质文件时,解析三维模型材质文件,将得到的三维模型材质数据存储在第四结果文件;当三维模型要素文件包括三维模型贴图文件时,解析三维模型贴图文件,将得到的三维模型贴图数据存储在第五结果文件;其中,三维模型要素文件至少包括三维模型组件文件、三维模型材质文件、三维模型贴图文件中的一个,第二结果文件至少包括第三结果文件、第四结果文件、第五结果文件中的一个。
[0175]
在可选的实施例当中,要素文件解析模块206,还用于在所述当三维模型要素文件包括三维模型组件文件时,解析三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件之后,判断第三结果文件是否与历史第三结果文件对应同一三维模型组件文件;当第三结果文件与历史第三结果文件对应同一三维模型组件文件时,删除第三结果文件,并从三维模型数据中提取三维模型组件的变换矩阵信息,将变换矩阵信息存储在第六结果文件;重新压缩第一结果文件、第二结果文件和第六结果文件,得到新的解析结果文件。
[0176]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0177]
请参看图8,图8为本发明第三实施例提供的一种电子设备的结构示意图。本发明第三实施例提供一种电子设备30,包括处理器301、存储器302以及存储在存储器302中且被配置为由处理器301执行的计算机程序;存储器302与处理器301耦接,且处理器301执行计算机程序时实现如本发明第一实施例所述的三维模型文件解析方法。
[0178]
其中,处理器301通过总线303从存储器302读取计算机程序并执行计算机程序时可实现如本发明第一实施例所述的三维模型文件解析方法包括的任意实施例的方法。
[0179]
处理器301可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理
器301可以是微处理器。
[0180]
存储器302可以用于存储由处理器301执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本发明实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器301可以用于执行存储器302中的指令以实现如本发明第一实施例所述的三维模型文件解析方法。存储器302包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
[0181]
本发明第四实施例提供一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序;其中,在计算机程序运行时控制计算机可读存储介质所在设备执行如本发明第一实施例所述的三维模型文件解析方法,且能达到与之相同的有益效果。
[0182]
综上所述,本发明实施例提供一种三维模型文件解析方法、装置、设备及存储介质,所述方法包括:解压三维模型文件,得到三维模型主文件;解析三维模型主文件,得到三维模型数据;根据三维模型数据,生成目录树;将目录树的信息存储在第一结果文件。本发明实施例通过从三维模型主文件中解析出三维模型数据来生成目录树及存储目录树信息,能够完整地从三维模型文件中解析出目录树信息这一关键信息。
[0183]
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0184]
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0185]
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0186]
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
技术特征:
1.一种三维模型文件解析方法,其特征在于,包括:解压三维模型文件,得到三维模型主文件;解析所述三维模型主文件,得到三维模型数据;根据所述三维模型数据,生成目录树;将所述目录树的信息存储在第一结果文件。2.根据权利要求1所述的三维模型文件解析方法,其特征在于,还包括:根据所述三维模型数据,获取三维模型要素文件;解析所述三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件;压缩所述第一结果文件和所述第二结果文件,得到解析结果文件。3.根据权利要求1所述的三维模型文件解析方法,其特征在于,所述解压三维模型文件,得到三维模型主文件,具体包括:解压所述三维模型文件,得到三维模型入口文件;解析所述三维模型入口文件的根标签,得到所述三维模型主文件的文件名;根据所述三维模型主文件的文件名,获取所述三维模型主文件。4.根据权利要求1所述的三维模型文件解析方法,其特征在于,所述解析所述三维模型主文件,得到三维模型数据,具体包括:解析所述三维模型主文件的头部标签,得到三维模型基本信息;解析所述三维模型主文件的结构标签,得到三维模型结构信息;结合所述三维模型基本信息和所述三维模型结构信息,得到所述三维模型数据。5.根据权利要求1所述的三维模型文件解析方法,其特征在于,所述根据所述三维模型数据,生成目录树,具体包括:根据所述三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于所述三维模型组件关系,生成所述目录树。6.根据权利要求2所述的三维模型文件解析方法,其特征在于,所述根据所述三维模型数据,获取三维模型要素文件,具体包括:根据所述三维模型数据中的三维模型结构信息,建立三维模型组件关系;基于所述三维模型组件关系,确定所述三维模型要素文件的文件路径;根据所述三维模型要素文件的文件路径,获取所述三维模型要素文件。7.根据权利要求2所述的三维模型文件解析方法,其特征在于,所述解析所述三维模型要素文件,将得到的三维模型要素数据存储在第二结果文件,具体包括:当所述三维模型要素文件包括三维模型组件文件时,解析所述三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件;当所述三维模型要素文件包括三维模型材质文件时,解析所述三维模型材质文件,将得到的三维模型材质数据存储在第四结果文件;当所述三维模型要素文件包括三维模型贴图文件时,解析所述三维模型贴图文件,将得到的三维模型贴图数据存储在第五结果文件;其中,所述三维模型要素文件至少包括所述三维模型组件文件、所述三维模型材质文件、所述三维模型贴图文件中的一个,所述第二结果文件至少包括所述第三结果文件、所述第四结果文件、所述第五结果文件中的一个。
8.根据权利要求7所述的三维模型文件解析方法,其特征在于,在所述当所述三维模型要素文件包括三维模型组件文件时,解析所述三维模型组件文件,将得到的三维模型组件数据存储在第三结果文件之后,还包括:判断所述第三结果文件是否与历史第三结果文件对应同一所述三维模型组件文件;当所述第三结果文件与所述历史第三结果文件对应同一所述三维模型组件文件时,删除所述第三结果文件,并从所述三维模型数据中提取三维模型组件的变换矩阵信息,将所述变换矩阵信息存储在第六结果文件;重新压缩所述第一结果文件、所述第二结果文件和所述第六结果文件,得到新的解析结果文件。9.一种三维模型文件解析装置,其特征在于,包括:主文件获取模块,用于解压三维模型文件,得到三维模型主文件;主文件解析模块,用于解析所述三维模型主文件,得到三维模型数据;目录树生成模块,用于根据所述三维模型数据,生成目录树;目录树存储模块,用于将所述目录树的信息存储在第一结果文件。10.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时实现根据权利要求1至8任一项所述的三维模型文件解析方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行根据权利要求1至8任一项所述的三维模型文件解析方法。
技术总结
本发明实施例提供一种三维模型文件解析方法、装置、设备及存储介质,涉及三维模型文件处理技术领域。所述三维模型文件解析方法包括:解压三维模型文件,得到三维模型主文件;解析三维模型主文件,得到三维模型数据;根据三维模型数据,生成目录树;将目录树的信息存储在第一结果文件。本发明实施例能够实现完整地从3DXML文件中解析出关键信息的技术效果。从3DXML文件中解析出关键信息的技术效果。从3DXML文件中解析出关键信息的技术效果。
技术研发人员:裴贺威 夏海兵 高阳 王栋栋 沈沁宇
受保护的技术使用者:上海秉匠信息科技有限公司
技术研发日:2023.06.16
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/