基于ogre的三维场景存储方法及装置制造方法

文档序号:6620943阅读:352来源:国知局
基于ogre的三维场景存储方法及装置制造方法
【专利摘要】本发明公开了一种基于OGRE的三维场景存储方法,包括:构建基于OGRE的三维场景文件存储格式;根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系;将基于OGRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储为三维场景文件。此外,还公开了一种基于OGRE的三维场景存储装置。采用本发明,在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关系重建以及属性设置。
【专利说明】基于OGRE的三维场景存储方法及装置

【技术领域】
[0001] 本发明涉及三维场景存储【技术领域】,尤其涉及一种基于0GRE的三维场景存储方 法和一种基于0GRE的三维场景存储装置。

【背景技术】
[0002] 虚拟现实技术的不断成熟和发展,使得对虚拟场景的全方位立体感的展示成为可 能。OGRE (Ob ject-Oriented Graphics Rendering Engine,面向对象图形?宣染引擎)是一 款功能强大的开源三维引擎,使用它可以方便地构建三维场景,如家具搭配、室内模拟和拼 墙业务等。在使用0GRE引擎构建三维场景的过程中,需要添加单个模型、组合多个模型、切 换材质、撤销恢复等等各种操作,这都需要在构建的过程能实时保存或存储三维场景状态。 而且大多数三维场景建完后往往需要保存到本地,以方便日后再使用。因此,寻求一种有效 且简单的方法保存或存储0GRE三维场景是非常重要的。
[0003] 目前一种常用的做法是采用0GRE提供的DotScene文件格式,即设计人员可将基 于0GRE搭建的三维场景保存为后缀是.scene的文件。该文件不包含任何网格数据和纹理 数据,只包含场景节点(也即场景元素),且该文件格式是一个标准化的XML (Extensible Markup Language,可扩展标记语言)文件格式,易读易编辑。设计人员在编辑完三维场景 后导出为该文件,同时应用程序也可以再次加载该文件进行三维场景重现。
[0004] 但DotScene只是一个文件格式,并不包括任何保存动作。保存三维场景时设计人 员需要根据需求对DotScene进行扩展并加以实现,不仅效率较低,而且至今仍未形成通用 方法。另外,由于DotScene不包含场景节点之间的节点关系,因此通过DotScene保存三维 场景时,会导致场景重现出现错误。


【发明内容】

[0005] 基于此,本发明提供了一种基于0GRE的三维场景存储方法和一种基于0GRE的三 维场景存储装置。
[0006] 一种基于0GRE的三维场景存储方法,包括以下步骤:
[0007] 构建基于0GRE的三维场景文件存储格式;其中,所述三维场景文件存储格式包括 三维场景中节点之间的父子关系;
[0008] 根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三维场 景中的父节点、子节点以及父子关系;
[0009] 将基于0GRE的三维场景中各个节点相关的数据对应存储到所述数据结构体;
[0010] 将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化存储 为三维场景文件。
[0011] 与一般技术相比,本发明基于0GRE的三维场景存储方法,构建一个新型的基于 0GRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于 存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数 据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录 创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明, 在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且 在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关 系重建以及属性设置。
[0012] -种基于0GRE的三维场景存储装置,包括第一构建模块、第二构建模块、第一存 储模块和第二存储模块;
[0013] 所述第一构建模块,用于构建基于0GRE的三维场景文件存储格式;其中,所述三 维场景文件存储格式包括三维场景中节点之间的父子关系;
[0014] 所述第二构建模块,用于根据所述三维场景文件存储格式,构建若干个数据结构 体,分别用于存储三维场景中的父节点、子节点以及父子关系;
[0015] 所述第一存储模块,用于将基于0GRE的三维场景中各个节点相关的数据对应存 储到所述数据结构体;
[0016] 所述第二存储模块,用于将存储到所述数据结构体中的数据按照所述三维场景文 件存储格式序列化存储为三维场景文件。
[0017] 与一般技术相比,本发明基于0GRE的三维场景存储装置,构建一个新型的基于 0GRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于 存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数 据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录 创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明, 在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且 在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关 系重建以及属性设置。

【专利附图】

【附图说明】
[0018] 图1为本发明基于0GRE的三维场景存储方法的流程示意图;
[0019] 图2为本发明基于0GRE的三维场景存储装置的结构示意图。

