VRML(虚拟现实建模语言)是以虚拟现实为特征的3D Web技术的核心,它是一种描述交互式三维对象和世界的文件格式,它允许你去描述一个现有的或想象的景物并将它放入虚拟的三维环境中。随着国际互联网的普及,网络技术和硬件设施的飞速发展,虚拟现实技术将成为今后网络多媒体发展方向的主流。VRML作为一种ISO国际标准将得到越来越广泛的应用。
1 虚拟机房的总体设计
虚拟机房三维立体场景包含机房内的各种三维立体造型,如黑板、电脑桌、电脑椅、电脑、空调、交换机、门窗等。系统总体结构图如图1所示。
2.2 几何建模的实现
VRML2.O有着丰富的造型功能,利用基本几何体Geometry节点和描述物体表面性质的Appearance节点,可以创建各种形态的三维实体;再利用Light节点和Viewpoint节点可以建立光照和视点,从而创建出逼真的虚拟场景。
各子对象的创建主要运用的是几何建模技术,先从形状和外观上进行建模,再添加纹理映射的方法实现建模。纹理数据来自实地用数码相机拍摄的照片。
2.2.1 交换机的建模
现代机房中交换机是必不可少的设备,交换机的建模采用Billboard组节点来实现。值得注意的是Billboard组节点中使用的纹理图背景必须是透明的,这是使用Billboard组节点的关键。通过Billboard组节点可以快速方便地创建一些静态的模型,例如虚拟机房中的空调等都可以用Billboard组节点创建。使用Billboard组节点创建的模型,形象逼真,具有很好的视觉效果;并且代码量小,渲染速度快。
利用Billboard节点创建交换机的源代码如下所示。
Billboard { axisOfRotation 0.0 1.0 0.O
children[Shape{appearance Appearance{
texture ImageTexture {url"jiaohuanji.png"}}
geometry Box{size 3.O 3.0 3.0})]}
运行效果如图3所示。
2.2.2 门的建模
虚拟机房的门是先使用VRML中的IndexedFaceSet面集节点建立造型,再贴上实拍的门的纹理贴图,做出逼真的虚拟门,关键代码如下。
现实生活中的任何物体都是由各个平面组合而成的,而VRML的IndexedFaceSet面集节点就是通过创建物体造型的各个面,再赋予材质和颜色,还可以添加不同的纹理贴图,从而创建逼真的物体造型。利用VRML的IndexedFaceSet面集节点几乎可以创建现实生活中存在的任何物体造型。虚拟机房中的房屋造型、电脑桌、电脑椅、电脑等造型都是使用IndexedFaceSet面集节点创建,再添加上实拍的纹理贴图,创建而成的。
2.3 交互功能的实现
在虚拟机房场景中,使用Touchsensor节点、TimeSensor节点、OrientationInterpolator节点和Script节点,并用ROUTE把各个事件联系起来,创建了门的开、关的交互动作。
在虚拟机房的虚拟场景中,当鼠标指向门时,会出现一个手形指针,这时单击鼠标,门就会缓慢地开开,再单击鼠标,门又会缓慢地关闭。实现代码如下所示。
3 虚拟文件性能优化
三维场景的呈现是通过浏览器已默认视点为参照对场景描述文件的解释而完成的,每当视点发生改变,浏览器就会重新计算场景中各对象的新位置并重新进行渲染,因而会出现当改变视点时,浏览器渲染的速度跟不上视点的变化速度,从而产生停顿的现象。为了解决此问题,采取了如下措施:
(1)最大可能地使用重用机制。在场景内,有不少反复出现的物体,比地板砖、电脑、电脑桌、椅子、灯等,这些对象中形状完全相同者,采用DEF和USE的实例引用法进行复制,极大地简化了文件,减轻了浏览器的负担。
(2)利用Inline节点,减少文件的体积,提高代码的 重用率;
(3)利用LOD细节层次节点实现场景切换技术,实现 同一对象模型的自动转换。为场景中某一对象建立多个不同的模型,当视点离对象较远时采用简单模型,较近时采用细化模型。
4 总结
文章介绍了在线虚拟机房的模型、场景建模技术的详细设计和实现,构建了一个基于VRML虚拟现实建模语言的虚拟机房。VRML具有语法简单、三维建模功能强大、便于网上发布等优点,但仍不能满足各行各业的需求,一些高级交互功能的实现必须借助于Java等功能强大的高级语言来实现。Java和VRML相结合来建立三维虚拟世界,将会在网络上展现更逼真的三维虚拟场景,给使用者更真实的感觉。
全部0条评论
快来发表一下你的评论吧 !