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

文档序号:9867149阅读:429来源:国知局
基于osg三维渲染引擎预处理的三维场景生成方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及三维虚拟仿真领域,具体涉及一种基于OSG三维渲染引擎预处理的三维场景生成方法及装置。
【背景技术】
[0002]在三维虚拟仿真技术中,三维渲染引擎为实现三维场景图形的结构原理和绘制提供了一系列的操作接口,包括模型的加载接口、三维空间及实现模型的装配、渲染、优化和控制功能。三维渲染引擎在渲染过程中采用渲染流水线方式,类似于工程装配线。
[0003]0SG(0pen Scene Graph)是一种高性能的开源三维图形引擎,基于修改的LGPL协议免费发布,普遍应用在飞行仿真、游戏、虚拟现实、科学计算可视化领域,具有较高的图形处理性能,该引擎提供在OpenGL之上的面向对象的框架,避免过于底层的开发工作,同时具有丰富的插件和接口,使系统的应用和开发具有很高的灵活性。
[0004]当前的三维软件都是基于开源或商业三维引擎进行开发,通过这些引擎可实现3D模型文件加载、纹理字体支持、细节层次(LOD)控制、多线程数据分页等功能。在三维软件开发过程中,开发者常采用默认的三维渲染引擎的流水管线技术(比如采用OSG作为三维引擎),通过三维引擎自身的渲染过程以及预设置参数进行三维模型的加载控制。对于一个没有特殊设计要求的场景来说,比如在仅采用单个模型、无需物理碰撞、无复杂的界面要求和渲染要求的场合,默认的渲染引擎能够很好地完成工作;但对于需要显示背景图片、前景界面、真实感高的场景,以及需要进行碰撞检测场合,采用默认渲染引擎管线则不能很好完成相关工作。若仅在默认引擎基础上,采用物理碰撞、多摄像机等方式,对于单模型场景可很好解决上述特殊设计的问题,但对于需要进行多个模型融合、且体现真实度高的场合,则无法适应需求。

【发明内容】

