郑伟涛
(东华理工大学测绘工程学院,江西 南昌 330013)
虚拟现实(Virtual Reality)技术,是20世纪末才兴起的一门崭新的综合性信息技术。它融合了图像处理、计算机图形学、人工智能、多媒体技术、传感器、网络以及并行处理技术等多个信息技术分支的最新发展成果[1]。VRML作为一种虚拟现实建模语言,是实现虚拟城市的主要手段之一。用它创建的具有照片纹理的3维城市模型可以使人们身临其境般感受数字城市[2]。
在构建虚拟城市的过程中,许多学者作了相关的研究,有的学者研究了如何使用VRML语言简化3D模型,如万剑华使用VRML中的BillBoard节点实现了树的建模,并且提出了一种利用多角度平面进行纹理贴图的方法模拟树,从而来简化模型[3]。还有学者研究了使用JavaScript语言和VRML来实现逼真的交互功能,如施贵刚采用了VRML与VrmlScript、JavaScript结合的技术,实现了融入虚拟环境的工具菜单,丰富了与虚拟校园交互的手段,方便用户操作[4]。考虑到建立虚拟城市特殊性,它需要比较新的、能快速获得的城市平面地图。本文探讨了从遥感影像中获取原始图像,然后通过ArcGIS处理得到需要的城市平面图,再使用VRML和JavaScript建立虚拟城市。
美国科学家Burdea G和Philippe Coiffet曾在1993年世界电子年会上发表“Virtual Reality Systems and Applications”一文中,提出了一个“VR技术三角形”,它简明地表示了虚拟现实具有的3个最突出的特征:交互性(Interactivity)、沉浸感(Immersion)、和构想性(Imagination)。
VRML即虚拟现实建模语言,是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性,是目前Internet上基于WWW的三维互动网站制作的主流语言,本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。
VRML文件的语法主要包括VRML文件头、节点、原型、造型、脚本和路由等。不是每一个VRML文件都必须包括这几部分,只有VRML文件头是必须的。VRML文件空间的场景和造型都是由节点构成的,再通过路由实现动态的交互和感知或者使用脚本文件与外部接口进行动态交互。在VRML文件中“节点”是核心、灵魂。
本文以东华理工大学南昌校区的图书馆为例,在VrmlPad编辑器中通过VRML和ArcGIS建立虚拟图书馆。
数据资料包括校园平面图、纹理数码照片、室内结构和周围环境。室内结构和周围环境通过拍摄照片和调查记录得到。
3.1.1 校园平面图的制作[5]
校园平面图可以利用已有的二维数字地图资料,并对途中过失或遗漏的地物采用全站仪进行补测[3]。但是在建立数字城市的过程中,区域范围很大,对地物的补测是费时费力的。本文的平面图采用遥感图像数据作为原始数据资料,通过ArcGIS可以快速制作校园平面图。
首先通过软件截取区域的遥感影像,然后通过ArcMap的Georeferencin配准影像。对配准后的影像区域(如图1)进行矢量化,得到所要研究区域的平面图[6](如图2)。
图1 误差校正图
图2 校园平面图
3.1.2 纹理数码图片的处理
本文通过photoshop3.0对采集回来的原始图片进行处理。1)首先去掉图片上不需要的因素,比如人物、条幅。2)通过滤镜里面的镜头矫正,将图片拉正。3)裁剪拉正后的图片,去掉多余的部分。4)设置图像大小,由于VRML贴图需要较小的图像,图像太大会影响其显示的效果(处理的前后对比图3)。建筑物顶的纹理则使用配准好的遥感图像[7]。
图3 处理的前后对比图
为了方便与同观察者进行交互操作,以及实现随观察者观察位置变化显示相应的场景画面,VRML提供了一些感觉观察者行为动作的节点,在VRML中称为交互功能。VRML使用7种传感器节点完成感知和反应的交互功能。
第一类传感器:通过感知浏览者对鼠标的操作行为。触发并输出事件,实现人机交互(触摸传感器、平面传感器、圆柱体传感器、球体传感器)。
第二类传感器:通过感知浏览者在虚拟场景的观察位置,触发并输出事件,实现人机交互(接近传感器、可视化传感器、碰撞传感器)。
左推拉门的部分Script语句:
DEF DoorSwitch_1 Script{
eventIn SFTime touchTime
eventOut MFRotation doorSwing_Changed
field SFInt32 switchState1
field MFRotation open[0 0 5 0,0 5 0-1.571]
field MFRotation close[0 5 0-1.571,0 0 5 0]
url "vrmlscript:
function touchTime(value,time){
if(switchState==1){
doorSwing_Changed=open;
} else{
doorSwing_Changed=close;
}
switchState=3-switchState;
}"
}
实现左门交互的部分路由:
ROUTE Knob_Touch_11.touchTimeTO DoorSwitch_1.touchTime
ROUTE Knob_Touch_11.touchTimeTO Door_Time_3.set_startTime
ROUTE Door_Time_3.fraction_changed TO Door_RotInterp_4.set_fraction
ROUTEDoorSwitch_1.doorSwing_ChangedTO Door_RotInterp_4.set_keyValue
ROUTE Door_RotInterp_4.value_changed TO zuomen.set_rotation
加入背景、灯光、声音、影像等节点后,生成具有真实地理信息、交互功能的虚拟图书馆(如图4)。
图4 虚拟图书馆效果图
本文介绍了VRML虚拟现实建模语言,结合建立虚拟城市的个性,提出通过遥感图像并使用ArcGIS处理得到的校园平面地图,然后由VRML和JavaScript建立了具有交互功能的虚拟图书馆。在以后推广到建立虚拟城市的过程中起到一定的参考作用。它将测绘所得到的基础数据(特别是遥感数据)应用到更广泛的领域中去,使数据得到高效的、科学合理的利用。同时在VRML中加入JavaScript脚本,以实现更加逼真、高级的交互功能和效果。通过ArcGIS得到平面图以后,还可以编辑区域的属性信息以及进行空间分析等相关操作。
在本文的研究过程中还发现一些问题:
(1)本文并未将虚拟图书馆嵌入HTML中,以实现网上在线的浏览。VRML将3D模型转化为简洁的数学表达式,因而只需要在网上发送转化后的少量数据,而且一旦发送出去就不再需要对模型进行下一步发送,在这一过程中,全部的变化仅仅是在模型中观察者视点的变化。这样,在网上仅需不断传输观察者的方位,大大地节省了数据带宽。这也是使用VRML建立三维模型而不使用3DMAX类的软件的原因,将VRML语言和HTML语言结合起来是下一步工作的重点。
(2)对于建立一个虚拟的数字城市,城市平面图容易快速从遥感图像上获取,然后建筑物高度的快速获取却有较大的难度,目前主要有从遥感图像的阴影、以及共线方程上取得建筑物高度。快速、准确地获取大范围内建筑物的高度信息也是一个亟待解决的问题。
(3)真实的地形是虚拟城市的重要部分,然而使用VRML建立的模型中忽略了地形这一重要的因素,因为如果考虑地形因素,模型的复杂程度会大大增加,在目前宽带情况下,使得在线浏览虚拟城市变得不可能。这也是建立虚拟城市要处理好的问题。
[1]张德丰,周灵虚拟现实应用技术[M].北京.电子工业出版社.2010.
[2]万剑华,潘正风,李清泉.基于VRML的虚拟城市的建立[J].测绘通报.2002,(5):17-19.
[3]万剑华,郑红霞,盛辉等.基于VRML的虚拟校园中的三维景观建模[J].计算机应用与软件.2004,21(7):82-84.
[4]施贵刚,程效军,谷川.采用VRML的虚拟校园交互功能的实现[J].工程图学学报.2009,(1):152.
[5]王志城.基于Google Eearth和ArcGIS的地图制作[J].科技信息.2011,(23):160-177.
[6]马燕明,阮见.基于GIS校园信息系统设计与实现[J].东华理工大学学报(自然科学版),2009.32(3).280-282.
[7]龚建华,林珲,谭倩.虚拟香港中文大学校园的设计与初步试验[J].测绘学报.2002.31(1):39-42.