基于EON的虚拟化工场景优化技术的研究
虚拟现实VR(Virtual Reality)是一种可以创建和体验虚拟世界的计算机系统,其本质特征要求能够生成实时且真实的虚拟环境。虚拟环境生成从本质上是一种限时的计算机图形绘制技术,这与传统的单一强调逼真性的真实感图形绘制技术有着根本的不同。虚拟现实系统所要求的是实时图形生成,一方面渲染出来的虚拟场景要能满足一定的视觉效果,否则就违背了模拟真实的初衷;另一方面由于实时性的限制,有时不得不降低虚拟环境的几何复杂度、降低生成图像质量,或采用优化技术来提高虚拟环境的速度。本文应用虚拟现实软件EON,以某化工企业的生产现场为模型,建立了多处虚拟化工场景,制作过程中结合多种优化理论及技术的具体应用,实现了具有工艺流程培训、漫游交互等功能的漫游系统,可使用户有身临其境的真实模拟操作的感觉,同时让用户对实际化工生产中的管路设计、生产设备和车间布置有更加感性的认识。
1 开发平台概述
EON Studio是美国EON Reality公司开发的一套模块化多用途的三维交互式仿真软件开发工具,它能够让用户自定义行为及交互方式,也能够进行仿真测试及实时更改测试的参数,可应用在设计、研究、制造、生产、教育、训练与维护等领域。EON Studio基于最新的PC技术,是在OpenGL图形标准和微软的DirectX多媒体功能的基础上建立起来的。通过与OpenGL和DirectX的联系,使得利用EON所开发的应用程序在将来图形卡渲染能力加强的同时其渲染效果也会得到提高。EON强调资源(软件/硬件)的集成与延展、基于Web的交互式三维文件的安全维护、逼真度及后台数据库的结合。EON Studio技术和VRML技术在结构上十分相似,可以认为,EON Studio技术是VRML技术基础上的延伸和扩充,其系统组成如图1所示。
EON Studio应用了面向对象技术,不仅使得对三维世界的描述变得清晰,还通过封装属性和建立模拟场景内部消息路由,很方便地实现虚拟实体的交互和行为动作等功能。虚拟场景的基本元素为节点(node),节点是EON Studio为多媒体和交互对象定义的一个对象集。节点[1]的属性包含在域(field)和事件(event)中。EON Studio的节点类型很丰富,具有超过100个预先设定好的功能节点,按功能可以分为以下几类:预设节点;代理节点;组装节点;基础节点;碰撞检测节点;可视化节点;传感器节点。
另外,EON Studio在以上基础上又增加了Script Nodes,可以利用Java script或VB script进行编程,处理一些复杂的仿真,扩展了EON Studio中虚拟世界的动态行为。利用EON Studio的功能节点,能方便地建立满足用户要求的三维虚拟场景,完成用户特定的交互过程。
2 三维模型建立与优化
2.1 三维模型建立
使用3DS MAX可以较方便地建立逼真度很高的三维模型。图2是建立某化工场景模型的软件界面。
2.2 模型的优化
模型的优化对漫游场景的浏览很有帮助,前期如果不对场景的模型进行很好的优化,到了制作后期再对模型进行优化时就需要重新回到MAX里修改模型并进行重新烘焙后再导入到当前的EON场景里,这样就出现了重复工作的情况,大大降低了工作效率。因此,模型的优化需要在创建场景时就应受到足够的重视。
在3DS MAX中建模的准则基本上可以归纳为以下几点:
(1)制作简模
漫游场景中运行画面每一帧都是靠显卡和CPU实时计算出来的,如果面数太多,会导致运行速度急剧下降,甚至无法运行;还会导致文件容量增大,在网络上发布还会导致下载时间增加[2]。
(2)三角面尽量为等边三角形
在调用模型或创建模型时,尽量保证模型的三角面为等边三角形,不要出现长条型。这是因为长条形的面不利于实时渲染,还会出现锯齿、纹理模糊等现象。
(3)合理分布模型的密度
模型的密度分布不合理对其后面的运行速度有影响,如果模型密度不均匀,会导致运行速度时快时慢,因此,应合理地分布场景模型的密度。
在3DS MAX中完成模型烘焙和优化后,输出的Eoz文件格式,可方便地导入EON Studio进行开发设计。
3 EON中场景的优化
初步完成化工场景的建模后,通过EON Viewer浏览的速度缓慢,甚至发生停顿现象,如果不能解决浏览速度问题,整个系统就没有什么意义了。为了解决这个问题,首先要对该问题的产生进行分析。三维场景的呈现是通过浏览器以默认视点为参照对场景描述文件的解释而完成的,每当用户拖动鼠标或按下箭头键在场景中走动或旋转时,视点就会发生变化。在真实世界中,人向前行,对面的事物会越来越近,为了模仿这种效果,每当视点发生变化,浏览器就会重新计算场景中各对象的新位置并重新进行渲染,使得人能走近某个对象。当场景中对象较多时,浏览器渲染的速度就跟不上视点变化的速度,从而产生停顿的现象。
由于化工厂场景巨大、管线繁多、工艺流程复杂等问题,对三维场景的显示与实现带来一定的困难。笔者曾试着采用贴图的方法,即在一个方体上贴上相应的纹理图来表示装置,这种方法实现起来很简单,浏览器解释速度较快,但最大的缺点是构建的对象缺乏三维立体感和真实感,因此贴图的方法不适合化工场景。通过对三维场景实时绘制技术的分析与研究,提出如下优化方式。
3.1 大量使用重用机制
不仅一个装置内部的对象可以重用,流程相同的装置之间也可采用重用机制。对于两个不同的构建模型,有些泵和阀门是相同的,那么对相同的部分利用DEF与UES重用机制就可以极大地简化描述文件,最重要的是能够减轻浏览器的负担,从而提高渲染速度。重用机制的使用有个前提,即只能在一个描述文件内部使用[3]。因此,需要进行代码重用的2个或多个对象,它们的描述应放在同一个节点中。
3.2 利用EON统计值改善模拟品质
复杂三维场景的实时绘制要求包括:场景环境中的运动体的位置、姿态的实时计算与动态绘制;用户视点改变时,画面的刷新必须达到人眼觉察不到闪烁,即相当光滑的程度,通常为20~30帧/s,至少不能少于10帧/s;同时场景的环境也要求随着人的活动及时产生相应的画面,图形生成必须能立即做出反应并产生相应的环境和场景。
可以利用模拟(Simulation)菜单中显示模拟程式统计值(Show Simulation Statistics)选项,或是点选工具列中显示模拟程式统计值的按钮,启动模拟统计值的显示[4]。HZ:每秒框架数目。这是一个利用数个框架计算出来的平均速率,较小的值表示框架产生较慢;Frm:准备框架所需的时间(s)。这个值可用来确认哪个框架耗费较多的时间;App:更新传呼所需的时间(s);Eve:事件处理所耗费的时间(s)。Drw:绘图所耗费的时间(s),包含下载材质、像素填充及顶点转换;#tri:绘制的三角形实际的数目(注意这个值会随视角的改变而改变)。
随着统计值的变化,可实时判定具体场景的浏览速度,同时利用EON中Mesh节点下的Polygon Reduction level子节点进行Mesh网格的简化,以达到适合的浏览效果。
3.3 合理定义显示比例
大部分的显卡使用材质的影像记忆体及框架缓冲来做动作。框架缓冲可分为前缓冲、后缓冲及Z缓冲,在屏幕上根据所看到影像的不同而不同。如果在视窗中执行EON模拟程式,前缓冲会涵盖整体事件屏幕,但不影响模拟视窗的大小,在记忆体的数量上,前缓冲由Windows屏幕设定来决定。而后缓冲及Z缓冲的大小则依据目前EON模拟视窗的大小来设定。
在屏幕上绘制像素是需要时间的,当相对于视窗大小的框架速率很大时,像素填充会设定模拟速度的极限。要降低像素填充所花费的时间,可使用较小的模拟视窗,点选大小/方位比例(Size/Aspect Ratio)标签,并输入模拟视窗大小,降低透支(Overdraw)的程度(例如空间内部结构的模拟),合理地将场景进行分割并保存为独立的Edz文件,利用改变模拟(Change Simulation)功能节点来进行切换,也可利用在框架功能节点的特性视窗中选取隐藏(Hidden)选项,让漫游浏览中尚未看到的几何物件暂时不显示。
3.4 利用场景切换技术实现同一对象不同模型的自动切换
有针对性地为场景中面数复杂的装置建立多个不同的模型,使场景在显示的时候以不同模型多方面显示,如图3所示。最简单的是建立简单和细化两种模型,当视点距对象较远时采用简单模型,视点接近时自动切换为该对象的细化模型。采用这种办法,需对某对象建立多个模型,并利用Switch、LOD节点或触发器实现模型的切换[5]。在切换过程中,要对切换时间进行设置,使切换时间小于人眼眨动频率,画面看起来更加逼真。这种方法既能够减小面数、提高演示速度,又能够使人感觉不到明显的切换痕迹,是虚拟现实领域应该继续沿用并加以延伸的方法。
3.5 漫游系统优化测试
虚拟现实漫游技术的一大困难在于漫游仿真速度与运行速度之间的矛盾。在建立最佳仿真程度模型的同时又要保证速度的运行是要重点协调的问题。本系统运行的硬件配置为:处理器Pentiu(R)4 3.0 GHz,内存1 GB,显卡使用NVIDIA Geforce 7300GT(256 MB),在台式机上进行了优化测试,测试结果如表1所示。
利用EON Studio建立的虚拟化工场景,以某化工企业的生产场景为模型,实现了该虚拟场景的漫游,如图4所示。使用者可以对场景进行全方位浏览,也可对局部进行细致的观察;并配合适当的讲解,最终对该生产过程产生一个清晰、深刻的认识。通过对模型部分优化与在EON Studio中进行的必要优化,符合实时交互频率15帧/s以上的漫游要求,加快了三维场景的实时绘制速度,提供了良好的漫游浏览速度。该优化方法具有一定的普遍性,对后续漫游信息系统的完善和二次开发提供了必要的保证。
评论