[0005]本发明的目的在于,为解决多模型快速融合、复杂界面、物理碰撞、真实感高模型纹理需求的技术问题,提供一种基于OSG三维渲染引擎预处理的三维场景生成方法及装置。
[0006]为实现上述目的,本发明提供的一种基于OSG三维渲染引擎预处理的三维场景生成方法,该方法具体包括:
[0007]步骤I)对三维场景渲染的模型列表以及状态参数进行自定义;
[0008]步骤2)初始化OSG三维引擎的基本对象,包括:模型管理对象、场景视图对象、三维背景摄像机和HUD摄像机;所述的模型管理对象作为场景根节点,用于管理场景中的所有对象;所述的场景视图对象用于处理各种事件消息;所述的三维背景摄像机用于管理三维场景的背景内容;所述的HUD摄像机用于显示用户交互界面;
[0009]步骤3)加载需渲染的多个模型,存入不同的模型管理对象中,根据状态参数设置不同模型的预处理和后处理渲染状态,并设置物理引擎,建立物理引擎与模型之间的关联关系;
[0010]步骤4)利用OSG三维引擎本身提供的场景渲染流程更新并显示三维场景。
[0011]作为上述技术方案的进一步改进,所述步骤I)中自定义的内容包括:不同清染效果的模型列表分类定义和模型的多种渲染参数定义;
[0012]作为上述技术方案的进一步改进,所述步骤2)中的HUD摄像机采用QT二维界面库,为实现复杂的界面效果。
[0013]作为上述技术方案的进一步改进,所述步骤3)中建立物理引擎与模型之间的关联关系的过程包括:在第一次加载模型时,将所有关联模型的数据、参数进行序列化到文件,并在第二次加载模型时,通过从文件反序列化读取数据,以加速物理引擎的关联过程,提高加入引擎后的初始化效率。通过采用序列化以及反序列化方法,可使模型对象与物理引擎之间的关联速度加快,关联速度为从原始的3-5分钟提尚到10-20秒,从而大大提尚关联效率,优化用户的体验效果。
[0014]作为上述技术方案的进一步改进,所述的场景渲染流程为:根据三维渲染引擎的内置裁剪方法对场景中显示的模型进行控制,由裁剪访问器遍历访问场景节点树,并筛选和构建状态树,形成状态树中的渲染叶,利用状态机对状态树进行遍历,收集渲染叶的渲染状态,同时利用状态机执行渲染叶具体的渲染过程。
[0015]本发明还提供了一种基于OSG三维渲染引擎预处理的装置,该装置包括:初始化模块、加载模块和显示模块;所述的初始化模块用于对OSG三维渲染引擎预处理过程中使用的状态参数内容进行自定义,以及对OSG三维渲染引擎预处理过程中使用的场景根对象、视图对象、摄像机对象内容进行初始化,并初始化各对象的基本参数;
[0016]所述的加载模块用于对模型、状态参数、物理引擎内容进行加载,并在加载完成后由场景根对象、视图对象、摄像机对象进行分类管理;
[0017]所述的显示模块用于对更新的三维场景进行显示。
[0018]本发明的一种基于OSG三维渲染引擎预处理的三维场景生成方法及装置优点在于:
[0019]通过采用OSG作为基础三维引擎、QT等界面库作为用户交互界面引擎,并依次进行初始化基础对象、加载模型对象、加载模型相关渲染状态参数、加载物理引擎后,利用预处理得到的三维渲染引擎更新三维场景,实现了复杂三维场景要求、三维真实感要求的三维应用场合,从而满足了三维场景复杂渲染层次(包括三维背景渲染、主场景渲染、用户界面界面渲染、辅助窗口渲染等显示层次)、渲染真实感(通过着色器、材质、纹理等内容动态设置)、快速的物理碰撞加载(序列化物理引擎关联对象)等需求。缩短了与物理引擎关联的时间,提高了场景、模型的渲染效果、渲染效率,丰富了人为进行渲染流程控制的手段。
【附图说明】
[0020]图1是本发明实施例中的一种基于OSG三维渲染引擎预处理的三维场景生成方法流程图。
[0021]图2是本发明实施例中的场景树组织结构的示意图。
[0022]图3是本发明实施例中的加载流程的示意图。
[0023]图4是本发明实施例中的OSG场景渲染流程的示意图。
[0024]图5是本发明实施例的一种基于OSG三维渲染引擎预处理的装置结构示意图。
【具体实施方式】
[0025]下面结合附图和实施例对本发明所述的一种基于OSG三维渲染引擎预处理的三维场景方法及装置进行详细说明。
[0026]如图1所示,本发明的一种基于OSG三维渲染引擎预处理的三维场景生成方法,包括如下处理步骤:
[0027]步骤I)对三维场景渲染的模型列表以及状态参数进行自定义;
[0028]步骤2)初始化OSG三维引擎的基本对象,包括:模型管理对象、场景视图对象、三维背景摄像机和HUD摄像机;所述的模型管理对象作为场景根节点,用于管理场景中的所有对象;所述的场景视图对象用于处理各种事件消息;所述的三维背景摄像机用于管理三维场景的背景内容;所述的HUD摄像机用于显示用户交互界面;
[0029]步骤3)加载需渲染的多个模型,存入不同的模型管理对象中,根据状态参数设置不同模型的预处理和后处理渲染状态,并设置物理引擎,建立物理引擎与模型之间的关联关系;
[0030]步骤4)利用OSG三维引擎本身提供的场景渲染流程更新并显示三维场景。
[0031]基于上述的预处理方法,在步骤I)中,自定义的内容可包括:对不同三维场景渲染效果的模型列表进行自定义和对模型的多种渲染参数进行自定义。
[0032]在步骤2)中,所述的HUD摄像机为实现复杂的界面效果,可采用QT等二维界面库。
[0033]在步骤3)中,对自定义的模型进行加载,加载完成后,存入不同模型管理对象,不同模型管理对象采用不同渲染状态;并对模型的多种渲染状态参数进行加载,包括:着色器、材质、纹理、输入缓存等多种参数类型,将相关参数类型关联到不同模型对象。
[0034]在建立物理引擎与模型之间的关联关系过程中,为加速关系的建立过程,可通过序列化以及反序列化方法提高模型与物理引擎之间的关联效率。
[0035]在步骤4)中,可利用OSG三维引擎本身提供的场景树、状态树和状态机更新显示三维场景。
[0036]下面给出了三维场景渲染的模型列表的自定义样式,以下对该样式进行说明:
[0037]〈ground〉表示地表的模型列表,一般包括大地等模型内容,对于地表模型列表,该模型列表需增加物理碰撞等状态。
[0038]〈objects〉表示对象模型列表,一般包括房屋、房屋中的物体等内容,对于对象模型列表,该模型列表需增加物理碰撞、AO阴影显示等状态。
[0039]〈misc〉表示杂项模型列表,一般为除大地、房屋、树等对象的三维模型,对于对象模型列表,该模型列表一般不添加特殊的清染状态。
[0040]〈effect〉表示关联的自定义渲染状态文件。
[0041 ]下面给出了多种三维渲染状态参数的自定义样式内容,以下对该样式进行说明:
[0042]〈shader〉表示可选用的着色器及其关联的着色器文件,在三维引擎中,着色器包括多种类型,比如
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1