虚拟现实vrml程序设计.ppt_第1页
虚拟现实vrml程序设计.ppt_第2页
虚拟现实vrml程序设计.ppt_第3页
虚拟现实vrml程序设计.ppt_第4页
虚拟现实vrml程序设计.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VRML 程序设计,一 、虚拟现实技术概述,1.1 虚拟现实 概念 特点 系统基本构成 关键技术 应用 1.2 VRML,Chapter,1,1.1 虚拟现实,虚拟现实的概念 虚拟现实是利用计算机生成一个逼真的视觉、听觉、触觉以及嗅觉等的模拟环境(如飞机驾驶舱、分子结构世界等),通过多种传感设备使用户“投入”到该环境中,用户可通过其感官与这一生成的虚拟实体进行交互沟通,如同与真实的环境直接进行自然交互的技术。这里所谓的“模拟环境”一般是指用计算机生成的有立体感的图形,它可以是某一特定现实环境的表现,也可以是纯粹构想的世界。虚拟现实技术实现的是人所感受到的虚拟幻境,所以钱学森建议把Virtual

2、 Reality的技术叫做“灵境技术”,由它构成的信息处理环境称作“灵境” 。,虚拟现实的特点(3I特性) 第一,虚拟现实技术是通过计算机生成一个非常逼真的实体,逼真要达到三维的视感,甚至还包括听觉、触觉和嗅觉等。这个逼真的实体足以成为“迷惑”人类视觉的虚幻的世界,这种“迷惑”是多方面的,不仅可以看到而且可以听到、触到以及嗅到这个虚拟世界中所发生的一切。这种感觉是如此的真实,以至于能全方位地浸没在这个虚幻的世界中,这就是虚拟现实的第一个特征,即浸没感(Immersion)或临场参与感。,虚拟现实的特点 第二,虚拟现实与通常CAD系统所产生的模型是不一样的,它不是一个静态的世界,而是一个动态的、

3、开放的环境,它可以对使用者的输入(如手势,语言命令)作出响应。如拿起一个虚拟的火炬并打开其开关,推动操纵杆,就可以在虚拟环境中的漫游,甚至还可以用虚拟的手感触到虚拟物体的存在。虚拟现实环境可以通过一些三维传感设备来完成交互动作,这是虚拟现实技术的第二个特征,即交互性(Interaction)。,虚拟现实的特点 第三,虚拟现实不仅仅是一个媒体,一个高级用户界面,它还是为解决工程、医学、军事等方面的问题而由开发者设计出来的应用软件,它以详尽的形式反映了设计者的思想。如在盖一座现代化的大厦之前,首先要做的事是对这座大厦的结构做细致的构思,为了使之定量化,还需设计许多图纸。这些图纸反映的是设计者的构思

4、,虚拟现实同样反映的是某个设计者的思想,只不过它的功能远比那些呆板的图纸生动、强大的多,所以国外有些学者称虚拟现实为放大人们心灵的工具,或人工现实(artifical reality)。这是虚拟现实技术所具有的第三个特征,即思想性(Imagation)。,虚拟现实系统的基本构成,虚拟现实技术的关键技术 (1)动态环境建模技术 (2)实时三维图形生成技术 (3)立体显示和传感器技术 (4)应用系统开发工具 (5)系统集成技术,虚拟现实技术的应用 (1)医学 (2)娱乐、艺术与教育 (3)军事与航天工业 (4)管理工程 简单场景示例如下:,1.2 虚拟现实建模语言VRML,虚拟现实建模语言 (Vi

5、rtual Reality Modeling Language,VRML)是一种基于文本的、在网络上使用的描述三维环境的场景描述语言,是HTML的3D(三维)模拟。它定义了3D应用中大多数常见概念,如光源、视点、动画、雾化、材质属性、纹理映射等。VRML语言的诞生,尤其是新的VRML2.0标准,被称为第二代Web语言,它改变了原来WWW上单调、平面的缺点,将人的行动作为浏览的主体,所有的表现都将随操作者行为而改变。,VRML2.0标准被称为第二代Web语言,VRML的特点 (1)与其它Web技术语言相比,其语法简单、易懂,编辑操作方便,学习相对容易。 (2)VRML具有创建三维造型与场景,并可

