面向大型产品虚拟展示的数据管理方法研究

2013-09-12 01:50肖元秀黄淑荣
微处理机 2013年6期
关键词:锥体视点内存

肖元秀,刘 景,黄淑荣

(河海大学物联网工程学院,常州 213022)

1 引言

产品虚拟展示技术是虚拟现实技术在产品制造领域的重要应用,该技术把具有高度真实感的产品数字化模型,结合声音、文字、图像,并采用自动或交互方式,全方位地展示产品性能、工作原理和使用方法等。在桌面式虚拟环境中实现对大型产品的虚拟展示,不但可以避免沉浸式大型虚拟现实环境所需要的高昂设备投入,而且方便企业进行产品展示与宣传环境的快速搭建。但是,随着产品数字化建模精度越来越高,模型的数据量急剧增加,这给模型数据的存储、管理、载入和实时显示带来极大困难[1]。

目前,对桌面虚拟环境中模型数据管理和优化调度的研究,主要集中在三维地形和数字化城市领域。曹晶等提出利用Terra Vista强大的地形建模能力[2],快速、高效生成最优化模型数据库,实现对模型数据的高效管理及大范围城市三维系统的流畅漫游。Fu Zhongliang[3]和 Dang Zhou[4]等基于 ROAM 算法,利用LOD和可见性剔除等优化技术,结合缓存管理技术实现大规模三维地形场景漫游的展示。Wang Yingjie[5]等针对三维城市模型的特征,提出了一种基于Cell-Portal结构的数据管理和调度优化方法,提高了模型的绘制效率。而针对大规模复杂机械模型虚拟展示领域的研究并不多见。因此研究并设计了一种模型数据的存储、管理、动态调度以及显示优化方案,充分利用系统的软、硬件资源,实现产品模型的实时绘制,提高系统的响应效率。

2 模型数据管理方案

图1 总体框架设计图

为了在桌面虚拟环境中实现对大型产品的虚拟展示,研究设计了虚拟装配与展示系统,其总体架构如图1所示。该架构主要由模型预处理、Pro/E二次开发、虚拟装配路径生成、场景组织与调度、场景渲染与绘制等功能模块构成。基于该架构设计的模型数据管理方案如下:

(1)模型数据存储

虚拟装配与展示系统中,合理有效的数据组织管理是内存调度、场景管理与显示优化、提高系统运行效率的前提。由于关系型数据库具有数据结构化、最低冗余度、较高的程序与数据独立性和易于实现数据访问等优点,因此采用关系型数据库管理系统Access 2007设计并建立场景数据库,实现系统中各类数据的统一管理。

(2)场景管理与内存调度

结合OSG(OpenSceneGraph)场景管理机制,采用层次化的场景图结构组织场景数据。使用基于NUR算法的内存管理策略,对展示系统中的场景模型对象进行内存管理,并结合模型调度技术,以最大限度地利用系统资源,提高系统运行效率。

(3)模型简化与场景显示优化

在模型预处理阶段,采用几何细节抑制方法实现对模型圆角特征的抑制,减少内存空间的使用。在场景绘制显示过程中,综合使用视锥体裁剪、背面剔除及几何体数据合并等技术来减少最终送往绘制管线的可绘制体数目和三角面片数,加快显示速度,提高展示帧率。

3 模型数据存储和管理

产品的CAD模型主要由Pro/E软件设计而成,根据Pro/E提供的模型转换工具进行模型预处理操作,实现CAD模型向三角面片模型的转换。之后对Pro/E系统进行二次开发获取模型装配信息,并存储到数据库中。虚拟装配与展示系统中的数据还包括零件几何模型、零件装配过程路径信息、装配序列规划信息、场景管理信息等。

采用关系型数据库管理系统Access 2007中的表结构依次建立6个数据表:零件模型信息表、场景信息表、司机室信息表、车体信息表、冷却室信息表和转向架信息表。表中主要存储各模型或场景的ID号、文件名称、几何模型信息、模型装配信息、路径信息和对应的存储文件目录等数据,并将ID号作为主键建立6个信息表之间的联系,为后期的组织调度实现做好准备工作。

4 场景管理与内存调度

4.1 场景图管理与设计

