虚拟现实及其应用总复习课件1_第1页
虚拟现实及其应用总复习课件1_第2页
虚拟现实及其应用总复习课件1_第3页
虚拟现实及其应用总复习课件1_第4页
虚拟现实及其应用总复习课件1_第5页
已阅读5页,还剩110页未读, 继续免费阅读

下载本文档

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

文档简介

1、1.1虚拟现实技术的发展史1929年,Edward Link设计出用于训练飞行员的模拟器,使乘坐者的感觉和坐在真的飞机上是一样的。1956年,Morton Heilig开发出摩托车仿真器 Sensorama , Sensorama具有三维显示及立体声效果,并能产生振动和风吹的感觉。1968年,Ivan Sutherland研制成功了带跟踪器的头盔式立体显示器(Head Mounted Display,HMD) 1972年,Nolan Bushnell( Ivan Sutherland 学生)开发出第一个交互式电子游戏Pong ,在一台机器上模拟乒乓球, 1977年,Dan Sandin、Tom

2、 DeFanti和Rich Sayre研制出第一个数据手套Sayre Glove20世纪80年代,美国国家航空航天局(NASA)组织了一系列有关VR技术的研究 :1984年,NASA Ames研究中心的M. McGreevy 和J. Humphries开发出用于火星探测的虚拟环境视觉显示器;1987年,Jim Humphries设计了双目全方位监视器(BOOM)的最早原型。1.1虚拟现实技术的发展史1929年,Edward Lin1965年,Ivan Sutherland发表论文“Ultimate Display”(终极的显示)1965年,Ivan Sutherland在篇名为The Ulti

3、mate Display(终极的显示)的论文中首次提出了包括具有交互图形显示、力反馈设备以及声音提示的虚拟现实系统的基本思想,从此,人们正式开始了对虚拟现实系统的研究探索历程.1966年,美国的MIT林肯实验室在海军科研办公室的资助下,研制出了第一个头盔式显示器(HMD),随后又将模拟力和触觉的反馈装置加入到系统中.1967年,美国北卡罗来纳大学开始了Grup计划,研究探讨力反馈(Force Feedback)装置。该装置可以将物理压力通过用户接口引向用户,可以使人感到一种计算机仿真力。1990年,在美国达拉斯召开的Siggraph会议上,明确提出VR技术研究的主要内容包括实时三维图形生成技术