6、以实现很好的交互效果。而且可以嵌入Java、JavaScript等程序实现人机交互,从而极大的扩充其表现能力,形成更为逼真的虚拟环境。 (3)具有强大的网络功能,文件容量小,适宜网络传输,并可方便地创建立体网页与网站。 (4)具有多媒体功能,在其程序中可方便地加入声音、图像、动画等多媒体效果。 (5)具有人工智能功能,在VRML中具有感知功能,可以利用各种传感器节点来实现用户与虚拟场景之间的智能交互。 (6)在当前各种浏览器中还不能直接运行,必须安装VRML相关插件才能看到其效果。,二、VRML 的基本知识,2.1 VRML 文件的编辑运行 2.2 一个VRML程序示例 2.3 VRML基本概

7、念,Chapter,2,2.1 VRML 文件的编辑运行,VRML的编辑 VRML是文本文件,它向VRML浏览器发出如何为虚拟空间创建3D造型的指令。使用VRML创建自己的虚拟空间,需要VRML浏览器(例如Windows中IE的组件VRML2.0)和某种字处理器(如记事本)就可以实现了。 在字处理器键入VRML指令。然后,将文本文件存成*.wrl 文件,最后将它装入VRML浏览器,以3D形式查看。为了向空间添加更多东西,返回字处理器,键入其他VRML指令,保存文件,并将它重新读回VRML浏览器。重复上述操作,逐渐创建自己的虚拟空间。 编辑工具推荐VrmlPad,VRML的运行 运行环境要求较低

8、,采用Pentium 4以上的计算机,主频2G以上、内存128M以上、显存64M以上、硬盘10G以上即可 常用的VRML文件浏览器有CortonaPlayer和CosmoPlayer,我们这里使用CortonaPlayer,2.2 VRML程序示例,# VRML V2.0 utf8 DEF qiuti Transform #坐标变换节点 Children Shape appearance Appearance material Material diffuseColor 0 1 0 Geometry Sphere radius 1.1 DEF time TimeSensor #时间传感器节点

9、cycleInterval 2.0 loop TRUE DEF bianhua PositionInterpolator #位置插补节点 key 0.0,1.0 keyValue0 0 -10 0 0 6 ROUTE time.fraction_changed TO bianhua.set_fraction #路由 ROUTE bianhua.value_changed TO qiuti.set_translation #路由,注意事项: vrml文件区分大小写 vrml文件的语法结构。一个实用的vrml文件一般由文件头,节点和路由组成 vrml文件实际上是众多节点的组合。一个节点由节点名和一

10、对花括号组成,花括号内可以有多条语句。路由语句根据需要可以有多个。一个最基本的vrml文件处必需的文件头外,可以没有路由语句,但至少应包含一个节点。 文件头中的utf8表示文件使用的UTF-8字符集。计算机中使用的ASCII字符集是UTF-8字符集的子集。,2.3 VRML基本概念,文件头 VRML文件中的第一行#VRML V2.0 utf8,这是VRML文件头,任何VRML文件都必须有这样的文件头,并且必须放在第一行,它表述了以下三个含义: (1)# 这个#不是注释,而是VRML文件的一个部分; (2)VRML表示告诉浏览器,这是个vrml文件; (3)V2.0表示告诉浏览器,这个文件使用v

11、rml2.0版的规范完成; (4)utf8表示文件是使用国际UTF-8的字符集。,域 可理解为其他高级语言中的“变量”。 分为两种:普通域,公共域。如上例中radius是普通域,diffuseColor,cycleInterval,loop,key,keyValue为公共域,children也为公共域。 VRML的空间坐标与计量单位 在构建虚拟场景中,构成场景的造型有大小的差别,物体间有相对位置的不同,并且造型还会有旋转、移动等运动。这就涉及到物体的空间坐标系、相应的长度、角度及颜色等。在VRML中,采用空间直角坐标系确定造型的位置,并且用特定的计量单位定量表示长度。,1.VRML空间坐标系

12、在VRML场景中,空间直角坐标满足右手螺旋法则,就是说,右手四指从X方向转到Y方向,则拇指的指向是Z方向。在默认情况下, X坐标向右为正;Y坐标向上为正;而Z坐标指向观察者,如图所示。,2.VRML长度单位 长度及坐标的计量单位采用VRML单位计量,在三维空间中,它是统一的,简称为单位。需要注意的是,这里表示的单位和实际环境中的计量没有任何可比性,和一些三维建模软件如3DSMAX的计量单位也没有可比性。在VRML场景中,只有物体间的大小和相对位置都用VRML单位计量,才能模拟出真实的现实。 3.VRML角度单位 在VRML中,使用的角度不是普通的角度,而是用弧度表示,这是浏览器接受的角度描述。