OSG场景图采用一种自顶向下、分层的树状结构来组织空间数据集,以提高渲染效率,并采用包围体[6]层次结构组织场景对象,管理复杂场景的物体。一棵场景树的顶部是根节点,从根节点向下延伸,各个组节点中均包含了几何信息和场景渲染信息;另外还包括多种功能节点,以执行各种不同的功能。如开关节点可设置其子节点可用或不可用,细节层次(LOD)节点可根据观察者的距离调用不同的子节点。如图2所示为场景的部分节点树结构。

图2 部分节点树结构示意图

根据展示系统的需求及模型间装配层次关系,结合OSG场景管理机制,分别设计了场景的逻辑视图、渲染树视图和实体类视图。首先根据需求分析,明确展示场景中需要包含哪些实体单元以及与其他实体对象间的逻辑关系;然后利用OSG场景图节点机制,选择需要的功能节点构建各实体单元的渲染树视图;最后将与三维渲染无关的静态实体对象封装成实体类视图。

4.2 内存动态调度

借助NUR管理内存的算法思想,对展示系统中的场景模型对象进行内存管理。内存管理策略流程图如图3所示,先在内存中开辟一个节点列表,同时设置最大容纳值,表示内存中可存储的最大节点数目。再对场景节点树中每个节点赋予一个引用位flag,作为是否将该节点对象从内存中剔除,并替换成下一个即将被引用节点对象的标志。若内存中加载的节点对象数值超过了最大容纳值,则从内存中依次剔除flag=0的节点对象,若没有超出容纳值,表示继续加载模型数据。

图3 内存管理策略流程图

由于计算机的内存和计算能力有限,不可能将所有的数据事先调入内存,必须根据当前场景显示的需要,加载用户需要看到的模型数据,剔除对显示绘制没有作用的模型数据。场景区域划分为可见区域、预可见区域和不可见区域,与之对应的是:可见数据、预可见数据和不可见数据。不同数据类型采用不同的调度策略,这里采用满足透视投影原理[7]的视锥体来实现模型数据的动态调度。

图4 透视投影视锥体示意图

图4中V表示人眼视点,N表示近裁剪平面,F表示远裁剪平面,T表示场景区域,P是视锥体在场景区域的投影面,通常是一个梯形。因此可用一个较规则的等腰梯形区域近似表示场景的可见区域,等腰梯形的面积可根据视锥体参数计算出来。

场景初始化时,可见区域的数据首先被调入。但是,虚拟漫游过程中可见区域将会改变,为了避免影响到场景漫游的连贯性和实时性,预可见区域的判断、计算和预可见区域数据的调度成了关键。而用户视点移动的趋势是随机的,不同的运动趋势确定了不同的预可见区域。因此可将之前的可见区域范围扩大,尽可能地将视点运动的各种趋势包含在等腰梯形中,并将其作为预可见区域部分。预可见区域之外的为不可见区域,对于当前视点看不见的模型不予调度,直接从内存中剔除出去。

以机车的司机室场景为例,运用该场景管理与调度方法,实现了场景漫游的连贯性和实时性,效果图如图5所示。

图5 司机室场景漫游展示效果图

主要实现步骤如下:

(1)连接并访问数据库中的司机室信息表,根据场景组织管理方法分别构建场景的渲染树视图和实体类视图。其中将司机室信息表中model_file字段作为模型导入的参数,model_file字段记录模型文件的存储位置,可为程序加载外部文件时提供相对路径索引。

(2)结合构建的场景图,采用内存管理方法,为司机室中的每个节点设置引用位。此时的节点除了包含实体类中的节点外,还包括渲染树节点等。申请一个节点列表用来存储已经加载的模型节点,并设置内存中节点的最大容纳数,这里设定为200。

(3)判断当前内存中引用位为0的节点,将这些节点数据从内存中剔除,并加载即将可能看见的模型数据。用户视点改变时,根据调度方法对预可见区域节点进行判断和加载。

5 场景的显示优化

大型产品模型结构复杂、数据量大,对场景绘制展示的要求比较高,仅仅依靠内存管理和调度策略提高绘制效率还不够,需要在展示过程中设计一些辅助技术优化场景的显示效果,提高渲染帧率。采用以下处理方法:

(1)视锥体裁剪

视锥体裁剪技术是基于包围体(BVH)层次结构,借助包围球对视锥体与节点数据的求交计算来判定视锥体内的可见数据。图6为视锥体包围球示意图,在以视点V为原点、视点方向为Z的坐标系中,ABCD为视锥体在XZ平面上的投影。视锥体包围球的中心为O,经计算可得点O、C的坐标,进而求得包围球半径OC的坐标。当视点和视线方向改变后,需重新确定视锥体的包围球,计算其中心点坐标和包围球半径。