4、、多传感器交互技术和高分辨率显示技术,为VR技术的发展确定了研究方向。 从20世纪90年代开始,VR技术的研究热潮也开始向民间的高科技企业转移。著名的VPL公司(发出第一套传感手套命名为“DataGloves”,第一套HMD命名为“EyePhones”。20世纪90年代,迅速发展的计算机软件、硬件系统使得基于大型数据集合的声音和图像的实时动画制作成为可能,越来越多的新颖、实用的输入输出设备相继进入市场,而人机交互系统的设计也在不断创新,这些都为虚拟现实系统的发展打下了良好的基础。其中,利用虚拟现实技术设计波音777获得成功,是近几年来又一件引起科技界瞩目的伟大成果。1965年,Ivan Sut

5、herland发表论文“Ulti1.2虚拟现实技术的概念 1、 虚拟现实技术是指利用计算机生成一种模拟环境,并通过多种专用设备使用户“投入”到该环境中,实现用户与该环境直接进行自然交互的技术。VR让用户使用人的自然技能对虚拟世界中的物体进行操作,并能提供视觉 听觉 触觉 等直观自然的实时感知。 2、 一个完整的虚拟现实系统由虚拟环境、以高性能计算机为核心的虚拟环境处理器、以头盔显示器为核心的视觉系统、以语音识别、声音合成与声音定位为核心的听觉系统、以方位跟踪器、数据手套和数据衣为主体的身体方位姿态跟踪设备,以及味觉、嗅觉、触觉与力觉反馈系统等功能单元构成。3、BOOM可移动式显示器:它是一种半

6、投入式视觉显示设备。使用时,用户可以把显示器方便地置于眼前,不用时可以很快移开。BOOM使用小型的阴极射线管,产生的像素数远远小于液晶显示屏,图像比较柔和,分辨率为12801024像素,彩色图像。TELETACT手套它是一种用于触觉和力觉反馈的装置,利用小气袋向手提供触觉和力觉的刺激。这些小气袋能被迅速地加压和减压。当虚拟手接触一件虚拟物体时,存储在计算机里的该物体的力模式被调用,压缩机迅速对气袋充气或放气,使手部有一种非常精确的触觉。数据衣为了让VR系统识别全身运动而设计的输入装置。数据衣对人体大约50多个不同的关节进行测量,包括膝盖、手臂、躯干和脚。通过光电转换,身体的运动信息被计算机识别

7、。通过BOOM显示器和数据手套与虚拟现实交互数据衣 1.2虚拟现实技术的概念 1、 虚拟现实技术是指利用计算1.3虚拟现实技术的特征VR技术的三角形 交互性(Interactivity)指用户对虚拟环境中对象的可操作程度和从虚拟环境中得到反馈的自然程度(包括实时性)。主要借助于各种专用设备(如头盔显示器、数据手套等)产生,从而使用户以自然方式如手势、体势、语言等技能,如同在真实世界中一样操作虚拟环境中的对象。沉浸感(Immersion)又称临场感,是指用户感到作为主角存在于虚拟环境中的真实程度。VR技术最主要的特征。VR 的“沉浸感”特性使它与一般的交互式三维图形有较大的不同:用户可以沉浸于数

8、据空间,可以从数据空间向外观察,从而可以使用户能以更自然、更直接的方式与 数据交互。利用沉浸功能,使用户暂时与现实隔离,投入到虚拟环境中去,从而能更真实地注视数据。VR界面也可以给技术人员及创作人员提供真实数据,以便正 确创建虚拟环境,这样有助于用户更快、更全面地分析理解数据。因此,VR技术将从根本上改变人与计算机系统的交互操作方式。 想象力(Imagination)指用户在虚拟世界中根据所获取的多种信息和自身在系统中的行为,通过逻辑判断、推理和联想等思维过程,随着系统的运行状态变化而对其未来进展进行想象的能力,随意构想客观不存在或不可能发生的环境。对适当的应用对象加上虚拟现实的创意和想象力,

9、可以大幅度提高生产效率、减轻劳动强度、提高产品开发质量。1.3虚拟现实技术的特征VR技术的三角形 1.4虚拟现实系统的分类 1.4.1 桌面式VR系统使用个人计算机和低级工作站来产生三维空间的交互场景。用户会受到周围现实环境的干扰而不能获得完全的沉浸感,但由于其成本相对较低,桌面式VR系统仍然比较普及,与一般用户接过。最大的优点:便宜。 1.4.2 沉浸式VR系统利用头盔显示器、洞穴式显示设备和数据手套等交互设备把用户的视觉、听觉和其他感觉封闭起来,而使用户真正成为VR系统内部的一个参与者,产生一种身临其境、全心投入并沉浸其中的体验。 系统中有个用户的替身。用户在系统外面,用户与替身在感觉上有

10、一个距离,这个距离越小。沉浸感超强,当用户与替身完全重合是。用户就完全进入到系统中了与桌面式VR系统相比,沉浸式VR系统的主要特点在于高度的实时性和沉浸感。1.4.3 增强式VR系统允许用户对现实世界进行观察的同时,将虚拟图像叠加在真实物理对象之上。为用户提供与所看到的真实环境有关的、存储在计算机中的信息,从而增强用户对真实环境的感受,又被称为叠加式或补充现实式VR系统。可以使用光学技术或视频技术实现。1.4.4 分布式VR系统指基于网络构建的虚拟环境,将位于不同物理位置的多个用户或多个虚拟环境通过网络相连接并共享信息,从而使用户的协同工作达到一个更高的境界。主要被应用于远程虚拟会议、虚拟医学

11、会诊、多人网络游戏、虚拟战争演习等领域。1.4虚拟现实系统的分类 1.4.1 桌面式VR系统第二章 VRML基础知识2-1 什么是VRML VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。是目前Internet上基于 WWW的三维互动网站制作的主流语言。2-2 vrml 发展历史1993.12 Parisi和Pesce开始开发第一个VRML测览器; 1994.03 首届WWW大会在日内瓦召开,提出VRML; 1994.06 开始VRML邮件列表; 1994.1

12、0 产生了基于SGI的Open Inventor文件格式的VRMLl0第一稿; 1996.03 VRML结构组通过Moving World,并就VRML20标准进行投票; 1996.08 通过VRML20标准。 1998年12 vrml组织- web3d vrml+java+xml-x3d2.3 VRML工作原理Vrml的设计是从WEB上欣赏实时3D图象开始的,VRML可以是一个浏览器插件,也是一个独立的应用程序,它与传统的虚拟现实中使用同样 的3D着色引擎,使它从三维建模和动画分离出来,三维建模与动画应用中可以预先对场景着色。但是不能选择方向。而VRML提供6+1个自由度。可以三个方向移动

13、也可以转动,还可以与其它3D超链接。VRML定义一个把3D图形与多媒体集成一起文件格式 。从语法角度看。VRML定式定义组织3D多媒体对象。又语义看:VRML描述的基于时间的交互式3D多媒体信息抽象功能行为。这个3D空间就称为虚拟境界。第二章 VRML基础知识2-1 什么是VRMLVRML使用场景图来建立3D境界,它是一种代表所有3d世界静态特征的节点等级:几何关系 材质 纹理 转换 光线 视点等几乎所有3D厂家 无论CAD 动画 建模 VR,它们的核心都有场景图。VRML中的对象属性用节点来描述。节点按一定规则构成场景图。场景图有二类节点:一是用于视觉与听觉角度表现对象,反映空间结构,另一类

14、对于事件和路由。确定虚拟世界随时间动态变化。 对三维虚拟世界描述建模 渲染 交互 动画 细节及碰撞 超链接-4 VRML浏览器Cortona3d CosmoPlayer BitmanagmentVRML工具VRMLPADVRML使用场景图来建立3D境界,它是一种代表所有3d世界静VRML文件VRML文件主要包括VRML文件头造型事件路由事件体系脚本原型等体系元素。1.VRML文件类型.VRML文件是由通用文本编辑系统或专用VRML开发工具编辑的ASCII文件格式的场景描述性语言,其文件类型扩展名为.wrl或.wrz,一般使用.wrl文件扩展名。2.VRML文件头#VRML V2.0 utf8V

15、RML文件头由四部分组成,各部分意义说明如下:1)VRML文件头由“#”字符起始,“#”字符说明后为一个文本型的说明字符串.(2)VRML文件头的第二部分是“VRML”字符串,该字符串提示浏览器该文件是一个VRML文件.(3)VRML文件头的第三部分是“V2.0”字符串,该字符串提示浏览器该VRML文件遵循VRML规范2.0版本.(4)VRML文件头的第四部分是“utf8”字符串,该字符串提示浏览器该VRML文件是一个使用国际标准UTF-8字符集的文件.UTF-8的英文全称是UCS Transform Format,而UCS是Universal Character Set的缩写.VRML文件V

