基于VRML的工程制图虚拟模型室的开发研究

2011-02-08 02:48赵艳霞刘雪梅
河南城建学院学报 2011年1期
关键词:实体模型虚拟环境观察者

赵艳霞,刘雪梅

(华北水利水电学院,河南郑州450011)

制图实体模型的合理使用对培养学生的空间想象能力,建立空间概念起到了十分重要的作用。传统的实物模型因其体积大、不易携带、易损坏以及造价高等不利因素,已经不能满足现代教学的需要。而实体模型室不能全天候向学生开放,学生的自主学习受到了限制,在较大程度上影响了学生空间想象能力的发挥。

用VRML(虚拟现实建模语言)[1-2]技术建立的虚拟模型室弥补了传统实体模型的不足。学生进入该系统如同置身于实体模型室,可以在虚拟模型室内漫步、浏览模型,寻找需要的模型,选中模型后还可以全方位动态观察模型的结构形状。虚拟模型室的建立有利于培养学生空间想象能力、加强学生自主学习的能力、提高学生的学习兴趣。

1 虚拟模型室的实现环境及体系结构

1.1 虚拟模型室的实现环境

建立虚拟现实模型的方法有2种[3]。⑴直接使用VRML语言编写源代码。⑵通过辅助建模软件,先建立三维物体,然后在虚拟世界中进行组合,形成丰富多彩的虚拟世界。第一种方法的编写不直观,特别是对于复杂场景的生成十分困难,所以只适合于建立比较简单的模型。本文建立的场景比较简单而虚拟模型比较复杂,因此采用了两者相结合的方法。

虚拟模型室的场景较为简单,直接使用VRML编写源代码。VRML能够较好地表现场景、光照、航行、变换、动感造型等。VRML源代码可通过VrmlPad编写,而VrmlPad是由Parallel Graphics公司开发的基于文本格式、支持即时预览的VRML专用开发工具。

虚拟模型的建立使用了三维建模工具——Solid Edge软件。Solid Edge是运行在Windows平台下的三维建模软件,它的三维表现力极强,加上出色的色彩使用及渲染能力,使得表现出的三维模型很真实,且能够建立复杂且细致的三维模型,加上它强大的动画制作功能可以弥补VRML在建模方面的不足。可以将Solid Edge软件建立的模型保存为VRML文件格式并等待系统的调用。

1.2 虚拟模型室的体系结构

虚拟模型在虚拟模型室系统中是重要的建模主体,而且数量较多。为了使设计能体现沉浸感、真实感、交互性,需要设计出如真实模型室的模型架、模型室、楼房(平房)以及室外环境。将视点放在建筑物外面,观察者可从建筑物外→建筑物→模型室→浏览模型→全方位观看选中模型,较好地逼近于真实的过程。系统根据实际情况确定的设计原则:

⑴由于系统虚拟的是一个现实存在的环境,为了取得较真实的效果,现实存在的室外环境在虚拟环境中都应该予以建模。

⑵尽可能采用虚拟现实技术中的内联(Inline)节点及原型定义(PROTO)简化程序代码,以便减轻浏览器的负担,提高场景的浏览速度。

⑶由于虚拟模型室的主体是模型,最终的目的是全方位地观察模型,即希望能从原场景中出来,进入到另一个场景中。VRML提供了一种Web技术,可将其他VRML文件创建的空间链接在一起,这个链接点称为锚点(Anchor)。当观察者点击一个造型锚点时,VRML浏览器从Web中取出目的空间,使观察者进入其中进行观察。

虚拟模型室系统的使用流程如图1所示。

图1 虚拟模型室使用流程

2 虚拟模型室的造型技术

2.1 虚拟场景的实现

天空和地面是虚拟场景设置[4-5]中首先要考虑的问题,即空间背景、地面背景、视点以及点光源等。背景的设置可通过Background节点实现:

