




已阅读5页,还剩251页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虚拟现实技术,主讲:杨文晖,第四章 VRML,1 VRML 简介2 VRML编程语法基础3 VRML基本节点编程4 群节点创建VRML立体空间造型5 VRML场景效果节点编程设计6 VRML动态感知虚拟现实节点7 VRML通用接口节点8 VRML实例编程,1 VRML简介,虚拟现实三维立体网络程序设计语言VRML是计算机科学的前沿技术。作为第二代网络程序设计语言的VRML完全改变了网络的二维平面世界,实现了真正意义上的三维立体网络世界、动态交互与智能感知等,实现计算机网络、多媒体及人工智能的完美结合使人们真正感受到21世纪计算机网络世界的无穷魅力。,1.1 VRML的发展历史,计算机技术的迅猛发展,已由初级计算、实时控制、事务处理等迅速朝着巨型化、微型化、网络化、智能化及多媒体化等方面发展。计算机将人类社会带人崭新的信息时代。尤其是计算机网络的飞速发展;使我们的地球变成了一个地球村早期的网络系统主要传送文字、数字等信息,但多媒体技术在网络上的应用,使目前计算机网络无法承受如此巨大的信息量。为此,人们开发出信息高速公路,即宽带网络系统,而在信息高速公路上驰骋的高速跑车就是VRML虚拟现实建模语言系统,也就是“虚拟现实三维立体网络程序设计语言”。,VRML(Virtusl Reality Modeling Language)是什么?虚拟现实建模语言,是一种三维造型和渲染的图形描述语言,通过创建一个虚拟场景以达到现实中的效果。VRML给网络带来了什么? VRML支持功能大大改变了原来万维网上单调、交互性较差的弱点,创建一个全新的可进入、可参与的三维虚拟现实世界。 VRML的重要性?是虚拟现实三维立体网络程序设计语言,是宽带网络、多媒体与人工智能相融合的高科技产品,是把握未来网络、多媒体及人工智能的关键技术。,VRML 虚拟现实建模语言用来在网络上创建逼真的三维虚拟场景。它改变了网络上2D 画面的状态,并能实现3D 动画效果,特别是改变了当前网络与用户交互的局限性,使得人机交互更加方便、灵活,使虚拟世界的真实性、交互性和动态性得到了更充分的体现。 VRML是虚拟现实建模语言,是一种三维造型和渲染的图形描述性语言,它把“虚拟世界”看做一个“场景”,而场景中的一切都被看做“对象” (也称为节点),对每一个对象的描述就构成了.wrl文件。,VRML主要为了在网页中实现三维动画效果及基于三维对象用户的交互。由于HTML网页不支持三维图像和立体声音文本的显示,因而只能停留在平面设计阶段,更不要说动态交互了。 VRML改变了原来WWW上的单调、交互性差的弱点,将人的行为作为浏览器的主体, VRML创造的是一个可进入、可参与的世界。你可以在计算机网络上看到生动活泼、逼真的三维立体世界,并可以自由地在网络上遨游、驰骋。,发展历史,虚拟现实三维立体网络程序设计语言始于20世纪90年代1991年MarkPesce和 TonyParsi 在美国旧金山开始计算机空间的设计并开发Web的3D接口,这是三维浏览器的原型,用来在因特网上浏览三维画面。1994年5月,在瑞士日内瓦CERN实验室举行的万维网(WWW)第一届国际会议上介绍了可在万维网上运行的虚拟现实界面,即虚拟现实建模语言。1994年10月,在芝加哥召开的第二次万维网会议上公布了VRML 10版规范草案。1996年初, VRML委员会审阅并讨论若干个VRML 20版本。1996年3月,VGA、 VRML设计小组决定将SGI(硅图公司 Slicon Graphics Inc)、Sony等公司的Moving Worlds方案改造成为VRML 20版,并于1996年8月公布。,1.2 VRML的特点,虚拟现实三维立体网络程序设计语言具有4大特点。 (1) VRML具有强大的网络功能,可以通过运行VRML程序直接接入Intemet。可以创建立体网页与网站。 (2) 具有多媒体功能,能够实现多媒体制作,合成声音、图像以达到影视效果。 (3) 创建三维立体造型和场景,实现更好的立体交互界面 (4) 具有人工智能,主要体现在VRML具有感知功能。可以利用感知传感器节点来感受用户及造型之间的动态交互感觉。虚拟现实三维立体网络程序设计语言VRML是第二代Web网络程序设计语言,是21世纪主流高科技软件开发工具,是把握未来宽带网络、多媒体及人工智能的关键技术。掌握了虚拟现实三维立体网络程序设计语言VRML ,就掌握了软件开发的主动权,可以在未来网络世界里驰骋翱翔。,1.3 VRML的发展前景,虚拟现实建模语言VRML设计源于虚拟现实技术。虚拟现实技术是20世纪末发展起来的涉及众多学科的高新技术,它是集计算机、仿真、微电子、传感与测量技术于一体的高新科技的融合。而虚拟现实建模语言VRML正是利用虚拟现实技术在计算机中创建一种虚拟环境,通过视觉、听觉、触觉、味觉、嗅觉及生理反映等感知器,使用户产生一种与现实生活相同的感受,有身临其境的感觉,甚至生理感觉,可实现用户与虚拟现实环境直接进行交互。虚拟现实建模语言VRML涉及计算机网络、多媒体和人工智能技术三大领域及自然科学、社会科学和哲学。具体地讲,虚拟现实环境一般包括计算机图形学、图像处理、模式识别、传感器、语音处理、网络技术、并行处理、人工智能等高新技术,还涉及天文、地理、数学、物理、化学、美学、医学、军事、生理学和心理学等领域。,计算机硬件技术、网络技术及多媒体技术的融合与高速发展使得虚拟现实技术获得了长足的发展,从而虚拟现实技术能在网络上得以实现和发展。目前网站使用的均为二维图像与动画网页,而采用虚拟现实建模语言VRML可以在网站上设计出虚拟现实三维立体网页场景和立体景物利用虚拟现实技术制造出一个逼真“虚拟人”,为医学实习、治疗、手术及科研做出贡献,也可应用于军事设计一个“模拟战场”,进行大规模高科技军事演习,这样既可以节省大量费用,又使部队得到了锻炼。在航空航天发射中,也可以制造一个“模拟航天器”,模拟整个航天器的生产、发射、运行和回收的全过程,从而可以节约大量的经费。虚拟现实技术还可以应用于工业、农业、商业、教学、娱乐和科研等方面应用前景非常广阔。虚拟现实建模语言VRML是21世纪计算机网络、多媒体及人工智能为一体的最为优秀的开发工具和手段。,1.4 VRML浏览器,VRML文件需要通过VRML文件的浏览器支持才能运行,否则,它是无法运行的。支持VRML文件的浏览器,常见的有Microsoft VRML浏览器和Cosmo播放器两种。这两款浏览器的操作按钮功能相似,但这两款浏览器(播放器)所定义的初始视点不同,所以同一VRML文件所显示的VRML场景不尽相同。在这个浏览器能正常浏览而在另一个浏览器中则不能正常运行的情况。 Cosmo播放器的下载网站为http:/wwwsoft999com, Windows IE 浏览器内嵌有VRML 浏览器。或需要插件,1.5 VRML编辑器,用记事本来编写源程序VRMLPad专用编辑器由ParallelGraphics公司开发的VRML开发工具,2 VRML编程语法基础,介绍VRML的文件结构、文件头及注释等VRML文件主要由节点、事件、场景、原型、脚本及路由等组成,其中节点又由域名、域值及域值类型组成;介绍VRML立体空间的计量单位,包括立体空间坐标、长度单位、角度单位及立体空间的颜色等节点集,2.1 VRML基本概念,虚拟现实三维立体网络(页)程序设计语言VRML涉及有关的基本概念和名词包括:节点域事件路由原型场景脚本它是编写VRML的基础。,什么是节点? 节点是VRML文件最基本的组成要素,是VRML文件基本的组成部分。节点是对客观世界中各种事物、对象、概念的抽象描述。VRML文件就是由许多节点之间并列或层层嵌套而构成的,什么是事件?每一个节点一般都有两种事件, 即一个“入事件”和一个 “出事件”。 在多数情况下,事件只是一个要改变域值的请求: “入事件”请求节点改变自己某个域的值“出事件” 则是请求别的节点改变它的某个域值。,什么是原型?原型是用户建立的一种新的节点类型,而不是一种“节点”。进行了原型定义就相当于扩充了VRML的标准节点类型集。节点的原型是节点对其中的域、入事件和出事件的声明,可以通过原型扩充VRML节点类型集原型的定义可以包含在使用该原型的文件中,也可以在外部定义原型可以根据其他的VRML节点来定义,也可以利用特定于浏览器的扩展机制来定义。,什么是物体的造型?物体的造型,即场景图由描述对象及其属性的节点组成。在场景图中,一类是由节点构成的层次体系组成;另一类是由节点事件和路由构成。,什么是脚本?脚本是一套程序,与其他高级语言或数据库的接口。在VRML中可以用Script节点利用Java或JavaScript语言编写的程序脚本来扩充VRML的功能。脚本通常作为一个事件级联的一部分而执行,脚本可以接受事件,处理事件中的信息,还可以产生基于处理结果的输出事件。,什么是路由?路由是产生事件和接受事件的节点之间的连接通道。路由不是节点,路由说明是为了确立被指定的域的事件之间的路径而人为设定的框架。路由说明可以在VRML文件的顶部,也可以在文件节点的某一个域中。在VRML文件中路由说明与路径无关,它既可以在源节点之前,也可以在目标节点之后,在一个节点中进行说明,与该节点无任何联系。路由的作用是将各个不同的节点联系在一起,使虚拟空间具有更好的交互性、立体感、动感性和灵活性。,什么是事件体系?在场景图中,除了节点构成的层次体系结构外,还有一个 “事件体系”。事件体系由相互通信的节点组成。在大多数的VRML节点中每一个事件都有一个输入和输出接口。输入接口就是能够接收事件的节点,称为eventIn,即入事件(也称事件入口);输出接口就是发送事件的节点,称为eventOut,即为出事件(也称事件出口)。一个节点一般具有多个不同的入事件和出事件,但有一些节点不同时具有这两种事件。 入事件和出事件通过路径相连,这就是VRML文件除节点外的另一基本组成部分路由(ROUTE)。ROUTE语句把事件出口和事件入口联系起来,从而构成了“事件体系”。,2.2 VRML立体空间计量单位,虚拟现实建模语言(VRML)要创建立体背景空间和立体造型空间就需要定位需要立体空间坐标系相应的长度角度单位颜色,2.2.1 VRML立体空间坐标系,VRML立体空间物体造型定位依靠VRML立体空间坐标系来实现。这些坐标轴为每个空间物体的造型定义了一个坐标系。它包括:X轴、Y轴、Z轴X轴、Y轴和Z轴相交的点构成了该坐标系的原点X轴的正方向指向右边,Y轴的正方向指向正上方,Z轴的正方向指向前方(即浏览者),如图2-1所示。空间物体的造型在该坐标系中的位置由相对于该坐标原点的三维坐标来确定。,2.2.2 VRML长度单位,VRML三维立体空间长度单位是统一的,只有一个单位标量,即VRML单位。 VRML单位并不是一个绝对的尺寸大小。 VRML尺寸和现实中的长度单位不具有任何可比性,只有在VRML单位间才具有可比性 VRML单位一般比实际的长度单位要小。在实际开发工作中,考虑到多个开发者在开发中协调统一的工作,通常都指定一个统一的参考标准,即以实际中的长度单位为准。,2.2.3 VRML角度单位,在VRML立体空间中使用的角度单位不是普通的角度,而是通常所使用的弧度。当在VRML使用角度单位时,先将角度单位换算成弧度单位后,再将其编写入VRML 源程序中。常用的角度与弧度换算表如表21所示。,2.2.4 VRML空间立体着色,VRML三维立体空间的着色,无论是立体空间背景、光线的颜色,还是立体空间中的各种物体,它们的颜色都是由3种基本颜色组合而成红、绿、蓝(RGB) 。红、绿、蓝(RGB)3种基本颜色对应3个浮点数,它们的域值分别在0.01.0之间。红、绿、蓝3种颜色组成各种各样姹紫嫣红的“颜色”,如下表所示。,VRML文件语法,VRML文件语法主要包括哪些?VRML文件头、节点、原型、造型、脚本和路由等是否每一个VRML文件都必须包含这6个部分?只有VRML文件头是必需的,而其他项不一定是必需的。 他们相互之间的关系?VRML立体空间的场景和造型是由节点构成的,再通过路由实现动态交互和感知,或者使用脚本文件与外部接口进行动态交互。在软件开发中,根据不同的实际情况编写不同的VRML程序,它所包含的成分也可能不同。在VRML文件中, “节点”是VRML核心、灵魂,如果没有节点, VRML也就不存在了。,VRML文件,VRML文件可由文本编辑器编写或由VrmPad专用编辑器编写,其VRML文件扩展名为.wrl或.wrz,其中使用较多的是.wrl文件。任何扩展名为.wrl文件都是VRML文件。通过VRML浏览器可以直接运行VRML文件。 VRML文件名全称为:*.wrl 或 *.wrz。,VRML文件结构,VRML文件的语法结构由VRML文件头、节点、事件、脚本和路由等组成。“节点” 可以由一个或多个组成,也可以创建新的节点,即原型节点。,VRML文件语法结构,#VRML V2.0 utf8 #VRML文件在第一行必须有的头文件 节点名 #VRML中各种类型“节点” 域 域值 #相应“节点”的“域”和“域值” Script #脚本Script节点 ROUTE #路由:把入事件与出事件联系起来 在VRML文件结构中,突出软件工程的设计思想,使VRML文件结构设计层次清晰结构严谨、条理清楚,使读者、用户易于理解和掌握。,VRML文件头,在每一个VRML文件中,头文件是必需的,且位于VRML文件的第一行。 VRML 文件头语法结构定义: VRML 文件头 #VRML V2.0 utf8 在VRML文件头相当于高级语言C程序中的主函数的作用,每一个 C语言程序必须从main()开始,否则编译或解释就会出错。VRML文件头包含4个部分,每一部分代表一定含义。 (1) 以#开头,这里#不是注释含义,而是VRML文件头的一 部分。 (2) “VRML”告述浏览器该文件是一个VRML 文件。 (3) “V2.0”告诉浏览器该VRML文件遵循VRML规范的2.0版本 (4) “utf8”表示该浏览器 VRML 文件是一个使用国际UTF8 字符集。,关于注释VRML文件的注释部分以一个符号“#”开头,结束于该行的末尾,当注释信息多于一行时,将产生语法错误,因为VRML不支持多行注释信息。浏览器在浏览VRML文件时将跳过“#”后面的所有内容。 浏览器在浏览VRML文件时将自动忽略VRML文件中的所有空格和空行。开发人员可根据软件开发的结构和思想编写VRML源程序。,节点(Node)和域,VRML文件中的节点是VRML文件中最基本的单位,是VRML精髓与核心。每个节点包含子节点和描述节点属性的“域名”或“域值”。在高级语言中称为变量、数组等,在数据库中常称为字段。 单一节点语法定义: 节点名 域名 域值 #域值类型说明 节点由节点名、一对花括号组成,花括号内又包括节点的域名、域值及域值类型,节点中包括“域”、“域值”或子节点。根据语法结构的要求,节点之间可以并列或层层嵌套使用。不同作用的节点有着不同语法结构,父节点包括“域”、 “域值”或子节点,子节点中也包含“域”、“域值”等。 “域”分为两种:一种为“域”(field);另一种称为“暴露域”(expose Field)。可以单值也可以多值。“域”相当于高级语言中的普通变量;而“暴露域”相当于C语言中的外部变量,相当于可视编程VC+语言类中的公共变量或公共函数。,在同一“节点”中的域遵循如下规则:同一节点中的各个域之间无先后次序之分;节点中的各个域均有自己相应的默认值;不同的域对应不同的域值类型。域名:域的标识符叫域名,在节点作用域的范围内,域名是惟一的,也是VRML的保留字或关键字。,以下是常见的两类域名的域值类型前缀。单值类型的域名,以“SF”开始,它只包含单值。单值:可以是一个独立的数,也可以是一个向量、颜色的几个数等,甚至可以是一幅图像数据。还有一种多值域名以“MF”开始,它包含多个值,所以叫多值域名。在VRML文件中,表示多域值的方法是:整个用方括号括起来的一系列用逗号和空格间隔开的单值;如果一个多值域不包含任何值,则只标出方括号“”;如果一个多值域,恰好只包含一个数,可以不写括号,直接写该值。skycolor 0.2 1.0 1.0 0.6 0.8 1.0 1.0 0.2 0.5 ,在VRML文件中各个节点语法的各种“域值类型”详细说明:单值域类型名用“SF”表示; 多值域名称用“MF”表示。 1SFBoolSFBool域是一个单值布尔量,常用于开启或关闭一个节点的性质特征。SFBool域输出事件的默认值为TRUE(真),否则为FALSE(假)。 2SFInt32和MFInt32SFInt32域是单值含有32位的整数,一个SFInt32值由一个十进制或十六进制格式(0X开头)的整数。 SFInt32域的输出事件的初始值是0。 MFInt32域是一个多值域,由任意数量的以逗号或空格分割的整数组成。 MFInt32域输出事件的初始值是 。其余的用表表示:,域值类型 简要说明 SFBool 开关值值为TRUE或FALSESFFloat/MFFloat 单值单精度浮点值/多值单精度浮点值 有正负之分SFColor/MFColor 颜色值值为3个浮点数(RGB)SFRotation/MF 旋转值前3个指定旋转坐标 Rotation 轴,第四个指定旋转角。SFString/MFString 字符串SFVec2f/MFVec2f 二维浮点矢量2个浮点值SFVec3f/MFVec3f 三维浮点矢量3个浮点值SFInt32/MFInt32 32位正整数SFImage 图像值SFTime 时间值1970年1月1日开始。SFNode/MFNode 结点值用于表明一个属性节点,节点名的重定义和重用,意义?减少VRML代码的编写量,对重复的造型或多个同样的造型在场景中多次出现时,通过定义这个造型节点,然后再重复调用该节点。定义节点名称DEF 节点名 节点类型 appearance DEF Btexi Appearance 引用节点USE 节点名 USE Btexi 不能用于节点名称的单词:DEF, EXTERNPROTO, FALSE, IS, NULL, PROTO, ROUTE TO, TRUE, USE, eventIn eventOut, exposedField, field节点名的使用有如下规定:不区分大小写、不能以数字开头、不能带有非印刷的ASCII字符、不能包括单引号、双引号、数字运算符或英镑符号,事件、路由和脚本,一个节点一般都有哪些事件?一个“入事件eventIn”,一个“出事件eventOut”事件的作用是什么?入事件:请求节点改变自己的某个域的值出事件:请求别的节点改变它的某个域值事件的命名规则大部分入事件以set_开头,但是addCildren和removeChildren除外大部分出事件以_changed结尾,SFBool类型的除外,它以is开头,例如isActive如果入事件和出事件的形式为SFTime,那就不再使用set 或者changed,例如bindTime和touchTime,路由的作用连接一个节点的入事件和出事件的节点之间的通道说明被指定域的一个事件如何从某个节点到达另一个节点,将不同节点联系起来,使空间具有更好的交互性、立体感、动态感和灵活性路由在绑定节点时的注意事项两个节点的路由在没有被触发之前一直都处于休眠状态,被触发后事件从输出接口的节点输出,通过路由传送到输入接口节点,引发VR的某种变化入事件和出事件同样具有自己的数值类型绑定多个节点,创建复杂的路线,实现更真实的交互。,脚本的作用是什么?节点间存在路由,事件可以通过路径在节点间传递,脚本可以对事件与路由进行编程设计。脚本接受事件,处理事件中的信息,产生基于处理结果的输出事件。,VRML节点集,Shape模型节点纹理映射节点群节点环境、影音与视点导航效果节点规范化接口节点动态交互感知节点创建新的VRML节点,1 Shape 模型节点,几何节点Box 盒子节点Cone 圆锥节点Sphere 球体节点Cylinder 圆柱体节点Text 文本节点绘图节点PointSet “点”节点IndexedLineSet “线”节点IndexedFaceSet “面”节点ElvationGrid 海拔栅格节点Extrusion 挤出造型节点物体外观节点Appearance外观属性节点Material 材料节点,2 纹理映射节点,ImageTexture 图像纹理节点MovieTexture 影像纹理节点TextureTransform 纹理变换节点,3 群节点,Group 编组节点,是基本型群节点Transform 坐标变换节点,死转换型群节点Inline 内联节点,是引入型群节点Switch 开关节点,是选择型群节点Billboard 广告牌节点,是广告牌群节点Anchor 锚节点,是超级链接群节点LOD 细节层次节点,是分级型群节点,4 环境、影音与视点导航效果节点,Background 背景节点,是天空、大地及室内布景Fog 雾节点,是空间大气场景的一种自然现象的描绘PointLight点光源节点DirectionLight定向光源节点SpotLight聚光灯光源节点Sound声音节点,是声音发射器节点AudioClip音响剪辑节点ViewPoint视点节点,是决定观看点的节点NavigationInfor视点导航信息节点,是控制浏览者功能的节点,5 规范化接口节点,WorldInfor场景信息节点,是信息化的节点Script脚本节点,是程序化的节点,6 动态交互感知节点,TimeSensor时间检测器节点,是控制时间的检测器节点PositionInterpolator位置插补器节点,是控制位置变换的动态节点OrientationInterpolator朝向插补器节点,是控制方位变换的动态节点ScalarInterpolataor标量插补器节点,是控制变换强度的动态节点ColorInterplator颜色插补器节点,是控制颜色变换的动态节点CoordinataeInterPolatoar坐标插补器节点,是控制坐标变换的动态节点NormalInterPolator法线插补器节点,是控制向量变换的动态节点,Touch Sensor触摸节点PlaneSensor平面检测器节点,是平面移动型传感器节点CylinderSensor圆柱检测器节点,是单轴旋转型传感器节点SphereSensor球面检测器节点,是任意轴旋转型传感器节点VisibilitySensor节点,是能见度传感器节点ProximtitySensor节点,是亲进度传感器节点Collision碰撞节点,7 创建新的VRML节点,PROTO原型节点,是创建用户新节点EXTERNPROTO创建用户外部定义的新节点,3 VRML基本节点编程,在VRML编程语言中, VRML文件由各种各样节点组成,“节点”是VRML的核心,节点之间可以并列或层层嵌套使用。节点在VRML 文件中起着主导的作用,它贯穿于整个VRML编程语言始终。可以说,如果没有节点, VRML文件也就不存在了。学好、用好、掌握好VRML编程语言的“节点”是至关重要的,因为它是VRML编程语言的灵魂,是VRML编程的精髓。 VRML三维立体空间造型就是由许许多多“节点”构成并创建的。,3.1 Background立体空间背景节点编程,Background背景节点的作用?用于定义VRML世界中天空和地面颜色及空间和地面角,在天空和地面之间,设定一幅立体空间全景图并可以放置立体空间造型。 VRML的空间背景分类:一类室内空间背景;另一类室外空间背景。设计者根据实际需要进行相应设计和布局。,3.1.1 室内空间背景设计,室内空间背景设置哪些呢?包括六面体:frontUrl前面、backUrl后面、1eftUrl左面、rightUrl右面,topUrl顶部和bottomUrl底部。六面体(立方体)组成立体空间的原理图如图3-1所示。,3.1.2 室外空间背景设计,VRML三维立体空间室外空间背景从不同的观测角度可以得到不同的结果。 (1)从外太空观测地球的结果,如图3-2所示。,(2)从地球上观测三维立体空间的结果。 观测者从宇宙空间的三维立体图看到的结果转化为VRML三维立体空间天地合一立体空间图(室外空间背景),将天空分成空间角,当空间角平滑到一定程度时,就变成一个球体空间,即太极球,如图3-3所示。,室外立体空间体现了天地浑然一体,天地合一的景象。在天地之间只有一个地平线或海平面,划分出天空和地面,体现了太极图的阴阳与辨证关系。在VRML虚拟现实三维立体世界里,开发人员可以根据你所设计的场景的需要,采用相应背景。如果要设计室内立体空间场景,可选“室内空间背景”进行开发设计;如果要设计室外立体空间、宇宙空间场景,可选用“室外空间背景”场景设计;如果既有室内又有室外场景,可以结合两者共同开发设计所需要的立体空间场境。,3.1.3 Background背景节点语法 Background背景节点用来生成VRML的背景,其生成的背景是三维立体式的,它会带给人一种空间立体层次感效果。我们可以设计室内和室外三维立体空间效果,从而使设计更加生动、逼真。,Background背景节点语法定义: Background skyColor 0.0 0.0 0.0 #exposedField MFColor skyAng1e #exposedField MFFloat groundColor 0.0 0.0 0.0 #exposedField MFColor groundAng1e #exposedField MFFloat frontUrl #exposedField MFString backUrl #exposedField MFString 1eftUrl #exposedField MFString rightUrl #exposedField MFString topUrl #exposedField MFString bottomUrl #exposedField MFString set_bind #evemtIn SFBool isBound #evemtOut SFBool,域值类型注释:exposedField为“暴露域”;eventIn为入事件;eventOut为出事件;MFFloat域是多值单精度浮点数;MFColor域是一个多值域,包含任意数量的RGB颜色值;MFString域是一个含有零个或多个字符的多值域;SFBool域是一个单值布尔量。,1. 天空的颜色和天空角,(1) skyColor域的值指定了对立体空间背景颜色进行着色,该域值是组合而成。其默认值为(0.0 0.0 0.0)。 (2) skyAngle域的值指定了空间背景上需要着色的位置的空 间角(用弧度)。VRML浏览器就是在这些空间角所指位置上进行着色的。 第一个天空颜色着色于天空背景的正上方, 第二个天空颜色着色于第一个天空角所指定的位置, 第三个天空颜色着色于第二个天空角所指定的位置。依此类推,这样就使天空角之间的颜色慢慢过渡,形成颜色梯度。该域值必须以升序的方式排列,默认值为空。,2地面的颜色和地面位置空间角,(1) groundColor 域的值指定了对地面背景颜色进行着色,该域值由一系列RGB颜色组合而成。其默认值为空。 (2) groundAngle域的值指定地面背景上需要着色的位置的空间角(用弧度)。 第一个地面颜色着色于地面背景的正下方, 第二个地面颜色着色于第一个地面角所指定的位置, 第三个地面颜色着色于第二个地面所指定的位置, 依此类推.该域值中地面角必须以升序的方式排列,默认值为空。 我们可以通过对背景设定空间和地面角及空间和地面颜色来产生天空和地面效果,以在空间背景上添加背景图像,也可以创建城市、原野、楼房、山脉等场景。,3利用VRML立体空间六面体创建室内空间背景,利用frontUrl、backUrl、1eftUrl、rightUrl、topUrl和bottomUrl这6个域分别在6个不同的立体空间添加背景图像,形成室内立体空间景象。可以在VRML中使用的背景图像只能是JPEG、GIF和PNG格式文件。,事件说明 set_bind入事件(eventIn)和isBound出事件(eventOut)用来实现VRML文件的各种背景切换。工作过程如下:对需要设定为当前背景的Background背景节点中set_bind入事件发送一个TRUE,则这个Background背景节点就变成当前背景节点同时原先的背景节点的出事件isBound(eventOut)向外发送一个FALSE值,就不再是当前背景节点了。在使用背景变换时被用来接收事件和发送事件。,3.1.4 Background立体空间背景设计与编程实例室外立体空间背景设计和编程室内立体空间背景设计和编程1室外立体空间背景设计和编程实例只对立体空间背景的“天空”着色,是单色调的绿颜色,见效果图。,vrml 3-1,实例32只对立体空间背景的“天空”颜色及“空间角”进行设计,产生天空中大气的各种层次的调和颜色效果,Vrml 3-2,实例3-3 只对立体空间背景的地面颜色及地面角进行设计,产生地面的各种层次的调和颜色效果,Vrml 3-3,实例3-4对立体空间背景的“天空”颜色和“空间角”及立体空间背景的“地面”颜色和“地面角”同时进行着色设计,产生“天空”与“地面”立体空间的各种层次的调和颜色效果,产生天地合一效果场景。,vrml 3-4,2室内立体空间背景设计和编程实例设计一个室内立体空间背景,包括立体空间的6个面,即由前、后、左、右、上、下平面组成。在VRML中允许使用的背景图像文件有JPEG、GIF和PNG等格式的文件。根据不同的材质和图片,显示不同的效果,现举例加以说明。,实例3-5在室内立体空间背景中,采用外墙图案和地砖图案的室内立体空间效果图,实例3-6在立体空间中,采用6幅图像,天空绿草地和四周采用的4幅图片(*.jpg文件)产生的效果,vrml 3-6,3.2 基本造型,虚拟现实的基本造型有:长方体(Box),圆柱体(Cylinder),圆锥体(Cone),球体(Sphere)这些基本造型都由相应的 专门节点直接创建,3.2.1 虚拟现实的基本造型,关于Shape节点定义一个造型所具有的几何尺寸、材料、纹理和外观特性所有VR空间里的造型均有Shape节点创建注意区分域名、节点名的大小写Shape节点语法: Shape节点包括了外观和几何结构两个域。Shape appearance NULL #域值类型 SFNode geometry NULL #域值类型 SFNode,Shape模型节点语法结构,texture,3.2.2 Appearance节点,3.2.3 material 节点语法,Material ambientIntensity 0.2 #域值类型 SFFloat diffuseColor 0.8 0.8 0.8 #域值类型 SFColor emissiveColor 0.0 0.0 0.0 #域值类型 SFColor shininess 0.2 #域值类型 SFFloat specularColor 0.0 0.0 0.0 #域值类型 SFColor transparency 0.0 #域值类型 SFFloat ambientIntensity 有多少环境光被该表面反射,依赖于光源的数目,0.2的默认值表示对材料产生较低的环境光线效果 diffuseColor 材料的漫反射颜色,表面越接近垂直光性,被反射的漫反射光性越多。默认值(0.8 0.8 0.8)表示中强度的白光 emissiveColor 发光物体产生的光的颜色,默认值(0.0,0.0,0.0)表示不发光 shininess 造型外观材料的亮光,取值从漫反射表面的0到高度抛光的1,默认值为0.2,表示适当的亮度 specularColor 物体镜面反射光线的颜色,默认值(0.0,0.0,0.0) 表示镜面不反射 transparency 物体的透明度,默认值0表示不透明,3.2.4 空间物体造型外观颜色设计物体造型的外观颜色一般都由几种基本颜色组成:RYB 红(Red) 黄(Yellow) 蓝(Blue)CYM 兰绿(青) 黄(Yellow) 绛红(Mauve)RGB 红(Red) 绿(Green) 蓝(Blue)CYMK 兰绿(青)黄(Yellow) 绛红(Mauve) 黑(Black),3.2.5 Shape 空间节点实例,Vrml3-7,3.3 Box 节点语法,Box size 2.0 2.0 2.0 #域值类型 SFVec3f # 宽 高 深,Vrml3-8,3.4 Sphere 节点语法,Sphere radium 1.0 #域值类型 SFFloat ,3.5 Cone节点语法,Cone bottomradium 1.0 #域值类型 SFFloat height 2.0 #域值类型 SFFloat side TRUE #域值类型 SFBool bottom TRUE #域值类型 SFBool ,Vrml3-10,3.6 Cylinder 节点语法,Cylinder radium 1.0 #域值类型 SFFloat height 2.0 #域值类型 SFFloat side TRUE #域值类型 SFBool top TRUE #域值类型 SFBool bottom TRUE #域值类型 SFBool,vrml3-11,3.7 Text文本造型节点,文本造型节点Text用来在VRML空间中创建文本(文字)造型,通常使用Shape节点的geometry域的域值。Shape appearance NULL #域值类型 SFNode geometry NULL #域值类型 SFNode,Text 节点语法,Textstring #exposedField MFString length #exposedField MFFloat maxExtent 0.0 #exposedField SFFloat fontStyle NULL #exposedField SFNode ,域名和域值详解,(1)string域域值指定了要创建的文本内容,其域值可以是一行文本,也可以是多行文本。这些文本均包含在双引号之内,在引号内的回车符将被忽略,所以不能使用回车键分行。在其域值中每一行文本串使用引号包围起来,不同的行用逗号分开。 VRML scene, How are you!该域值的默认值为空,即不产生文本造型。,(2)length域 用来指定文本造型的长度,是以VRML单位为计量单位的,这里的长度指的是每一行的文本长度。 当设定一个值后,浏览器通过改变字符尺寸或字符间距来进行压缩或扩展,以满足设定长度的要求。1ength域的值是和string域值一一对应的,即一个数值控制一行文本,所以压缩或扩展其实并不是固定数值的,它与string域值有关。当所设定的长度大于其文本造型本来的长度时,则扩展;反之则压缩。该域值的默认值为空列表,即为0.0,表示即不扩展也不压缩。,(3) maxExtendt 域值指定了文本造型中所对应的行的最大有效长度,也是以VRML单位为计量单位的。该域值必须大于0.0,对于那些长度大于所设定长度的行,通过改变字符尺寸或字符间距来进行压缩。该域值的默认值为0.0,表示对文本造型的长度没有限制,可以为任意长度。(4)fontStyle域用来定义文本造型的外观特征。一般情况下其域值为fontStyle节点,该域值的默认值为NULL,即没有定义外观特征。使用默认的外观特征,如左对齐,从左到右,文本尺寸为1.0,文本间距为1.0及默认的字体大小等。,实例3-12在山水画背景下,显示两行文本文字的效果图;在文本中两行不同的文字用逗号隔开,可以设定两行不同的长度以及设定字符串最大有效长度等,3.7.2 FontStyle文本外观节点,FontStyle文本外观节点是Text文本节点的子节点,用来控制文本造型的外观特征,通过设定FontStyle节点可以改变由Text节点创建的文本造型的外观、字体、字形、风格和尺寸大小,等等。FontStyle文本外观节点只出现在Text文本节点中的fontStyle域中,用于说明文字符号的大小、风格、字体、文本造型的排列、文本的摆放和语言设置等。,FontStyle文本外观节点语法结构定义,FontStyle family “SERIF” # field SFString style “PLAIN” # field SFString size 1.0 # field SFFloat spacing 1.0 # field SFFloat justify “BEGIN” # field SFString horizontal TRUE # field SFBool leftToRight TRUE # field SFBool topToBottom TRUE # field SFBool language “ ” # field SFString ,域名和域值详解,(1) family域用来指定在VRML中使用的VRML字符集,这些字符集包括“SERIF”、“SANS”和“TYPEWRITER”。 “SERIF”是指serif字体,是一种变宽的字体,如“Times Roman”字体;“SANS”是指sans字体,也是一种变宽的字体,如“Helvetica”字体;“TYPEWRITER”是指typewriter字体,是一种等宽字体,如“Coutier”字体。这里要注意的是在VRML浏览器中实际显示的字符集是与浏览器本身有关的,当该域值设定为“SERIF”时,浏览器也有可能显示New York字符集,这是由浏览器本身的设置决定的。该域值的默认值为“SERIF ”。,(2) size域值用来指定所显示的文本字符的高度,单位为VRML单位。改变其高度可以进而改变文本字符的尺寸大小。该域值的默认值为1.0。(3) spacing域值用来指定所显示的文本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版航空发动机叶片加工合作协议样本
- 放开生育面试题目及答案
- 员工培训毕业典礼
- 培训课件费报销调研
- 幼儿园小班教案《多嘴的八哥鸟》含反思
- 2025年智慧城市公共设施场地租赁与智能化服务合作协议
- 2025年社会福利院消防安全设施建设与安装合同
- 2025年汽车租赁免责及全方位保险理赔保障服务协议
- 珠宝品牌授权经营合作协议
- 2025年城市公共交通柴油能源供应及维护服务合作协议
- 广西2025年公需科目学习考试试题及答案4
- 代加工板材合同协议书范本
- 2025年事业单位工勤技能-湖南-湖南地质勘查员二级(技师)历年参考题库含答案解析(5卷)
- 肝炎的分型及护理
- 高中语文38篇课内文言文挖空一遍过(教师版)
- 2025年高考真题物理(四川卷)-2
- 企业负责人财税知识培训
- 【前程无忧】2025校招人才素质洞察白皮书
- 船舶制造公司管理制度
- 2025至2030年中国石油化工自动化仪表产业发展动态及未来趋势预测报告
- 中建EPC项目报批报建工作指南
评论
0/150
提交评论