16、RML文件主要包括VRML文件头造型事件VRML节点。每个VRML文件都是一个基于时间的三维空间表示,它包含了可通过多种机制动态变化的由视、听和对象组成的虚拟环境。VRML节点名称 DEF节点名称节点通过VRML建模的虚拟环境专业上又称之为场景图。场景图由一系列无序节点组成,节点则用以描述环境中的对象及其属性。VRML造型VRML中的场景由造型组成,而造型则由节点(Node).在最高抽象层,VRML定义了一组节点机制用于三维场景制作,再由浏览器进行实时渲染.VRML中的所有节点都可以有零个或多个域(Field).每个域取域值,不同的域对应不同的域值类型.VRML定义了20种基本数据类型,也分为

17、两类:以SF开头的是单值类型,该类型只有一个单一的数或数组;以MF开头的是多值类型,该类型指定一个数或数组的列表SFBool, SFColor, MFColor, SFFloat,MFFloat,SFImage,SFInt32, MFInt32, SFNode, MFNode, SFRotation, MFRotation, SFString, MFString, SFTime, MFTime, SFVec2f,MFVec2f,SFVec3f,MFVec3f. VRML事件、路由、事件体系.节点除具有域属性外,还具有事件(event)属性。事件是VRML实现用户交互与场景动态变化的最主要内容。

18、事件为节点提供了接收外界信息以及外界发送信息的能力。节点通过事件入口接收入事件,通过事件出口发送出事件。入事件要求节点改变自己某个域的取值,而出事件则要求改变其他节点的域值。VRML对节点的说明中经常包含标有”exposedField”的公共域,该类型域隐含着与下面两种系统缺省定义的事件相关。路由为创作者提供了一种独立于场景层次体系的系统机制,通过这种机制,事件得以蔓延传播从而引起其他节点的变化。VRML节点。每个VRML文件都是一个基于时间的三维空间表示VRML脚本为使VRML具有更强的人机交互能力和可控性,可以在事件发生器与事件接收器之间插入脚本(Script)节点。脚本节点实际上是一个外

19、壳,它包含一组利用脚本描述语言,如Java,JavaScript编写的函数或方法。VRML原型用户可以通过VRML原型机制扩充VRML标准节点类型集。原型节点定义应对其中需要使用的域、入事件和出事件分别加以说明,原型定义既可以在引用该原型的文件中进行,也可以在外部文件中定义而后在其他的场景文件中引用。程序注释为VRML文件添加注释要求以”#”字符开头,并结束于该行的末尾。VRML空间VRML的场景建设默认情况下使用VRML系统缺省空间坐标系,用户也可以使用Transform节点对缺省空间进行变换,以形成相对于父坐标系的子坐标系。1.VRML空间坐标系。VRML系统默认的坐标系为一个立体三维的空

20、间坐标系。该坐标系的原点位于VRML平面浏览器的中心位置,X轴正向由原点指向屏幕右侧,Y轴正向由原点指向屏幕上方,Z轴正向由原点垂直指向用户。2.VRML空间计量单位。VRML造型大小、方位均使用VRML空间计量单位。空间计量单位又分为长度计量单位和角度计量单位两种。长度计量单位也之为VRML单位,用来度量造型的空间位置及大小尺寸。角度单位用以计量VRML空间变换坐标系的旋转角度。VRML的角度使用常规的弧度计量单位比例。VRML脚本SFImage一个SFImage域含有非压缩的二维彩色图像或灰度图像。一个SFImage域,首先列出三个整数值,前两个表示图片的宽度和高度,第三个整数表 示构成图

21、像格式的元素个数(1-4),随后,按(宽度高度)的格式列出一组16进制数,数与数之间以空格分隔,每一个16进制数表示图像中一个单独的 像素。图像格式的元素个数表示这张图像是灰度图还是彩色图,以及是否包括透明像素或半透明像素。单元素图像中的每一个像素用一个16进制的字节表示,所表 示的是一个像素的亮度。例如:0XFF表示最高亮度(白色),而0X00表示最低亮度(黑色)。双元素图像用两个字节表示一个像素。第一个字节表示亮度, 第二个字节表示透明度。表示透明度时,字节为0 xFF表示完全透明,而0 x00表示不透明。所以0 x40C0表示1/4亮度(暗灰)和3/4透明度。三元 素图像的每个像素有三个

