基于虚拟现实技术的中药生产实训仿真实现

2014-03-21 05:03项朝阳唐润华汪小根庄义修
图学学报 2014年1期
关键词:信道按钮虚拟现实

项朝阳,唐润华,汪小根,庄义修

(1.广东食品药品职业学院电教信息中心,广东 广州 510520;2.广东食品药品职业学院中药学院,广东 广州 510520)

中药制药是一个相当庞杂的过程,涉及十几个甚至几十个环节;车间建设占地有一定的需求,从几十平方米到几千平方米;设备比较昂贵,每套设备从几万到几百万不等;实验准备和生产周期较长,一种药品的生产需要几天甚至十几天才能最终完成。高校学生和企业新员工在投入中药生产前都需要通过实训熟悉和了解整个生产流程,熟悉各个设备的操作规程、功能和特性,也需通过实验来构筑必需的岗前经验,但寄希望于生产企业专门留出完整的生产线来培训是不现实的,而构建实验场地也需要投入大量的财力物力。其次,实训原材料消耗大,中间产品保存成本高,部分实验还需反复进行,时间和能源上的消耗都十分可观。此外,孤立的局部实训和封闭的生产设备难以展现完整的工艺流程,难以实现生产安全指导、先进理念灌输、管理要素贯彻等多方面的融合,实训效果无法保证。

将虚拟现实(Virtual Reality, VR)用到中药生产实训上,用虚拟实现技术来开发虚拟场景、虚拟设备和模拟生产操作,局面则焕然一新。虚拟现实的临场感、交互性和构想性等特性[1-2]可以很好地解决以上的诸多问题。生产周期控制,材料能源消耗,生产过程展现等问题也将迎刃而解。但是构建虚拟现实平台,是一项系统工程,需要掌握虚拟现实技术,结合工作流技术,网络技术、教育技术和专业学科知识,进行可持续化的建设。

1 生产实训类仿真系统的架构

快速、灵活地构建满足生产应用需求的仿真系统一直是复杂系统仿真所追求的目标[3]。为了让实训平台灵活快捷,宜采用模块化设计。文献[4]通过提取与抽象,归纳了模块化仿真系统的设计方法,此类仿真系统可以从实现上划分为数据视频及动画存储单元、数据处理及发布单元、虚拟设备接口单元、物理设备及3D模型单元和客户端五大部分,如图1所示[4]。

图1 模块化仿真系统整体框架

1.1 基于Java的实现尝试

在具体实现方法上,文献[4]系统做了基于Delphi的实现,本文则进一步做了基于Java的尝试。实训平台的工作依旧是依靠数据处理及发布单元与客户端交互和协作来完成的。Web应用的发布借助了Apache Tomcat 6.0,局部还用到Javascript等脚本语言处理简单交互。

文献[4]系统配置采用的是C/S (Client/Server)模式,而本文系统采用了更为便捷的B/S(Browse/Server)模式。当管理员获取相应权限后,可进入后台设置学员权限与实验流程,并控制各实验环节的流向和结果输出。另外,通过配置视频、三维动画和声音、扑捉热点等手段,使仿真交互更显直观、生动,并符合生产操作规程。学员的访问依旧基于B/S方式,通过对Web服务器的访问来完成网上虚拟学习和仿真操作。视频及其它辅助文件被分门别类存放到指定的子目录中,操作时通过JDBC(Java DataBase Connectivity, Java数据库连接)与数据库服务器进行联接和交互,来控制实验状态和获得仿真实验结果。

1.2 虚拟设备接口的精简实现

虚拟设备接口主要接收从物理设备及可控3D模型单元传送过来的感应信息和状态数据。这个环节可以通过物理感应设备接口将数据提取出来,也可以采用嵌入式技术来构建虚拟实验设备的接口[5]。从降低经济成本、便于系统扩展等角度出发,采用了Quest 3D和Java相结合的方案来实现。先构建好3D虚拟场景,然后通过加载Quest 3D交互控件和Java语句调用3D场景来实现协同控制,也达到了满足生产应用需求的虚拟仿真效果。

2 生产仿真开发精细程度与工具选取

仿真系统的开发精细程度应结合行业特点和生产实际考虑,功能性要优先考虑,必须能够真实反映生产现实。在保证功能性的基础上,轻巧是首选。事实上,可以把精细程度深入到细节、局部去把控,对于重要的环节细节要重点剖析,对于次要环节,能简则简。总之,繁简适宜才是实现系统化工程开发的上策,也是软件工程所倡导的原则。仿真工具的选取也宜按此思路,不应求高精尖,应结合需求特点,从实用和轻巧切入,综合考虑功能性、扩展性、鲁棒性和结构良好性。

计算机仿真工具一般可分为三类:一是通用语言,如Fortran和Algol语言等;二是仿真语言,如SIGMA、GPSS和SIMULINK等;三是可视化开发平台软件。前两类通用性好,但要求开发者有较强的编程能力。第三类通过定义各种实体,设置实体属性建立实体间联系,主要通过配置参数和操作技巧来创建仿真模型,技术门槛较低,开发者可以将更多的精力转移到工艺过程的展现和虚拟场景的制作。目前流行的可视化开发平台有Vir-toolsDev,EONStudio和Quest 3D等。另外,国内也有了很大突破,典型的有北京航空航天大学的实时三维图形平台BH_GRAPH等[1]。

