首页> 中国专利> 基于OGRE的三维场景存储方法及装置

基于OGRE的三维场景存储方法及装置

摘要

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

著录项

  • 公开/公告号CN104091367A

    专利类型发明专利

  • 公开/公告日2014-10-08

    原文格式PDF

  • 申请/专利权人 广东威创视讯科技股份有限公司;

    申请/专利号CN201410350231.5

  • 发明设计人 康晓林;李金凤;

    申请日2014-07-22

  • 分类号G06T17/00(20060101);G06F17/30(20060101);

  • 代理机构44224 广州华进联合专利商标代理有限公司;

  • 代理人周清华;向群

  • 地址 510670 广东省广州市广州高新技术产业开发区科珠路233号

  • 入库时间 2023-12-17 01:59:14

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-08

    未缴年费专利权终止 IPC(主分类):G06T17/00 专利号:ZL2014103502315 申请日:20140722 授权公告日:20170329

    专利权的终止

  • 2018-02-16

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06T17/00 变更前: 变更后: 申请日:20140722

    专利权人的姓名或者名称、地址的变更

  • 2017-03-29

    授权

    授权

  • 2014-10-29

    实质审查的生效 IPC(主分类):G06T17/00 申请日:20140722

    实质审查的生效

  • 2014-10-08

    公开

    公开

说明书

技术领域

本发明涉及三维场景存储技术领域,尤其涉及一种基于OGRE的三维场景 存储方法和一种基于OGRE的三维场景存储装置。

背景技术

虚拟现实技术的不断成熟和发展,使得对虚拟场景的全方位立体感的展示 成为可能。OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲 染引擎)是一款功能强大的开源三维引擎,使用它可以方便地构建三维场景, 如家具搭配、室内模拟和拼墙业务等。在使用OGRE引擎构建三维场景的过程 中,需要添加单个模型、组合多个模型、切换材质、撤销恢复等等各种操作, 这都需要在构建的过程能实时保存或存储三维场景状态。而且大多数三维场景 建完后往往需要保存到本地,以方便日后再使用。因此,寻求一种有效且简单 的方法保存或存储OGRE三维场景是非常重要的。

目前一种常用的做法是采用OGRE提供的DotScene文件格式,即设计人员 可将基于OGRE搭建的三维场景保存为后缀是.scene的文件。该文件不包含任 何网格数据和纹理数据,只包含场景节点(也即场景元素),且该文件格式是一 个标准化的XML(Extensible Markup 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的三维场景文件存储格式来记录三维场景信息,并构建若干个数 据结构体,分别用于存储三维场景中的父节点、子节点以及父子关系。将三维 场景节点分层次保存到对应的数据结构体中,可对三维场景节点的增、删、改 进行实时更新。以三维场景文件存储格式记录创建的三维场景节点的属性以及 节点之间的节点关系,存储为三维场景文件。采用本发明,在存储三维场景时 无需进行扩展,便保存了场景节点之间的节点关系,不仅效率大增。而且在存 储之后再加载三维场景文件时,可快速重建解析出的三维场景信息,并准确地 进行关系重建以及属性设置。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域 的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和 改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附 权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号