22、字节表示,每个字节表示像素颜色中红绿蓝分量(所以0 xFF0000表示红色)。四元素图像是在红绿蓝三色的值之外再加一个表示透 明度的字节(所以0 x0000FF80表示办透明的蓝色)。和双元素图像一样,透明度字节为0 xFF表示完全透明,而0 x00表示完全不透明。为了提高可 读性,最好把所有的16进制字节都写全,包括前导0。然而,写出每个字节有时是不必要的。例如可以把一个三元素图像的蓝色像速写成0 xFF而不是 0 x0000FF。像素的排列规定从左到右、从底到顶的顺序。第一个16进制数描述一个图像最左下角的像素,最后一个则描述右上角的像素。例:1 2 1 0XFF 0X00 一个像素宽,两

23、个像素高的灰度图像,底部像素是白的,顶部像素是黑的。2 4 3 0XFF0000 0X00FF00 0 0 0 0 0XFFFFFF 0XFFFF00 两个像素宽,四个像素高的RBG图像,左下角像素是红色,右下角像素是绿色,中间两行是黑色,左上角像素是白色,右上角像素是黄色。在任何脚本节点或原型内都可以使用这种类型的域,但是,使用的具体地点只能在PiexlTexture(像素纹理)节点。SFImage域的输出事件的初始值为(0,0,0)。SFImage域值类型SFBool一个SFBool域只含有一个Bool值。TRUE和FALSE(不带引号也不带任何标点符号)是SFBool域仅有的两个有效值。

24、SFBool输出事件的初始值是FALSE。注意:一般的程序设计重用和表示True和False值,在VRML中不允许。 SFColor 和 MFColorSFColor域是只有一个颜色值的单值域。SFColor值和RGB值一样,由一组三个浮点数组成。每个数都是从0.0-1.0,极值包括在内,分别表示构成颜色的红绿蓝三个分量。MFColor域是一个多值域,包含任意数量的RGB颜色值。例如: 1.0 0.0 0.0,0 1 0,0 0 1 表示三种颜色红绿蓝的组成。SFColor域的输出事件的初始值是(0,0,0)。而MFColor域的输出事件的初始值是 。 SFFloat 和 MFFloat一个S

25、FFloat域含有一个ANSI C格式的单精度浮点数。一个MFFloat域含有零个或多个ANSI C格式的单精度浮点数。即允许空白,不赋任何值。SFFloat域输出事件的初始值为0.0。MFFloat域输出事件的初始值为。SFInt32 和 MFInt32一个SFInt32域含有一个32位整数。一个SFInt32值是由一个十进制或十六进制(以OX开头)格式的整数构成。一个 MFInt32域是多值域,由任意数量的以逗号或空格分隔的整数组成。例如:17,-0 xE20,-518820SFInt32域的输出事件的初始值为0,MFInt32域的输出事件的初始值为。 域值类型SFBoolSFNode 和

26、 MFNode一个SFNode域含有一个单节点,必须按标准节点句法写成。一个MFNode域包含任意数量的节点。例:Transform translation 1 0 0,DEF PANDORA box,USE PANDORA一个SFNode允许包含一个关键字NULL,此时,表示它不包含任何节点。注意:一个组或一个变换的children域也就是列出一组节点的 MFNode域。把SFNode域放入一个脚本节点,就使节点的脚本可以直接存取列在SFNode域的节点,而不需要一个ROUTE语句。SFNode域 的输出事件的初始值为NULL,MFNode域的输出事件的初始值为。 SFRotation 和

27、MFRotationSFRotation域规定一个绕任意轴的任意角度的旋转。SFRotation值含有四个浮点数,各数之间以空格分隔。前三个数表示旋转轴(从原点到给定点的向量);第四个数表示围绕上述轴旋转多少弧度。例:绕y轴旋转180度; 表示为 0 1 0 3.1416 MFRotation域可包含任意数量的这类旋转值。注意:视点的旋转是从缺省的视点方向开始的,该方向是从(0,0,10)沿-z轴观察。SFRotation域的输出事件的初始值为(0 0 1 0),MFRotation域的输出事件的初始值为。 SFTime 和 MFTimeSFTime域含有一个单独的时间值。每个时间值是一个AN

