首页> 中国专利> 基于OSG三维渲染引擎预处理的三维场景生成方法及装置

基于OSG三维渲染引擎预处理的三维场景生成方法及装置

摘要

本发明提供了一种基于OSG三维渲染引擎预处理的三维场景生成方法及装置,通过对三维场景渲染的模型列表以及状态参数进行自定义,初始化三维引擎基本对象,加载需渲染的多个模型,根据预定义参数设置不同模型的预处理、后处理渲染状态,建立物理引擎与模型之间的关联关系,更新显示三维场景的一系列预处理流程,解决了三维场景复杂渲染层次、渲染真实感、真实快速的物理碰撞加载等问题,缩短了与物理引擎关联的时间,提高了场景、模型的渲染效果、渲染效率,丰富了人为进行渲染流程控制的手段。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-02-26

    授权

    授权

  • 2016-06-29

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

    实质审查的生效

  • 2016-06-01

    公开

    公开

说明书

技术领域

本发明涉及三维虚拟仿真领域,具体涉及一种基于OSG三维渲染引擎预处理的 三维场景生成方法及装置。

背景技术

在三维虚拟仿真技术中,三维渲染引擎为实现三维场景图形的结构原理和绘制 提供了一系列的操作接口,包括模型的加载接口、三维空间及实现模型的装配、渲 染、优化和控制功能。三维渲染引擎在渲染过程中采用渲染流水线方式,类似于工 程装配线。

OSG(OpenSceneGraph)是一种高性能的开源三维图形引擎,基于修改的LGPL 协议免费发布,普遍应用在飞行仿真、游戏、虚拟现实、科学计算可视化领域,具 有较高的图形处理性能,该引擎提供在OpenGL之上的面向对象的框架,避免过于 底层的开发工作,同时具有丰富的插件和接口,使系统的应用和开发具有很高的灵 活性。

当前的三维软件都是基于开源或商业三维引擎进行开发,通过这些引擎可实现 3D模型文件加载、纹理字体支持、细节层次(LOD)控制、多线程数据分页等功能。 在三维软件开发过程中,开发者常采用默认的三维渲染引擎的流水管线技术(比如 采用OSG作为三维引擎),通过三维引擎自身的渲染过程以及预设置参数进行三维模 型的加载控制。对于一个没有特殊设计要求的场景来说,比如在仅采用单个模型、 无需物理碰撞、无复杂的界面要求和渲染要求的场合,默认的渲染引擎能够很好地 完成工作;但对于需要显示背景图片、前景界面、真实感高的场景,以及需要进行 碰撞检测场合,采用默认渲染引擎管线则不能很好完成相关工作。若仅在默认引擎 基础上,采用物理碰撞、多摄像机等方式,对于单模型场景可很好解决上述特殊设 计的问题,但对于需要进行多个模型融合、且体现真实度高的场合,则无法适应需 求。

发明内容

本发明的目的在于,为解决多模型快速融合、复杂界面、物理碰撞、真实感高 模型纹理需求的技术问题,提供一种基于OSG三维渲染引擎预处理的三维场景生成 方法及装置。

为实现上述目的,本发明提供的一种基于OSG三维渲染引擎预处理的三维场景 生成方法,该方法具体包括:

步骤1)对三维场景渲染的模型列表以及状态参数进行自定义;

步骤2)初始化OSG三维引擎的基本对象,包括:模型管理对象、场景视图对象、 三维背景摄像机和HUD摄像机;所述的模型管理对象作为场景根节点,用于管理场 景中的所有对象;所述的场景视图对象用于处理各种事件消息;所述的三维背景摄 像机用于管理三维场景的背景内容;所述的HUD摄像机用于显示用户交互界面;

步骤3)加载需渲染的多个模型,存入不同的模型管理对象中,根据状态参数设 置不同模型的预处理和后处理渲染状态,并设置物理引擎,建立物理引擎与模型之 间的关联关系;

步骤4)利用OSG三维引擎本身提供的场景渲染流程更新并显示三维场景。

作为上述技术方案的进一步改进,所述步骤1)中自定义的内容包括:不同渲染 效果的模型列表分类定义和模型的多种渲染参数定义;

作为上述技术方案的进一步改进,所述步骤2)中的HUD摄像机采用QT二维界 面库,为实现复杂的界面效果。

作为上述技术方案的进一步改进,所述步骤3)中建立物理引擎与模型之间的关 联关系的过程包括:在第一次加载模型时,将所有关联模型的数据、参数进行序列 化到文件,并在第二次加载模型时,通过从文件反序列化读取数据,以加速物理引 擎的关联过程,提高加入引擎后的初始化效率。通过采用序列化以及反序列化方法, 可使模型对象与物理引擎之间的关联速度加快,关联速度为从原始的3-5分钟提高 到10-20秒,从而大大提高关联效率,优化用户的体验效果。

作为上述技术方案的进一步改进,所述的场景渲染流程为:根据三维渲染引擎 的内置裁剪方法对场景中显示的模型进行控制,由裁剪访问器遍历访问场景节点树, 并筛选和构建状态树,形成状态树中的渲染叶,利用状态机对状态树进行遍历,收 集渲染叶的渲染状态,同时利用状态机执行渲染叶具体的渲染过程。

