CN104091367B - 基于ogre的三维场景存储方法及装置 - Google Patents
基于ogre的三维场景存储方法及装置 Download PDFInfo
- Publication number
- CN104091367B CN104091367B CN201410350231.5A CN201410350231A CN104091367B CN 104091367 B CN104091367 B CN 104091367B CN 201410350231 A CN201410350231 A CN 201410350231A CN 104091367 B CN104091367 B CN 104091367B
- Authority
- CN
- China
- Prior art keywords
- dimensional scenic
- ogre
- dimensional
- data
- node
- 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种基于OGRE的三维场景存储方法,包括:构建基于OGRE的三维场景文件存储格式;根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。此外,还公开了一种基于OGRE的三维场景存储装置。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
Description
技术领域
本发明涉及三维场景存储技术领域,尤其涉及一种基于OGRE的三维场景存储方法和一种基于OGRE的三维场景存储装置。
背景技术
虚拟现实技术的不断成熟和发展,使得对虚拟场景的全方位立体感的展示成为可能。OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎)是一款功能强大的开源三维引擎,使用它可以方便地构建三维场景,如家具搭配、室内模拟和拼墙业务等。在使用OGRE引擎构建三维场景的过程中,需要添加单个模型、组合多个模型、切换材质、撤销恢复等等各种操作,这都需要在构建的过程能实时保存或存储三维场景状态。而且大多数三维场景建完后往往需要保存到本地,以方便日后再使用。因此,寻求一种有效且简单的方法保存或存储OGRE三维场景是非常重要的。
目前一种常用的做法是采用OGRE提供的DotScene文件格式,即设计人员可将基于OGRE搭建的三维场景保存为后缀是.scene的文件。该文件不包含任何网格数据和纹理数据,只包含场景节点(也即场景元素),且该文件格式是一个标准化的XML(ExtensibleMarkup Language,可扩展标记语言)文件格式,易读易编辑。设计人员在编辑完三维场景后导出为该文件,同时应用程序也可以再次加载该文件进行三维场景重现。
但DotScene只是一个文件格式,并不包括任何保存动作。保存三维场景时设计人员需要根据需求对DotScene进行扩展并加以实现,不仅效率较低,而且至今仍未形成通用方法。另外,由于DotScene不包含场景节点之间的节点关系,因此通过DotScene保存三维场景时,会导致场景重现出现错误。
发明内容
基于此,本发明提供了一种基于OGRE的三维场景存储方法和一种基于OGRE的三维场景存储装置。
一种基于OGRE的三维场景存储方法,包括以下步骤:
构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;
将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
与一般技术相比,本发明基于OGRE的三维场景存储方法,构建一个新型的基于OGRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
一种基于OGRE的三维场景存储装置,包括第一构建模块、第二构建模块、第一存储模块和第二存储模块;
所述第一构建模块,用于构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
所述第二构建模块,用于根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;
所述第一存储模块,用于将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
所述第二存储模块,用于将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
与一般技术相比,本发明基于OGRE的三维场景存储装置,构建一个新型的基于OGRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
附图说明
图1为本发明基于OGRE的三维场景存储方法的流程示意图;
图2为本发明基于OGRE的三维场景存储装置的结构示意图。
具体实施方式
为更进一步阐述本发明所采取的技术手段及取得的效果,下面结合附图及较佳实施例,对本发明的技术方案,进行清楚和完整的描述。
请参阅图1,为本发明基于OGRE的三维场景存储方法的流程示意图。
本发明基于OGRE的三维场景存储方法,包括以下步骤:
S101构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
S102根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;
S103将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
S104将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
定义一个新型的XML节点格式来记录三维场景(三维场景也即3D场景,下同,全文可以通用)信息,应用程序以XML的方式记录每次创建3D场景节点(3D场景节点也即3D场景元素,下同,全文可以通用)的属性以及节点之间的关系,生成XML场景文件。当应用程序加载该场景文件时,通过事先设计的XML场景文档解析工具对所生成的三维场景文件进行解析,然后重建解析出的3D场景元素,并准确地进行关系重建以及属性设置。三维场景节点的属性是本领域技术人员公知的技术术语,在此不再赘述。
在步骤S101中,构建(或者定义,可通用,下同)描述3D场景元素及其属性、父子关系甚至材质映射的XML节点格式。这样,三维场景文件存储格式中保存了三维场景节点之间的父子关系以及三维场景节点的材质映射关系。
作为其中一个实施例,所述构建基于OGRE的三维场景文件存储格式的步骤中,所述三维场景文件存储格式还包括三维场景中节点的属性。
三维场景节点的属性包括节点名称、父节点名称、挂接的模型名称、位置、方向、缩放比例以及材质映射等。三维场景节点的属性是本领域技术人员公知的技术术语,在此不再赘述。
所述三维场景文件存储格式包括三维场景中节点的属性,保证了三维场景的实时存储和存储之后的顺利重建。
作为其中一个实施例,在所述构建基于OGRE的三维场景文件存储格式的步骤中,所述三维场景文件存储格式为XML文件格式。
XML文件格式是较为通用的一种三维场景文件保存格式,使本发明易于推广,并且增强了稳定性。
在步骤S102中,定义一系列数据结构体,在应用程序每次添加3D场景元素时,将元素分层次保存到对应的数据结构体中,并根据应用程序中对3D场景元素的增、删、改进行实时的更新。
所述数据结构体,也即结构体,是由一系列具有相同类型或不同类型的数据构成的数据集合。
作为其中一个实施例,所述构建若干个数据结构体的步骤中,构建的所述数据结构体还用于存储三维场景中节点的材质映射关系。
目前的DotScen中不包含材质映射关系,如果设计人员在搭建场景的过程中更换了3D元素的材质或纹理贴图,却并不想影响原模型,按照DotScene无法实现。而本实施例则可以很好的解决这个问题。
在步骤S103中,以树的结构体来保存整个3D场景。
构建的数据结构体可分为如下四类:用于存储父节点相关数据、用于存储子节点相关数据、用于存储父子关系相关数据和用于存储材质映射关系相关数据。
对于场景中直接挂接模型且没有孩子的场景节点,调用保存孩子接口saveChildNodeProperty();将创建的节点保存在一个map<Name,Property>对象中;用节点名称与其属性一一对应,属性包括:节点名称、父节点名称、挂接的模型名称、位置、方向、缩放比例以及材质映射。
针对凡是挂接子节点的父节点,保存到一个map<Name,Property>对象中,在场景重现时,最先创建该map中的父节点,以保证创建孩子节点时,可以正确的挂接到对应的父节点中。
针对3D场景中元素与元素之间的关系,单独保存一个map<ParentName,vector<ChildName>>中,用于重建场景时,查询核对关系。
当场景中的元素需要切换材质时,创建一个新的材质文件保存在本地,然后通过SetMaterialName()将新的材质名称映射到该创建元素,并保存该材质名称到map中,这样也不会影响3D模型(.mesh)本身的材质属性。
在步骤S104中,在应用程序需要保存3D场景为本地文件时,将先前已经保存在数据结构体中的数据按照所定义的XML节点格式序列化写入文件,形成XML场景文件。
作为其中一个实施例,在所述序列化存储为三维场景文件的步骤之后,包括以下步骤:
对三维场景文件中的信息进行解析,并反序列化到所述数据结构体中;
根据反序列化后所述数据结构体中的数据进行三维场景重建,并恢复三维场景中节点之间的父子关系。
针对XML场景文档的节点定义,设计一个XML场景文档解析工具,在应用程序需要加载XML场景文档,进行3D场景重现时,快速解析文档中记录的所有3D元素,将文档中所有信息反序列化到所述数据结构体中;
根据数据结构中的数据进行3D场景重建,重建时同时恢复了各个3D元素的父子兄弟关系以及材质映射关系。
与一般技术相比,本发明基于OGRE的三维场景存储方法,构建一个新型的基于OGRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
请参阅图2,为本发明基于OGRE的三维场景存储装置的结构示意图。
本发明基于OGRE的三维场景存储装置,包括第一构建模块201、第二构建模块202、第一存储模块203和第二存储模块204;
所述第一构建模块201,用于构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
所述第二构建模块202,用于根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;
所述第一存储模块203,用于将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
所述第二存储模块204,用于将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
作为其中一个实施例,所述第一构建模块构建的所述三维场景文件存储格式还包括三维场景中节点的属性。
三维场景节点的属性包括节点名称、父节点名称、挂接的模型名称、位置、方向、缩放比例以及材质映射等。三维场景节点的属性是本领域技术人员公知的技术术语,在此不再赘述。
所述三维场景文件存储格式包括三维场景中节点的属性,保证了三维场景的实时存储和存储之后的顺利重建。
作为其中一个实施例,所述第二构建模块构建的所述数据结构体还用于存储三维场景中节点的材质映射关系。
目前的DotScen中不包含材质映射关系,如果设计人员在搭建场景的过程中更换了3D元素的材质或纹理贴图,却并不想影响原模型,按照DotScene无法实现。而本实施例则可以很好的解决这个问题。
作为其中一个实施例,所述第一构建模块构建的所述三维场景文件存储格式为XML文件格式。
XML文件格式是较为通用的一种三维场景文件保存格式,使本发明易于推广,并且增强了稳定性。
作为其中一个实施例,还包括解析模块和重建模块;
所述解析模块,用于对三维场景文件中的信息进行解析,并反序列化到所述数据结构体中;
所述重建模块,用于根据反序列化后所述数据结构体中的数据进行三维场景重建,并恢复三维场景中节点之间的父子关系。
针对XML场景文档的节点定义,设计一个XML场景文档解析工具,在应用程序需要加载XML场景文档,进行3D场景重现时,快速解析文档中记录的所有3D元素,将文档中所有信息反序列化到所述数据结构体中;
根据数据结构中的数据进行3D场景重建,重建时同时恢复了各个3D元素的父子兄弟关系以及材质映射关系。
与一般技术相比,本发明基于OGRE的三维场景存储装置,构建一个新型的基于OGRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于OGRE的三维场景存储方法,其特征在于,包括以下步骤:
构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;其中,所述数据结构体是由一系列具有相同类型或不同类型的数据构成的数据集合;
将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
2.根据权利要求1所述的基于OGRE的三维场景存储方法,其特征在于,所述构建基于OGRE的三维场景文件存储格式的步骤中,所述三维场景文件存储格式还包括三维场景中节点的属性。
3.根据权利要求1所述的基于OGRE的三维场景存储方法,其特征在于,所述构建若干个数据结构体的步骤中,构建的所述数据结构体还用于存储三维场景中节点的材质映射关系。
4.根据权利要求1所述的基于OGRE的三维场景存储方法,其特征在于,在所述构建基于OGRE的三维场景文件存储格式的步骤中,所述三维场景文件存储格式为XML文件格式。
5.根据权利要求1所述的基于OGRE的三维场景存储方法,其特征在于,在所述序列化存储为三维场景文件的步骤之后,包括以下步骤:
对三维场景文件中的信息进行解析,并反序列化到所述数据结构体中;
根据反序列化后所述数据结构体中的数据进行三维场景重建,并恢复三维场景中节点之间的父子关系。
6.一种基于OGRE的三维场景存储装置,其特征在于,包括第一构建模块、第二构建模块、第一存储模块和第二存储模块;
所述第一构建模块,用于构建基于OGRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括三维场景中节点之间的父子关系;
所述第二构建模块,用于根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;其中,所述数据结构体是由一系列具有相同类型或不同类型的数据构成的数据集合;
所述第一存储模块,用于将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
所述第二存储模块,用于将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。
7.根据权利要求6所述的基于OGRE的三维场景存储装置,其特征在于,所述第一构建模块构建的所述三维场景文件存储格式还包括三维场景中节点的属性。
8.根据权利要求6所述的基于OGRE的三维场景存储装置,其特征在于,所述第二构建模块构建的所述数据结构体还用于存储三维场景中节点的材质映射关系。
9.根据权利要求6所述的基于OGRE的三维场景存储装置,其特征在于,所述第一构建模块构建的所述三维场景文件存储格式为XML文件格式。
10.根据权利要求6所述的基于OGRE的三维场景存储装置,其特征在于,还包括解析模块和重建模块;
所述解析模块,用于对三维场景文件中的信息进行解析,并反序列化到所述数据结构体中;
所述重建模块,用于根据反序列化后所述数据结构体中的数据进行三维场景重建,并恢复三维场景中节点之间的父子关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410350231.5A CN104091367B (zh) | 2014-07-22 | 2014-07-22 | 基于ogre的三维场景存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410350231.5A CN104091367B (zh) | 2014-07-22 | 2014-07-22 | 基于ogre的三维场景存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104091367A CN104091367A (zh) | 2014-10-08 |
CN104091367B true CN104091367B (zh) | 2017-03-29 |
Family
ID=51639082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410350231.5A Expired - Fee Related CN104091367B (zh) | 2014-07-22 | 2014-07-22 | 基于ogre的三维场景存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104091367B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881421B (zh) * | 2014-12-15 | 2018-04-27 | 深圳市腾讯计算机系统有限公司 | 一种三维图形的切换方法及装置 |
CN108537891A (zh) * | 2017-03-01 | 2018-09-14 | 黎志毅 | 三维材质和贴图数据自动转换到ue4的方法 |
CN107036544B (zh) * | 2017-05-24 | 2019-12-06 | 山东科技大学 | 一种基于三维激光扫描技术的大型储罐安全检测系统与方法 |
CN112509103A (zh) * | 2020-12-18 | 2021-03-16 | 华南理工大学 | 用于机器人生产系统仿真的三维场景管理与文件存储方法 |
CN113593042A (zh) * | 2021-08-13 | 2021-11-02 | 成都数联云算科技有限公司 | 3d模型重建方法、装置、计算机设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
CN103544727A (zh) * | 2013-06-26 | 2014-01-29 | Tcl集团股份有限公司 | 一种基于预测分支的场景渲染优化方法、系统和移动终端 |
-
2014
- 2014-07-22 CN CN201410350231.5A patent/CN104091367B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1710607A (zh) * | 2005-07-08 | 2005-12-21 | 北京航空航天大学 | 一种面向虚拟现实三维图形引擎的三维场景组织方法 |
CN103544727A (zh) * | 2013-06-26 | 2014-01-29 | Tcl集团股份有限公司 | 一种基于预测分支的场景渲染优化方法、系统和移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN104091367A (zh) | 2014-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104091367B (zh) | 基于ogre的三维场景存储方法及装置 | |
KR101572299B1 (ko) | 시스템의 모델을 변환하는 방법, 컴퓨터 프로그램 및 시스템 모델 변환 장치 | |
CN101901265B (zh) | 一种虚拟试验数据对象化管理系统 | |
CN109885626A (zh) | 基于结构化数据和bim模型的城建数字档案智能管理系统 | |
CN101916299A (zh) | 一种基于文件系统的三维空间数据存储管理方法 | |
CN106933837A (zh) | 一种数据库表模型及创建方法 | |
KR20080022591A (ko) | 내장형 디바이스에서의 3d 콘텐츠에 대한 오프라인 최적화파이프라인 | |
CN104021210B (zh) | 以GeoJSON格式半结构化方式存储地理数据的MongoDB集群的地理数据读写方法 | |
CN106709985A (zh) | 一种虚拟祭祀三维场景的生成方法及装置 | |
JP2008097215A (ja) | データ処理装置 | |
CN114444274B (zh) | 一种从非结构网格中重构原结构网格的方法、介质及装置 | |
CN106897425A (zh) | 一种地球重力场数据的三维可视化方法 | |
Moran et al. | Visualization of AMR data with multi-level dual-mesh interpolation | |
CN116595808B (zh) | 事件金字塔模型构建与多粒度时空可视化方法和装置 | |
CN112883240A (zh) | 一种基于数字孪生的数据轻量化的bim建筑模型管理方法及其管理系统 | |
CN109684517A (zh) | 一种历史数据存储方法、读写方法、存储装置和设备 | |
CN102938160A (zh) | 基于细节捕获和形态校正的流体动画渲染方法 | |
CN102799750B (zh) | 几何体表面三角形剖分的公共边和非公共边快速生成方法 | |
Flechon et al. | A generic topological framework for physical simulation | |
CN116414316A (zh) | 基于数字城市中的bim模型的虚幻引擎渲染方法 | |
Lilis et al. | Simulation model generation combining IFC and CityGML data | |
Iuricich et al. | Topologically-consistent simplification of discrete Morse complex | |
Zhang et al. | A knowledge reuse framework for automatic construction of multi-type 3D railway scenes | |
Azri et al. | Spatial access method for urban geospatial database management: An efficient approach of 3D vector data clustering technique | |
Sharkawi et al. | Improving semantic updating method on 3D city models using hybrid semantic-geometric 3D segmentation technique |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Kezhu road high tech Industrial Development Zone, Guangzhou city of Guangdong Province, No. 233 510670 Patentee after: VTRON GROUP Co.,Ltd. Address before: 510670 Guangdong city of Guangzhou province Kezhu Guangzhou high tech Industrial Development Zone, Road No. 233 Patentee before: VTRON TECHNOLOGIES Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170329 Termination date: 20210722 |