Quest 3D是一款实时图形渲染工具,可以实现产品的三维展示、场景漫游以及虚拟训练等多种功能[6]。Quest 3D最大的特点就是使用构建模块来组成程序,这些模块被称为信道,每一个信道都有其特定功能。利用这些信道,不需要编写大量复杂代码就可以完成三维场景的建立和漫游等功能。它借助了DirectX引擎,生成的场景效果绚丽,且占用资源较少。它还提供物理引擎、路径动画、数据库连接和网络支持等功能。此外,它演示性能强大,富有现实感,可以实现相当高难度的仿真。

结合中药仿真生产岗位突出、流程衔接紧密、操作规范严格、系统运行轻巧等特点,也为便于中药学科专业人员协同参与,本文的中药生产实训仿真系统开发时选用了Quest 3D作为仿真工具。

3 实现案例与关键技术

虚拟现实仿真,一般要先做3D实体建模,然后实现仿真控制。整个过程可分为3D实体建模、静态场景(含实体创建)、动态场景、实体按钮侦测和控制逻辑等步骤来实施。本节以中药制药万能切割机为实例,以Quest 3D为主要仿真工具,对中药生产实训仿真过程中遇到的关键问题进行了探讨。

3.1 3D实体建模

由于虚拟现实仿真系统基于大量3D实体的运行得以实现,而3D实体的运行占用大量的系统资源,所以3D模型创建的合理性对系统能否正常运行起着重要的作用。基于此,创建虚拟设备或场景要繁简适宜,充分把控好系统的开发精细程度。本系统采用3Dmax实现基础建模,建模时将模型抽象化,注重基于“点”级的对齐,减少体块堆积,避免多余的顶点与面,控制材质使用量和贴图大小,避免面面相叠、交叉,少用布尔运算。对于完成的设备类3D模型,按静态机身类、按钮类和动态实体类分别导出文件保存。分开导出的文件再导入Quest 3D平台后,成为独立的实体,便于动画设置和逻辑控制。中药制药万能切割机在建模完成后,可对机身、切刀机构和绿红色按钮分别导出相应的“.X文件”。图2(a)是完整的万能切割机3D模型,图2(b)和图2(c)是分别导出的机身、按钮和切刀机构分拆组件图。

图2 万能切割机模型及分拆组件

3.2 静态场景创建手法

一般性生产静态场景包括所有设备实体和车间场景的静态展现效果。此案例简化为整台万能切割机(含机身、按钮和切刀机构等实体)。静态场景创建方法如下:

(1)将建模时生成的X类型文件(含机身、按钮和切刀机构)导入Quest 3D平台,添加3D场景模块和渲染模块,将3D场景模块设置为信道组的起始模块,添加5个点光源和一台OIC摄影机,再将上述模块和信道组连接起来,构成该设备的基本场景,如图3所示。

图3 静态场景信道流程图

(2)将导入的实体作为一整体,将其大小和位置进行合理化调整,设置灯光的位置、强度,使设备呈现良好的显示效果,确定摄影机的位置、方向和焦距,在动画窗口查看工程摄影机显示结果,微调至正常显示,如图4所示。

图4 渲染模块和信道组连接后的万能切割机

3.3 动态场景的创建技巧

动态场景比静态场景的创建方法复杂,通常在完成静态场景之后实施,技巧归纳如下:

(1)设备基本是局部活动的,此刻的关注点在动态部件。首先查看动态部件实体的Motion信道组,确认导入的Motion信道组下的Value模块类型为Envelop(因导入的模块有可能出现其他Value类型),如果不是,则更换为Envelop类型模块。

(2)切换到动画窗口,在编辑器下方的时间轴内,将指针调到第0 格,以每6帧为一组动作设置动态部件的动作过程。

(3)添加Timer Value连接到上述Value模块,如图5所示,创建动态场景播放任务,逻辑控制信道通过控制播放任务来实现动态部件的启动和停止。

图5 Timer Value 连接图

3.4 鼠标碰撞侦测及高亮显示

为实现逼真的仿真效果,可采用3D实体来创建按钮,技术难点在于需要建立鼠标碰撞检测和鼠标滑过高亮显示功能。此案例中,设置绿色按钮为启动按钮,按下绿色按钮后,切刀机构上下运动。打开Button-G文件夹,该信道组由导入Button-G.X时生成,删除下面不完整的Material模块,从信道窗口重新添加一新Material模块替代。将Material信道组下Diffuse模块的(R,G,B)设置为(0,1,0),使按钮显示为绿色。删掉原Emissive下的3个Envelop,添加Detect Mouse Collision与Emissive的G通道相连;创建Button-G的快捷方式并连接到Detect Mouse Collision模块。这样就实现了鼠标滑过绿色按钮时的碰撞侦测及绿色按钮高亮显示功能,如图6所示。

3.5 网页展示调整技巧

系统需要发布成与显示屏幕相匹配的网页,才能正确显示仿真效果。而Quest 3D只能按4∶3进行发布,无法与实际的显示屏幕进行匹配。为解决这一问题,一个比较有效的做法是设计一个通用的转换公式,利用公式在Quest 3D里对场景模块的Y Scale值进行强制调整。设需要发布成网页的横、纵轴尺寸分别为X、Y,Quest 3D按4∶3进行发布,则纵轴尺寸为(3/4)*X,而实际网页的纵轴尺寸为Y,将(3/4)*X/Y作为转换系数,即将场景的Y-Scale值(旧)调整为Y-Scale值(新)=((3/4)*X /Y )* Y-Scale值(旧)。

在Quest 3D平台发布网页的index.html文件,部分代码段做如下修订:

……