三维大规模场景动态管理方法

文档序号:6572493阅读:346来源:国知局
专利名称:三维大规模场景动态管理方法
技术领域
本发明涉及计算机三维图像处理技术领域,特别是一种三维大规模 场景动态管理方法。
背景技术
计算机三维图形学是计算机领域十分热门及发展迅速的领域,在影 视、游戏、军事、科研领域都有非常多的应用实例。大多数研究和产品 都把目标集中于在计算机里构建三维的物体并在计算机屏幕上逼真的 还原真实世。随着计算机硬件成本的不断下降,以前只有科研单位及大型企业里才能应用的三维系统,现在在普通PC机上也能达到相当的效果。为了将每一张静止的画面计算、渲染到计算机屏幕并且根据用户的 交互可以连续不断的变化。需要提供给计算机进行运算并指导硬件完成相应功能的程序。这样的程序要实现功能需要依赖大体如下几个部分 用户界面用来接收用户输入,显示可以操作的按钮等控制部件,将画好的每祯图片显示到屏幕三维实时引擎用来根据不同的用途,实现的具有一定灵活性的软件模块和工具,用来管理三维几何信息,三维纹理信息,光照阴影,其他效果等等。通用三维绘图接口将上亍种不园显示卡制造上6i不同点屏蔽,提 供给上层程序统一的调用接口,极大的方便程序的开发。否则开发的程 序只能运行于有限的计算机型号上。.显示卡驱动程序 一般由硬件厂商开发提供,随计算机硬件或操作 系统一同提供给用户,只有通过这个程序才可以调用硬件中提供的指 令。现有的三维大规模场景动态管理方法会一次性的把存在文件里的 相关的几何及纹理等数据读入到计算机的内存中,这样就会将所能表现 的场景大小或复杂度与计算机系统的容量直接关联(内存),即使能够在 运行时自动读取另一个文件的内容替换前面的数据,也会造成明显的滞 后和间断。针对像虚拟城市等复杂场景的实时渲染, 一种动态的数据载 入的结构和策略是相当必要的。发明内容本发明的目的在于提供一种三维大规模场景动态管理方法,主要 解决上述现有技术中所存在的技术问题,它能在保证图形效果的前 提下,使之应用的扩展性大大增强。为解决上述技术问题,本发明是这样实现的 一种三维大规模场景动态管理方法,其特征在于它包括 A:三维引擎主要针对于渲染室外大规模场景,其场景主要采用八 叉树划分并管理;B:渲染流程包括fBl: CPU和GPU与应用程序的数据交换;B2:顶点的坐标系转换;B3:像素到渲染图形缓存的处理过程。所说步骤A中在处理场景之前先对场景的物体进行简单的规模估 算,然后决定八叉树的纽化深度。 所说的步骤B1进一步包括Bll:应用程序通过CPU把在暂存内存中的渲染列表传输给GPU;B12:应用程序通过0penGL硬件抽象层来控制GPU进行渲染; B13: GPU把内存中的顶点信息进行多边形的拓扑处理,以及在显存的像素数据组合并进行栅栏化处理。 所说的步骧B2进一步包括B21:所有程序中的模型都是建立在物体空间的坐标系统下的,引 擎通过现实世界定位信息可以把模型坐标转换成现实世界的GIS坐标系 统;B22:再根据摄像机在世界坐标的投影,可以把三维世界的坐标系 映射成裁剪后的齐次坐标空间;B23:最后把这个坐标系进行视角转换,形成屏幕坐标输出。 所说的步骤B3进一步包括B31:像素的范围测试,这个测试简单的判断这个代渲染的像素是否在视角范围之类,如果是就通过测试,否则标为不通过;B32:裁剪测试,这个测试主要是判断像素时候在系统定义的裁剪 长方形内,所有在长方形外的像素将会被丢弃;B33:所有通过裁剪测试的像素鄱要通过透明测试,这个测试会用这个像素的最终透明值和程序定义的透明常量比较,程序会决定这个比较的结果;B34:通过透明测试的像素要进入模版测试,主要通过比较这个像 素在程序存储的一个模板缓存中对应位置的值,如果符合程序要求的 值,就通过测试;B35:深度测试,这个测试主要是比较当前像素在深度缓存中的值 和当前位置的深度值,如果像素不满足测试预制的深度关系就会测试失 败, 一旦通过所有的测试的像素,就会最终选染在屏幕上。通过上述发明方法,本发明可根据视角来判断需要真正需要显示的 三维数据,从而达到动态的读取场景显示,场景的变化也是连续的,而 并不会在不同场景部分切换时出现间断。另外根据距离短远近,不同精 度的模型也可以有选择的显示,更重要的、更明显的模型应该显示更高 精度的模型,而更远的模型则可以显示更简单的版本。另外在本地的文 件不能无限制的增加大小,这限制了传统的做法能够适应更大场景的用 途。而我们的方法可以很好的移植到网络化的应用,从服务器读取数据, 而服务器端理论上可以保存海量的数据。