Group{

children{

Background{

skyAngle[ 1.2 1.57 ] #设置天空角

skyColor[ 0 0 1 #设置天空角对应的颜色

0 0.5 0.8

1 1 1 ]

groundAngle[ 1.2 1.571] #设置地面角

groundColor[ 0.1 0.1 0.1 #设置地面角对应的颜色

0.4 0.3 0.2

0.8 0.8 0.8 ]

}

}

}

为使立体模型表面产生反光效果,增加模型的真实感,同时使周围环境明亮而便于观察.在适当的地方(如模型室、廊道、楼房的大门前等)应设置光源。模型室内光源的程序代码如下:Viewpoint{

position 0.0 2.0 1.5

description ”front” #光源的位置描述

}

2.2 建筑物的制作技术

建筑物的造型一般都比较简单,可以用堆积木的方式构造建筑物。在VRML中,用Shape节点定义建筑物的外观属性,例如材料、颜色以及几何形状等;Transform节点定义建筑物的空间定位和显示比例。图2为VRML制作的建筑物。如下定义了一面墙:

Transform{

translation 0-1.505 1.475

children Shape{

appearance Appearance{

material Material{diffuseColor 255 255 255} #定义颜色

texture ImageTexture{url”floor.jpg”} #表面贴图

}

geometry Box{size 3 3 0.01} #定义形状大小

}

}

2.3 虚拟门窗的制作技术[1]

门具有开启和闭合的动作,因此在门的制作中运用了圆柱传感器(CylinderSersor)节点。传感器节点可以感知观察者的推动动作,并且计算旋转轴和旋转角度,且通过它的totationchanged域输出,将鼠标的动作转换成适于操作造型的输出,从而引起造型物体的旋转,如图3所示。以下为旋转门的程序实现:

DEF door Transform{

center -0.5 0 0

children Shape{ #门的旋转轴造型

appearance Appearance{

material Material{diffuseColor 0.0 0.6 0.6}

}

geometry Box{size 1 3 0.1}

}

}

DEF sensor Cylinder Sensor{diskAngle 0.3} #定义圆柱体传感器及设定初始旋转角度

推拉窗的制作运用了平面传感器(PlaneSersor)节点,该传感器节点可以感知观察者的拖动动作,并且计算出平移的距离,程序设定平移的最大距离即为窗子全开时的距离。传感器节点的输出通常被路由到Transform节点,并引起造型的平移,如图2所示。推拉窗的推动动作由如下程序实现:

DEF sensor Plane Sensor{ #设定推拉的距离

minPosition-0.7 0

maxPosition 0 0

}

2.4 虚拟模型的制作

虚拟模型库中三维实体模型采用三维绘图软件Solid Edge制作[6-7],该软件操作简便、功能强大,制作的三维实体模型色彩丰富,效果逼真。三维实体模型制作完成后保存为STL文档供3dsMax调用[8]。

在3ds Max环境下打开STL文档直接保存为wrl文档,由此实现了Solid Edge—→3ds Max—→VRML之间的转换。

为了将一个个VRML格式的三维实体模型文件连接到主程序中,采用Inline(内联)节点,即通过内联节点可以实现网上资源的利用,将一个个分散的wrl文档(三维实体模型文件)连接到另一个wrl文档(主程序)中显示出来。group1.wrl文档被引用的语句为:children Inline{url”group1.wrl”}。图4为模型文件被内联到虚拟模型室后的结果。

2.5 虚拟模型的动画制作

若要观看模型架上的某个模型,我们希望从场景中走出来,进入到另一个场景中,这种技术称为锚(Anchor)接。当观察者点击一个锚点(如设置在三维模型上),便进入另一个模型空间进行观察,如图5所示。希望对模型进行全方位的观看或让其旋转,要采用时间传感器以及插补器节点。

ROUTE leg1Page.value_changed TO leg1.rotation

3 虚拟环境中物体运动的碰撞检测