图6 视锥体包围球示意图

具体步骤如下:

Step1:获取当前视锥体的参数;

Step2:分别计算视锥体包围球和节点包围球的中心和半径,半径分别记为R1、R2;

Step3:计算节点包围球中心与视锥体包围球中心的距离d,若d<R1+R2,则说明该节点可见。

以司机室场景的绘制显示为例,采用该技术得到如表1所示的数据对比,其中视点距离大小为:d1>d2>d3。通过表1可以明显看到,随着视点浏览场景,可绘制体数目和三角面片数目跟着减少,帧率也在相应地提高,降低了图形的渲染负担,达到了优化场景显示的目的。

表1 司机室裁剪前后数据对比

(2)隐藏面剔除

机车模型对象中包含了很多遮挡体,尤其是对于一些装配体模型,当视点在浏览场景时,通常大约有一半的模型表面是看不到的。因此,在显示绘制时采用隐藏面剔除技术,将那些处于视线背面、与当前视点方向相反的模型数据剔除掉,不进行绘制。如此的话,场景的整个复杂度将会降低最多1/2左右,减少了最终绘制渲染的数据量,提高了展示效率。

通过计算当前视点方向与模型对象的多边形面片法向量之间夹角的大小,对当前视点中的数据进行判断和剔除。如图7所示,代表多边形的法线方向,V→代表视线方向与的夹角为θ,当θ大于90度时,该多边形面片数据不可见,将其剔除;当θ小于等于90度时,表示当前模型数据可见,需要送往渲染管线进行绘制。

图7 向量间夹角的计算

(3)几何体数据合并

机车模型包含的模型数目比较多,而每个模型又包含很多零部件,部分零部件包含的三角面片数高达100多万。如图8所示为机车柴油机中的一组动力组模型,可以看到该模型中包含了多种具有多个相同网格组件的零件模型。

图8 柴油机动力组多几何体特征

针对这种情况,可将具有相同网格结构的元件模型合并成一个几何体对象。实时绘制显示时无需对具有相同网格结构的部件进行再次的重复绘制,只需要通过简单的矩阵变换操作将模型放置到相应的位置即可,这样可大大减少显示绘制的几何体数目,提高绘制速度。

6 结 束 语

基于桌面式产品虚拟展示技术提出了一种适合于大型复杂机械产品虚拟展示的数据管理方法,并以机车为实例,综合运用数据管理、内存调度和显示优化等方法,结合多媒体技术实现了场景的漫游和虚拟装配展示过程。结果表明,对于具有25,457个三角面片及326,825个三角带的复杂机车司机室场景,能以60左右的帧率进行人机交互漫游控制。验证了所提出的数据管理方法的有效性,以及组织调度优化的合理高效性,提高了显示绘制和人机交互的效率,具有一定的理论意义和实用价值。

[1]史建成,刘检华,宁汝新,等.虚拟装配系统中的模型数据管理与优化[J].计算机集成制造系统,2010,16(11):2416-2422.

[2]曹晶,邵远征,张煜,等.大范围地形及城市三维快速建模与漫游[J].长江科学院院报,2008,25(4):40-43.

[3]Fu Zhongliang,Zhang Wenyuan.Data Block Partition and Database based Large Scale Terrain 3D Visualization[C].Computational Intelligence and Software Engineering,2009.CiSE 2009.International Conference on.IEEE,2009:1 -4.

[4]Dang Zhou,Liu Qiang,Zhang Wenhuo.Key Technology with Large-scale Three-dimensional Terrain Management[J].Geomatics World,2010,7:443 -447.

[5]Wang Yingjie,Weng Jingnong.On Scheduling Methods of Large - scale 3D City Building Models[C].Computational Intelligence and Software Engineering,2009.

[6]王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009.

[7]何援军.透视和透视投影变换——论图形变换和投影的若干问题之三[J].计算机辅助设计与图形学学报,2005,17(4):734-739.

猜你喜欢
锥体视点内存
搜集凹面锥体
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
锥体上滚实验的力学分析
进动锥体目标平动补偿及微多普勒提取
视点
内存搭配DDR4、DDR3L还是DDR3?
让你每天一元钱,物超所值——《今日视点—2014精萃》序
两会视点
电针针刺锥体区即时镇痛发作期偏头痛218例