摘要介绍VRML,分析VRML所具有的动画功能及交互功能,将其应用在FMS系统上,得到三维图形显示的、具有交互作用及动画效果的FMS系统。
关键词VRMLFMS3D动画
计算机技术的发展,特别是三维图形技术的发展,使人们更加方便地进入到三维世界,于是,提出了虚拟现实建模语言VRML(Virtual Reality Modeling Language)[1]。同样地,工程实际中,有大量需要用三维图形来表示设计、制造等方面的概念。往常,我们只能用昂贵的软件或花费大量的精力用C++等计算机语言来绘制三维图形,表示这些概念;有了VRML,我们就可以很方便而容易地做同样的工作。特别需要指出的是,由于有了VRML,我们可以编写出更复杂的三维图形,如交互式三维图形。
笔者利用VRML语言,将一个实际的FMS实验环境编写成一个复杂的三维动画程序,利用VRML的动画及交互功能,使FMS三维动画程序能够根据人们的控制,产生相应的运动变化,从而显示出FMS的工作流程。
1VRML简介
VRML是在OPENGL三维图形库的基础之上发展而来的,虽然出现只有二三年的时间,但已经成为网络技术的热点之一。1997年年底,VRML2.0(又称VRML97)正式成为国际标准,这也是第一个在网络上发布的国际标准。
VRML2.0是一个比较简单的三维建模语言。之所以简单,是因为它是类似于HTML的脚本语言,编写起来很方便。但VRML2.0内部可以直接利用JavaScript语言进行编程处理,并可与外部的Java语言共同作用,因而可以编写复杂的程序,产生复杂的显示效果。VRML2.0的基本组成为54个节点(Node),由这些节点生成节点语句,进而构造三维物体,物体间可以产生交互作用。利用VRML2.0可以构造具有奇异效果的三维世界,可以将照片,甚至MPEG影像显示在物体表面,还可以在三维空间产生环绕立体声。由于在主要的网络浏览器如IE及Netscape Navigator上可以运行VRML程序,故VRML的作用大为增强。
虽然VRML2.0是随着网络技术的发展而产生的,但它同样可以运用在其它方面,如三维动画模拟、三维游戏制作等。尤其是三维动画模拟方面,VRML2.0可以通过非常短小的程序来生成三维动画(如小于10k)——同样效果的动画,如果用3DS制作,生成的动画程序有时会有几十兆。这是因为,3DS等动画软件生成的动画程序,在程序编写时就对三维物体进行了上色(渲染),因而程序非常大;而VRML程序则是利用网络浏览器,在程序运行过程中实时地进行上色(渲染),因而程序非常小。
在三维动画模拟方面,VRML2.0有较好的模拟效果,许多领域正在使用它:有人利用VRML2.0语言将莎士比亚的名著《仲夏夜之梦》改编成了三维的动画片;对1997年的火星探测行动,VRML爱好者们通过VRML程序,将无人探测车在火星上行走的三维场景通过网络传遍了全世界,那时,人们只要上网浏览NASA的站点,就可以在Netscape浏览器上看到这些奇妙的、具有动画效果的三维图形。
2VRML2.0的交互作用与动画功能
VRML2.0程序主要用来构造三维物体,构造物体的节点是形体节点,如本文程序里用到的Box、Cylinder等,当然VRML2.0还有一些其它的节点,如Extrusion、IndexedFaceSet、ElevationGrid,可以用来构造简单或复杂的三维物体。
VRML2.0编写的程序,可以实现动态的交互作用,即在程序的运行过程中,实时控制程序所定义的三维物体的运动。交互作用的产生主要靠2种节点和1种语句。2种节点是传感器节点和内插器(Interpolator)节点;1种语句是路径(ROUTE)语句。VRML2.0的传感器节点一共有7种,这些节点可以探知程序运行时的一些变化,如鼠标的点击动作、物体从不可见到可见的变化等。VRML2.0的内插器节点有6种,它们可以在程序的运行过程中改变物体的一些状态,如颜色、尺寸、位置等,笔者利用坐标内插器节点CoordinateInterpolator及方向内插器节点OrientationInterpolator,改变小车、机械手、物料及零件的位置及方向。路径ROUTE语句的主要作用是感知一些状态的变化,并把这些变化传给其它节点,进而使物体的一些状态产生变化。
VRML2.0的内插器节点使VRML程序具有动画功能,因而我们可以利用它编写三维动画程序,使三维物体相互间产生运动,或使物体的状态如形状、颜色随时间发生变化,我们甚至可以动态地改变观察三维物体的位置、产生广角镜头效果等。
由于传感器节点和内插器节点的作用,使VRML2.0具有交互作用,我们可以利用VRML的交互作用编写各类应用程序,如交互式三维卡通动画、三维游戏。传统的三维卡通动画,人们只能看,不能改变动画的内容,而交互式卡通动画,动画的内容实际上是由运行程序的人员控制的。
3VRML语言在FMS系统上的应用
我们用VRML语言,将1个实际的FMS系统编写成1个具有交互作用的三维应用程序。
汕头大学机电系FMS实验室的主要设备有物料传输系统、电脑控制台、车削加工中心、铣削加工中心、机械手、拖盘。对于这些设备,我们通过Box、Cylinder、Sphere等基本形体节点以及Extrusion、IndexedFaceSet这2个可以生成复杂形体的节点,生成了FMS实验室里所有设备的三维图形。
为了使获得的三维图形具有实用价值,我们利用VRML所具有的动画功能及交互作用,将FMS系统里的设备工作运行状态通过传感器节点、内插器节点及ROUTE语句表现出来。
根据FMS实验室设备的工作流程,我们利用VRML里的传感器节点、内插器节点,通过编程使整个程序在一定的工作时间内,完成了上面的加工循环。
首先在物料传送系统的1个醒目的位置安装了2个按钮,并在按钮上面附上了2个触摸传感器TouchSensor:1个起动按钮,1个关闭按钮。
小车在物料传送系统上不停地行走,当它运行到物料传送系统的4个角落时,就在角落位置处改变其运动方向;小车的直线行走靠的是坐标内插器节点在时间传感器及坐标内插器节点的共同作用下,小车按照设定的速度行走。
当小车运行到物料架边上时,小车会暂停数秒钟,机械手将物料从物料架上取出,摆放在小车上。机械手有转动和平动2个动作。通过方向内插器节点实现机械手的转动;通过坐标内插器节点实现机械手的平动。
物料及零件的拿起、放下动作和机械手的运动是协调一致的;物料及零件的行走与小车的行走是协调一致的。根据这样的分析,我们在程序中对物料及零件的编程处理起来显得非常简单:直接照套机械手及小车的编程内容。
通过上面的分析及处理,给出了FMS三维交互式动画程序的编程思路,通过具体的编程,我们实现了上面所有的内容。
在建立复杂的三维图形时,通常都是从小的部分做起,逐步扩大。Inline节点为我们提供了建立复杂模型的方便,它可以让我们将复杂的模型拆分成多个简单的部分,单独编程并以单独的文件名命名存储,最后在一个主文件里用Inline节点将各部分组合在一起。在FMS的编程过程中,我们根据程序中主要部分的内容,将其一一单独编程,最后通过Inline节点将其组合在一起。
4结论
利用VRML编程,得到了一个具有交互作用、具有动画效果的FMS的三维图形(见图1)。这对于研究FMS有非常大的帮助。当设计一个新的FMS系统时,可以根据工厂的实际情况,利用这样的方法,先建立它的三维模型;然后从人机工程、物料管理、设备的配置等方面对其进行研究;最后给出一个完整的设计方案。利用VRML编写的FMS系统,可以进行FMS的网络教学实验。 (图片)
图1VRML编写的FMS三维图形
4/1/2005
|