28、SI C格式的双精度浮点数,表示的是从1970年1月1日(GMT,格林威治平均时)子夜开始计时,延续当前时间的秒数。MFTime域包含任意数量的时间值。SFTime域的输出事件的初始值为-1,MFTime域的输出事件的初始值为。 SFNode 和 MFNodeSFString 和 MFStringSFString域包含一串字符,各字符遵照UTF-8字符编码标准(ASCII是UTF-8的子集,可以由于SFString域)SFString值含有双引号括起来的UTF-8 octets字符串。任何字符(包括“#”和换行符)都可在双引号中出现。为了在字符中使用双引号,在它之前加一个反斜杠“”。为了在字符

29、串中使用反斜杠,连续打两个反斜杠“”。例如:One,Two,Three,123.He asked, Who is #1?MFString域含有零个或多个单值,每个单值都和SFString值的格式一样。SFString域的输出事件的初始值为“”,MFString域的输出事件的初始值为。 SFVec2f 和 MFVec2fSFVec2f域定义了一个二维向量。SFVec2f的值是两个由空格分隔的浮点数。MFVec2f域是多值域,包含任意数量的二维向量值。例如:0 0,1.2 3.4,98.6 -4e1SFVec2f域的输出事件的初始值为(0 0),MFVec2f域的输出事件的初始值为。 SFVec3

30、f 和 MFVec3fSFVec3f域定义了一个三维空间的向量。一个SFVec3f值包含三个浮点数,数与数之间以空格分隔。该值表示从原点到所给定点的向量。MFVec3f域包含任意数量的三维向量值。例如:0 0 0,1.2 3.4 5.6,98.6 -461 451SFVec3f域的输出事件的初始值为(0 0 0),MFVec3f域的输出事件的初始值为。SFString 和 MFStringVRML时间体系Vrml场景中。时间推移通过时间检测器(timesensor) 随时间流逝产生事件,每一个事件随带有一个时间戳(timestamp),用于标志事件产生的时间,浏览器根据时间对事件决定对事件处理

31、顺序。时间0.0等于格林尼治时间1970.1.1 00:00:00. 时间戳为t的事件产生大于或等于t 事件。VRML时间体系Vrml场景中。时间推移通过时间检测器(tiVRML 的关键字DEF:给后续的节点命名,这个名字就是节点名,典型格式为:DEF 节点名 节点 USE: 引用DEF定义的节点名,典型格式为:USE 节点名 TRUE:表示“真”,“”,“是”等,用于给SFBool域赋值。 FALSE:表示“假”,“0”,“否”等,用于给SFBool域赋值。 NULL:表示空值,用于给SFNode域赋空值。 PROTO:用于声明自定义节点的原型,典型格式为:PROTO 节点名称 域的自定义(

32、包括其缺省值)事件的自定义节点实体 EXTERNPROTO:用于预解释引用的外部定义节点的原型,典型格式为: EXTERNPROTO 节点名称 域的自定义(不包括其缺省值)事件的自定义 外部节点的资源定位其中域、事件的类型和名称必须与引用的外部节点中的定义一样。外部节点的资源定位格式为:URL/URN或URL/URN,URL/URN,。资源定位可以为URL或URN格式,当使用URL/URN或URL /URN,URL/URN,的数组形式时,浏览器使用数组中第一个正确寻获的资源。资源的形式也可以写为:URL/URN # externProtytypeName,externProtytypeName

33、为引用的外部节点的名称,这时候,可以使用与外部节点定义的名称不同的 节点名称。 VRML 的关键字DEF:给后续的节点命名,这个名字就是节VRML 的关键字ROUTE:构成事件通路。典型格式为:ROUTE fromNode.fromEvent TO toNode.toEventfromNode 为发出事件的节点的名称。fromEvent 为事件输出的名称。toNode 为接受事件的节点的名称。toEvent 为事件输入的名称。 TO:见ROUTE的说明。 eventIn:定义事件输入,典型格式为:eventIn 数值类型 事件名 eventOut:定义事件输出,典型格式为:eventOut 数

34、值类型 事件名 field:定义私有域,典型格式为:field 数值类型 域名 缺省值 exposedField:定义公共域,典型格式为:exposedField 数值类型 域名 缺省值 IS:用于原型声明中,把自定义的域和事件与执行体中节点的域和事件等同起来。典型格式为:执行体中节点的域或事件 IS 自定义的域或事件 VRML 的关键字ROUTE:构成事件通路。典型格式为:RShape 节点(1) Shape节点语法格式如下:Shape appearance NULL #exposedField SFNodegeometry NULL #exposedField SFNodeShape节点由

35、两个重要的属性组成,即造型的外观属性和几何属性。造型的外观属性由appearance域的域值设置:指定另一个外观节点Appearance节点,缺省为NuLL, 表示不包含任何外观节点,此时系统使用缺省的造型 外观属性(白色发光)。造型的几何属性由geometry域的域值设置:指定另一个造型节点,如Box、Sphere节点等,其缺省为NULL,表示不包含任何造型节点,即不创建任何造型。Shape节点的功能在于创建geometry域设置的造型,并将Appearance节点指定的外观属性应用到geometry域的造型节点上。Shape 节点(1) Shape节点语法格式如下:ImageTexture

36、如果不使用textureTransform对纹理图进行缩放处理,浏览器会自动调整纹理图大小,使其恰好填充好造型表面。只有需要缩小纹理图,使其小于造型表面时,才需设置repeatS ,repeatTImageTexture如果不使用textureTransfVRML基本几何造型空间造型:VRML可见形体基本构成模块是造型,由节点和域描述构成。空间造型节点定义几何形体的形状任何一个VRML虚拟场景中的空间造型都必须使用Shape节点加以创建,场景造型包括基本几何造型(立方体、球体、圆柱体、圆锥体),文本造型以及点、线、面方式构造的任意几何造型。1. Box节点用于创建标准立方体几何造型。Box节点

37、语法格式如下: Box size 2.0 2.0 2.0 #field SFVec3f size 域值指定一个以VRML空间坐标系原点为中心,且每个面均与坐标平面平行的三维2. Sphere 节点用以创建标准球体几何造型。Sphere节点语法格式如下: Sphere radius 1.0 #field SFFloat Sphere节点仅包含一个radius私有域, radius域的域值指定一个以VRML空间坐标系原点为中心的球 体的半径尺寸,其缺 省值为1.0。VRML基本几何造型空间造型:VRML可见形体基本构成模块是基本几何造型3. Cylinder节点用于创建标准圆柱体几何造型。Cyli

38、nder节点语法格式如下: Cylinder radius 1.0 #field SFFloatheight 2.0 #field SFFloattop TURE #field SFBoolside TURE #field SFBoolbottom TURE #field SFBool Cylinder节点共有5个私有域。标准Cylinder节点创建的是底圆半径为1个VRML长度单位,高度为2个VRML长度单位的以空间坐标系原点为中心、以y轴为中心轴的圆柱体。4. Cone 节点用以创建标准圆锥体几何造型。Cone节点语法格式如下: ConebottomRadius 1.0 #field SF

39、Floatheight 2.0 #field SFFloatside TRUE #field SFBoolbottom TRUE #field SFBool Cone节点共有4个私有域。标准Cone节点创建的是底圆半径为1个VRML长度单位,高度为2个VRML长度单位的以空间坐标系原点为中心、以Y轴为中心轴的圆锥体。基本几何造型3. Cylinder节点基本几何造型size 域值指定一个以VRML空间坐标系原点为中心,且每个面均与坐标平面平行的三维长方体的长、宽、高尺寸。缺省值为(2.0 2.0 2.0),分别表示长方体在x、y、z轴方向上的长度值。基本几何造型基本几何造型Sphere节点仅包

40、含一个radius私有域, radius域的域值指定一个以VRML空间坐标系原点为中心的球 体的半径尺寸,其缺 省值为1.0。基本几何造型基本几何造型radius域:以y轴为中心轴的圆柱体的底圆半径尺寸(缺省值为1.0)height域:圆柱体在y轴上的高度(缺省值为2.0)top域:是否绘制顶圆(缺省值为TRUE)side域:是否绘制圆柱侧面(缺省值为TRUE)bottom域:是否绘制底圆(缺省值为TRUE)基本几何造型基本几何造型bottomRadius域:以y 轴为中心轴的圆锥体的底圆半径尺寸(缺省值为1.0)height域:圆锥体在y轴上的高度(缺省值为2.0)side域:是否绘制锥面(

41、缺省值为TRUE)bottom域:是否绘制底面(缺省值为TRUE)基本几何造型文本造型1.Text节点Text节点用来在VRML场景中创建文本造型,通常作为Shape节点geometry域的域值使用。Text节点语法格式如下:Text string length maxExtent 0.0 fontStyle NULL1.Text节点String域的域值使用UTF-8编码设置要创建的文本内容。每一行字符都由双引号界定,引号内的回车符。Length域的域值设置每一行字符的长度,以VRML长度单位进行度量。Length域的域值要与string域的域值一一对应,即length域的一个域值控制stri

42、ng域的一行字符的长度。该域值缺省为空列表,即不另外设置文本行长度,渲染时由浏览器自动设置。maxExtent域的域值设置文本造型中任意一行在主要方向上的最大范围,同样以VRML长度单位进行计量,该域值必须大于等于0.0。文本造型1.Text节点fontStylefontStyle域用来定义文本造型的字体特征,其域值要指定另一个FontStyle节点。通常设定FontStyle节点属性可以改变由Text节点创建的文本造型的默认特征。2.FontStyle节点FontStyle节点只用做Text节点fontStyle域的域值属性,通过设置FontStyle节点可以改变由Text节点创建的文本造型

43、的默认字体特征。FontStyle family “SERIF” style “PLAIN” size 1.0 spacing 1.0 horizontal TRUE leftToRight TRUE topToBottom TRUE justify “BEGIN” language “”fontStylefontStyle域用来定义文本造型的字体Family域的域值设置Text节点文本造型使用的字符集,字符集包括”SERIF”、”SANS”和”TYPEWRITER”三种,浏览器将在规定的字符集中选择特定的字体进行渲染。Style域的域值用来设置所创建文本的字体风格,包括”PLAIN”、”BO

44、LD”、”ITALIC”和”BOLDITALIC”四种。Size域的域值用来设置所创建字符的大小尺寸。Spacing域的域值用来设置所创建文本字符的行间距。Horizontal域的域值决定文本行是水平生长还是垂直生长。leftToRight域的域值决定文本块或其中的字符是从左到右排列还是从右到左的排列。topToBottom域的域值决定文本块或其中的字符是从上到下生长还是从下到上生长。Justify域的域值决定文本造型中字符块的对齐方式,这是相对XOZ平面或YOZ平面进行定义的。Language域的域值设置VRML所使用的语言Family域的域值设置Text节点文本造型使用的字符集,字编组节点

45、前面创建的VRML场景都仅由一个单一的几何造型组成,这显然不能满足VRML对真实世界复杂场景的虚拟要求。使用Group编组节点可以将多个相同或不同的VRML节点进行编组,以捆绑创建复杂造型。VRML空间变换VRML场景中的每一个造型都是基于当前坐标系进行创建的,而单一坐标系的使用将在很大程度上限制用户的空间想象力和创造力的发挥。如果希望场景中的造型在空间中改变方位,则需要进行VRML空间变换,也即变换造型创建所基于的空间坐标系。编组节点Group节点Group编组节点语法格式如下:Group children bboxCenter 0.0 0.0 0.0 bboxSize -1.0 -1.0

46、-1.0 addChildren #eventIn MFNode removeChildren #eventIn MFNodeGroup编组节点包括一个公共域、两个私有域以及一个入事件和一个出事件:Children域的域值设置包含在该编组节点中的子节点列表,浏览器渲染时将逐个创建该域值中所包含的每个造型或造型编组。bboxCenter域的域值设置包围该编组节点造型的包围盒的中心点位置。bboxSize域的域值设置包围该编组节点造型(包括所有子节点造型)的包围盒在当前坐标系X、Y、Z方向上的尺寸。addChildren入事件用于将指定的节点增加到该编组节点的子节点列表中。removeChildr

47、en入事件用于将指定的节点从该编组节点的子节点列表中删除;若该节点不在子节点列表中,则事件将被忽略。Group节点Group编组节点语法格式如下:Transform节点Transform节点与Group节点一样均为编组节点,但Transform节点是为其子节点定义坐标系统的节点,它更重要的作用在于对VRML空间坐标系进行变换,以建立一个或多个相对于已有坐标系的新坐标系。Transform编组节点语法格式如下:Transform children translation 0.0 0.0 0.0 rotation 0.0 0.0 1.0 0.0 scale 1.0 1.0 1.0 scaleOri

48、entation 0.0 0.0 1.0 0.0 center 0.0 0.0 0.0 bboxCenter 0.0 0.0 0.0 bboxSize -1.0 -1.0 -1.0 addChildren #eventIn MFNode removeChildren #eventIn MFNodeTransform节点Transform节点与Group节点Transform节点语法Children域的域值设置受该编组节点指定的变换影响的子节点列表,浏览器渲染时将逐个变换并创建该域值中所包含的每个造型或造型编组。Translation域的域值设置变换坐标系的原点相对于父坐标系原点在XYZ方向上的

49、偏移距离。rotation域的域值设置变换坐标系的原点相对于父坐标系进行旋转的旋转轴及其旋转角度。scale域的域值设置变换坐标系在XYZ方向上的缩放系数。scaleOrientation域的域值设置变换坐标系在XYZ方向上的缩放系数。center域的域值设置一个三维坐标点,该三维坐标点位于变换坐标系上,坐标系的旋转和缩放均围绕该中心点进行。bboxCenter域的域值设置包围该编组节点造型的包围盒的中心点坐标。bboxSize域的域值设置包围该编组节点造型的包围盒在当前坐标系XYZ方向上的大小Transform节点语法Children域的域值设置受该编第三章 VRML高级造型节点PointS

50、etIndexedLineSetIndexedFaceSetExtrusionElevationGrid第三章 VRML高级造型节点PointSet它定义一组在基于顶点的几何体节点的coord域中使用的3D坐标。它可以出现在IndexedFaceSet、IndexedLineSet或者PoitSet的coord域中。其结构如下:Coordinate exposeField MFVec3f point point 定义基于顶点的形状的各个顶点的点集。PointSet节点PointSet节点中的color域用来为点造型着色,其域值为Color颜色节点。Color节点语法格式如下:Color col

51、or Coordinate它定义一组在基于顶点的几何体节点的coord域中使用的3D坐几何点造型PointSet节点VRML中的点造型是置于VRML场景中一个像素大小的空间点,该像素点的位置由VRML空间坐标系XYZ三维分量确定。使用PointSet节点可以在VRML场景中创建一个由离散点集构造的空间几何造型。PointSet节点语法格式如下: PointSet coord NULL color NULL PointSet节点中的coord域用来设置空间点造型的位置坐标,其域值为Coordinate坐标节点。Coordinate节点语法格式如下:Coordinate point Coordin

52、ate节点中的point域为Coordinate节点提供一系列三维的空间点位置坐标列表。每一空间坐标由XYZ三分量组成,在每一个空间坐标位置处将自动生成一个空间点造型。几何点造型PointSet节点VRML中的点造型是置于V几何线造型IndexedLineSet节点VRML中的线造型是虚拟世界中任意两个坐标点之间相互连结的空间直线,或多个坐标点之间逐次连结的直线段所构成的空间拆线。使用IndexedLineSet节点可以在VRML场景中创建一个由离散点集经索引而构造的空间线造型。IndexedLineSet节点语法格式如下:IndexedLineSet coord NULL coordInde

53、x color NULL colorPerVertex TRUE set_coordindex set_colorIndexCoord域设置线造型的坐标,其域值为Coordinate坐标节点。coordIndex域的域值设置一系列用以创建一条直线或多条折线路径的坐标索引列表。Color域用来为线造型单独着色,其域值为Color颜色节点。colorIndex域的域值设置一系列用以渲染一条或多条折线路径的颜色素索引列表。colorPerVertex域的域值设置对线造型的颜色渲染是基于端点(其域值为TRUE)还是基于线段(其域值为FALSE)。几何线造型IndexedLineSet节点VRML中的线

54、造几何面造型IndexedFaceSet节点VRML中的面造型是虚拟世界中由任意多个平面坐标点逐次相连并首尾相结所围成的一个封闭、着色的折线区域。IndexedFaceSet节点语法格式如下:IndexedFaceSet coord NULL coordIndex texCoord NULL texCoordIndex color NULL colorPerVertex TRUE normal NULL normalIndex normalPerVertex ccw TRUE convex TRUE solid TRUE creaseAngle 0.0 set_coordIndex set_t

55、exCoordIndex set_colorIndex set_normalIndex几何面造型IndexedFaceSet节点VRML中的面造IndexedFaceSet节点Coord域设置空间面造型的顶点坐标,其域值为Coordinate节点。coordIndex域的域值设置一系列用以创建一张或多张平面折线路径的坐标索引列表。texCoord域用来为IndexedFaceSet节点创建的不规则平面造型进行特殊纹理渲染,其域值要设置另一个TextureCoordinate节点。texCoordIndex域的域值设置一系列用以渲染一张或多张平面的纹理坐标索引列表。IndexedFaceSet节

56、点中的color域用来为面型着色,其域值为Color颜色节点。Color节点中的color域为IndexedFaceSet节点创建的一系列空间面造型进行单独着色。colorIndex域的域值设置一系列用以渲染一张或多张平面的颜色索引列表。colorPerVertex域的域值设置对面造型的颜色渲染是基于顶点还是基于平面。Normal域的域值要设置另一个Normal节点,该节点用于指定面集中的平面或顶点的单位法向量,单位法向量用于改变场景光线的明暗渲染效果。normalIndex域的域值设置一系列用以进行明暗控制的单位法向量的索引列表。IndexedFaceSet节点Coord域设置空间面造型的E

57、levationGrid节点VRML中创建标高造型使用ElevationGrid节点进行,该节点通常作为Shape节点的geometry域的域值使用。ElevationGrid节点语法格式如下:ElevationGrid xDimension 0 xSpacing 0.0 zDimension 0 zSpacing 0.0 height texCoord NULL color NULL colorPerVerten TRUE normal NULL normalPerVertex TRUE ccw TRUE solid TRUE creaseAngle 0.0 set_heightElevat

58、ionGrid节点VRML中创建标高造型使用ElElevationGridxDimension域和zDimension域的域值设置标高在XZ方向上栅格顶点的数量,其域值必须大于等于0。xSpacing域和zSpacing域的域值设置标高造型在XZ方向上栅格宽度,其域值必须大于等于0.0。Height域的域值设置栅格顶点在Y方向上的海拔高度列表。texCoord域用来为ElevationGrid节点创建的标高造型进行特殊纹理渲染,其域值要设置另一个TextureCoordinate节点。ElevationGrid节点中的color域用来为标高造型着色,其域值为Color颜色节点。colorPer

59、Vertex域的域值设置对等高造型的颜色渲染是基于栅格顶点(其域值为TRUE)还是基于栅格平面(其域值为FALSE)。Normal域的域值要设置另一个Normal节点,该节点用于指定标高造型中的栅格顶点的法向量,单位法向量用于改变场景光线的明暗渲染效果。normalPerVertex域的域值设置对标高造型的单位法向量控制是基于栅格顶点(其域值为TRUE)还是基于栅格平面(其域值为FALSE)。ccw域的域值设置在光线模拟方程中,相对于自定义或默认单位法向量,标高造型顶点坐标系的设定方式。solid域的域值设置标高造型中的栅格平面是否构造一个实体。creaseAngle域的域值设置一个用弧度表示

60、的角的域值。ElevationGridxDimension域和zDime挤出造型VRML的工业挤出造型使用Extrusion节点创建,用于模拟工业加工工业中的一次成型挤压过程。Extrusion节点首先在当前坐标系XOZ平面折线,再在VRML空间中指定一条曲线作为二维平面折线的运动轨迹。在整个挤出过程中,二维折线的运动方向始终与空间曲线(脊线)上对应点切线方向一致。沿这个二维折线沿脊线运动所得到的造型就是工业挤出造型。地形标高造型在VRML中,所谓地形标高造型是首先在XOZ坐标平面上创建一个栅格(即空间面在XOZ坐标平面上投影面),然后再任意改变每个栅格在Y轴上的高度,以创建不规则的相对于地平

温馨提示

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

评论

0/150

提交评论