时间传感器以及插补器节点对场景中的动画进行控制,是由时间传感器给出控制动画的时钟效果,并输出到浏览器中驱动插补器节点,从而产生动画效果。在组合体场景中设置的时间传感器程序代码如下:

DEF time TimeSensor{

Enabled FALSE

Cycle Intenral 5.0

Loop TRUE

}

为了从不同角度观察组合体形状,可将组合体设置成具有一定的旋转效果,需要在场景中添加动画插补器中的方向插补器(OrientationIntepolator),实现其功能的程序代码如下:DEF xz OrientationInterpolator{

Key[0.0,0.5,1.0]

keyValue[ #前3个矢量为旋转轴,最后一个为角度。

0.0 0.0 1.0 0.0,

0.0 0.0 1.0 3.14,

0.0 0.0 1.0 0.0]

}

在虚拟环境中,由于用户的交互和物体的运动,为保持环境的真实性。发生碰撞时需及时检测到并计算相应的碰撞反应,及时调整运动路线,否则物体会发生穿透现象,破坏虚拟环境的真实感和用户的沉浸感。

用Collision(碰撞)节点来检测观察者和虚拟物体是否发生了碰撞。因为虚拟环境中造型非常复杂,要检测观察者是否与一个个造型发生了碰撞,对于VRML浏览器来说将是非常费时的工作,且会降低浏览环境的流畅性。因此在碰撞检测时,该系统采用了简单的长方体包围盒[9]来代替复杂的虚拟物体,大大缩短了检测所需的时间。

4 结束语

随着计算机技术的迅猛发展,利用VRML代码编程,将VRML与三维绘图软件Solid Edge及3DS max相结合建立虚拟模型,构建基于VRML的工程制图虚拟模型室可以补充实体学校模型室不足的问题,也便于学生随时随地进行工程制图的学习。该系统经学生使用收到了良好的效果,学生不仅可以流连于虚拟模型室中,还可以从模型架上取出任意需要的模型进行全方位观看,培养了学生的空间想象能力和创新思维能力,提高了学习者的学习兴趣。

[1] 黄文丽,卢碧红,杨志刚,等.VRML语言入门与应用[M].北京:中国铁道出版社,2003.

[2] 王和顺,汪勇,徐宏.基于VRML的网络虚拟模型库创建的研究[J].机械与电子,2003(6):67-68.

[3] 李爱军,徐茂峰,刘芳,等.工程制图网络虚拟模型实验平台的研究[C]//第十四届全国国学教育研讨会暨第六届制图CAI课件演示交流会论文集(下册).北京:机械工业出版社,2004:516-517.

[4] 张杜娟.基于VRML的网上虚拟教室漫游研究[J].现代计算机,2009(6):116-118.

[5] 沈嵘枫.利用VRML构建工程制图虚拟模型库[J].青岛农林大学学报,2007(2):215-218.

[6] 赵艳霞.现代工程设计图学(Solid Edge三维绘图设计部分)[M].北京:机械工业出版社,2008.

[7] 江景涛,白连万,李翠珍.基于Solid Edge的工程制图虚拟模型库的开发研究[J].青岛农业大学学报,2007,24(1):54-58.

[8] 星火计算机工作室.3DS MAX 3.0功能详解与实例精选[M].北京:机械工业出版社,2000.

[9] 金汉均.虚拟环境中物体碰撞检测算法研究[D].武汉:华中科技大学,2006.

猜你喜欢
实体模型虚拟环境观察者
前庭刺激对虚拟环境三维空间定向的影响及与空间能力的相关关系
如何通过虚拟环境有效管理Python第三方库
作战想定仿真实体模型构建方法研究
冷静而又理性的观察者——德国华人作家刘瑛访谈
虚拟环境下大数据智能并行聚类方法研究
建筑设计中的实体模型
论高校思想政治教育网络虚拟环境的特征
观察者模式在Java 事件处理中的应用研究*
委托与事件在观察者模式中的应用*
火车匀速进站时鸣笛音调不变化吗?