13、当在VRML中使用角度单位中,要先将其换算成弧度后,再将其写入到VRML源程序中。VRML中的360角度等于2弧度,由此,1弧度约等于57。 4.空间立体着色 在VRML三维空间中,无论是背景、光线的颜色、物体,它们的颜色都是由红、绿、蓝(RGB)组合而成,它们分别对应3个浮点数,其域值为0.0-1.0之间,由这三原色组合成各种颜色。,节点和域 节点是VRML文档中最基本的组成单元,是VRML的精髓与核心。VRML借助于节点描述对象某一方面的特征,如各种形状、材质以及颜色等等。VRML场景往往由一组具有一定层次结构的节点构造出来。每个节点包含有子节点和描述节点属性的“域名”、“域值”。相当于其

14、它高级语言中的变量、数组等,或是数据库中的字段。,一般节点语法定义如: Shape # Shape模型节点 appearance Appearance #定义造型外观、颜色和表面纹理 material Material #描述外观材质属性 geometry Cone #指定造型外观为圆锥体节点 bottomRadius 5.5 #指定圆锥体底面半径 height 6.0 #指定圆锥体的高度 ,上述的一段VRML文档描述了一个圆锥体的建立,其中Shape、Appearance、Material以及Cone就是节点。 节点由节点名、节点类型、域、事件接口等基本组成部分。 不同的节点包含有不同的域,

15、各个域没有次序之分,每个域都有自己的默认值,而且有些域还可用同名的节点作为域值。 根据域具有的域值情况的不同,可以把域分为两类,一类为单值域,用SF标记,它用一个值来描述对应节点相应的特征。另一类为多值域,用MF标记。VRML的域值类型有很多种:比如SFBool表示单域值布尔型,取值为True或者False,以确定某个属性是否打开;SFVec2f、MFVec2f表示单(多)域值二维浮点型,取值为两个浮点数值,可用来确定一个二维坐标;而SFVec3f、MFVec3f则表示单(多)域值三维浮点型,取值为三个浮点数值,可用来确定一个三维坐标。,事件和路由 在现实环境中,事物往往随着时间会有相应的变化

16、。比如,物体的颜色随着时间发生变化。在VRML中借助事件和路由的概念反映这种现实。 1.事件 在VRML中,每一个节点一般都有两种事件,“入事件”(eventIn)和“出事件”(eventOut),每个节点通过这些“入事件”和“出事件”来改变节点自己的域值。如节点的颜色可以改变,可以表示为接收了这样一种事件:set_color。当节点被改变了,会对改变的状态有所反应,送出一些事件,比如发出信号,颜色改变了:Color_changed。 事件相当于高级程序语言中的函数调用。其中,“入事件”相当于函数调用的入口参数,而“出事件”相当于函数调用时返回的参数。 在VRML中的每一个节点内部有些域被定义

17、为“暴露域”,即指它能够接收事件,也能输出事件。事件的调用是临时的,事件的值不会被写入VRML中。,2.路由 路由的功能是连接一个节点的“入事件”eventIn和另外一个节点的“出事件”eventOut。通过简单的语法结构,建立两个节点之间的时间传送的路径。路由的说明可以在VRML顶部,也可以在文件节点的某个域中。路由的出现,可使虚拟空间具有交互性、动感性与灵活性。借助于事件和路由,能够使得所建立的虚拟场景更接近于现实。,(续上页) 如语句: ROUTE time.fraction_changed TO bianhua.set_fraction 这里,时间传感器对象time在定时时间到时发生

18、fraction_changed出事件,输出的时间值传送给位置插补节点对象bianhua的入事件set_fraction,计算出和时间值对应的坐标变化值。 又语句: ROUTE bianhua.value_changed TO qiuti.set_translation Bianhua通过本身的value_changed出事件将计算出的新坐标值传递给球体造型qiuti的入事件set_translation,使球体造型产生位移,于是动画出现了。 事件和路由构成了VRML 的动画体系。,三、创建三维立体造型,3.1 造型节点 3.2 简单几何造型节点 3.3 复杂几何造型节点 3.4 造型的外观设

19、计 3.5 创建文本造型,Chapter,3,3.1 造型节点,在VRML中创建三维立体造型是最基础和重要的工作。Shape造型节点定义了立体造型的几何形状、尺寸、色彩、材质、纹理等外观特征。 其语法格式如下: Shape appearance 外观域结点 geometry 几何造型域结点 ,3.2 简单几何造型节点,基本体素的建立 形状几何由几何节点描述,如Box,Cone,Cylinder等。,1长方体(Box) Box size x y z x、y、z默认值均为2.0 域值为默认值的域也可省略不写,2圆柱体(Cylinder) Cylinder radius r height h 默认r

