论文部分内容阅读
摘要:本文以虚拟现实造型语言(Virtual RealityModeling Language,简称VRML)为漫游引擎,借助JavaScript产生交互,并结合3DS MAX7.0三维建模工具创建了山东建筑大学的虚拟漫游系统,全面、动态地展示其内外部场景。该系统对学校的总体规划、设施管理、宣传招生、新生教育等各方面提供了先进的技术手段和便利的服务措施,对其他虚拟环境的构建以及功能实现具有重要的参考价值。
关键词:虚拟校园;虚拟现实;漫游系统;VRML;3DS MAX7.0;Javascript
中图分类号:TP311.51 文献标识码:A文章编号:1007-9599 (2011) 08-0000-00
3DS MAX7.0 and VRML Based Virtual Campus Roaming System Implementation and Research
Lu Zifang,Li Jianyuan,Zhang Nannan
(College of Business and Management,Nanjing University of Posts and Telecommunications,Nanjing210003,China)
Abstract:In this paper,virtual reality modeling language(Virtual Reality Modeling Language,abbreviated VRML)is roaming the engine,through JavaScript interact with,and combined with 3DS MAX7.0 3D modeling tools to create a virtual tour of Shandong Architecture University,systematic,comprehensive,dynamic display of their internal and external scenes.The overall plan for the school system,facilities management,to recruit students,provide new education and so has the advanced technical means and measures to facilitate the services,the construction of other virtual environments and functional realization of important reference value.
Keywords:Virtual Campus;Virtual reality;Roaming;VRML;3DS MAX7.0;Javascript
一、引言
虚拟漫游系统是一个以逼真的视觉、听觉、触觉为一体的特定范围的虚拟环境,用户在其中进行漫游,对虚拟环境中的对象进行观察,从而产生身临其境的感觉,同时也能对物体进行操作和规划。它的工作主要由两部分组成:三维场景的建模和漫游引擎的实现。
本系统实现了对山东建筑大学校园的实时全景漫游。访问者可以自动漫游整个场景,通过鼠标键盘进行漫游并且改变视点进行环视,可以做出像在真实世界一样的动态行为。系统实现了环境的真实性和艺术性。
二、虚拟校园漫游系统功能的简要介绍
山东建筑大学虚拟校园漫游系统实现了人机交互,访问者通过鼠标键盘能够在虚拟场景中上、下、左、右、前、后全方位漫游校园室外全部场景;除实现室外场景漫游之外,还对学校正在兴建的教学楼进行了完整的虚拟;本系统还对具有代表性的办公楼大厅和教室的室内环境进行了虚拟,在室内实现了开门、关门、推窗、关窗、开灯、关灯、开风扇、关风扇、开电视、关电视、电视选台等一系列的交互功能。
外景漫游中,可通过系统菜单选择目的地,也可以通过“俯视漫游”、“平地漫游”、“行走模式”进行自动漫游;另外,系统还设置了“记录漫游”的游览方式,用户可以通过这一功能再一次感受刚才走过的足迹;另外,系统富有特色地实现了二维地图的导航功能和导游带路的功能,以及对主要建筑物180度环视。
本系统实现了多媒体效果,增设了“背景音乐”开关和“背景时间”开关。添加了经典的背景音乐,让“游客”边漫游边听音乐;同时“游客”可以选择背景时间来观看学校的夜景。另外,本系统非常注重细节,为游客提供系统当前时间和滚动的字幕,以及飘动的红旗,增加了系统的动态效果
本系统还提供完整的系统配置和功能说明书。包括管理文档、技术文档、演示文档和用户使用手册。四个文档图文并茂,方便用户使用。
三、系统模块设计详细介绍
(一)3DS MAX7.0对校园环境建模的详细说明[1]
1.3DS MAX7.0建模过程
修整CAD图纸,删除不必要的线、块,使其尽量小,但是要全;
将CAD导入3DS MAX7.0,在3DS MAX7.0中进行修整,再次删除一部分不重要的线,进行全面修改;
在3DS MAX7.0中根据CAD图纸的位置、数据用二维线配合“捕捉”命令进行描线,而后对线运用“对齐”命令进行修整对齐;
在3DS MAX7.0中把修好的线应用“Extrude”进行向上拉伸,高度由CAD图纸决定,并在主体建筑适当位置加设建筑装饰构件;
使用数码相机在真实场景中对建筑从不同的角度进行拍摄,而后用Photoshop进行裁剪、修改、调色处理;
在3DS MAX7.0中使用多重材质的贴图方式,利用Photoshop修好的贴图,运用“Edit Mesh”、“Mesh select”、“UVW Map”命令对3DS MAX7.0所拉伸的模型各个面进行贴图;
然后,依据CAD图纸所提供的位置和角度对各个建筑进行组合;
依据CAD图纸在组合后的模型中铺设道路,并在合适的位置运用“Diffuse”、“Opacity”命令利用十字透明贴图的方式,或对单个透明贴图进行布告牌“billboard”命令的方式进行植树,在整个场景中根据需要布置绿化;
在3DS MAX7.0总场景中进行灯光布置,调节“Multip”、“Deam”、“Field”等的参数值,并且对其进行角度、位置、范围的调节;
在3DS MAX7.0场景中各个视点在不同角度设置摄影机,并对某些摄影机设置漫游路线;
整体调整结束后,输出VRML格式文件,在输出时进行有关命令的选取。
2.VRML与BS的调试过程[2]
把3DS MAX7.0场景的整体效果与BS场景的效果进行比较,之后回到3DS MAX7.0与VRML中对模型的大小、角度、自发光,灯光亮度和角度、摄影机的位置和角度,以及运动路线、视角等其他进行综合调节;
在BS中进行漫游检查各个角落,发现问题后回到3DS MAX7.0中进行修改,反复试验修整。
根据总场景的需要,在3DS MAX7.0中对复制的模型依据其名称、位置等在VRML中进行添加、复制,之后在3DS MAX7.0中删除所复制的模型,从而减小3DS MAX7.0模型的线面数,为新建其他模型提供空间。
在BS中进行整体调试,反复修改完善,直到达到最满意效果。
(二)VRML对校园环境建模的详细说明[3]
VRML与3DS MAX7.0建模工具的衔接处在于通过3DS MAX7.0建模后可以在文件导出(export)中选择*.wrl格式,这样通过3DS MAX7.0所建的模型就可以通过VRML的插件进行浏览。
虽然VRML是虚拟现实造型语言,但是以园景为内容的建模工作复杂并且量大,所以,校园的主场景要通过3DS MAX7.0建模,导出为*.wrl的形式,就会有全部的场景代码,由于3DS MAX7.0并非专门的虚拟现实工具,在造型保存为*.wrl格式时会生出许多冗余数据,因此在设计的最后环节有必要用Gzip软件进行压缩,经压缩后的VRML文件只有原来的1/3,压缩率相当高,而且压缩的VRML文件在浏览器读取时会自行解压。这样虽然可以实现代码量的变化,但是产生的代码缺乏条理性,所以单纯的用Gzip进行压缩是不符合代码层次性和规范化的标准。另外,为了代码重复利用和相互交流学习,还需要手动整理源代码。由于有些校园的场景是通过复制得到的,所以为了精简代码,程序中通过使用原型定义DEF和USE命令来精简代码。这样就会使原来可能是几千行的代码直接减为十几行,甚至更少。比如说学校的人行道上的树、路灯,它们是相同形态的,这样就可以用DEF来定义一棵树,在校园中相应的树的位置使用USE来复制相同的树。其他的相同东西使用相同的方法复制。
(三)Javascript对功能实现的详细说明[4]
本虚拟校园中大多数的交互是通过JavaScript脚本语言来实现的。各种交互实现的难易程度不一,所采用的脚本形式也不相同,但总体的思路是通过路由来触发事件。
二维地图导航功能的实现:在二维地图的制作思路是将原来三维的坐标转化在二维地图上,即将三维坐标中的z值传递给地图的y值。这样在脚本语言中定义一个入事件getposition和getorientation,通过路由传值给这两个函数,然后执行函数体部分的坐标转换,由于三维的场景大,所以必须进行缩放,proportion_x和proportion_z就是三维中的x轴和z轴的缩放比例,同时由于地图与实际的场景总会有细微的差别,所以要求由offset_x和offset_z来进行微调。在三维场景中漫游行走的平面是X—Z平面,而在二维地图中显示的平面是X—Y平面,所以函数体执行的功能就是将三维场景中漫游行走的X—Z平面转化为二维地图中显示的X—Y平面。
导游带路:虚拟人替身是浏览器插件BS自带的,系统是通过函数Browser.getThirdPersonView()来实现虚拟人带路的功能的。
背景音乐的选择:背景音乐的开关是通过一个按钮来控制的,点一下是开,再点一下是关,这就需要一个关于两种状态的判断。通过路由把一个入事件来判断是否触发了音乐按钮,在函数体里通过一个判断语句,判断它的状态。如果判断条件为真if(flag)就触发声音开始,如果为假else则触发声音关闭。同时,由于有不同的音乐供游览者选择,所以需要设置不同的入事件,这样不同的触发会打开不同的音乐。
场景的转换:场景转换思想就是通过一个函数来改变原来场景中的灯光的颜色、亮度和天空的图片,只要改变节点中某个域值即可。背景音乐实现的原理是一样的。
系统菜单的实现:菜单的主体部分是通过三个外部节点定义,以及一个主文件组成的,在各个外部定义中先定义新节点,然后标出定义的节点的形态。如:在button中设置了脚本语言来定义一个动作,当鼠标放在上面时会发生形态的变化,trans.scale[0]=trans.scale[1]=1.2这是当鼠标放上时缩放比例为1.2。在主文件中设置相应的视点,同时又有url进行链接,当点击button时就会发生视点跳转。在UIDialog中定义了新节点UIDialog,同时设定了它的两个动作,一个是贴上关闭按钮,然后定义一个关闭的动作和可以移动的动作。
地图中的建筑定位:这个定位和button中的视点转换有一定的区别。不是直接改变文件的第一视角,而是重新设定当前文件的第一视角的位置和参数。这样不会发生平移现象,直接进行视角的定位。
(四)Photoshop对贴图修改的详细说明
学校场景很复杂,如果用3DS MAX7.0建模赋材质的话,电脑有可能承受不住,并且建模赋材质费时费力,于是,采取Photoshop处理数码相片,最后赋贴图的方式。
在Photoshop中,使用扭曲命令拉出一个整齐的建筑图形,借助裁切工具裁剪图片,并用拼切、图章、复制等工具去除图片中的杂物。图片大小合适之后,用滤镜、图象调节(饱和度、色彩平衡、曲线、色阶等)等命令来调节图片的色调,让场景鲜活起来。还可以选用拼贴的办法,一块一块把颜色加上去,效果也会既真实又鲜亮。
四、漫游系统的优化问题[2][3]
(一)在3DS MAX7.0建模环节实现优化
校园场景对象众多,建模环节的优化目标是尽量控制场景模型的复杂程度。对校园内建筑物区分主次,搭建不同分辨率的模型。
凡是单纯的外景游览建筑,应该构建为实心模型,并且减少分段数,使物体的网格面片数量(mesh faces)尽量的少,减少文件规模;
对于那些需要参观内部的重点建筑,不仅有供外景漫游的实心简单模型,还要准备具有室内详情的细节模型,每个细节模型将作为独立的VRML文件输出;
为了提高精度,门窗、草地等同类的对象,采用纹理贴图来代替造型,避免产生庞大的网格面片数,得到“真实感”的视觉效果。所用的贴图文件应处理成*.jpg或*.gif格式,图片大小在不影响视觉效果的情况下尽量的小。
(一)在VRMLPad环节实现优化
该环节的优化主要是根据VRML的语法特性进行的,可以同时减少网络通信量和浏览器的计算量。
在总体规划上,把整个校园化整为零,分割为多个子场景。为了保持漫游效果的真实感,各空间场景需要作无缝连接。
本设计中,利用VRML的内联(Inline)节点来解决各个子场景文件的自动链接。Inline节点在场景里的某个位置点(bboxCenter)设置一个约束框(bboxSize),该框通过URL与另一个*.wrl文件关联,视点看见bboxSize后才把该文件读入当前场景,显示其中的造型。以下是应用Inline节点实现校园场景的无缝对接的代码:
DEF NQ1 Inline {
BboxSize 25 25 50
BboxCenter -237.6 -42 200
url”F:VR q2*.wrl”}
从外景转入室内的效果实现,模仿了现实世界的一些交互动作。例如,教室是实心体,表现外形特征,如果游客推动教室门,由于此门已经作为一个锚点造型,它所链接的专门展示楼内细节的*.wrl文件就被载入并读取,游客则进到另一个虚拟空间参观。
在建大虚拟校园中,有不少反复出现的物体,比如北区学生宿舍、博文楼和逸夫楼,以及路树、路灯、果皮箱等。形状完全相同者采用DEF和USE的实例引用法进行复制,而大同小异者则采用原型法(PROTO)复制,从而避免出现大量重复的代码。以下程序片段描述一个带贴图的圆柱形果皮箱,并以此为实例引用产生第二个:
DEF gpx Transform {
translation -10.04 0 103.7
children [
Shape {
appearance Appearance {
texture ImageTexture {
url "F:/maps/picture6.jpg" } }
geometry Cylinder {
radius 300.0
height 850.0}}
]}
Transform {
translation -5000.0 4456 0 103.7
children [
geometry USE gpx
]}
(三)用Gzip压缩VRML文件实现优化[2]
由于3DS MAX7.0S MAX并非专门的虚拟现实工具,在将造型保存为*.wrl格式时会生出许多冗余数据,因此在设计的最后环节有必要用Gzip软件施行“减肥”术,经压缩后的VRML文件只有原来的1/3,压缩率相当高,而且压缩的VRML文件在浏览器读取时会自行解压。因此可以说Gzip是文件优化不可或缺的工具。
五、虚拟漫游系统实现和开发漫游系统研究的几点建议
数据收集要尽量准确和全面,从学校的相关部门搜集资料,收集比较全面的学校建筑CAD图纸,但是学校的CAD规划图纸和实际建筑存在一定的差别,要以现实为主,按照实地测量的现实数据建模;
贴图的收集要精确,建议用数码相机把学校建筑的每一个面都拍下来,用Photoshop裁取需要的部分作为学校建筑帖图;
3DS MAX7.0建模过程中注意“单位”的问题,系统默认的是“毫米”,要改成无单位米,否则建好的模型导入到VRML里无法实现漫游;
3DS MAX7.0中用output命令导出为*.wrl文件时,贴图名称必须改为英文格式,否则用VRMLPad打开会出现贴图混乱或贴图不显示的现象。
六、总结
本文在全面介绍了系统功能的基础上,详细介绍了系统实现的具体步骤和详细操作,并提出虚拟漫游系统研究的几点建议,希望能给从事虚拟漫游开发的相关人员提供一定的借鉴。
参考文献:
[1]高志清.3DS MAX7.0[M].北京:中国水利水电出版社,2003:1-320
[2]阳化冰.虚拟现实造型语VRML[M].北京:北京航空航天大学出版社,2000:21-187
[3]汪兴谦.VRML虚拟造型实战演练[M].北京:中国水利水电出版社,2001:18-210
[4]扎卡斯.JavaScript高级程序设计[M].北京:人民邮电出版社,2006:54-120
[作者简介]卢子芳(1963年-),男,1996年毕业于东南大学经济管理学院,获系统工程专业工学博士学位。2005年6月任南京邮电大学教授。卢子芳教授理论研究侧重于大系统建模、规划和决策及动态对策理论与应用方向。承担并参加过国家信息产业部、江苏生科委等单位下达的科研课题。
李建元(1985年-),男,南京邮电大学经济与管理学院研究生,带队开发虚拟校园漫游系统,获得省级奖项。
张楠楠(1986年-),女,南京邮电大学经济与管理学院研究生,参与虚拟校园课题研究。
关键词:虚拟校园;虚拟现实;漫游系统;VRML;3DS MAX7.0;Javascript
中图分类号:TP311.51 文献标识码:A文章编号:1007-9599 (2011) 08-0000-00
3DS MAX7.0 and VRML Based Virtual Campus Roaming System Implementation and Research
Lu Zifang,Li Jianyuan,Zhang Nannan
(College of Business and Management,Nanjing University of Posts and Telecommunications,Nanjing210003,China)
Abstract:In this paper,virtual reality modeling language(Virtual Reality Modeling Language,abbreviated VRML)is roaming the engine,through JavaScript interact with,and combined with 3DS MAX7.0 3D modeling tools to create a virtual tour of Shandong Architecture University,systematic,comprehensive,dynamic display of their internal and external scenes.The overall plan for the school system,facilities management,to recruit students,provide new education and so has the advanced technical means and measures to facilitate the services,the construction of other virtual environments and functional realization of important reference value.
Keywords:Virtual Campus;Virtual reality;Roaming;VRML;3DS MAX7.0;Javascript
一、引言
虚拟漫游系统是一个以逼真的视觉、听觉、触觉为一体的特定范围的虚拟环境,用户在其中进行漫游,对虚拟环境中的对象进行观察,从而产生身临其境的感觉,同时也能对物体进行操作和规划。它的工作主要由两部分组成:三维场景的建模和漫游引擎的实现。
本系统实现了对山东建筑大学校园的实时全景漫游。访问者可以自动漫游整个场景,通过鼠标键盘进行漫游并且改变视点进行环视,可以做出像在真实世界一样的动态行为。系统实现了环境的真实性和艺术性。
二、虚拟校园漫游系统功能的简要介绍
山东建筑大学虚拟校园漫游系统实现了人机交互,访问者通过鼠标键盘能够在虚拟场景中上、下、左、右、前、后全方位漫游校园室外全部场景;除实现室外场景漫游之外,还对学校正在兴建的教学楼进行了完整的虚拟;本系统还对具有代表性的办公楼大厅和教室的室内环境进行了虚拟,在室内实现了开门、关门、推窗、关窗、开灯、关灯、开风扇、关风扇、开电视、关电视、电视选台等一系列的交互功能。
外景漫游中,可通过系统菜单选择目的地,也可以通过“俯视漫游”、“平地漫游”、“行走模式”进行自动漫游;另外,系统还设置了“记录漫游”的游览方式,用户可以通过这一功能再一次感受刚才走过的足迹;另外,系统富有特色地实现了二维地图的导航功能和导游带路的功能,以及对主要建筑物180度环视。
本系统实现了多媒体效果,增设了“背景音乐”开关和“背景时间”开关。添加了经典的背景音乐,让“游客”边漫游边听音乐;同时“游客”可以选择背景时间来观看学校的夜景。另外,本系统非常注重细节,为游客提供系统当前时间和滚动的字幕,以及飘动的红旗,增加了系统的动态效果
本系统还提供完整的系统配置和功能说明书。包括管理文档、技术文档、演示文档和用户使用手册。四个文档图文并茂,方便用户使用。
三、系统模块设计详细介绍
(一)3DS MAX7.0对校园环境建模的详细说明[1]
1.3DS MAX7.0建模过程
修整CAD图纸,删除不必要的线、块,使其尽量小,但是要全;
将CAD导入3DS MAX7.0,在3DS MAX7.0中进行修整,再次删除一部分不重要的线,进行全面修改;
在3DS MAX7.0中根据CAD图纸的位置、数据用二维线配合“捕捉”命令进行描线,而后对线运用“对齐”命令进行修整对齐;
在3DS MAX7.0中把修好的线应用“Extrude”进行向上拉伸,高度由CAD图纸决定,并在主体建筑适当位置加设建筑装饰构件;
使用数码相机在真实场景中对建筑从不同的角度进行拍摄,而后用Photoshop进行裁剪、修改、调色处理;
在3DS MAX7.0中使用多重材质的贴图方式,利用Photoshop修好的贴图,运用“Edit Mesh”、“Mesh select”、“UVW Map”命令对3DS MAX7.0所拉伸的模型各个面进行贴图;
然后,依据CAD图纸所提供的位置和角度对各个建筑进行组合;
依据CAD图纸在组合后的模型中铺设道路,并在合适的位置运用“Diffuse”、“Opacity”命令利用十字透明贴图的方式,或对单个透明贴图进行布告牌“billboard”命令的方式进行植树,在整个场景中根据需要布置绿化;
在3DS MAX7.0总场景中进行灯光布置,调节“Multip”、“Deam”、“Field”等的参数值,并且对其进行角度、位置、范围的调节;
在3DS MAX7.0场景中各个视点在不同角度设置摄影机,并对某些摄影机设置漫游路线;
整体调整结束后,输出VRML格式文件,在输出时进行有关命令的选取。
2.VRML与BS的调试过程[2]
把3DS MAX7.0场景的整体效果与BS场景的效果进行比较,之后回到3DS MAX7.0与VRML中对模型的大小、角度、自发光,灯光亮度和角度、摄影机的位置和角度,以及运动路线、视角等其他进行综合调节;
在BS中进行漫游检查各个角落,发现问题后回到3DS MAX7.0中进行修改,反复试验修整。
根据总场景的需要,在3DS MAX7.0中对复制的模型依据其名称、位置等在VRML中进行添加、复制,之后在3DS MAX7.0中删除所复制的模型,从而减小3DS MAX7.0模型的线面数,为新建其他模型提供空间。
在BS中进行整体调试,反复修改完善,直到达到最满意效果。
(二)VRML对校园环境建模的详细说明[3]
VRML与3DS MAX7.0建模工具的衔接处在于通过3DS MAX7.0建模后可以在文件导出(export)中选择*.wrl格式,这样通过3DS MAX7.0所建的模型就可以通过VRML的插件进行浏览。
虽然VRML是虚拟现实造型语言,但是以园景为内容的建模工作复杂并且量大,所以,校园的主场景要通过3DS MAX7.0建模,导出为*.wrl的形式,就会有全部的场景代码,由于3DS MAX7.0并非专门的虚拟现实工具,在造型保存为*.wrl格式时会生出许多冗余数据,因此在设计的最后环节有必要用Gzip软件进行压缩,经压缩后的VRML文件只有原来的1/3,压缩率相当高,而且压缩的VRML文件在浏览器读取时会自行解压。这样虽然可以实现代码量的变化,但是产生的代码缺乏条理性,所以单纯的用Gzip进行压缩是不符合代码层次性和规范化的标准。另外,为了代码重复利用和相互交流学习,还需要手动整理源代码。由于有些校园的场景是通过复制得到的,所以为了精简代码,程序中通过使用原型定义DEF和USE命令来精简代码。这样就会使原来可能是几千行的代码直接减为十几行,甚至更少。比如说学校的人行道上的树、路灯,它们是相同形态的,这样就可以用DEF来定义一棵树,在校园中相应的树的位置使用USE来复制相同的树。其他的相同东西使用相同的方法复制。
(三)Javascript对功能实现的详细说明[4]
本虚拟校园中大多数的交互是通过JavaScript脚本语言来实现的。各种交互实现的难易程度不一,所采用的脚本形式也不相同,但总体的思路是通过路由来触发事件。
二维地图导航功能的实现:在二维地图的制作思路是将原来三维的坐标转化在二维地图上,即将三维坐标中的z值传递给地图的y值。这样在脚本语言中定义一个入事件getposition和getorientation,通过路由传值给这两个函数,然后执行函数体部分的坐标转换,由于三维的场景大,所以必须进行缩放,proportion_x和proportion_z就是三维中的x轴和z轴的缩放比例,同时由于地图与实际的场景总会有细微的差别,所以要求由offset_x和offset_z来进行微调。在三维场景中漫游行走的平面是X—Z平面,而在二维地图中显示的平面是X—Y平面,所以函数体执行的功能就是将三维场景中漫游行走的X—Z平面转化为二维地图中显示的X—Y平面。
导游带路:虚拟人替身是浏览器插件BS自带的,系统是通过函数Browser.getThirdPersonView()来实现虚拟人带路的功能的。
背景音乐的选择:背景音乐的开关是通过一个按钮来控制的,点一下是开,再点一下是关,这就需要一个关于两种状态的判断。通过路由把一个入事件来判断是否触发了音乐按钮,在函数体里通过一个判断语句,判断它的状态。如果判断条件为真if(flag)就触发声音开始,如果为假else则触发声音关闭。同时,由于有不同的音乐供游览者选择,所以需要设置不同的入事件,这样不同的触发会打开不同的音乐。
场景的转换:场景转换思想就是通过一个函数来改变原来场景中的灯光的颜色、亮度和天空的图片,只要改变节点中某个域值即可。背景音乐实现的原理是一样的。
系统菜单的实现:菜单的主体部分是通过三个外部节点定义,以及一个主文件组成的,在各个外部定义中先定义新节点,然后标出定义的节点的形态。如:在button中设置了脚本语言来定义一个动作,当鼠标放在上面时会发生形态的变化,trans.scale[0]=trans.scale[1]=1.2这是当鼠标放上时缩放比例为1.2。在主文件中设置相应的视点,同时又有url进行链接,当点击button时就会发生视点跳转。在UIDialog中定义了新节点UIDialog,同时设定了它的两个动作,一个是贴上关闭按钮,然后定义一个关闭的动作和可以移动的动作。
地图中的建筑定位:这个定位和button中的视点转换有一定的区别。不是直接改变文件的第一视角,而是重新设定当前文件的第一视角的位置和参数。这样不会发生平移现象,直接进行视角的定位。
(四)Photoshop对贴图修改的详细说明
学校场景很复杂,如果用3DS MAX7.0建模赋材质的话,电脑有可能承受不住,并且建模赋材质费时费力,于是,采取Photoshop处理数码相片,最后赋贴图的方式。
在Photoshop中,使用扭曲命令拉出一个整齐的建筑图形,借助裁切工具裁剪图片,并用拼切、图章、复制等工具去除图片中的杂物。图片大小合适之后,用滤镜、图象调节(饱和度、色彩平衡、曲线、色阶等)等命令来调节图片的色调,让场景鲜活起来。还可以选用拼贴的办法,一块一块把颜色加上去,效果也会既真实又鲜亮。
四、漫游系统的优化问题[2][3]
(一)在3DS MAX7.0建模环节实现优化
校园场景对象众多,建模环节的优化目标是尽量控制场景模型的复杂程度。对校园内建筑物区分主次,搭建不同分辨率的模型。
凡是单纯的外景游览建筑,应该构建为实心模型,并且减少分段数,使物体的网格面片数量(mesh faces)尽量的少,减少文件规模;
对于那些需要参观内部的重点建筑,不仅有供外景漫游的实心简单模型,还要准备具有室内详情的细节模型,每个细节模型将作为独立的VRML文件输出;
为了提高精度,门窗、草地等同类的对象,采用纹理贴图来代替造型,避免产生庞大的网格面片数,得到“真实感”的视觉效果。所用的贴图文件应处理成*.jpg或*.gif格式,图片大小在不影响视觉效果的情况下尽量的小。
(一)在VRMLPad环节实现优化
该环节的优化主要是根据VRML的语法特性进行的,可以同时减少网络通信量和浏览器的计算量。
在总体规划上,把整个校园化整为零,分割为多个子场景。为了保持漫游效果的真实感,各空间场景需要作无缝连接。
本设计中,利用VRML的内联(Inline)节点来解决各个子场景文件的自动链接。Inline节点在场景里的某个位置点(bboxCenter)设置一个约束框(bboxSize),该框通过URL与另一个*.wrl文件关联,视点看见bboxSize后才把该文件读入当前场景,显示其中的造型。以下是应用Inline节点实现校园场景的无缝对接的代码:
DEF NQ1 Inline {
BboxSize 25 25 50
BboxCenter -237.6 -42 200
url”F:VR q2*.wrl”}
从外景转入室内的效果实现,模仿了现实世界的一些交互动作。例如,教室是实心体,表现外形特征,如果游客推动教室门,由于此门已经作为一个锚点造型,它所链接的专门展示楼内细节的*.wrl文件就被载入并读取,游客则进到另一个虚拟空间参观。
在建大虚拟校园中,有不少反复出现的物体,比如北区学生宿舍、博文楼和逸夫楼,以及路树、路灯、果皮箱等。形状完全相同者采用DEF和USE的实例引用法进行复制,而大同小异者则采用原型法(PROTO)复制,从而避免出现大量重复的代码。以下程序片段描述一个带贴图的圆柱形果皮箱,并以此为实例引用产生第二个:
DEF gpx Transform {
translation -10.04 0 103.7
children [
Shape {
appearance Appearance {
texture ImageTexture {
url "F:/maps/picture6.jpg" } }
geometry Cylinder {
radius 300.0
height 850.0}}
]}
Transform {
translation -5000.0 4456 0 103.7
children [
geometry USE gpx
]}
(三)用Gzip压缩VRML文件实现优化[2]
由于3DS MAX7.0S MAX并非专门的虚拟现实工具,在将造型保存为*.wrl格式时会生出许多冗余数据,因此在设计的最后环节有必要用Gzip软件施行“减肥”术,经压缩后的VRML文件只有原来的1/3,压缩率相当高,而且压缩的VRML文件在浏览器读取时会自行解压。因此可以说Gzip是文件优化不可或缺的工具。
五、虚拟漫游系统实现和开发漫游系统研究的几点建议
数据收集要尽量准确和全面,从学校的相关部门搜集资料,收集比较全面的学校建筑CAD图纸,但是学校的CAD规划图纸和实际建筑存在一定的差别,要以现实为主,按照实地测量的现实数据建模;
贴图的收集要精确,建议用数码相机把学校建筑的每一个面都拍下来,用Photoshop裁取需要的部分作为学校建筑帖图;
3DS MAX7.0建模过程中注意“单位”的问题,系统默认的是“毫米”,要改成无单位米,否则建好的模型导入到VRML里无法实现漫游;
3DS MAX7.0中用output命令导出为*.wrl文件时,贴图名称必须改为英文格式,否则用VRMLPad打开会出现贴图混乱或贴图不显示的现象。
六、总结
本文在全面介绍了系统功能的基础上,详细介绍了系统实现的具体步骤和详细操作,并提出虚拟漫游系统研究的几点建议,希望能给从事虚拟漫游开发的相关人员提供一定的借鉴。
参考文献:
[1]高志清.3DS MAX7.0[M].北京:中国水利水电出版社,2003:1-320
[2]阳化冰.虚拟现实造型语VRML[M].北京:北京航空航天大学出版社,2000:21-187
[3]汪兴谦.VRML虚拟造型实战演练[M].北京:中国水利水电出版社,2001:18-210
[4]扎卡斯.JavaScript高级程序设计[M].北京:人民邮电出版社,2006:54-120
[作者简介]卢子芳(1963年-),男,1996年毕业于东南大学经济管理学院,获系统工程专业工学博士学位。2005年6月任南京邮电大学教授。卢子芳教授理论研究侧重于大系统建模、规划和决策及动态对策理论与应用方向。承担并参加过国家信息产业部、江苏生科委等单位下达的科研课题。
李建元(1985年-),男,南京邮电大学经济与管理学院研究生,带队开发虚拟校园漫游系统,获得省级奖项。
张楠楠(1986年-),女,南京邮电大学经济与管理学院研究生,参与虚拟校园课题研究。