本发明还提供了一种基于OSG三维渲染引擎预处理的装置,该装置包括:初始 化模块、加载模块和显示模块;所述的初始化模块用于对OSG三维渲染引擎预处理 过程中使用的状态参数内容进行自定义,以及对OSG三维渲染引擎预处理过程中使 用的场景根对象、视图对象、摄像机对象内容进行初始化,并初始化各对象的基本 参数;

所述的加载模块用于对模型、状态参数、物理引擎内容进行加载,并在加载完 成后由场景根对象、视图对象、摄像机对象进行分类管理;

所述的显示模块用于对更新的三维场景进行显示。

本发明的一种基于OSG三维渲染引擎预处理的三维场景生成方法及装置优点在 于:

通过采用OSG作为基础三维引擎、QT等界面库作为用户交互界面引擎,并依次 进行初始化基础对象、加载模型对象、加载模型相关渲染状态参数、加载物理引擎 后,利用预处理得到的三维渲染引擎更新三维场景,实现了复杂三维场景要求、三 维真实感要求的三维应用场合,从而满足了三维场景复杂渲染层次(包括三维背景 渲染、主场景渲染、用户界面界面渲染、辅助窗口渲染等显示层次)、渲染真实感(通 过着色器、材质、纹理等内容动态设置)、快速的物理碰撞加载(序列化物理引擎关 联对象)等需求。缩短了与物理引擎关联的时间,提高了场景、模型的渲染效果、 渲染效率,丰富了人为进行渲染流程控制的手段。

附图说明

图1是本发明实施例中的一种基于OSG三维渲染引擎预处理的三维场景生成方 法流程图。

图2是本发明实施例中的场景树组织结构的示意图。

图3是本发明实施例中的加载流程的示意图。

图4是本发明实施例中的OSG场景渲染流程的示意图。

图5是本发明实施例的一种基于OSG三维渲染引擎预处理的装置结构示意图。

具体实施方式

下面结合附图和实施例对本发明所述的一种基于OSG三维渲染引擎预处理的三 维场景方法及装置进行详细说明。

如图1所示,本发明的一种基于OSG三维渲染引擎预处理的三维场景生成方法, 包括如下处理步骤:

步骤1)对三维场景渲染的模型列表以及状态参数进行自定义;

步骤2)初始化OSG三维引擎的基本对象,包括:模型管理对象、场景视图对象、 三维背景摄像机和HUD摄像机;所述的模型管理对象作为场景根节点,用于管理场 景中的所有对象;所述的场景视图对象用于处理各种事件消息;所述的三维背景摄 像机用于管理三维场景的背景内容;所述的HUD摄像机用于显示用户交互界面;

步骤3)加载需渲染的多个模型,存入不同的模型管理对象中,根据状态参数设 置不同模型的预处理和后处理渲染状态,并设置物理引擎,建立物理引擎与模型之 间的关联关系;

步骤4)利用OSG三维引擎本身提供的场景渲染流程更新并显示三维场景。

基于上述的预处理方法,在步骤1)中,自定义的内容可包括:对不同三维场景 渲染效果的模型列表进行自定义和对模型的多种渲染参数进行自定义。

在步骤2)中,所述的HUD摄像机为实现复杂的界面效果,可采用QT等二维界 面库。

在步骤3)中,对自定义的模型进行加载,加载完成后,存入不同模型管理对象, 不同模型管理对象采用不同渲染状态;并对模型的多种渲染状态参数进行加载,包 括:着色器、材质、纹理、输入缓存等多种参数类型,将相关参数类型关联到不同 模型对象。

在建立物理引擎与模型之间的关联关系过程中,为加速关系的建立过程,可通 过序列化以及反序列化方法提高模型与物理引擎之间的关联效率。

在步骤4)中,可利用OSG三维引擎本身提供的场景树、状态树和状态机更新显 示三维场景。

下面给出了三维场景渲染的模型列表的自定义样式,以下对该样式进行说明:

<ground>表示地表的模型列表,一般包括大地等模型内容,对于地表模型列表, 该模型列表需增加物理碰撞等状态。

<objects>表示对象模型列表,一般包括房屋、房屋中的物体等内容,对于对象 模型列表,该模型列表需增加物理碰撞、AO阴影显示等状态。

<misc>表示杂项模型列表,一般为除大地、房屋、树等对象的三维模型,对于 对象模型列表,该模型列表一般不添加特殊的渲染状态。

<effect>表示关联的自定义渲染状态文件。

下面给出了多种三维渲染状态参数的自定义样式内容,以下对该样式进行说明:

<shader>表示可选用的着色器及其关联的着色器文件,在三维引擎中,着色器 包括多种类型,比如vertex(顶点)、fragment(片元)等。

<uniform>表示材质,为适应多种不同类型模型,比如金属、玻璃、桌子等内容, 三维引擎提高多种不同的材质类型,通过不同的材质类型采用参数方式进行定义, 比如aoContrastValue、aoColorBlendFactor表示AO阴影的对比值以及颜色混合因 子等内容。

