




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Xxxx大学毕业设计论文摘要虚拟现实(Virtual Reality)技术是用现代计算机技术创建的一个酷似客观环境又超越客观时空、既能沉浸又能驾驭的和谐人机环境。虚拟校园是在计算机环境中,利用虚拟现实技术再现校园的景观,来访者足不出户就可以进入到虚拟的校园之中访问漫游,尽情领略校园的文化风情。本文研究了虚拟现实技术,特别是虚拟现实在数字化校园建设中的国内外的先进理论,以此为基础深入探究了虚拟校园的基本要素、基本特征以及虚拟校园的软、硬件实现架构,同时也对当前比较流行的几种桌面虚拟现实技术做了对比研究。结合xxxx大学的开发与建设,本文用3dsMax等软件开发了虚拟校园的三维模型,使用Inline节点来统一整合场景模型,将高精度建模与低精度建模有机结合,保证视觉效果及其浏览速度;利用JavaScript与导航、路由等节点相结合实现自动漫游、交互漫游。关键词:虚拟现实,虚拟校园,VRML,JavaScript, 三维建模AbstractVirtual Reality technology is the man-machine environment which is created by the modem computer technologyThis environment is exactly like the objective environment, but exceeds the objective space-timeWe both call immerse in it and control the processVirtual campus is the use of virtual reality technology to reappearance campus of the landscape in the computer environmentVisitors can get into the virtual campus, enjoy the campus cultural as much as they like never to leave their homeThe paper introduced virtual Reality synoptically, especially the domestic and foreign advanced theory of virtual reality in digital campus constructionBase on this,to probe into the basic elements,basic characteristics,the realization of hardware and software architecture of virtual campus,and also comparative studied several popular desktop virtual reality technologyCombining the virtual campus development and construction of Changzhou institute of light industry technology, I developed virtual campus three-dimensional models with 3dsMax,VRML etc software,and used Inline node to integrate the scene modelAlso integrated high precision and low precision model building call ensure visual effect and browse speedWith the combination of JavaScript and navigation, route etc node,we can achieve automatic navigation and interactive roamingKEYWORDS:VIRTUAL REALITY,VIRTUAL CAMPUS,VRML,JavaScript,3D MODELING目录1绪论411论文研究背景及意义412虚拟现实技术的研究现状4121国外虚拟现实技术研究现状4122国内虚拟现实技术研究现状5123虚拟校园研究现状613论文研究主要内容和目的62系统技术分析621虚拟现实语言VRML6211 VRML的发展简史7212 VRML文件的组成7213 VRML的工作原理及特性922 VRML与JAVA11221设置VRML Java执行环境12222Script节点和Java脚本程序之间的数据通信12223 JavaScript概述16224 VRML与JavaScript1623虚拟场景漫游系统关键技术17231建筑场景建模技术17232场景绘制技术18233虚拟场景优化技术193系统的设计与实现2131系统设计21311建筑模型建立22312漫游设计2332漫游功能的实现24321自动漫游的实现25322交互式漫游的实现2533漫游过程中碰撞检测26331漫游过程中碰撞检测的流程27332碰撞检测2734虚拟场景在Internet上的发布27341VRML文件的MIME类型27342VRML场景文件与HTML网页文件的结合284总结和展望2941论文总结2942展望29参考文献311绪论11论文研究背景及意义随着信息技术的发展及其应用的不断深入,数字化信息管理和实物虚拟化已经在当前的信息技术应用领域占据了相当重要地位。虚拟现实是在现实客观世界的基础上,利用先进的信息化工具,构建一个可以模拟的现实世界的虚拟空间,在此基础上甚至可以进一步拓展现实世界的时空维度,从而扩展现实世界的功能,最终建立一个优于现实世界的计算机世界虚拟空间。12虚拟现实技术的研究现状虚拟现实(Virtual Reality)技术,别称临境技术,是采用现代先进的计算机技术创建一个酷似现实世界却又跨越时空的虚拟世界,是一个用户可以沉浸其中并随心驾驭的和谐人机环境。在一些列传感辅助设备,如觉、听觉以及触觉设备的帮助下,用户通过自然的方式向计算机传递各种动作信息,感受三维虚拟世界。当前,与虚拟现实技术相关联的内容主要包含自然模拟和逼真体验的技术与方法,实现真实的体验和方便自然的人机交互是虚拟现实技术的重要目标。最显而易见的是让使用者获得沉浸感,即令人产生身处于虚拟环境的感觉。借助沉浸感,用户可以方便地获取周边环境的全面化印象,确定自己在环境中的位置,实现在虚拟环境中逼真漫游。121国外虚拟现实技术研究现状通过实际的应用,虚拟现实技术展现出了令人期待的前景。世界各国特别是一些发达国家,在多个领域都对其进行了广泛深入的研究。这里主要介绍一下具有代表性的美国的研究现状。(1)政府的资助虚拟现实技术的发源地是美国。其虚拟现实的研究技术的水平代表着国际虚拟现实技术发展的水平。美国在VR研究的领域主要集中于感知、用户界面、硬件和后台软件这四个方面。美国政府对虚拟现实技术的研究进行了巨大的资助,国家科学基金会(NSF)下设计算机、信息科学与工程学部(CISE)资助的VR技术项目最多,CISE每年的平均研发经费约为5亿美元。(2)高校的推动北卡罗来纳大学计算机系是最早进行虚拟现实研究也是最著名的大学。他们主要从事分子建模、建筑仿真、航空驾驶、外科手术仿真等研究。麻省理工学院对人工智能、计算机图形学及动画方面研究走在了世界的前沿,这些研究即是VR技术的基础。麻理用于进行虚拟环境的研究媒体实验室成立于1985年,在实验室里创建了BOLIO测试环境,并在该虚拟环境下创建了对象运动跟踪动态系统。密歇根大学于80年代成功开发了Agent建模环境Soar,该项目基于符号表示和规则推理,之后在行为建模、人工智能和人机接口等方面的研究中被广泛应用。Soar的目的是为仿真空军军力提供改进,并在改进后扩充LORAL MODSAF。该计划的使用使得美国国防部在虚拟战役中具备了智能化的多目标感知和管理能力、时态推理能力,并使用来管理和操纵敌方部队的人员减少到最低。 (3)企业的推动微软公司开发了大量VR技术:能够让用户将一组具有相似性的照片生成一个3D场景的Photosynth软件;支持3D效果的Silverlight插件;具有麦克风输入、语音辨识、动态捕捉、影像辨识等功能的三维体感摄影机Project Natal4;用来浏览美国各大主要城市的全方位3D图片的Virtual Earth 3D。IBM公司在互联网和VR技术的研发上投入上亿资金。Bluegrass这个虚拟现实应用程序,令用户能够建立虚拟会议室,实现远程会议。波音公司“波音777运输机的设计完全无纸化,利用其开发的VR系统将虚拟环境投射于真实的环境之上,工人根据投射在工件上的虚拟模板尺寸进行部件加工,大大简化了加工流程。美国的企业对VR技术不仅仅着眼于研发方面,更多面向市场、面向用户的VR商品显示了VR技术在商业化应用领域取得了很好的效果。122国内虚拟现实技术研究现状我国VR技术的研究起步于20世纪90年代初,和部分发达国家相比还有很大差距。随着计算机图形学等技术的高速发展,VR技术得到了国家科技部和困防科工委的重视。国内诸多机构部开始进行VR的研究和应用,并取得了一系列不错的成果。北京航空航天大学是国内进行VR研究最早的单位之一,北航计算机系的虚拟实现与可视化新技术研究室集成了分布式虚拟环境,可提供实时三维动态数据库,虚拟现实演示环境,供飞行员训练的虚拟现实系统等。并在虚拟现实下的视觉接口方面的硬件开发,相关算法及实现,分布式虚拟环境的网络设计等方面取得了成果。武汉理工大学智能制造与控制研究所主要研究使用虚拟现实技术进行机械虚拟制造,包括虚拟布局、虚拟装配和产品原型快速生成等。浙江大学CAD&CG国家重点实验室开发了一套桌面型虚拟建筑环境实时漫游系统。近年来中国在VR相关技术领域的研究取得了快速的发展,VR技术潜力大,应用面广,前景光明,但仍然存在一些尚未解决的理论、技术障碍。123虚拟校园研究现状虚拟校园正是采用虚拟现实技术构建而成的,其目的是将学校风光和地图进行有机结合起来,可以使来访者足不出户便可览校园风光,为学校树立良好的对外形象,也可以作为校园建设的辅助规划工具,供校园内外的师生和热心人士出谋划策。虚拟校园与学校信息的有机结合,可以一改过去陈旧呆板的操作界面,提供给师生一个具有新鲜感、三维化的信息介绍与查询环境。研究虚拟校园的建设,将对学校的发展对学校的数字化信息化有重要的现实意义。因此本文将结合xxxx大学虚拟校园的开发与探索,对虚拟校园建设作初步的研究与探索,并采用VRML+JavaScript这一种当前最为方便、灵活的桌面虚拟技术作为实现技术。13论文研究主要内容和目的本文通过对虚拟现实及其建模语言VRML系统的学习,分析了基于VRML的虚拟漫游系统的特点和应用。对当前国内外虚拟场景漫游系统的实现技术进行了分析和对比,对三维场景漫游系统中涉及的关键技术进行了理论分析和应用研究。在此基础上,基于VRML语言和JavaScript脚本语占实现了一个基于Web的虚拟场景漫游导航系统。2系统技术分析21虚拟现实语言VRMLVRML是Virtual Reality Modeling Language的缩写,即虚拟现实建模语言,它是虚拟现实和WWW结合的产物,是一种可以用来创建现实世界的场景模型或者虚构世界的三维场景建模。VRML是一种跨平台的语言,可以发布用来3D网页,用户可以在浏览的时候可以参与和探索,在交互性、动态效果、延续性等方面感受到比浏览普通网页更自然的体验方式。VRML使得虚拟现实走进了普通百姓的生活,出现了多媒体技术、因特网技术和虚拟现实相结合产生的第二代万维网,用户在网络上获取丰富信息的同时如同置身于真实世界中。VRML的基本目标是在因特网上建立具有三维化、分布式、交互性、多媒体集成性和环境逼真性等特点的三维媒体。211 VRML的发展简史1994年5月,Mark Pesce和Tony Parisi在瑞士日内瓦召开的万维网会议上介绍了可以在网络上运行的虚拟现实界面。第一次在网络上出现的三维界面备受关注,BOF小组组建并开发了一种可以连接网络的场景描述语言,并制定了VRML标准。同年10月,第二次万维网会议于芝加哥召开。会上公布了VRMLl.0的规范草案。1996年初,VRML委员会评审并票决出SGI的Moving World作为VRML2.0规范的工作文档。同年8月,公布了VRML2.0规范的第一版。1997年12月,在VRML2.0的基础上经过修订和部分功能调整后,VRML作为国际性标准正式发布,VRML97是该标准的通称。1999年底,整合了XML、Java、流技术等新技术的VRML的编码方案X3D出炉。2000年之后,VRML进入了一个崭新的时代。212 VRML文件的组成VRML文件由四部分组成,即:文件头语句、节点语句、事件路由语句和注释语句构成。(1)VRML文件头VRML文件必须包含文件头,其语法格式如下:#VRMI V2.0 utf8utf8是指该文件使用的字符集,包含了任何计算机键盘上能够找到的字符。(2)VRML节点节点(Node)是VRML中的基本单位。节点可以是3D造型、材质或者动画定时器、传感器等。节点通常由节点类型,描述节点属性的域和域值这几个部分组成。以Box为例:Boxsize 2 2 2Box是一个长方体几何节点,域为size,2 2 2相对应长方体的宽、高和深度。每个域值归属于特定的域类型,一般分为单值类型和多值类型。在VRML2.0中共定义了54种节点类型和20种域类型。常见的功能及节点如表31所示。功能节点类型节点建模基本几何体Box、Sphere、Cone、Cylinder构造几何体IndexLineSet、IndexFaceset、 Extrusion、ElevationGrid、PointSet造型编组、定位、旋转及缩放Group、Transform特殊造型Billbord、Background、Text灯光及材质光照HeadLight、SportLight、PoingLight、DirectionalLight材质及着色Material、Appearance、Color、ColorInterpolator雾Fog明暗控制Normal、NormalInterpolator三维声音Sound交互观察传感器CyIinderSensor、PlaneSensor、VisibilitySensor、ProxymitySensor、SphereSensor、TouchSensor视点控制ViewPoint、NavigationInfo动画控制关键帧时间传感器TimeSensor线性插值器及姿态调整CoordinateInterpolator、OrientationInterpolator、ScalarInterpolator细节管理碰撞检测LOD、Collision超链接嵌入Anchor、Inline表21 VRML常用功能及节点VRML文件中以定义某个节点并反复引用该节点。定义节点的语法为:DEF_节点名称_节点。引用节点的语法为:USE_节点名称。同一个节点中的域具有无序性和可选性这两个特性。各个域排列次序的不同不会影响最终得到的虚拟场景的结果;各个域有缺省值,可根据需要选择并创建造型。场景图中节点和节点间的关系可以通过节点语义,或者用组节点把若干节点嵌套组合的方式来确立。本系统中用到的主要节点介绍表32所示:节点名称节点功能Shape形状符点,用来创建各种造型,实现封装Group组节点,用丁二场景中造犁的编Script脚本常点,用来触发脚本控制的程序Transform转移节点,用来对虚拟对象执行空间位置E的调整Appearance外观常点,用来定义对象外观的颜色和纹理Background背景节点,设定场景的背景Anchor锚点,将某实体作为热对象,实现点击跳转到所需目标ViewPoint视点,可以定义观察者的视点角度方向LOD浏览器根据规则自动切换物体所表示细节的不同层次Inline引入外部文件的场景到文件中表22本漫游导航系统中主要节点介绍(3)VRML事件和路由场景图中有一类节点参与事件的产生和路由图的形成,这类节点用来确定在事件触发过程中场景的动态变化,并以此为依据修改场景图。这类节点是虚拟空间交互性和动态性实现的基础。213 VRML的工作原理及特性VRML通过文本信息来描述三维场景,在网络上进行传输,再通过用户机上的VRML的浏览器解析生成三维场景。其实现过程如图31所示。相较图形文件而言,文本信息的网络传输要方便快捷得多,将繁复的解析处理任务交给用户机,从而达到减轻网络的负荷的目的。该工作机制使其在网络应用中发展迅速。VRML文件输出用户进行交互操作VRML操作界面解释程序虚拟场景图21 VRML文件的实现过程VRML是基于Client/Server模式的访问模式,服务器提供VRML文件,客户下载并通过本地浏览器对该文件所描述的虚拟世界进行访问,如图32所示。图22基于ClientServer模式的VRML访问方式VRML作为一种标准,并不能满足所有的应用需要。交互性、画质、复杂度的要求相互制约,加上用户平台硬件配置的不同,用户需要自己去寻找中间的平衡点。VRML的可扩展性显得十分重要。与其他的三维建模语言相比,VRML具有如下优势。(1)平台无关性基于ASCII的字符构成,VRML被设计成与平台无关,通过VRML浏览器或相关插件,某个在网上传输的VRML文件可以应用于多种平台。(2)VRWL浏览器VRML文件可以使用经过安装插件后普通IE浏览。专用的VRML浏览器如Cortona,CosmoPlayer等具有更强的功能。大多数浏览器都提供了一个供用户执行改变视点、多方向行走的操作面板。(3)三维几何体生成方便除了基本造型之外,VRML还提供了一些高级造型方法以便创建复杂的三维模型。同时VRML与很多知名三维绘制软件有标准接口,如AutoCAD、3DMAX、Canoma、Pro/E等,借助这些软件可以创建生成更为复杂的模型,然后导出*.wrl的VRML文件格式。(4)使用Script节点调用JavaScript脚本扩展其功能将Java在Internet环境下编程的优势和VRML在虚拟现实场景构造方面的优势相结合,可以开发出交互性强且复杂度高的虚拟系统。22 VRML与JAVAJava是由Sun公司开发的新一代面向对象(object-oriented)的编程语言,Java是一种简单的、面向对象的、分布式的、解释性的、健壮的、安全的、结构中立的、可移植的、性能优异的、多线程的动态语言,由于具有这些特点,使得它已经成为跨平台应用软件开发的一种规范,在世界范围内广泛流行。Java语言是一种解释性的语言,但不是直接对源代码进行解释,用Java开发出来的源程序还需要进行初步的编译,源代码以字符方式存放在*.java格式文件中,源代码经过Java编译器(Java.exe)编译后生成与机器无关的一个字节代码(byte-code),存放在*.class的文件中,该字节代码进入本地系统或互联网上的Web站点。字节代码也不能在操作系统之上直接运行,首先要经过字节代码检验器检验,符合要求之后,字节代码装载器将字节代码连同所需的类库一起装入系统,由解释器把Java的字节码翻译成本机代码,然后再执行,这种层次结构保证了Java程序的可移植性。由于Java程序是运行在Java虚拟机环境中的,它不依赖于特定操作系统,所以编程人员只需一次性开发一个“通用”的最终软件即可在多个平台环境中使用,这将大大加快软件产品的开发。221设置VRML Java执行环境Java提供了三个与VRML有关的package:vrml、vrml.node、vrml.field, 这些包中类的方法被用来支持虚拟场景实体与Java程序之间的相互作用,Java还为VRML的各种数据结构提供了相应的类封装。在安装VRML浏览器时会自动安装VRML Java类。ParallelGraphics公司的Cortona VRML C1ient浏览器的Java Package 的缺省路径为:C:ProgramFiiesCommonFilesParallelGraphicscortonacorteai.zip和C:Program FiiesCommonFilesParallelGraphicscortonaclass.zip设置VRML Java类执行环境的方法是:(1)将以上Java Package的缺省路径加到环境变量CLASSPATH中。(2)下载vrml97jar软件包后将其拷贝到jdk安装目录下的jrelibext目录。使用 Java EAI 运行的时候会报错:java1angNoclassDefFoundError,这是因为Cortona VRML Client浏览器对Java程序支持不够,应该是用微软的Java虚拟机,解决的办法是:打开IE浏览器的【工具】|【Internet选项】|【高级】,对Microsoft VM进行如下设置:启用Java JIT编译器(需要重新启动) (no)启用Java记录(yes)启用Java控制台(需要重新启动) (yes)222Script节点和Java脚本程序之间的数据通信在Script节点和Java程序代码之间有两种通信关联方式:第一种方式是通过事件从Script节点传递数据到Java程序中去请求处理;另一种方式则是将Java程序处理后的结果数据返回到VRML场景中,从而动态的改变场景。Route语句VRML虚拟场景Route语句Java脚本创作接口EventIn get()方法传入数据进行处理Script节点EventOutset()方法传出数据处理结果图23 VRML与Java的数据通信(1)从Script节点传递数据到Java脚本程序对Java程序而言,必须有一个Script节点的eventIn入事件来激发它才能够执行,否则,Java程序一般不会自动执行,这就要求从Script节点传递数据到Java程序中去,以激发它的执行。假定有一个以DEF语句命名的Example的VRML Script节点,Example节点的url域指向一个JavaTest.class的文件,如下的程序代码所示:DEF Example Scripturl”JavaTest.class”eventIn IsActiveJavaTest.class字节码文件是通过Java编译器编译JavaTest.java文件得到的,其相应的程序代码为:import vrml.*;import vrml.Field.*;import vrml.node.*;/引入所需要的Java类包Public class JavaTest extends Scriptpublic void initialize0/场景初始化,获取相关的域对象、入事件对象和出事件对象的引用public void processEvent(Event e)/使用processEvent(Event e)方法接收入事件,根据入事件的名字分别处理在场景加载脚本的时候,浏览器根据Script节点url域指定的位置进行寻找,url指定的脚本程序位置既可以使用相对路径,也可以使用绝对路径,还可能是一个URL列表,即存在多个class文件,但浏览器只是按照列表的优先顺序执行第一个能够被执行的文件,即被传递的数据只能有一个Java程序,可是对于一个Java程序,可以有多个eventIn入事件接口,即可从多方面接收不同的数据。当Script节点有多个eventIn入事件时,processEvent(Event e)方法将换成processEvents(int count Event events)方法,count是入事件的个数。其语法定义为:public void processEvents(int count Event events)for(int i=O;icount;i+)processEvent(eventi) 被浏览器加载的脚本程序必须是公共类,而Java语言规定,公共类必须在和它同名的文件中,所以该脚本程序的类名必须和文件名相同,且必须是vrml.node.Script的子类。VRML的Script节点中由用户自定义的接口域都可以被Java脚本程序读写,所有的VRML数据类型都有一个相应的Java数据类型与之匹配。主要的数据类型对应关系如下表所示:Java数据类型VRML数据类型表示意义vrml.field.SFFloatSFFloat单值浮点数域vrml.field.ConstSFBoolSFBool单值颜色常量数域vrml.field.SFBool单值颜色数域vrml.field.SFColorSFColor单值颜色域vrml.field.MFFloatMMFloat多值浮点数域vrml.field.ConstMFFloat常量多值浮点数域浏览器成功加载Java脚本程序之后,当一个事件经过ROUTE语句传递到Script节点时,就会自动调用脚本对象的processEvent(Event e)方法进行处理。因为processEvent(Event e)方法是所有入事件的公共输入点,所以如果有多个eventIn入事件,为了得到关于事件到达的具体信息,事件类有以下方法:public String getName():返回一个字符串类型值,表示Script节点eventIn入事件的名字。public ConstField getValue():返回一个封装了入事件值的常量域对象,它被贴到域类的只读实例中,目的是不允许在获得该对象的引用实例后,对其值进行修改。public double getTimeStamp():返回一个以秒为单位的时间戳,此时事件已经在VRML场景中产生,这个调用能够决定到达一个特殊节点的事件顺序。field getField(String fieldName):返回一个名为fieldName的Script节点的参考值,这个参考值可被转换成相应的Java类。field getEventOut(String eventName):VRML的Script节点的每一个出事件接口都可以被读写,通过Script类的getEventOut()方法获得该出事件的引用,并且能映射到正确的Java类。field getEventIn(String eventName):返回给eventIn入事件的一个参值,并且能映射到正确的Java类。Java脚本程序接收一个VRML场景中的域值需要两步:第一步是在Java程序中得到一个参考值,并把它映射到VRML场景的对应域中,即一个域类的子类的实例对象被引用,它依赖于访问的域的类型;第二步就是读取那个引用的实例的值。(2)从Java脚本程序传递数据到Script节点VRML虚拟场景的域值被读入Java脚本程序进行处理以后,需要将其结果写回到Script节点中。为了达到这个目的,需要调用setValue()、setlValue()、addValue()或insertValue()方法设置Script节点出事件的值,改变后的值将存储在域对象中,并产生一个发向Script节点的入事件,它对VRML虚拟场景的影响由相关的路由来确定。(3)在Java脚本程序中直接读写VRML节点(Node)的字段要用Java脚本程序改变VRML场景,有两种方法:第一种方法是通过Script节点中的eventIn字段将数据传入Java脚本程序中,经过Java脚本程序处理后将数据传回Script节点,最后用ROUTE语句将处理后的Script节点的eventOut字段的值传递到想要影响的VIGIL节点中去;第二种方法是通过Java脚本程序直接读写VRML节点的字段,利用VRML中的SFNode类来完成。SFNode是作为节点指针的一个字段类型,一个SFNode字段可以指向VRML虚拟场景中的任意一个节点。若Java脚本程序能够直接读写一个VRML节点,那么该节点的任何一个暴露域、入事件或出事件都可以通过在Java脚本程序中调用该节点对象的 getExposedField()、 getEventIn(string eventInName)或getEventOut(string eventOutName)方法进行访问。类Node还包括getType()和getBrowser()方法,其中getType()方法用于返回一个VRML节点的类型,如Transform或Shape等,getBrowser()用于返回控制当前场景的浏览器名称。223 JavaScript概述JavaScript是一种基于对象的脚本语言。JavaScript继承了Java语言的面向对象、跨平台等多项特点,它被认为是为了快速、简单地编程而出现的微型Java语言。JavaScript在HTML页面中以语句形式出现,并且可以执行相应的操作。它是Netscape公司为了扩充Netscape Navigator浏览器功能而开发的一种可以嵌入在Web主页中的编程语言。早期称之为LiveScript,后来为了利用Java的功能同时借用它的流行性,把它改名为JavaScript。它是一种脚本语占,它的标识符形式上与C,C+,Pascal和Delphi十分类似。目前Netscape Navigator 2.0及其更高版本和Internet Explorer 3.0及更高版本浏览器均支持JavaScript语言。224 VRML与JavaScript鉴于JavaScript在网页设计中成功的应用并成为主导编程语言,VRML也将JavaScfipt作为内嵌编程语言的候选之一,大部分VRML浏览器都支持JavaScfipt编写的脚本程序。VRML与JavaScript的结合主要体现在VRML的Script脚本节点上。由于VRML本身不具备与外部交互的功能,无法完成分支、循环、转折等程序设计的基本特征,所以必须和其他语言结合才能构造出具备交互功能的三维场景。因此在语占中定义了Script节点,在该节点中,可以使用JavaScript代码,从而实现普通程序的转折、循环等功能,扩展VRML语言的功能。Script节点的动作是由JavaScript脚本来实现。由于Script节点只能按照预定的规则来改变场景,无法满足更为复杂的交互操作,VRML提供了EAI(外部程序接口)来实现外部应用程序与VRML场景的实时交互。(1)通过Script节点扩展VRML场景VRML中的Sensor节点只具有最基本的交互能力,由于缺乏普通程序设计语占的分支、循环、转移等的基本特征,VRML无法构建一个完整的应用系统。在实际应用系统的设计中,通常会通过Script节点的Java类来实现这些复杂的功能。在节点接受事件时,对应的Java类将产生一系列动作。通过与普通节点、Script节点、Sensor节点和事件路由的协作来构建事件体系。通过Script节点可以定义和改变场景内对象的外观和行为。当Script初始化时通过EventOut出事件将事件和节点从VRML传递至Java程序,而通过EventIn入事件可以命令从Java程序传递至VRML场景中。Event事件在VRML场景中被检测后到传递给Java程序,再由Java程序作出响应。本身不包含动作的Script节点通过程序脚本来实现其动作。简要说来Java与VRML的结合就是:A事件通过EventIn传给Script节点中的脚本;B脚本处理;C将结果通过EventOut传回Script节点。(2)利用EAI扩展VRML场景Java和VRML间的双向动态沟通由EAI提供。Java程序通过EAI界面取得3D场景中物体的信息,由EAI控制场景中的物体。EAI是一种创作接口,介于VRML世界和外部环境之间。用户浏览VRML作品时,在成为浏览者的同时也成为了一名参与者,可以根据自己的意识去改变看到的世界。EAI定义了一套针对浏览器的类,外部环境通过这些类访问当前的VRML世界,实现VRML世界内部场景的外部控制和修改。在VRML事件模型中,一个节点的EventOut事件可通过Route被传递至另一节点的EventIn。当某个节点产生一个EventOut事件时,与之相关联的EventIn事件将会收到并处理信息。在VRML事件模型的基础上,EAI实现了三种对场景的访问类型:访问节点;发送EventIn事件给节点;读取节点的EventOut事件。23虚拟场景漫游系统关键技术漫游系统是一个具有逼真的视觉、听觉、触觉的特定的虚拟环境。这是一个真实空间或假想空间的实时仿真空间,用户通过必要的交互设备实现以自然的方式在虚拟空间中观察,漫游,产生身临其境的感觉。漫游系统的关键技术包含建筑场景的建模、绘制、碰撞检测等方面。231建筑场景建模技术(1)几何建模技术几何建模技术利用现有的三维造型软件,如3DsMax,通过设计者对虚拟环境和对象进行建模,是构造三维虚拟场景的传统方法。在设计过程中,用户可以直观地观察物体的具体形状。优点:模型构建精确,可操作,方便用户和虚拟对象进行交互。缺点:过程繁琐,工作量大;扩展性差,改动困难:场景复杂度及逼真度受硬件条件影响,硬件要求较高。(2)物理建模技术物理建模是对虚拟对象的重量、质量、硬度、外部纹理、形状变化等特征的一种建模。物理特性的结合使得三维几何模型更具真实感。在虚拟现实系统的建模中,物理建模层次较高,需要将计算机图形学与物理学结合起来,在力的作用下,体现出重量、软硬度、表面变化等物理属性刚。(3)图像建模技术图像建模技术是通过预先处理好的图像,来实时地生成不同视点的场景画面。采用图像建模技术的的好处是图形绘制速度忽略了场景复杂度,只与所要产生的画面的分辨率相关。图片来源限制少,可以是预先存储的好图像,计算机生成的图像或者实拍的照片。对计算机硬件要求不高,个人计算机上即可实现复杂场景的实时绘制。缺点是对于不存在的场景难以获取图像,二维对象的交互方面限制较大,甚至无法交互。基于图像的虚拟现实建模技术有着十分广泛的应用前景,对于逼真度要求高的自然环境,建模难度大的模型场景尤为适用。常见应用于建筑物的展示、飞机驾驶的模拟、交互式游戏、虚拟展馆及虚拟景观的导游等领域。232场景绘制技术基于图形绘制面向景物的几何模型,基于图形的三维绘制技术的基础数据是矢量几何数据,经过三角剖分,用一定数量的三角面拟合景物几何体。使用顶点数组的数据结构描述所拟合的几何体的描述如下:Typedef structGLfloat u,v; /纹理坐标GLfloat nx,ny,nz; /法向矢量GLfloat x,y,z; /顶点坐标VERTEX;该顶点数组中每一个元素表示一个顶点,(u,v)表示该顶点的纹理坐标,(nx,ny,nz)表示该顶点的法向量值,(x,y,z)是顶点坐标。三个顶点构成一个三角面,通过如下数据结构进行描述:Typedef structGLuint p0,pl,p2; /顶点序列索引TRIANGLE;该结构中存放的是三个顶点的索引值p0、p1、p2,而不是用来构成这个三角面顶点坐标。通过若干个三角面可以拟合任意的几何体,并加入相应的纹理数据。其数据结描述如下:TypedefstructInt NumTriangles; /角形数量TRIANGLE*TrianglelndexList; /三角形阵列索引Char texturename; /纹理名称GLuint textureID; /纹理IDGEOMETRY;233虚拟场景优化技术为同时满足虚拟场景的真实感和提高浏览速度,需要对虚拟场景模型进行优化。(1)场景模型的优化和CAD场景的建立有很大的区别,虚拟现实的实时性要求决定虚拟场景的建立强调模型简单化。当场景的真实性要求和系统响应速度发生冲突时,在确保视觉感官上达到基本真实的前提条件下,需要损失部分真实性。常见的方法是采用简单框架取代复杂模型,通过贴图的方式弥补视觉效果的不足,保证一定的真实性。所用贴图可以使用绘画软件进行手工绘制获得,或对建筑物的各观察面进行拍摄获得,通过扫描手段生成相关材质的贴图。使用绘画软件进行手工绘制贴图的方法将颜色位数限定在256以内,采用这种方法生成的贴图压缩比较大,文件较小,便于网络传输,能较好地满足实时性的要求。第二种方法相对视觉效果较好,但文件压缩比小,生成的场景文件较大,在网络传输速度和实时性方面不如前者。在画面质量和存储文件大小允许的范围内,贴图规格通常采用320*240像素、分辨率72dpi,经过最高压缩比的JPEG格式压缩后文件大小约为20K字节。对于部分大型场景而言,建筑密度大,数据量高,为了提高渲染效率和漫游速度,可以对场景进行分割,将大型场景分割成若干小块分别进行处理,完成之后组合成整个系统。(2)层次细节技术和多细节层次模型层次细节LOD技术通过一组有着不同细节复杂度等级的实体模型来描述对象,在仿真过程中根据设计者要求在这些LOD模型间进行切替,实时改变场景的复杂度,是控制场景复杂度的一种非常有效方法。三角面片是传统图形系统中最通用的绘图元语。几何模型包含的三角形数量越多,图像质量就越高,绘制速度也就越慢,对于部分过于复杂的场景不能实时渲染,LOD的应用可以较好地解决这个问题。其基本思想是:对场景中的对象,采用不同的细节描述方法。考虑人类肉眼的细节分辨能力,选取的细节等级模型根据视点变化而变化,如果物体距离视点较远,或者个体较小,渲染时就可以用一个可以表现其主要轮廓的粗略LOD模型;如果物体距离视点较近,或者个体较大,渲染时就采用较精细的LOD模型。目前虚拟环境中涉及的场景复杂度越来越高,为场景对象提供不同的LOD描述可以有效地控制场景复杂度,加速画面绘制速度。在虚拟现实、快速绘制复杂三维场景、飞行模拟和3D动画等领域已经开始广泛应用LOD技术。现在,建立不同层次细节的模型和相邻层次模型之间形成光滑的视觉过渡是LOD的研究的主要方向。(3)实例引用所谓实例引用是指在多个造型中引用同一个实例。如果我们将构成造型的节点称为子节点,而若干个造型的集合称为父节点。实际使用过程中,子节点数据存放于内存中,父节点通过变换三维坐标产生新的物体,父节点中仅需存储用于定义物体的变换参数。父节点生成的物体,将随着子节点中数据的变化而发生改变。采用实例引用技术可有效降低系统内存的耗费,节约系统资源,在虚拟漫游系统中应用广泛。(4)碰撞检测技术要使用户以更自然、更真实的方式与三维场景中的虚拟对象进行交互,碰撞检测是很重要的环节。若系统忽略碰撞检测,一个对象碰到另一个对象的时候就会发生穿墙而过这种在现实生活中不合理的现象。虚拟场景漫游系统中动、静态对象之间交互的基础就是碰撞检测,在构造系统的时候,需要实时准确地判断虚拟场景中的对象间是否发了碰撞。碰撞问题涉及碰撞检测和碰撞响应两个部分。按运动对象所处空间划分,碰撞检测可分为二维平面和三维空间的碰撞检测。相较而言,由于三维物体的构造比较复杂,其碰撞检测算法相应更困难一些。采用包裹着物体对象的包围盒(bounding boxes)是进行碰撞检测的一个常见方法。包围盒可以理解为包裹虚拟对象所需最小的长方体,其个线段与空间坐标轴平行。基本思路是使用简单的包围盒如长方体,将复杂的几何对象围起来,进行碰撞检测时,先检测二者的包围盒是否有交集。若检测结果不相交,则说明二者没有产生碰撞,否则需要对而者作进一步的检测。通过这种方式可以快速排除不相交物体,从而达到加速运算的目的。虽然采用包围盒算法可以实现快速碰撞检测,但在虚拟漫游系统的实际应用中,仅靠包围盒进行碰撞检测就想做到自然的交互还是远远不够的。基于包围盒的碰撞检测并不十分精确,包围盒仅仅是物体边界的一个粗略表示,两个物体的包围盒相交并不代表这两个物体一定相交。为了解决这个问题,还应采用若干个多边形辅助表示包围盒,此时虚拟对象的边界就由一组多边形来表示,从而实行进一步的精确的碰撞检测。在判断两个物体是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宜昌市消防救援支队政府专职消防员招聘48人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025辽渔集团有限公司拟聘人员笔试历年参考题库附带答案详解
- 2025春季厦门银行校园招聘模拟试卷及参考答案详解
- 2025福建长乐区建设发展集团有限公司相关岗位招聘1人(第三批)笔试历年参考题库附带答案详解
- 2025福建福州捕电科技有限公司招聘12人笔试历年参考题库附带答案详解
- 2025湖南中烟工业有限责任公司博士研究生招聘拟录用人员笔试历年参考题库附带答案详解
- 2025冕宁县人民医院考核招聘编制外康复技师6人模拟试卷及答案详解(典优)
- 2025年湖北襄阳东津创业投资有限公司社会招聘拟聘用人员笔试历年参考题库附带答案详解
- 2025四川长虹杰创锂电科技有限公司招聘设备工程师岗位1人笔试历年参考题库附带答案详解
- 2025河北保定市雄安新区雄县事业单位招聘89人模拟试卷及答案详解(有一套)
- 人教PEP版(2024)四年级上册英语-Unit 2 My friends 单元整体教学设计(共6课时)
- 管桩试桩方案
- 血液科医师晋升副(主)任医师难治性伯基特淋巴瘤病例分析专题报告
- 癌性疼痛中西医结合诊疗指南
- 冷库建设工程施工进度计划及保证措施
- 建筑设计行业2024年财务挑战解析
- 慢性病防治健康教育知识讲座
- 中国石化加油站视觉形象(VI)标准手册-课件
- 小学数学新旧知识关联
- 退费账户确认书
- 国家开放大学《政治学原理》章节自检自测题参考答案
评论
0/150
提交评论