【具体实施方式】
[0020] 为更进一步阐述本发明所采取的技术手段及取得的效果,下面结合附图及较佳实 施例,对本发明的技术方案,进行清楚和完整的描述。
[0021] 请参阅图1,为本发明基于0GRE的三维场景存储方法的流程示意图。
[0022] 本发明基于0GRE的三维场景存储方法,包括以下步骤:
[0023] S101构建基于0GRE的三维场景文件存储格式;其中,所述三维场景文件存储格式 包括三维场景中节点之间的父子关系;
[0024] S102根据所述三维场景文件存储格式,构建若干个数据结构体,分别用于存储三 维场景中的父节点、子节点以及父子关系;
[0025] S103将基于0GRE的三维场景中各个节点相关的数据对应存储到所述数据结构 体;
[0026] S104将存储到所述数据结构体中的数据按照所述三维场景文件存储格式序列化 存储为三维场景文件。
[0027] 定义一个新型的XML节点格式来记录三维场景(三维场景也即3D场景,下同,全 文可以通用)信息,应用程序以XML的方式记录每次创建3D场景节点(3D场景节点也即3D 场景元素,下同,全文可以通用)的属性以及节点之间的关系,生成XML场景文件。当应用 程序加载该场景文件时,通过事先设计的XML场景文档解析工具对所生成的三维场景文件 进行解析,然后重建解析出的3D场景元素,并准确地进行关系重建以及属性设置。三维场 景节点的属性是本领域技术人员公知的技术术语,在此不再赘述。
[0028] 在步骤S101中,构建(或者定义,可通用,下同)描述3D场景元素及其属性、父子 关系甚至材质映射的XML节点格式。这样,三维场景文件存储格式中保存了三维场景节点 之间的父子关系以及三维场景节点的材质映射关系。
[0029] 作为其中一个实施例,所述构建基于0GRE的三维场景文件存储格式的步骤中,所 述三维场景文件存储格式还包括三维场景中节点的属性。
[0030] 三维场景节点的属性包括节点名称、父节点名称、挂接的模型名称、位置、方向、缩 放比例以及材质映射等。三维场景节点的属性是本领域技术人员公知的技术术语,在此不 再赘述。
[0031] 所述三维场景文件存储格式包括三维场景中节点的属性,保证了三维场景的实时 存储和存储之后的顺利重建。
[0032] 作为其中一个实施例,在所述构建基于0GRE的三维场景文件存储格式的步骤中, 所述三维场景文件存储格式为XML文件格式。
[0033] XML文件格式是较为通用的一种三维场景文件保存格式,使本发明易于推广,并且 增强了稳定性。
[0034] 在步骤S102中,定义一系列数据结构体,在应用程序每次添加 3D场景元素时,将 元素分层次保存到对应的数据结构体中,并根据应用程序中对3D场景元素的增、删、改进 行实时的更新。
[0035] 所述数据结构体,也即结构体,是由一系列具有相同类型或不同类型的数据构成 的数据集合。
[0036] 作为其中一个实施例,所述构建若干个数据结构体的步骤中,构建的所述数据结 构体还用于存储三维场景中节点的材质映射关系。
[0037] 目前的DotScen中不包含材质映射关系,如果设计人员在搭建场景的过程中更换 了 3D元素的材质或纹理贴图,却并不想影响原模型,按照DotScene无法实现。而本实施例 则可以很好的解决这个问题。
[0038] 在步骤S103中,以树的结构体来保存整个3D场景。
[0039] 构建的数据结构体可分为如下四类:用于存储父节点相关数据、用于存储子节点 相关数据、用于存储父子关系相关数据和用于存储材质映射关系相关数据。
[0040] 对于场景中直接挂接模型且没有孩子的场景节点,调用保存孩子接口 saveChildNodeProperty ();将创建的节点保存在一个map〈Name, Property〉对象中;用节 点名称与其属性一一对应,属性包括:节点名称、父节点名称、挂接的模型名称、位置、方向、 缩放比例以及材质映射。
[0041] 针对凡是挂接子节点的父节点,保存到一个map〈Name, Property〉对象中,在场景 重现时,最先创建该map中的父节点,以保证创建孩子节点时,可以正确的挂接到对应的父 节点中。
[0042] 针对3D场景中元素与元素之间的关系,单独保存一个map〈ParentName, vector〈C hildName?中,用于重建场景时,查询核对关系。
[0043] 当场景中的元素需要切换材质时,创建一个新的材质文件保存在本地,然后通过 SetMaterialNameO将新的材质名称映射到该创建元素,并保存该材质名称到map中,这样 也不会影响3D模型(.mesh)本身的材质属性。
[0044] 在步骤S104中,在应用程序需要保存3D场景为本地文件时,将先前已经保存在数 据结构体中的数据按照所定义的XML节点格式序列化写入文件,形成XML场景文件。
[0045] 作为其中一个实施例,在所述序列化存储为三维场景文件的步骤之后,包括以下 步骤:
[0046] 对三维场景文件中的信息进行解析,并反序列化到所述数据结构体中;
[0047] 根据反序列化后所述数据结构体中的数据进行三维场景重建,并恢复三维场景中 节点之间的父子关系。
[0048] 针对XML场景文档的节点定义,设计一个XML场景文档解析工具,在应用程序需要 加载XML场景文档,进行3D场景重现时,快速解析文档中记录的所有3D元素,将文档中所 有信息反序列化到所述数据结构体中;
[0049] 根据数据结构中的数据进行3D场景重建,重建时同时恢复了各个3D元素的父子 兄弟关系以及材质映射关系。
[0050] 与一般技术相比,本发明基于0GRE的三维场景存储方法,构建一个新型的基于 0GRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于 存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数 据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录 创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明, 在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且 在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关 系重建以及属性设置。
[0051] 请参阅图2,为本发明基于0GRE的三维场景存储装置的结构示意图。
[0052] 本发明基于0GRE的三维场景存储装置,包括第一构建模块201、第二构建模块 202、第一存储模块203和第二存储模块204 ;
[0053] 所述第一构建模块201,用于构建基于0GRE的三维场景文件存储格式;其中,所述 三维场景文件存储格式包括三维场景中节点之间的父子关系;
[0054] 所述第二构建模块202,用于根据所述三维场景文件存储格式,构建若干个数据结 构体,分别用于存储三维场景中的父节点、子节点以及父子关系;
[0055] 所述第一存储模块203,用于将基于0GRE的三维场景中各个节点相关的数据对应 存储到所述数据结构体;
[0056] 所述第二存储模块204,用于将存储到所述数据结构体中的数据按照所述三维场 景文件存储格式序列化存储为三维场景文件。
[0057] 作为其中一个实施例,所述第一构建模块构建的所述三维场景文件存储格式还包 括三维场景中节点的属性。
[0058] 三维场景节点的属性包括节点名称、父节点名称、挂接的模型名称、位置、方向、缩 放比例以及材质映射等。三维场景节点的属性是本领域技术人员公知的技术术语,在此不 再赘述。
[0059] 所述三维场景文件存储格式包括三维场景中节点的属性,保证了三维场景的实时 存储和存储之后的顺利重建。
[0060] 作为其中一个实施例,所述第二构建模块构建的所述数据结构体还用于存储三维 场景中节点的材质映射关系。
[0061] 目前的DotScen中不包含材质映射关系,如果设计人员在搭建场景的过程中更换 了 3D元素的材质或纹理贴图,却并不想影响原模型,按照DotScene无法实现。而本实施例 则可以很好的解决这个问题。
[0062] 作为其中一个实施例,所述第一构建模块构建的所述三维场景文件存储格式为 XML文件格式。
[0063] XML文件格式是较为通用的一种三维场景文件保存格式,使本发明易于推广,并且 增强了稳定性。
[0064] 作为其中一个实施例,还包括解析模块和重建模块;
[0065] 所述解析模块,用于对三维场景文件中的信息进行解析,并反序列化到所述数据 结构体中;
[0066] 所述重建模块,用于根据反序列化后所述数据结构体中的数据进行三维场景重 建,并恢复三维场景中节点之间的父子关系。
[0067] 针对XML场景文档的节点定义,设计一个XML场景文档解析工具,在应用程序需要 加载XML场景文档,进行3D场景重现时,快速解析文档中记录的所有3D元素,将文档中所 有信息反序列化到所述数据结构体中;
[0068] 根据数据结构中的数据进行3D场景重建,重建时同时恢复了各个3D元素的父子 兄弟关系以及材质映射关系。
[0069] 与一般技术相比,本发明基于0GRE的三维场景存储装置,构建一个新型的基于 0GRE的三维场景文件存储格式来记录三维场景信息,并构建若干个数据结构体,分别用于 存储三维场景中的父节点、子节点以及父子关系。将三维场景节点分层次保存到对应的数 据结构体中,可对三维场景节点的增、删、改进行实时更新。以三维场景文件存储格式记录 创建的三维场景节点的属性以及节点之间的节点关系,存储为三维场景文件。采用本发明, 在存储三维场景时无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且 在存储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地进行关 系重建以及属性设置。
[0070] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
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的三维场景存储装置,其特征在于,还包括解析模 块和重建模块; 所述解析模块,用于对三维场景文件中的信息进行解析,并反序列化到所述数据结构 体中; 所述重建模块,用于根据反序列化后所述数据结构体中的数据进行三维场景重建,并 恢复三维场景中节点之间的父子关系。
【文档编号】G06T17/00GK104091367SQ201410350231
【公开日】2014年10月8日 申请日期:2014年7月22日 优先权日:2014年7月22日
【发明者】康晓林, 李金凤 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1