<forward_pass>中定义不同的预处理方法采用的参数列表以及参数值,通过在 其中定义相关的参数以及值列表,三维渲染引擎可实现复杂的渲染显示效果。

在上述步骤2)初始化的基本对象中,最重要的节点为场景根节点,场景根节点 通过场景树方式对场景的数据进行组织,图2给出了场景树的一个组织形式。在图 中,场景树可对模型节点(比如子节点1下的房屋、树等模型)、相机节点(相机提 供了从不同视角去观察一个模型对象的方法,在三维引擎中可设置多个相机)等不 同类型的节点进行管理。

另外,所述的场景视图对象(viewer)可通过添加多种处理器(handler)来实 现鼠标、键盘、外部设备、内部事件等内容的处理,从而实现场景对象与用户的交 互。

如图3所示,在本实施例中,具体的加载和处理流程可包括:

步骤101)遍历自定义模型列表,加载不同的模型内容,存入类型模型列表中, 比如ground列表、object列表、misc列表中;

步骤102)从渲染参数文件中加载渲染属性参数,包括加载着色器、材质、纹理、 光照、颜色、预处理列表等参数内容,存入相应的内存对象中,比如着色器对象、 材质对象、纹理对象等;

步骤103)建立模型列表与渲染属性参数对象之间的关联关系,比如object对 象列表与misc列表应设置不同的渲染参数;

步骤104)建立物理引擎与模型对象之间的关联关系,在首次加载情况下(第一 次加载),需将所有关联模型对象的数据、参数进行序列化到文件,再后续加载(第 二次后的加载)过程中通过从文件反序列化读取数据,加速物理引擎的关联过程。 通过采用上述序列化以及反序列化方法,可使模型对象与物理引擎之间的关联速度 加快,关联速度从原始的3-5分钟提高到10-20秒,从而大大提高关联效率,优化 用户的体验效果。

通过上述步骤,完成了数据加载、属性设置、物理引擎关联等多个过程。

如图4所示,在本实施例中描述了OSG三维引擎采用的场景渲染流程具体包括: 根据三维渲染引擎的内置裁剪方法对场景中显示的模型进行控制,由裁剪访问器遍 历访问场景节点树,并筛选和构建状态树,形成状态树中的渲染叶,利用状态机对 状态树进行遍历,收集渲染叶的渲染状态,同时通过状态机负责执行渲染叶具体的 渲染过程。此时整个三维引擎通过循环遍历完成整个场景的渲染过程。通过以上实 施过程,实现了复杂场景的渲染。

综上所述,通过对三维场景渲染的模型列表以及状态参数进行自定义,初始化 三维引擎基本对象,加载需渲染的多个模型,根据预定义参数设置不同模型的预处 理、后处理渲染状态,建立物理引擎与模型之间的关联关系,更新显示三维场景的 一系列预处理流程,解决了三维场景复杂渲染层次(包括三维背景渲染、主场景渲 染、用户界面界面渲染、辅助窗口渲染等显示层次)、渲染真实感(着色器、材质、 纹理等内容动态设置)、真实快速的物理碰撞加载等问题,缩短了与物理引擎关联的 时间,提高了场景、模型的渲染效果、渲染效率,丰富了人为进行渲染流程控制的 手段。

根据上述基于OSG的三维渲染引擎的预处理方法,本发明还提供了一种基于OSG 三维渲染引擎预处理的装置,如图5所示,所述的预处理装置包括:初始化模块、 加载模块以及显示模块,以下对本发明实施例中的各个模块进行详细的说明。

所述的初始化模块,用于对OSG三维渲染引擎预处理过程中使用的前景、背景、 渲染参数等状态参数内容进行自定义。该初始化模块具体用于:

对三维对象等内容进行初始化,并初始化各对象的基本参数;包括:模型管理 对象、场景视图对象,三维背景摄像机、HUD摄像机等内容;模型管理对象作为场景 根节点,用于管理场景所有对象;场景视图对象用于处理各种事件消息;三维背景 摄像机用于管理三维场景的背景内容;HUD摄像机用于显示用户交互界面,为实现复 杂的界面效果,可采用QT等二维界面库。

所述的加载模块用于对三维模型、状态参数、物理引擎等内容进行加载;该加 载模块具体用于:

对自定义的模型列表进行加载,并在加载完成后由场景根对象、视图对象、摄 像机对象进行分类管理。

所述的显示模块在数据加载完成后,通过三维引擎内定逻辑,采用场景树、状 态机、状态机对三维模型场景进行更新并显示。该显示模块具体用于:

通过OSG三维引擎的场景渲染流程,更新显示三维场景。具体流程为:根据三 维渲染引擎的内置裁剪方法对场景中显示的模型进行控制,由裁剪访问器遍历访问 场景节点树,并筛选和构建状态树,形成状态树中的渲染叶,利用状态机对状态树 进行遍历,收集渲染叶的渲染状态,同时通过状态机负责对渲染叶执行具体的渲染 过程。整个三维引擎通过循环遍历完成整个场景的渲染过程。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管 参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明 的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均 应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号