20、=1.0、h=2.0 以y轴为对称轴,3圆锥体(Cone) Cone bottomRadius r height h 默认r=1.0、h=2.0 以y轴为对称轴 锥顶指向y+向,4球体(Sphere) Sphere radius r 默认r=1.0,3.3 复杂几何造型节点,复杂形状的建立 - 动物、植物、地表、机械零件,等等. - 可借助点、线、面来构建 - 对于地表等,甚至有特定的节点描述,如 ElevationGrid节点,PointSet Shape appearance Appearance . . . geometry PointSet coord Coordinate point

21、 . . . IndexedLineSet Shape appearance Appearance . . . geometry IndexedLineSet coord Coordinate point . . . coordIndex . . . ,IndexedFaceSet Shape appearance Appearance . . . geometry IndexedFaceSet coord Coordinate . . . coordIndex . . . solid TRUE ccw TRUE convex TRUE ,ElevationGrid Shape appeara

22、nce Appearance . . . geometry ElevationGrid xDimension 3 zDimension 2 xSpacing 1.0 zSpacing 1.0 height . . . ,Extrusion - 条形、管形、环形 - 可由 Extrusion 节点建立,Extrusion挤出造型节点语法格式如下: 节点名称 域名称或事件 域值 #域、域值或事件类型 Extrusion crossSection 1 1,1 -1,-1 -1,-1 1,1 1 #MFVec2f spine0 0 0,0 1 0 #MFVec2f scale 1 1 #MFVec2f

23、 orientation 0 0 1 0 #MFRotation beginCap TRUE #SFBool endCap TRUE #SFBool ccw TRUE #SFBool convex TRUE #SFBool so1id TRUE #SFBool creaseAngle 0.0 #SFF1oat set_crossSection #eventInMFVec3f set_spine #eventInMFVec2f set_scale #eventInMFVec2f set_orientauon #eventInMFRotation ,Extrusion挤出造型的一个例子,3.4 造

24、型的外观设计,Appearance 节点描述外观 Appearance material 材质域结点 texture 贴图域结点 - 可通过Material 节点控制材料属性,如颜色、高 光、透明度等。 - 可通过纹理映射为表面增添细节。 ImageTexture, PixelTexture, MovieTexture,Material材质节点 Material diffuseColor 0.8 0.8 0.8 - 材料漫反射光色(r,g,b),0.01.0 specularColor 0.0 0.0 0.0 - 材料镜面反射光色(r,g,b),0.01.0 shininess 0.2 - 亮

25、度,0.01.0 ambientIntensity 0.2 - 对比度,0.01.0 emissiveColor 0.0 0.0 0.0 - 材料发射光色(r,g,b),0.01.0 transparency 0.0 - 材料透明度,0.01.0 ,造型的色彩设计 常见RGB分量的配比值,几何造型的简单色彩设计 VRML为整体造型添加同样的颜色时,只需为 diffuseColor域的域值设置一组合适的RGB分量值,就完成了对造型基本颜色的设计。 几何造型的复杂色彩设计 点集和线集造型的色彩设计: 一是通过Materia1材质节点的emissiveColor域的域值,为造型设定单一的颜色。(注意

26、:不能使用diffuseColor域的域值设定点和线造型的颜色,因为前面已经说过点集和线集节点创建的造型不受光源的影响,没有光照的情况下,无论diffuseColor域的域值设定成什么颜色,浏览器均显示为黑色) 二是通过Pointset点集节点和IndexedLineSet线集节点的color域的域值Color颜色节点,为造型设定不同的颜色。 IndexedLineSet线集节点有color、colorIndex、colorPerVertex三个域的域值用于为所创建的线段着色。 面集造型的色彩设计: color、colorIndex、colorPerVertex 网格标高造型的色彩设计 col

27、or、colorPerVertex,四、造型的材质设计 造型的材质设计是一项复杂的工作,现实世界中常用的材料,如金属、木材、砖瓦、石料、玻璃、塑料等不仅仅是外观颜色上的差别,材质的属性更多反映在透明度、发光颜色、反光度、外观亮度的不同。因此,材质设计必须依赖于Material节点中六个域值的综合设定来完成。下表是常用材质域值设定的参考表。,造型的纹理包装设计ImageTexture节点示例1 Shape appearance Appearance material Material texture ImageTexture url wood.jpg geometry . . . VRML只支持.jpg、.gif图像格式 几何造型所有的面都有贴图 拉伸型覆盖 图像文件应与VRML文件在同一位置,ImageTexture节点示例2 S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论