您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 虚拟现实vrml程序设计1-2-3章
VRML程序设计一、虚拟现实技术概述•1.1虚拟现实•概念•特点•系统基本构成•关键技术•应用•1.2VRMLChapter11.1虚拟现实•虚拟现实的概念•虚拟现实是利用计算机生成一个逼真的视觉、听觉、触觉以及嗅觉等的模拟环境(如飞机驾驶舱、分子结构世界等),通过多种传感设备使用户“投入”到该环境中,用户可通过其感官与这一生成的虚拟实体进行交互沟通,如同与真实的环境直接进行自然交互的技术。这里所谓的“模拟环境”一般是指用计算机生成的有立体感的图形,它可以是某一特定现实环境的表现,也可以是纯粹构想的世界。虚拟现实技术实现的是人所感受到的虚拟幻境,所以钱学森建议把VirtualReality的技术叫做“灵境技术”,由它构成的信息处理环境称作“灵境”。•虚拟现实的特点(3I特性)•第一,虚拟现实技术是通过计算机生成一个非常逼真的实体,逼真要达到三维的视感,甚至还包括听觉、触觉和嗅觉等。这个逼真的实体足以成为“迷惑”人类视觉的虚幻的世界,这种“迷惑”是多方面的,不仅可以看到而且可以听到、触到以及嗅到这个虚拟世界中所发生的一切。这种感觉是如此的真实,以至于能全方位地浸没在这个虚幻的世界中,这就是虚拟现实的第一个特征,即浸没感(Immersion)或临场参与感。•虚拟现实的特点•第二,虚拟现实与通常CAD系统所产生的模型是不一样的,它不是一个静态的世界,而是一个动态的、开放的环境,它可以对使用者的输入(如手势,语言命令)作出响应。如拿起一个虚拟的火炬并打开其开关,推动操纵杆,就可以在虚拟环境中的漫游,甚至还可以用虚拟的手感触到虚拟物体的存在。虚拟现实环境可以通过一些三维传感设备来完成交互动作,这是虚拟现实技术的第二个特征,即交互性(Interaction)。•虚拟现实的特点•第三,虚拟现实不仅仅是一个媒体,一个高级用户界面,它还是为解决工程、医学、军事等方面的问题而由开发者设计出来的应用软件,它以详尽的形式反映了设计者的思想。如在盖一座现代化的大厦之前,首先要做的事是对这座大厦的结构做细致的构思,为了使之定量化,还需设计许多图纸。这些图纸反映的是设计者的构思,虚拟现实同样反映的是某个设计者的思想,只不过它的功能远比那些呆板的图纸生动、强大的多,所以国外有些学者称虚拟现实为放大人们心灵的工具,或人工现实(artificalreality)。这是虚拟现实技术所具有的第三个特征,即思想性(Imagation)。•虚拟现实系统的基本构成•虚拟现实技术的关键技术•(1)动态环境建模技术•(2)实时三维图形生成技术•(3)立体显示和传感器技术•(4)应用系统开发工具•(5)系统集成技术•虚拟现实技术的应用•(1)医学•(2)娱乐、艺术与教育•(3)军事与航天工业•(4)管理工程•简单场景示例如下:1.2虚拟现实建模语言VRML•虚拟现实建模语言(VirtualRealityModelingLanguage,VRML)是一种基于文本的、在网络上使用的描述三维环境的场景描述语言,是HTML的3D(三维)模拟。它定义了3D应用中大多数常见概念,如光源、视点、动画、雾化、材质属性、纹理映射等。VRML语言的诞生,尤其是新的VRML2.0标准,被称为第二代Web语言,它改变了原来WWW上单调、平面的缺点,将人的行动作为浏览的主体,所有的表现都将随操作者行为而改变。•VRML2.0标准被称为第二代Web语言•VRML的特点•(1)与其它Web技术语言相比,其语法简单、易懂,编辑操作方便,学习相对容易。•(2)VRML具有创建三维造型与场景,并可以实现很好的交互效果。而且可以嵌入Java、JavaScript等程序实现人机交互,从而极大的扩充其表现能力,形成更为逼真的虚拟环境。•(3)具有强大的网络功能,文件容量小,适宜网络传输,并可方便地创建立体网页与网站。•(4)具有多媒体功能,在其程序中可方便地加入声音、图像、动画等多媒体效果。•(5)具有人工智能功能,在VRML中具有感知功能,可以利用各种传感器节点来实现用户与虚拟场景之间的智能交互。•(6)在当前各种浏览器中还不能直接运行,必须安装VRML相关插件才能看到其效果。二、VRML的基本知识•2.1VRML文件的编辑运行•2.2一个VRML程序示例•2.3VRML基本概念Chapter22.1VRML文件的编辑运行•VRML的编辑•VRML是文本文件,它向VRML浏览器发出如何为虚拟空间创建3D造型的指令。使用VRML创建自己的虚拟空间,需要VRML浏览器(例如Windows中IE的组件VRML2.0)和某种字处理器(如记事本)就可以实现了。•在字处理器键入VRML指令。然后,将文本文件存成*.wrl文件,最后将它装入VRML浏览器,以3D形式查看。为了向空间添加更多东西,返回字处理器,键入其他VRML指令,保存文件,并将它重新读回VRML浏览器。重复上述操作,逐渐创建自己的虚拟空间。•编辑工具推荐VrmlPad•VRML的运行•运行环境要求较低,采用Pentium4以上的计算机,主频2G以上、内存128M以上、显存64M以上、硬盘10G以上即可•常用的VRML文件浏览器有CortonaPlayer和CosmoPlayer,我们这里使用CortonaPlayer2.2VRML程序示例#VRMLV2.0utf8DEFqiutiTransform{#坐标变换节点Children[Shape{appearanceAppearance{materialMaterial{diffuseColor010}}GeometrySphere{radius1.1}}]}DEFtimeTimeSensor{#时间传感器节点cycleInterval2.0loopTRUE}DEFbianhuaPositionInterpolator{#位置插补节点key[0.0,1.0]keyValue[00-10006]}ROUTEtime.fraction_changedTObianhua.set_fraction#路由ROUTEbianhua.value_changedTOqiuti.set_translation#路由•注意事项:•vrml文件区分大小写•vrml文件的语法结构。一个实用的vrml文件一般由文件头,节点和路由组成•vrml文件实际上是众多节点的组合。一个节点由节点名和一对花括号组成,花括号内可以有多条语句。路由语句根据需要可以有多个。一个最基本的vrml文件处必需的文件头外,可以没有路由语句,但至少应包含一个节点。•文件头中的utf8表示文件使用的UTF-8字符集。计算机中使用的ASCII字符集是UTF-8字符集的子集。2.3VRML基本概念•文件头VRML文件中的第一行#VRMLV2.0utf8,这是VRML文件头,任何VRML文件都必须有这样的文件头,并且必须放在第一行,它表述了以下三个含义:(1)#这个#不是注释,而是VRML文件的一个部分;(2)VRML表示告诉浏览器,这是个vrml文件;(3)V2.0表示告诉浏览器,这个文件使用vrml2.0版的规范完成;(4)utf8表示文件是使用国际UTF-8的字符集。•域•可理解为其他高级语言中的“变量”。•分为两种:普通域,公共域。如上例中radius是普通域,diffuseColor,cycleInterval,loop,key,keyValue为公共域,children也为公共域。•VRML的空间坐标与计量单位•在构建虚拟场景中,构成场景的造型有大小的差别,物体间有相对位置的不同,并且造型还会有旋转、移动等运动。这就涉及到物体的空间坐标系、相应的长度、角度及颜色等。在VRML中,采用空间直角坐标系确定造型的位置,并且用特定的计量单位定量表示长度。•1.VRML空间坐标系•在VRML场景中,空间直角坐标满足右手螺旋法则,就是说,右手四指从X方向转到Y方向,则拇指的指向是Z方向。在默认情况下,X坐标向右为正;Y坐标向上为正;而Z坐标指向观察者,如图所示。•2.VRML长度单位•长度及坐标的计量单位采用VRML单位计量,在三维空间中,它是统一的,简称为单位。需要注意的是,这里表示的单位和实际环境中的计量没有任何可比性,和一些三维建模软件如3DSMAX的计量单位也没有可比性。在VRML场景中,只有物体间的大小和相对位置都用VRML单位计量,才能模拟出真实的现实。•3.VRML角度单位•在VRML中,使用的角度不是普通的角度,而是用弧度表示,这是浏览器接受的角度描述。当在VRML中使用角度单位中,要先将其换算成弧度后,再将其写入到VRML源程序中。VRML中的360º角度等于2π弧度,由此,1弧度约等于57º。•4.空间立体着色•在VRML三维空间中,无论是背景、光线的颜色、物体,它们的颜色都是由红、绿、蓝(RGB)组合而成,它们分别对应3个浮点数,其域值为0.0-1.0之间,由这三原色组合成各种颜色。•节点和域•节点是VRML文档中最基本的组成单元,是VRML的精髓与核心。VRML借助于节点描述对象某一方面的特征,如各种形状、材质以及颜色等等。VRML场景往往由一组具有一定层次结构的节点构造出来。每个节点包含有子节点和描述节点属性的“域名”、“域值”。相当于其它高级语言中的变量、数组等,或是数据库中的字段。•一般节点语法定义如:Shape{#Shape模型节点appearanceAppearance{#定义造型外观、颜色和表面纹理materialMaterial{}#描述外观材质属性}geometryCone{#指定造型外观为圆锥体节点bottomRadius5.5#指定圆锥体底面半径height6.0}#指定圆锥体的高度}•上述的一段VRML文档描述了一个圆锥体的建立,其中Shape、Appearance、Material以及Cone就是节点。•节点由节点名、节点类型、域、事件接口等基本组成部分。•不同的节点包含有不同的域,各个域没有次序之分,每个域都有自己的默认值,而且有些域还可用同名的节点作为域值。•根据域具有的域值情况的不同,可以把域分为两类,一类为单值域,用SF标记,它用一个值来描述对应节点相应的特征。另一类为多值域,用MF标记。VRML的域值类型有很多种:比如SFBool表示单域值布尔型,取值为True或者False,以确定某个属性是否打开;SFVec2f、MFVec2f表示单(多)域值二维浮点型,取值为两个浮点数值,可用来确定一个二维坐标;而SFVec3f、MFVec3f则表示单(多)域值三维浮点型,取值为三个浮点数值,可用来确定一个三维坐标。•事件和路由•在现实环境中,事物往往随着时间会有相应的变化。比如,物体的颜色随着时间发生变化。在VRML中借助事件和路由的概念反映这种现实。•1.事件•在VRML中,每一个节点一般都有两种事件,“入事件”(eventIn)和“出事件”(eventOut),每个节点通过这些“入事件”和“出事件”来改变节点自己的域值。如节点的颜色可以改变,可以表示为接收了这样一种事件:set_color。当节点被改变了,会对改变的状态有所反应,送出一些事件,比如发出信号,颜色改变了:Color_changed。•事件相当于高级程序语言中的函数调用。其中,“入事件”相当于函数调用的入口参数,而“出事件”相当于函数调用时返回的参数。•在VRML中的每一个节点内部有些域被定义为“暴露域”,即指它能够接收事件,也能输出事件。事件的调用是临时的,事件的值不会被写入VRML中。•2.路由•路由的功能是连接一个节点的“入事件”eventIn和另外一个节点的“出事件”eventOut。通过简单的语法结构,建立两个节点之间的时间传送的路径。路由的说明可以在VRML顶部,也可以在文件节点的某个域中。路由的出现,可使虚拟空间具有交互性、动感性与灵活性。借助于事件和路由,能够使得所建立的虚拟场景更接近于现实。(续上页)如语句:ROUTEtime.fraction_changedTObianhua.set_fraction这里,时间传感器对象time在
本文标题:虚拟现实vrml程序设计1-2-3章
链接地址:https://www.777doc.com/doc-30971 .html