图1形象的阐述了八叉树的划分原理和存储方式; 图l.a)描述为一个物体而构造的八叉树平面图; 图1. b)是1. a)图对应的八叉树结构图;图2是CPU和GPU与应用程序的数据交换示意图; 图3是坐标信息在渲染流程中的转化过程; 图4在像素输出到图像缓存前的处理过程; 图5是Kafa 3维渲染引擎的场景管理的系统结构图; 图6是系统通过基于八叉树的视场计算,只把视场范围内的模型载 入到内存中。图7是动态场景管理结合不同精度的模型等级。
具体实施方式
本发明提供了一种三维大规模场景动态管理方法,它是关于第二 层也就是三维实时引擎的部分。其特点是一、本发明的三维引擎主要针对于渲染室外大规模场景,其场景主 要采用八叉树划分并管理。八叉树主要是用来空间划分和实时剔出物体,而整个划分策略是基于静态的结构,因为如果在实时计算是改变结构整需要大量的计算量。 简单解释一下八叉树的工作原理如图1,假设所有需要渲染的物体都包含在一个三维世界的正方体 包围盒中,八叉树的管理就是把这个大的包围盒细分成八个等大的小包 围盒,对于每一个包围盒又再继续划分,直到最小的包围盒完全的包含 三维世界的任一物体。形成的八叉树的最深叶子的深度就是这个八叉树 的划分深度。但由于针对超大场景的完全划分需要的时间和空间的耗销都比较大。本三维引擎做出相应比较灵活的调整,在处理场景之前先对场景的 物体进行简单的规模估算(主要针对多边形数量,物体的个数,物体所 占的面积),然后决定八叉树的细化深度。_这个改变的好处在于,在较好的控制整个场景划分的前提下可以快 速的判别场景中的节点是否可见,如果一个节点是不可见的,引擎会自 动忽略掉这个节点的所有子节点,而如果一个节点是可见的,引擎会继 续在其子节点中进行逐层的可见性判别,从而达到一个快速获取当前视 角的渲染物体列表。二、渲染流程及解释1、 CPU和GPU与应用程序的数据交换。图2主要描述本系统的应用程序和CPU, GPU之前的数据交换过程。 主要有1,应用程序通过CPU把在暂存内存中的渲染列表传输给GPU。 2,应用程序通过OpenGL硬件抽象层来控制GPU进行渲染。3。 GPU把内 存中的顶点信息进行多边形的拓扑处理,以及在显存的像素数据组合并 进行栅栏化处理。2、 顶点的坐标系转换。图3主要描述了本引擎从模型读取到顶点信息输出到屏幕的顶点处理过程。首先,所有程序中的模型都是建立在物体空间的坐标系统下的, 引擎通过现实世界定位信息可以把模型坐标转换成现实世界的GIS坐标 系统,再根据摄像机在世界坐标的投影,可以把三维世界的坐标系映射 成裁剪后的齐次坐标空间,最后把这个坐标系进行视角转换,形成屏幕 坐标输出。3、像素到渲染图形缓存的处理过j呈。
最后介绍本引擎像素级的图形渲染处理过程。这个过程主要是决定 每个像素究竟是丢弃还是渲染的,第一,像素的范围测试。这个测试简 单的判断这个代渲染的像素是否在视角范围之类,如果是就通过测试, 否则标为不通过。第二,裁剪测试。这个测试主要是判断像素时候在系 统定义的裁剪长方形内,所有在长方形外的像素将会被丢弃。第三,所 有通过裁剪测试的像素都要通过透明测试,这个测试会用这个像素的最 终透明值和程序定义的透明常量比较,程序会决定这个比较的结果(一 般是大于,小于或者相等)。第四,通过透明测试的像素要进入模版测 试,主要通过比较这个像素在程序存储的一个模板缓存中对应位置的 值,如果符合程序要求的值(0或者1),就通过测试。深度测试,是最 后的一个测试阶段。这个测试主要是比较当前像素在深度缓存中的值和 当前位置的深度值,如果像素不满足测试预制的深度关系就会测试失 败, 一旦通过所有的测试的像素,就会最终选染在屏幕上。
三、系统架构及解释
如图5, Kafa主要控制了 SceneManager进行对应的场景管理(主 要是应用八叉树的场景管理)。而SceneManager通过场景渲染图(Scene Graph)来管理场景中等待渲染的节点,Entity是场景中的物体,同样 被SceneManager所管理。Entity和SceneNode的关系在于,SceneNode 都是Entity,而Entity只有被放到代渲染队列中才会成为SceneNode 被八叉树的系统进行划分和送往RenderEngine进行渲染。而Camera主 要是通过视角进行对SceneNode的剔出。图5的系统设计图完整的描述了本渲染引擎的场景管理的方式和场景管理和渲染器之前的关系。
图6,系统通过基于八叉树的视场计算,只把视场范围内的模型载 入到内存中。每一个模型都有多个细节程度的版本。系统根据模型离视 点的远景,选择载入不同细节程度的版本——离视点近的,载入高精度 的模型;离视点远的,载入低精度的模型。这样的载入模式适合人眼观 察物体的模式,同时更好的利用了内存资源。图7是动态场景管理结合 不同精度的模型等级
综上所述仅为本发明的较佳实施例而已,并非用来限定本发明的实施 范围。即凡依本发明申请专利范围的内容所作的等效变化与修饰,都应为 本发明的技术范畴。
权利要求
1、一种三维大规模场景动态管理方法,其特征在于它包括A三维引擎主要针对于渲染室外大规模场景,其场景主要采用八叉树划分并管理;B渲染流程包括B1CPU和GPU与应用程序的数据交换;B2顶点的坐标系转换;B3像素到渲染图形缓存的处理过程。
2、 根据权利要求1所述的三维大规模场景动态管理方法,其特征在于所说步骤A中在处理场景之前先对场景的物体进行简单的规模估算,然后决定八叉树的细化深度。
3、 根据权利要求1所述的三维大规模场景动态管理方法,其特征在于所说的步骤B1进一步包括Bll:应用程序通过CPU把在暂存内存中的渲染列表传输给GPU;B12:应用程序通过0penGL硬件抽象层来控制GPU进行渲染; B13: GPU把内存中的顶点信息进行多边形的拓扑处理,以及在显存 的像素数据组合并进行栅栏化处理。
4、 根据权利要求1所述的三维大规模场景动态管理方法,其特 征在于所说的步骤B2进一步包括B21:所有程序中的模型都是建立在物体空间的坐标系统下的,引擎通过现实世界定位信息可以把模型坐标转换成现实世界的GIS坐标系 统;B22:再根据摄像机在世界坐标的投影,可以把三维世界的坐标系映射成裁剪后的齐次坐标空间;B23:最后把这个坐标系进行视角转换,形成屏幕坐标输出。
5、根据权利要求1所述的三维大规模场景动态管理方法,其特 征在于所说的步骤B3进一步包括B31:像素的范围测试,这个测试简单的判断这个代渲染的像素是 否在视角范围之类,如果是就通过测试,否则标为不通过;B32:裁剪测试,这个测试主要是判断像素时候在系统定义的裁剪 长方形内,所有在长方形外的像素将会被丢弃;B33:所有通过裁剪测试的像素都要通过透明测试,这个测试会用 这个像素的最终透明值和程序定义的透明常量比较,程序会k定这个比 较的结果;B34:通过透明测试的像素要进入模版测试,主要通过比较这个像 素在程序存储的一个模板缓存中对应位置的值,如果符合程序要求的 值,就通过测试;B35:深度测试,这个测试主要是比较当前像素在深度缓存中的值 和当前位置的深度值,如果像素不满足测试预制的深度关系就会测试失 败, 一旦通过所有的测试的像素,就会最终选染在屏幕上。
全文摘要
本发明涉及计算机三维图像处理技术领域,特别是一种三维大规模场景动态管理方法。它包括A三维引擎主要针对于渲染室外大规模场景,其场景主要采用八叉树划分并管理;B渲染流程包括B1CPU和GPU与应用程序的数据交换;B2顶点的坐标系转换;B3像素到渲染图形缓存的处理过程。本发明可根据视角来判断需要真正需要显示的三维数据,从而达到动态的读取场景显示,场景的变化也是连续的,而并不会在不同场景部分切换时出现间断。另外根据距离短远近,不同精度的模型也可以有选择的显示,更重要的、更明显的模型应该显示更高精度的模型,而更远的模型则可以显示更简单的版本。
文档编号G06T15/00GK101315703SQ20071004145
公开日2008年12月3日 申请日期2007年5月30日 优先权日2007年5月30日
发明者S·斯班索耶维奇, 冯嘉明, 宋凌飞, 柯耐德, 梅晓莱, 毛若明, 陆首博 申请人:数邦科技(上海)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1