虚拟社区漫游系统的设计与实现iaog.docx
虚拟社区漫游系统的设计与实现(场景建模)摘 要虚拟现实技术是由计算机产生,通过视、听、触觉等作用,使用户产生身临其境感觉的交互式视景仿真,具有多感知性、存在感、交互性和自主性等特征。虚拟现实建模语言VRML被用来描述三维物体及其行为,可以构建虚拟世界。VRML的基本目标是建立互联网上的交互式三维多媒体。VRML的出现使得虚拟现实像多媒体和互联网一样逐渐走进我们的生活。本文主要研究基于VRML的虚拟场景建模、交互、漫游技术,根据虚拟设计及其主要特点,结合3D MAX和Cosmo Worlds,对基于VRML的虚拟现实技术在人们生活领域的应用进行了研究,着重阐述了如何利用VRML语言以生动的模型来模拟和显示现实三维空间,最终以人机交互方式来实现社区三维景观的实时漫游。对建筑楼群的建模采用3D MAX三维造型工具和VRML相结合的方式,对这些模型进行优化。同时为了增加真实性,在虚拟社区中加入树木、游人、汽车等模型。这些模型共同构建整个虚拟三维场景,为市政规划建设提供一个科学简便、形象直观的可视化人机交互平台。关键词:虚拟现实,VRML,场景建模,虚拟漫游DESIGN AND IMPLEMENTATION FOR THE VIRTUAL COMMUNITY ROAMING SYSTEM(SCENARIO MODELING)ABSTRACTVirtual reality is a result of computer development, it may create some scenery that includes senses of sight, hearing and touch. Its characteristics are multi-sensation, existent sense, interaction and independence. VRML can descript three dimensional objects and their behaviors, thus can build virtual world. Because of the appearance of VRML,Virtual Reality comes to our life such as multimedia and Internet.The researches of this paper focus on the modeling, the interacting and the browsing of the VRML-based virtual scene. According to the virtual designing and the main features, unifying the 3D MAX and Cosmo Worlds, based on the VRML virtual reality technology , we have researched the application in the field of people's life. The paper focuses on how to use VRML language to construct in the model vividly to simulate and display realistic three-dimensional space. Finally, we achieved the real-time roaming in the Three-dimensional landscape of the community by human-computer interaction. We have modeled these buildings by the combination of 3D MAX threedimensional modeling tool and VRML. At the same time, we put other models such as trees,humans and cars into the 3d scene to intensify the sense of the facticity. We use these models to build a virtual three-dimensional scene together, to provide a scientific and simple, intuitive image visualization platform for construction of municipal.KEY WORDS:virtual reality,VRML,scenario modeling,virtual tour目录 前言1第1章 虚拟现实建模语言3§1.1 虚拟现实建模语言概述3§1.2 基于VRML的虚拟场景构造工具及VRML浏览器5§1.2.1 文本编辑工具5§1.2.2 三维建模工具5§1.2.3 VRML浏览器6第2章 虚拟场景建模分析7§2.1 场景的建模7§2.1.1 节点7§2.1.2 造型节点的层次结构8§2.1.3 节点之间的关系8§2.1.4 大型场景的数据组织9§2.1.5 建模流程11§2.1.6 场景的建立11§2.2 场景对象的优化13§2.2.1 建筑物的二次建模方法13§2.2.2 建模环节的其他优化方法14§2.2.3 文件编辑环节的优化15第3章 虚拟社区漫游系统的实现17§3.1 开发环境17§3.2 系统结构设计17§3.3 场景模型的建立18§3.3.1 地面建模18§3.3.2 建筑物建模19§3.3.3 植物建模21§3.3.4 其他设施建模23§3.4 碰撞检测的建立23§3.4.1 替身的建立23§3.4.2 碰撞的触发24§3.5 视点的建立24§3.6 场景的链接24第4章 系统测试26§4.1 测试的目标26§4.2 系统测试过程26§4.2.1 单元测试26§4.2.2 集成测试28结论29参考文献30致谢32前言随着虚拟现实技术和计算机网络技术的发展,以及数字地球和数字城市概念的为前提的大背景下,虚拟现实技术已经成为计算机领域研究、开发和应用的热点,广泛应用到教育、军事、建筑、医疗、工业设计等各个领域。这一名词是由美国VPL公司创建人拉尼尔(Jaron Lanier)在80年代初提出的,也称灵境技术或人工环境1。作为一项尖端科技,虚拟现实集成了计算机图形技术、计算机仿真技术、人工智能、传感技术、显示技术、网络并行处理等技术的最新发展成果,是一种由计算机生成的高技术模拟系统,它最早源于美国军方的作战模拟系统,九十年代初逐渐为各界所关注并且在商业领域得到了进一步的发展。这种技术的特点在于计算机产生一种人为虚拟的环境,这种虚拟的环境是通过计算机图形构成的三维数字模型,并编制到计算机中去生成一个以视觉感受为主,也包括听觉、触觉的综合可感知的人工环境,从而使得在视觉上产生一种沉浸于这个环境的感觉,可以直接观察、操作、触摸、检测周围环境及事物的内在变化,并能与之发生“交互”作用,使人和计算机很好地“融为一体”,给人一种“身临其境”的感觉。虚拟社区(Virtual Community)是基于地理信息系统技术、虚拟现实技术、宽带网络技术、多媒体技术、计算机图形学等高新技术,将社区地理空间信息和其属性信息相结合,构建一个逼真的、具有视觉、听觉、触觉的虚拟社区景观,用户可以利用计算机网络远程访问这个全新的社区景观,通过终端计算机在虚拟社区中漫游,而且可以进行查询、分析、评价等操作,使用户足不出户也可以有身临其境的感觉1。虚拟社区漫游系统是数字社区建设的基础,它的研究和创建对以后数字社区的建设有重要的现实意义。它是一个三维可视化的、有声有色的仿真社区景观,既可以为市政建设树立良好的形象,提高社区的知名度,宣传社区文化;还可以作为市政规划的辅助工具,在对社区内部的建筑物、道路、辅助设施进行修建规划时,可以在这个虚拟三维环境中动态交互的对未来社区环境进行全面的审查,为社区规划和设计提供更明确的目标;同时也提高了社区管理的效率和科学化水平,促进远程监控,加快社区建设。总之,它是数字校园建设的基础。本论文研究的虚拟社区漫游系统,是以现实中功能社区为虚拟空间,根据VR技术原理,创建出社区里基本的建筑物、道路、广场、车辆、人物、树木等虚拟模型,然后以VRML(Virtual Reality Modeling Language,虚拟现实建模语言)为核心,结合3D MAX等建模工具,实现基于TCPIP协议和因特网的逼真虚拟校园漫游系统,使得用户更加方便、灵活的在虚拟社区中漫游三维模型;使真实性、交互性和动态性得到了更充分的体现。第1章 虚拟现实建模语言§1.1 虚拟现实建模语言概述虚拟现实建模语言(Virtual Reality Modeling Language ,VRML)是第二代WWW的标准语言,是一项与多媒体、因特网、虚拟现实等领域密切相关的新技术1。熟悉3W的人们都知道,由于HTML语言的局限性,VRML之前的网页只能是简单的平面结构。尽管借助Java技术可以实现一些三维的效果,可是要完全构造出一个三维的环境是不可能的。而VRML的诞生恰恰弥补了这一缺陷。VRML是一种基于文本的通用语言,是HTML的三维模型。它定义了当今3D应用中绝大多数常见概念,如变换层级、光源、视点、几何、动画、雾、材质属性和纹理映射等。一个VRML的三维立体景象一般是由成百上千个多边形组成,这些多边形是构建计算机三维景象的基本材料。VRML规范是1994年在瑞士日内瓦召开的万维网(WWW)会议上,由Mark Pesce和Tony Parisi首先提出的。它的1.0版本只允许建立一个可以探索的环境,不能提供交互功能,也没有声音和动画。VRML2.0规范于1996年8月通过。它在1.0的基础上进行了很大的补充和完善。VRML2.0改变了1.0版本中只能创建静态3D景物的限制,增加了行为,可以让物体旋转、行走、滚动、改变颜色和大小。它提供了梯度和纹理映射背景、与地点相关的声音以及可以将MPEG-II视频映射到任意对象上的节点。它还提供了带轮廓的地形、突出、碰撞检验、模糊效果以及常见的文本。VRML文件通常包括4个主要部分:文件头(Header),原型(Prototypes),场景图(Scene graph),事件路由(Event routing)2。文件头部分是必须且唯一的。后3个部分没有严格的先后次序要求,只要求后者使用的对象在前者中已经定义,并且这3个部分可以有任意多个。另外,可以在VRML文件内添加注释。VRML定义了54种节点,新增了3种数据类型,而且几乎所有的节点都被或多或少地增加了功能,至少可以发送或接收消息。简单地说,VRML2.0 的全部功能可以分为二大部分:创建三维实体及对对象的编程。这二部分是密不可分的,因为在VRML中,任何一个创建的实体都可以发送和接收消息,并通过JavaScript与外部Java进行交换,从而实现真正的交互功能。此外,VRML2.0还改进了编程格式,使之更加符合面向对象编程的思想,增加了交互的功能,具体表现在一些新增的节点,如Sensor Interpolator等。同时,VRML2.0还有支持声音、动画等功能。VRML2.0的节点主要分成以下20大类:(1) 造型尺寸、外观节点:Shape、Appearance、Material(2) 原始几何造型节点:Box、Cone、Cylinder、Sphere(3) 造型编组节点:Group、Switch、Billboard(4) 文本造型节点:Text、FrontStyle(5) 造型定位、旋转、缩放节点:Transform(6) 内插器节点:TimeSensor、PositionInterpolater、OrientationInterpolater、ColorInterpolator、 ScalarInterpolator、CoordinateInterpolator(7) 感知节点:TouchSensor、CylinderSensor、PlaneSensor、SphereSensor、VisibilitySensor、ProximitySensor、Collision(8) 点、线、面集节点:PointSet、IndexedLineSet、IndexedFaceSet、Coordinate(9) 颜色、纹理、明暗节点:Color、ImageTexture、PixelTexture、MovieTexture、Normal(10) 控制光源的节点:PointLight、DirectionalLight、SpotLight(11) 背景节点:Background(12) 声音节点:AudioClip、MovieTexture、Sound(13) 细节控制节点:LOD(14) 雾节点:Fog(15) 空间信息节点:WorldInfo(16) 脚本节点:Script(17) 控制视点的节点:Viewpoint、NavigationInfo(18) 海拔节点:ElevationGrid(19) 挤出节点:Extrusion(20) 用于创建新节点类型的节点:PROTO、EXTERNPROTO、IS通过这些节点的相互组合和协调,几乎可以模拟现实世界中的任何对象。§1.2 基于VRML的虚拟场景构造工具及VRML浏览器§1.2.1 文本编辑工具VRML用ASCII文本格式来描述境界和链接。因此,可以用写字板或其它的文本编辑器来编写VRML程序(保存时要以*.wrl为后缀名)。但对于一个虚拟的三维场景来说,它是由声音、图像、材质等复杂文件组合而成的,一个单独的*.wrl文件不能轻易地实现它。因此,便需要一种工具把这些文件归纳在一个工程中(即一个文件夹)。这样的工具很多,最常用的是VrmlPad工具。VrmlPad工具对各个节点、域设置了层次,并提供了高亮度显示,用户可以很方便地组建、查看、调用工程中的各种文件。§1.2.2 三维建模工具上面的文本编辑工具在构建三维模型时有两个重要缺陷:一方面不能提供可视化界面;另一方面对于不规则的复杂物体常常要求编辑大量的、繁琐的文本、数字3。对于第一个问题,许多所见即所得的VRML制作软件已经出现。其中,Parallel Graphics公司推出了一系列的VRML制作工具Internet Scene Assembler(ISA),Internet Space Builder(ISB)、Internet Character Animator(ICA)。这3个工具各有侧重,ISB侧重于空间建模,ISA侧重于场景组合,ICA侧重于动画。结合使用它们可以快速生成VRML文件。虽然它们不支持VRML2.0的所有功能,但它们的易用性给生成复杂的三维实体提供了方便。尤其是ISB,它虽然不支持复杂的动画,不支持行为、事件的操作(这些可由ICA、ISA完成),但由于它结合了可视化操作和VrmlPad工程的优点,从而成为虚拟现实建模的可靠工具。3D MAX当今世界流行最广的三维动画造型软件,它所具有的把三维模型输出成VRML格式(利用其Import和Export方法)的功能使其成为VRML的最好助手。但是,3D MAX中对物体描述的精度大大高于VRML的要求,它包含了很多造型的细节,这些都是VRML不需要的。过细的要求不可避免地造成了巨大的文件量,这影响了文件装入内存后的导航速度和性能,使文件的下载时间过长。因此,可用一些特殊的方法来削减文件的大小,提高执行速度。这些方法包括:在建立的几何体中减少分段数;从场景中删除看不见的面和隐藏不需要的面;使用关联复制等。§1.2.3 VRML浏览器和HTML一样,VRML虚拟场景源程序文件也是由网络传输,浏览器解释、执行和呈现的,只不过VRML源程序文件在浏览器上产生的不是静态的平面结构,而是动态的立体场景,支持VRML文件的浏览器常见的有Microsoft VRML浏览器、Parallel Graphics公司的Cortona VRML Client浏览器、SGI公司的Cosmo Player浏览器、Blaxxun公司的Blaxxun Contact等。第2章 虚拟场景建模分析VRML是第二代Web上的关键技术,是一种三维场景的描述性语言,也是在Internet网上实现虚拟现实的关键性技术。它的基本原理是用文本信息描述三维场景,在Internet网上传输,在本地机上由VRML的浏览器解释生成三维场景,解释生成的标准规范即是VRML规范。正是这种思想使得在Internet上传输很少的数据,就可以在Web上实现三维虚拟场景浏览成为可能。因此,VRML可以生成网络上的三维场景。虽然JAVA技术现在支持三维场景的创建,但是我们知道使用JAVA3D创建虚拟场景不是那么容易的事情,和VRML相比它的开发周期较长,也没有VRML技术那么成熟。可见,采用VRML技术构建虚拟现实环境有下面几个好处:丰富了媒体表现形式、改善了虚拟环境的用户界面、增强了虚拟环境的交互性。§2.1 场景的建模§2.1.1 节点虚拟境界由对象构成,对象及其属性用节点(Node)描述所以节点是构成VRML文件的基本单元。从层次结构上可以把节点分成三种类型,组节点、子节点和属性节点,节点名的首字母大写,而域名都用小写字母表示4。VRML的每一个节点都有零或多个域(field),域值决定了该种节点类型的对象在虚拟场景中的状态4。节点类型大都具有接收和发送的事件(Event)的能力,其中事件入口是节点接收事件的逻辑接收器,事件的出口是节点产生事件的逻辑输出端。外露域(exposedField)是域、入事件、和出事件的统一体,它既可作为域确定节点的状态,义作为事件入口接收事件,还能把变动的值送往其它节点。本系统中涉及的主要造型节点包括Transform节点、Shape节点、Appearance节点、Material节点、IndexedFaceSet节点、Background节点、Billboard节点和Anchor节点等。§2.1.2 造型节点的层次结构本系统中将组节点(Transform)作为基本造型节点,children域中的造型节点(Shape)包含外观(Appearance)和几何(geometry)节点;Appearance节点包含材质(Material)节点和纹理(texture)节点;每个节点又包含若干个域。本系统中,IndexedFaceSet节点用于所有的建筑以及车辆、人物的建模,IndexedFaceSet节点用来创建建筑物等的复杂的面,在真实的场景中,建筑物往往不是标准的立方体,用BOX节点造型不足以体现虚拟建模的真实性。所以在本系统中,利用IndexedFaceSet节点构造复杂的折叠面,可以完成建筑外部的一些复杂设施和室内造型,例如建筑外的空调平台和室内的房梁等。图2-1即是利用索引面集构造的建筑外部装饰,这类造型是通过普通的三维形体造型节点所构建不出来的。图2-1 建筑外部多边形结构图通过上述分析得出,我们可以用Shape节点创建虚拟场景中的全部三维造型。这些造型包括基本几何造型以及文本、点、线面方式构造的任意几何造型。§2.1.3 节点之间的关系节点之间的关系分为父子关系和编组关系两种:(1)父子关系。如上所述,父子关系是根据节点语义定义的通过特定域包含特定节点而形成的上下层次关系。(2)编组关系。通过组节点(Grouping Node)把一组子节点组织起来,从而形成编组关系。编组节点有Group、Anchor、Billboard、Inline、LOD、Transform等8种。例如Group节点的children域,它是一个MFNode类型的域,蹋来包含多个子节点。GroupeventIn MFNode addChildreneventOut MFN0de removeChildrenexposedField MFNode children field SFVec3f bboxCenter 0 0 0 #(-8,8)field SFVec3f bboxSize -1 -1 -1 #(0,8)or-1,-1,-1由此可知,利用编组节点的功能,可以把大型三维虚拟场景的结构组织得更为有序。§2.1.4 大型场景的数据组织(1)应用编组节点VRML提供了8种类型的编组节点,用于把共同完成某一功能的节点组合在一起(图2-2)7。Group节点用于对象的群组;Transform节点则是把对象组合后再一起进行坐标变换。如果把子场景看作子节点,那么我们可通过内联节点(Inline)实现各场景的调出,对大场景而言,可明显提高绘制速度。本系统中,由于后期场景丰富的需要,以及系统快速读取的需要,要将一些模型建立在另外的.wrl文件中。本系统中的人物造型作为较复杂的造型,VRML文件会非常庞大,并且难于管理。并且系统读入时检测此内联的人物造型是否会出现在默认的视点视界中,当此人物造型有效时,此模型才被描述出来,否则将不再描述,这样节省了系统资源。Transform childrenInline #内联节点 url"male2.wrl"#内联的人物造型 translation-63.5449 -2.33356 -88.6001#对于male2.wrl中造型位置的修改 rotation0 1 0 2.09439 scale2.22902 2.22901 2.22902图2-2 编组节点对场景的组织(2)层次细分对由多物体(又称实体)组成的复杂大场景,必须把场景分解成单个造型单元8。分解的方法,首先把大场景按分布的区域划分成许多子块,子块尽可能规则,以利用建模后再组合成大的场景块;其次对某一具体的造型,如本系统中的某一建筑模型,可以从外向内进行分解,将屋顶的建模作为一个单独的部分,外墙的建模作为另一个部分;在VRML中通过分组节点和造型节点把分解的场景建模后,用分组节点再组合成大场景。这样就简化了单个造型的工作量,可以一部分一部分的建模,提高了工作效率。如图2-3所示,在VRML文件中的具体体现是树型嵌套结构。图2-3 场景的分层结构和对应的分组节点§2.1.5 建模流程在3D MAX中构造基本模型。以社区景观为内容的建模工作既复杂且量大,若全部采用编写VRML代码的方法去完成,易出错且效率低9。因此在构造虚拟场景时期,使用一些三维建模工具可以大大地提高开发虚拟现实系统的效率。本项目选用三维软件3D MAX来搭建基本场景,其优势是能够快速高效构造复杂的三维模型,并设定材质、光效和动画,同时兼有输出.wrl格式的功能,这一点对提高建模效率非常有用。在VrmlPad中编辑。VrmlPad是一个很出色的虚拟现实文件专用编辑器,不仅有利于提高代码编写效率,而且还提供程序调试功能,是完成复杂虚拟场景必不可少的利器之一1。从3D MAX输出的VRML文件,虽然已包含建立好的建筑模型、环境模型、人物模型等,但是由于交互行为不足,所以还应该打开生成的wrl文件,加入指定路线漫游和一些基本的动态交互功能以完善系统功能。并利用上面讨论的造型节点层次细分和编组节点对场景对象的相应代码做进一步的组织、校验和完善。§2.1.6 场景的建立如前述,VRML本身就是一种建模语言,但对于一个庞大场景,通过一行一行代码的编写来完成是一件困难的事情,于是就产生了各种创建VRML场景的工具,本课题主要采用3D Max和VrmlPad。利用3D Max创建VRML场景的主要步骤如下:(1)场景平面图。从系统的分析和总体设计可以看出,对场景进行合理的布局是至关重要的。在AutoCAD中绘制场景布局的平面图(文件格式为.dwg,可导入3D Max),定位道路、楼群和其他建筑物。该图是场景合理布局的基础。(2)纹理采集。采集纹理图片数据,包括砖纹图片、门窗图片、草地图片等。对所采集的纹理图片,在Photoshop中将其处理成可无缝平铺的贴图。(3)3D Max构建场景基本模型。VRML通过节点来描述场景实体,3D Max可以将其环境中的模型以VRML的格式输出。即将各个三维模型转化为相应的节点,以便为相应的浏览器解释并绘制。以人物造型为例,输出的VRML节点如下:#VRML V2.0 utf8DEF man01 Transform #定义man01造型 childrenShape appearanceAppearance materialMaterial #此处省略了纹理描述 geometryDEF man01-FACES IndexedFaceSet #man01面部索引面集 coordDEF man01-COORD Coordinate point coordIndex ccwTRUE solidFALSE normalIndex texCoordIndex translation-15.14 -43.33 -42.11 rotation-1 0 0 1.571 scale4.131 4.131 4.131其中,Translation为标准的VRML节点,children域中定义了Shape它是一个man01的面部。由此可见,3D Max的人物细节造型对应了VRML相应的节点。 (4)引入需要的VRML节点但是有一些VRML节点在3D Max中并不能被直接通过3DS的实体模型创建出来,需要向这个3D MAX场景中插入图标来引入相应的VRML节点,其中包括了Anchor、ProxSensor、NavInfo、Fog、Sound、LOD、TouchSensor,Timesensor,Background、AudioClip、Billboard、Inline共12个节点10。本系统中的树木造型全部采用Billboard节点,采用此节点的好处是用此建立的树木模型其正面永远对着替身视点,不用建立多个面并导入多张贴图,达到节省系统资源的作用。§2.2 场景对象的优化要使3D MAX中导出的wrl格式的文件转入VRML环境后达到比较理想的效果,需要应用一些技巧来优化VRML虚拟对象12。在场景模型构造环节,建筑物的建模是关键。精细建模因文件量过大会导致网络传输和绘制困难,而用数码相机拍摄建筑实体图像再将其作为纹理映射到建筑物模型上,则可行性不大。为此,我们在比较各种建模方法的基础上,兼顾文件量和真实感,提出建筑物的二次建模方法。下面分别从建筑物的二次建模、场景模型构造和VRML文件编辑三方面加以讨论。§2.2.1 建筑物的二次建模方法建筑物的建模要达到理想效果,归根结底是要克服复杂度与真实感这一对矛盾。二次建模的思路是:首先在三维软件中对建筑进行精细建模,赋以材质及纹理,然后对所需的纹理进行渲染输出,经图像处理软件处理后生成包含细节(如窗框、装饰条等)的纹理;再对原建筑结构进行分解,用外轮廓线(Outline)加拉伸(Extrude)或放样(Loft)生成分段数为1的简单几何体,最后,用包含细节的纹理映射到简单几何体上,完成建筑的构建13。二次建模的流程如图2-4所示。图2-4 二次建模流程图§2.2.2 建模环节的其他优化方法(1)应用实例复制:实例复制对象在VRML代码中只定义一次,可在场景中多次使用同样的几何体定义,而文件的大小不会增加。能够节省编写代码时间,同时可以使文件大大地变小。在场景中用DEF定义人物和树木造型,完成造型的建模后,在其他地方需要相同的造型时,只需要USE使用这个造型并重新定义translation即可。DEF tree Transform Transform Translation 1 0 0children USE tree (2)使用多细节层次模型技术;根据物体与观察者之间的距离,选择同一对象的不同细节版本。合理设簧VRMLExport对话框参数:此面板中参数的设置将直接影响到VRML文件的大小。例如在3D MAX导出模型时,对参数Digits of Precision由缺省的4设置为3,可减少场景的总文件量,但对测览无太大影响。 (3)对导出限制的了解:在3D MAX中应用VRML97Exporter对话框导出.wrl格式的文件时,并不是所有的3D MAX中的对象和元素都能导出到VRML中,下面列出了部分能导出和不能导出的场景元素:能导出:几何图形、隐藏对象、光颜色、反向动力学、标准材质及多重子材质;不能导出:光滑组、隐藏面、体光、继承链接、其它类型材质。通过对可导及不可导的了解,可帮助我们在建模过程中知道哪些对象在3D MAX中完成,哪些需用VRML编程来实现,这样可缩短开发时间,提高效率。§2.2.3 文件编辑环节的优化该环节的优化主要是根据VRML的语法特性进行的,可以同时减少网络通信量和浏览器的计算量。首先用VrmlPad打开3D Max导出的vr.wrl场景文件,检查是否有语法、值类型的错误;提供的域值是否在适当范围内;校验是否有重复的节点定义,是否有不匹配的域名或路由。检查完毕后,通过VrmlPad自带的VRML浏览器,可单独预览选定的节点或组进行最后的调试,也可对全部场景实现浏览。可选中vr.wrl文件中某个单独的造型Transform mengfang,右键该造型标题后选择预览,VRMLPad会自动载入选中的造型进行预览。如图2-5所示。图2-5 单个造型预览图VRML文件的大小不但决定了它在网络上的传输速度,而且还影响着文件装入内存后的浏览速度。下载时间过场、漫游时的画面刷新过低,都将使用户失去耐心,放弃浏览16。所以在虚拟社区的设计中,优化VRML文件非常重要。第3章 虚拟社区漫游系统的实现本系统以实现社区展示的虚拟化和信息化为目标,通过数字方式综合研究对象的各类空间信息和属性信息,建立虚拟漫游系统三维模型与信息,在此基础之上,以VRML虚拟建模语言为核心,结合3D建模工具、VRML建模工具、动态网页技术和JavaScript、Java语言开发基于TCPIP协议和因特网的虚拟校园漫游系统20。实现对虚拟场景的漫游、自动导航、人机交互等功能。另外,尽可能多的丰富三维场景中的模型数量与种类,使整个虚拟漫游系统与真实环境更加相近,使之信息丰富、全面,使用户产生身临其境的感觉。§3.1 开发环境操作系统:Windows XP SP3;浏览器环境:Microsoft Internet Explorer 8.0 ,Cortona VRML 浏览器插件;VRML编辑工具:VrmlPad ,Cosmo Worlds ;3D建模软件:3D MAX 2012 ;§3.2 系统结构设计建模过程中对于不同种类的实体采用不同的建模方式非常重要,恰当的选择不仅可以使模型达到逼真的效果,而且可使场景中的模型复杂度大大降低,提高浏览速度。虚拟校园系统模型的总体结构图如图3-1所示。虚拟社区系统主要由四大类模型建模构成,分为环境模型、建筑模型、植物模型、其他模型等。环境模型又包括天空、地面等;建筑模型包括社区里的各式建筑,如楼房和平房等;植物模型包括树木和草坪;其他模型包括人物和汽车等。这些共同构成了整个虚拟社区的建模。图3-1 虚拟社区建模总体结构图§3.3 场景模型的建立根据场景中三维模型类型的不同主要分为四类建模:(1)天空地面建模,(2)建筑物建模,(3)树木、草坪建模,(4)其他设施建模。§3.3.1 地面建模本社区漫游系统的地面由一整条四通八达的柏油路构成。在路面的设计中用到很多节点,其中包括Transform和组节点串联起了整个模型; Shape节点把基本几何节点进行封装,通过Shape节点中的几个域对几何体进行描述:Material节点描述了整个地面的表面材质,包括漫反射参数、路面的明暗程度、镜面反射参数等等;整个路面的外观通过geometry IndexedFaceSet索引面集实现。DEF lu Transform #定义路造型 childrenShape appearanceAppearance #外观设计 materialMaterial #纹理设计ambientIntensity0#没有环境光被反射diffuseColor0.0549 0.0549 0.08627#漫反射颜色specularColor0.02882 0.02824 0.03294#镜面反射颜色shininess0.145#物体表面亮度transparency0#物体不透明 geometryDEF lu-FACES IndexedFaceSet #路表面索引面集 coordDEF lu-COORD Coordinate point#各点坐标 coordIndex#多边形列表 ccwTRUE#所画的平面正面面向屏幕 solidFALSE#对面的背面进行绘画 normalIndex texCoordIndex translation-15.14 -43.33 -42.11#位置 rotation-1 0 0 1.571#旋转 scale4.131 4.131 4.131#缩放比例§3.3.2 建筑物建模建筑物是整个社区模型中的主要地物对象,也是观察者主要访问的对象,因此对其的表达和描述必须逼真,以达到仿真的效果。本系统中建筑物模型有楼房和平房等模型,主要运用了组合的技术。首先在AutoCAD中设计出建筑物的平面图,然后导入到3D MAX中拉伸到相应的高度,对于不同的建筑物侧面指定不同的材质通道和贴图坐标系统21。将处理好