版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虚拟现实技术主讲:杨文晖虚拟现实技术主讲:杨文晖第四章VRML1VRML简介2VRML编程语法基础3VRML基本节点编程4群节点创建VRML立体空间造型5VRML场景效果节点编程设计6VRML动态感知虚拟现实节点7VRML通用接口节点8VRML实例编程第四章VRML1VRML简介1VRML简介虚拟现实三维立体网络程序设计语言VRML是计算机科学的前沿技术。作为第二代网络程序设计语言的VRML完全改变了网络的二维平面世界,实现了真正意义上的三维立体网络世界、动态交互与智能感知等,实现计算机网络、多媒体及人工智能的完美结合使人们真正感受到21世纪计算机网络世界的无穷魅力。1VRML简介虚拟现实三维立体网络程序设计语言VRML1.1VRML的发展历史计算机技术的迅猛发展,已由初级计算、实时控制、事务处理等迅速朝着巨型化、微型化、网络化、智能化及多媒体化等方面发展。计算机将人类社会带人崭新的信息时代。尤其是计算机网络的飞速发展;使我们的地球变成了一个地球村早期的网络系统主要传送文字、数字等信息,但多媒体技术在网络上的应用,使目前计算机网络无法承受如此巨大的信息量。为此,人们开发出信息高速公路,即宽带网络系统,而在信息高速公路上驰骋的高速跑车就是VRML虚拟现实建模语言系统,也就是“虚拟现实三维立体网络程序设计语言”。1.1VRML的发展历史计算机技术的迅猛发展,已由VRML(VirtuslRealityModelingLanguage)是什么?虚拟现实建模语言,是一种三维造型和渲染的图形描述语言,通过创建一个虚拟场景以达到现实中的效果。VRML给网络带来了什么?
VRML支持功能大大改变了原来万维网上单调、交互性较差的弱点,创建一个全新的可进入、可参与的三维虚拟现实世界。
VRML的重要性?是虚拟现实三维立体网络程序设计语言,是宽带网络、多媒体与人工智能相融合的高科技产品,是把握未来网络、多媒体及人工智能的关键技术。VRML(VirtuslRealityModelingVRML虚拟现实建模语言用来在网络上创建逼真的三维虚拟场景。它改变了网络上2D画面的状态,并能实现3D动画效果,特别是改变了当前网络与用户交互的局限性,使得人机交互更加方便、灵活,使虚拟世界的真实性、交互性和动态性得到了更充分的体现。
VRML是虚拟现实建模语言,是一种三维造型和渲染的图形描述性语言,它把“虚拟世界”看做一个“场景”,而场景中的一切都被看做“对象”(也称为节点),对每一个对象的描述就构成了.wrl文件。VRML虚拟现实建模语言用来在网络上创建逼真的三维虚拟场虚拟现实技术课件第四章发展历史发展历史1.2VRML的特点虚拟现实三维立体网络程序设计语言具有4大特点。
(1)VRML具有强大的网络功能,可以通过运行VRML程序直接接入Intemet。可以创建立体网页与网站。
(2)具有多媒体功能,能够实现多媒体制作,合成声音、图像以达到影视效果。
(3)创建三维立体造型和场景,实现更好的立体交互界面
(4)具有人工智能,主要体现在VRML具有感知功能。可以利用感知传感器节点来感受用户及造型之间的动态交互感觉。虚拟现实三维立体网络程序设计语言VRML是第二代Web网络程序设计语言,是21世纪主流高科技软件开发工具,是把握未来宽带网络、多媒体及人工智能的关键技术。掌握了虚拟现实三维立体网络程序设计语言VRML,就掌握了软件开发的主动权,可以在未来网络世界里驰骋翱翔。1.2VRML的特点虚拟现实三维立体网络程序设计语言具有1.3VRML的发展前景虚拟现实建模语言VRML设计源于虚拟现实技术。虚拟现实技术是20世纪末发展起来的涉及众多学科的高新技术,它是集计算机、仿真、微电子、传感与测量技术于一体的高新科技的融合。而虚拟现实建模语言VRML正是利用虚拟现实技术在计算机中创建一种虚拟环境,通过视觉、听觉、触觉、味觉、嗅觉及生理反映等感知器,使用户产生一种与现实生活相同的感受,有身临其境的感觉,甚至生理感觉,可实现用户与虚拟现实环境直接进行交互。虚拟现实建模语言VRML涉及计算机网络、多媒体和人工智能技术三大领域及自然科学、社会科学和哲学。具体地讲,虚拟现实环境一般包括计算机图形学、图像处理、模式识别、传感器、语音处理、网络技术、并行处理、人工智能等高新技术,还涉及天文、地理、数学、物理、化学、美学、医学、军事、生理学和心理学等领域。1.3VRML的发展前景虚拟现实建模语言VRML设计源计算机硬件技术、网络技术及多媒体技术的融合与高速发展使得虚拟现实技术获得了长足的发展,从而虚拟现实技术能在网络上得以实现和发展。目前网站使用的均为二维图像与动画网页,而采用虚拟现实建模语言VRML可以在网站上设计出虚拟现实三维立体网页场景和立体景物利用虚拟现实技术制造出一个逼真“虚拟人”,为医学实习、治疗、手术及科研做出贡献,也可应用于军事设计一个“模拟战场”,进行大规模高科技军事演习,这样既可以节省大量费用,又使部队得到了锻炼。在航空航天发射中,也可以制造一个“模拟航天器”,模拟整个航天器的生产、发射、运行和回收的全过程,从而可以节约大量的经费。虚拟现实技术还可以应用于工业、农业、商业、教学、娱乐和科研等方面应用前景非常广阔。虚拟现实建模语言VRML是21世纪计算机网络、多媒体及人工智能为一体的最为优秀的开发工具和手段。计算机硬件技术、网络技术及多媒体技术的融合与高速发展使得虚拟1.4VRML浏览器1.4VRML浏览器1.5VRML编辑器用记事本来编写源程序VRMLPad专用编辑器由ParallelGraphics公司开发的VRML开发工具1.5VRML编辑器用记事本来编写源程序2
VRML编程语法基础介绍VRML的文件结构、文件头及注释等VRML文件主要由节点、事件、场景、原型、脚本及路由等组成,其中节点又由域名、域值及域值类型组成;介绍VRML立体空间的计量单位,包括立体空间坐标、长度单位、角度单位及立体空间的颜色等节点集2VRML编程语法基础介绍VRML的文件结构、文件头及注2.1VRML基本概念虚拟现实三维立体网络(页)程序设计语言VRML涉及有关的基本概念和名词包括:节点域事件路由原型场景脚本它是编写VRML的基础。2.1VRML基本概念虚拟现实三维立体网络(页)程序设什么是节点?
节点是VRML文件最基本的组成要素,是VRML文件基本的组成部分。节点是对客观世界中各种事物、对象、概念的抽象描述。VRML文件就是由许多节点之间并列或层层嵌套而构成的什么是节点?什么是事件?每一个节点一般都有两种事件,即一个“入事件”和一个“出事件”。在多数情况下,事件只是一个要改变域值的请求:“入事件”请求节点改变自己某个域的值“出事件”则是请求别的节点改变它的某个域值。什么是事件?什么是原型?原型是用户建立的一种新的节点类型,而不是一种“节点”。进行了原型定义就相当于扩充了VRML的标准节点类型集。节点的原型是节点对其中的域、入事件和出事件的声明,可以通过原型扩充VRML节点类型集原型的定义可以包含在使用该原型的文件中,也可以在外部定义原型可以根据其他的VRML节点来定义,也可以利用特定于浏览器的扩展机制来定义。什么是原型?什么是物体的造型?物体的造型,即场景图由描述对象及其属性的节点组成。在场景图中,一类是由节点构成的层次体系组成;另一类是由节点事件和路由构成。什么是物体的造型?什么是脚本?脚本是一套程序,与其他高级语言或数据库的接口。在VRML中可以用Script节点利用Java或JavaScript语言编写的程序脚本来扩充VRML的功能。脚本通常作为一个事件级联的一部分而执行,脚本可以接受事件,处理事件中的信息,还可以产生基于处理结果的输出事件。什么是脚本?
什么是路由?路由是产生事件和接受事件的节点之间的连接通道。路由不是节点,路由说明是为了确立被指定的域的事件之间的路径而人为设定的框架。路由说明可以在VRML文件的顶部,也可以在文件节点的某一个域中。在VRML文件中路由说明与路径无关,它既可以在源节点之前,也可以在目标节点之后,在一个节点中进行说明,与该节点无任何联系。路由的作用是将各个不同的节点联系在一起,使虚拟空间具有更好的交互性、立体感、动感性和灵活性。什么是路由?什么是事件体系?在场景图中,除了节点构成的层次体系结构外,还有一个“事件体系”。事件体系由相互通信的节点组成。在大多数的VRML节点中每一个事件都有一个输入和输出接口。输入接口就是能够接收事件的节点,称为eventIn,即入事件(也称事件入口);输出接口就是发送事件的节点,称为eventOut,即为出事件(也称事件出口)。一个节点一般具有多个不同的入事件和出事件,但有一些节点不同时具有这两种事件。入事件和出事件通过路径相连,这就是VRML文件除节点外的另一基本组成部分路由(ROUTE)。ROUTE语句把事件出口和事件入口联系起来,从而构成了“事件体系”。什么是事件体系?2.2VRML立体空间计量单位虚拟现实建模语言(VRML)要创建立体背景空间和立体造型空间就需要定位需要立体空间坐标系相应的长度角度单位颜色2.2VRML立体空间计量单位虚拟现实建模语言(VR2.2.1VRML立体空间坐标系
VRML立体空间物体造型定位依靠VRML立体空间坐标系来实现。这些坐标轴为每个空间物体的造型定义了一个坐标系。它包括:X轴、Y轴、Z轴X轴、Y轴和Z轴相交的点构成了该坐标系的原点X轴的正方向指向右边,Y轴的正方向指向正上方,Z轴的正方向指向前方(即浏览者),如图2-1所示。空间物体的造型在该坐标系中的位置由相对于该坐标原点的三维坐标来确定。xzy图2-1空间坐标系2.2.1VRML立体空间坐标系VRML立体空间物体造型2.2.2VRML长度单位VRML三维立体空间长度单位是统一的,只有一个单位标量,即VRML单位。
VRML单位并不是一个绝对的尺寸大小。VRML尺寸和现实中的长度单位不具有任何可比性,只有在VRML单位间才具有可比性
VRML单位一般比实际的长度单位要小。在实际开发工作中,考虑到多个开发者在开发中协调统一的工作,通常都指定一个统一的参考标准,即以实际中的长度单位为准。2.2.2VRML长度单位VRML三维立体空间长度单位是统2.2.3VRML角度单位在VRML立体空间中使用的角度单位不是普通的角度,而是通常所使用的弧度。当在VRML使用角度单位时,先将角度单位换算成弧度单位后,再将其编写入VRML源程序中。常用的角度与弧度换算表如表2‒1所示。2.2.3VRML角度单位在VRML立体空间中使用的角度2.2.4VRML空间立体着色
VRML三维立体空间的着色,无论是立体空间背景、光线的颜色,还是立体空间中的各种物体,它们的颜色都是由3种基本颜色组合而成红、绿、蓝(RGB)。红、绿、蓝(RGB)3种基本颜色对应3个浮点数,它们的域值分别在0.0—1.0之间。红、绿、蓝3种颜色组成各种各样姹紫嫣红的“颜色”,如下表所示。2.2.4VRML空间立体着色VRML三维立体空间
VRML文件语法
VRML文件语法主要包括哪些?VRML文件头、节点、原型、造型、脚本和路由等是否每一个VRML文件都必须包含这6个部分?只有VRML文件头是必需的,而其他项不一定是必需的。他们相互之间的关系?VRML立体空间的场景和造型是由节点构成的,再通过路由实现动态交互和感知,或者使用脚本文件与外部接口进行动态交互。在软件开发中,根据不同的实际情况编写不同的VRML程序,它所包含的成分也可能不同。在VRML文件中,“节点”是VRML核心、灵魂,如果没有节点,VRML也就不存在了。VRML文件语法VRML文件语法主要包括哪些?VRML文件VRML文件可由文本编辑器编写或由VrmPad专用编辑器编写,其VRML文件扩展名为.wrl或.wrz,其中使用较多的是.wrl文件。任何扩展名为.wrl文件都是VRML文件。通过VRML浏览器可以直接运行VRML文件。
VRML文件名全称为:***.wrl或***.wrz。
VRML文件VRML文件可由文本编辑器编写或由VrmPad专VRML文件结构
VRML文件的语法结构由VRML文件头、节点、事件、脚本和路由等组成。“节点”可以由一个或多个组成,也可以创建新的节点,即原型节点。VRML文件结构VRML文件的语法结构由VRML文件头、节VRML文件语法结构
#VRMLV2.0utf8#VRML文件在第一行必须有的头文件节点名{#VRML中各种类型“节点”域域值
#相应“节点”的“域”和“域值”
……
}Script{#脚本Script节点
}ROUTE#路由:把入事件与出事件联系起来在VRML文件结构中,突出软件工程的设计思想,使VRML文件结构设计层次清晰结构严谨、条理清楚,使读者、用户易于理解和掌握。VRML文件语法结构#VRMLV2.0utf8VRML文件头在每一个VRML文件中,头文件是必需的,且位于VRML文件的第一行。
VRML文件头语法结构定义:VRML文件头
#VRMLV2.0utf8
在VRML文件头相当于高级语言C程序中的主函数的作用,每一个C语言程序必须从main()开始,否则编译或解释就会出错。VRML文件头包含4个部分,每一部分代表一定含义。
(1)以#开头,这里#不是注释含义,而是VRML文件头的一部分。
(2)“VRML”告述浏览器该文件是一个VRML文件。
(3)“V2.0”告诉浏览器该VRML文件遵循VRML规范的2.0版本
(4)“utf8”表示该浏览器VRML文件是一个使用国际UTF‒8字符集。VRML文件头在每一个VRML文件中,头文件是必需的,且位关于注释VRML文件的注释部分以一个符号“#”开头,结束于该行的末尾,当注释信息多于一行时,将产生语法错误,因为VRML不支持多行注释信息。浏览器在浏览VRML文件时将跳过“#”后面的所有内容。浏览器在浏览VRML文件时将自动忽略VRML文件中的所有空格和空行。开发人员可根据软件开发的结构和思想编写VRML源程序。关于注释节点(Node)和域VRML文件中的节点是VRML文件中最基本的单位,是VRML精髓与核心。每个节点包含子节点和描述节点属性的“域名”或“域值”。在高级语言中称为变量、数组等,在数据库中常称为字段。单一节点语法定义:节点名{
域名域值#域值类型说明
……}
节点由节点名、一对花括号组成,花括号内又包括节点的域名、域值及域值类型节点(Node)和域VRML文件中的节点是VRML文件中最基节点中包括“域”、“域值”或子节点。根据语法结构的要求,节点之间可以并列或层层嵌套使用。不同作用的节点有着不同语法结构,父节点包括“域”、“域值”或子节点,子节点中也包含“域”、“域值”等。“域”分为两种:一种为“域”(field);另一种称为“暴露域”(exposeField)。可以单值也可以多值。“域”相当于高级语言中的普通变量;而“暴露域”相当于C语言中的外部变量,相当于可视编程VC++语言类中的公共变量或公共函数。虚拟现实技术课件第四章在同一“节点”中的域遵循如下规则:同一节点中的各个域之间无先后次序之分;节点中的各个域均有自己相应的默认值;不同的域对应不同的域值类型。域名:域的标识符叫域名,在节点作用域的范围内,域名是惟一的,也是VRML的保留字或关键字。在同一“节点”中的域遵循如下规则:以下是常见的两类域名的域值类型前缀。单值类型的域名,以“SF”开始,它只包含单值。单值:可以是一个独立的数,也可以是一个向量、颜色的几个数等,甚至可以是一幅图像数据。还有一种多值域名以“MF”开始,它包含多个值,所以叫多值域名。在VRML文件中,表示多域值的方法是:整个用方括号括起来的一系列用逗号和空格间隔开的单值;如果一个多值域不包含任何值,则只标出方括号“[]”;如果一个多值域,恰好只包含一个数,可以不写括号,直接写该值。skycolor[0.21.01.00.60.81.01.00.20.5]虚拟现实技术课件第四章在VRML文件中各个节点语法的各种“域值类型”详细说明:单值域类型名用“SF”表示;多值域名称用“MF”表示。
1.SFBoolSFBool域是一个单值布尔量,常用于开启或关闭一个节点的性质特征。SFBool域输出事件的默认值为TRUE(真),否则为FALSE(假)。
2.SFInt32和MFInt32SFInt32域是单值含有32位的整数,一个SFInt32值由一个十进制或十六进制格式(0X开头)的整数。SFInt32域的输出事件的初始值是0。
MFInt32域是一个多值域,由任意数量的以逗号或空格分割的整数组成。MFInt32域输出事件的初始值是[]。其余的用表表示:在VRML文件中各个节点语法的各种“域值类型”详细说明:域值类型简要说明
SFBool 开关值 值为TRUE或FALSE
SFFloat/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结点值 用于表明一个属性节点域值类型简要说明
SFBoo节点名的重定义和重用意义?减少VRML代码的编写量,对重复的造型或多个同样的造型在场景中多次出现时,通过定义这个造型节点,然后再重复调用该节点。定义节点名称DEF节点名节点类型{}appearance
DEFBtexiAppearance{……}引用节点USE节点名USEBtexi不能用于节点名称的单词:DEF,EXTERNPROTO,FALSE,IS,NULL,PROTO,ROUTETO,TRUE,USE,eventIneventOut,exposedField,field节点名的使用有如下规定:不区分大小写、不能以数字开头、不能带有非印刷的ASCII字符、不能包括单引号、双引号、数字运算符或英镑符号节点名的重定义和重用意义?事件、路由和脚本一个节点一般都有哪些事件?一个“入事件eventIn”,一个“出事件eventOut”事件的作用是什么?入事件:请求节点改变自己的某个域的值出事件:请求别的节点改变它的某个域值事件的命名规则大部分入事件以set_开头,但是addCildren和removeChildren除外大部分出事件以_changed结尾,SFBool类型的除外,它以is开头,例如isActive如果入事件和出事件的形式为SFTime,那就不再使用set或者changed,例如bindTime和touchTime事件、路由和脚本一个节点一般都有哪些事件?路由的作用连接一个节点的入事件和出事件的节点之间的通道说明被指定域的一个事件如何从某个节点到达另一个节点,将不同节点联系起来,使空间具有更好的交互性、立体感、动态感和灵活性路由在绑定节点时的注意事项两个节点的路由在没有被触发之前一直都处于休眠状态,被触发后事件从输出接口的节点输出,通过路由传送到输入接口节点,引发VR的某种变化入事件和出事件同样具有自己的数值类型绑定多个节点,创建复杂的路线,实现更真实的交互。路由的作用脚本的作用是什么?节点间存在路由,事件可以通过路径在节点间传递,脚本可以对事件与路由进行编程设计。脚本接受事件,处理事件中的信息,产生基于处理结果的输出事件。
脚本的作用是什么?VRML节点集Shape模型节点纹理映射节点群节点环境、影音与视点导航效果节点规范化接口节点动态交互感知节点创建新的VRML节点VRML节点集Shape模型节点1Shape模型节点几何节点Box盒子节点Cone圆锥节点Sphere球体节点Cylinder圆柱体节点Text文本节点绘图节点PointSet“点”节点IndexedLineSet“线”节点IndexedFaceSet“面”节点ElvationGrid海拔栅格节点Extrusion挤出造型节点物体外观节点Appearance外观属性节点Material材料节点1Shape模型节点几何节点2纹理映射节点ImageTexture图像纹理节点MovieTexture影像纹理节点TextureTransform纹理变换节点2纹理映射节点ImageTexture3群节点Group编组节点,是基本型群节点Transform坐标变换节点,死转换型群节点Inline内联节点,是引入型群节点Switch开关节点,是选择型群节点Billboard广告牌节点,是广告牌群节点Anchor锚节点,是超级链接群节点LOD细节层次节点,是分级型群节点3群节点Group4环境、影音与视点导航效果节点Background背景节点,是天空、大地及室内布景Fog雾节点,是空间大气场景的一种自然现象的描绘PointLight点光源节点DirectionLight定向光源节点SpotLight聚光灯光源节点Sound声音节点,是声音发射器节点AudioClip音响剪辑节点ViewPoint视点节点,是决定观看点的节点NavigationInfor视点导航信息节点,是控制浏览者功能的节点4环境、影音与视点导航效果节点Background5规范化接口节点WorldInfor场景信息节点,是信息化的节点Script脚本节点,是程序化的节点5规范化接口节点WorldInfor6动态交互感知节点TimeSensor时间检测器节点,是控制时间的检测器节点PositionInterpolator位置插补器节点,是控制位置变换的动态节点OrientationInterpolator朝向插补器节点,是控制方位变换的动态节点ScalarInterpolataor标量插补器节点,是控制变换强度的动态节点ColorInterplator颜色插补器节点,是控制颜色变换的动态节点CoordinataeInterPolatoar坐标插补器节点,是控制坐标变换的动态节点NormalInterPolator法线插补器节点,是控制向量变换的动态节点6动态交互感知节点TimeSensorTouchSensor触摸节点PlaneSensor平面检测器节点,是平面移动型传感器节点CylinderSensor圆柱检测器节点,是单轴旋转型传感器节点SphereSensor球面检测器节点,是任意轴旋转型传感器节点VisibilitySensor节点,是能见度传感器节点ProximtitySensor节点,是亲进度传感器节点Collision碰撞节点TouchSensor7创建新的VRML节点PROTO原型节点,是创建用户新节点EXTERNPROTO创建用户外部定义的新节点7创建新的VRML节点PROTO3VRML基本节点编程在VRML编程语言中,VRML文件由各种各样节点组成,“节点”是VRML的核心,节点之间可以并列或层层嵌套使用。节点在VRML文件中起着主导的作用,它贯穿于整个VRML编程语言始终。可以说,如果没有节点,VRML文件也就不存在了。学好、用好、掌握好VRML编程语言的“节点”是至关重要的,因为它是VRML编程语言的灵魂,是VRML编程的精髓。
VRML三维立体空间造型就是由许许多多“节点”构成并创建的。3VRML基本节点编程在VRML编程语言中,VRML3.1Background立体空间背景节点编程Background背景节点的作用?用于定义VRML世界中天空和地面颜色及空间和地面角,在天空和地面之间,设定一幅立体空间全景图并可以放置立体空间造型。
VRML的空间背景分类:一类室内空间背景;另一类室外空间背景。设计者根据实际需要进行相应设计和布局。3.1Background立体空间背景节点编程Back3.1.1室内空间背景设计室内空间背景设置哪些呢?包括六面体:frontUrl前面、backUrl后面、1eftUrl左面、rightUrl右面,topUrl顶部和bottomUrl底部。六面体(立方体)组成立体空间的原理图如图3-1所示。xzy顶部后面前面右面左面底部图3-1三维立体空间坐标系之“室内空间背景”3.1.1室内空间背景设计室内空间背景设置哪些呢?xzy3.1.2室外空间背景设计VRML三维立体空间室外空间背景从不同的观测角度可以得到不同的结果。
(1)从外太空观测地球的结果,如图3-2所示。地球地面天空大气宇宙空间宇宙空间图3-2宇宙空间的三维立体图3.1.2室外空间背景设计VRML三维立体空间室外空间背(2)从地球上观测三维立体空间的结果。观测者从宇宙空间的三维立体图看到的结果转化为VRML三维立体空间天地合一立体空间图(室外空间背景),将天空分成空间角,当空间角平滑到一定程度时,就变成一个球体空间,即太极球,如图3-3所示。(太空)天空地面(地球)地平线(海平面)图3-3VRML三维立体空间坐标系之“室外空间背景”(2)从地球上观测三维立体空间的结果。(太空)天空地面(地球
0
空间角
x地平线(面)
0
地面角
VRML空间背景
60z90120150180306090150120180300室外立体空间体现了天地浑然一体,天地合一的景象。在天地之间只有一个地平线或海平面,划分出天空和地面,体现了太极图的阴阳与辨证关系。在VRML虚拟现实三维立体世界里,开发人员可以根据你所设计的场景的需要,采用相应背景。如果要设计室内立体空间场景,可选“室内空间背景”进行开发设计;如果要设计室外立体空间、宇宙空间场景,可选用“室外空间背景”场景设计;如果既有室内又有室外场景,可以结合两者共同开发设计所需要的立体空间场境。室外立体空间体现了天地浑然一体,天地合一的景象。在天地之间只3.1.3Background背景节点语法
Background背景节点用来生成VRML的背景,其生成的背景是三维立体式的,它会带给人一种空间立体层次感效果。我们可以设计室内和室外三维立体空间效果,从而使设计更加生动、逼真。3.1.3Background背景节点语法Background背景节点语法定义:
Background{skyColor[0.00.00.0]#exposedFieldMFColorskyAng1e[]#exposedFieldMFFloatgroundColor[0.00.00.0]#exposedFieldMFColorgroundAng1e[]#exposedFieldMFFloatfrontUrl[]#exposedFieldMFStringbackUrl[]#exposedFieldMFString1eftUrl[]#exposedFieldMFStringrightUrl[]#exposedFieldMFStringtopUrl[]#exposedFieldMFStringbottomUrl[]#exposedFieldMFStringset_bind#evemtInSFBoolisBound#evemtOutSFBool}Background背景节点语法定义:域值类型注释:exposedField为“暴露域”;eventIn为入事件;eventOut为出事件;MFFloat域是多值单精度浮点数;MFColor域是一个多值域,包含任意数量的RGB颜色值;MFString域是一个含有零个或多个字符的多值域;SFBool域是一个单值布尔量。域值类型注释:1.天空的颜色和天空角
(1)skyColor域的值指定了对立体空间背景颜色进行着色,该域值是组合而成。其默认值为(0.00.00.0)。
(2)skyAngle域的值指定了空间背景上需要着色的位置的空间角(用弧度)。VRML浏览器就是在这些空间角所指位置上进行着色的。
第一个天空颜色着色于天空背景的正上方,
第二个天空颜色着色于第一个天空角所指定的位置,
第三个天空颜色着色于第二个天空角所指定的位置。依此类推,这样就使天空角之间的颜色慢慢过渡,形成颜色梯度。该域值必须以升序的方式排列,默认值为空。1.天空的颜色和天空角2.地面的颜色和地面位置空间角
(1)groundColor域的值指定了对地面背景颜色进行着色,该域值由一系列RGB颜色组合而成。其默认值为空。
(2)groundAngle域的值指定地面背景上需要着色的位置的空间角(用弧度)。
第一个地面颜色着色于地面背景的正下方,
第二个地面颜色着色于第一个地面角所指定的位置,
第三个地面颜色着色于第二个地面所指定的位置,依此类推.该域值中地面角必须以升序的方式排列,默认值为空。我们可以通过对背景设定空间和地面角及空间和地面颜色来产生天空和地面效果,以在空间背景上添加背景图像,也可以创建城市、原野、楼房、山脉等场景。2.地面的颜色和地面位置空间角(1)groundColo3.利用VRML立体空间六面体创建室内空间背景利用frontUrl、backUrl、1eftUrl、rightUrl、topUrl和bottomUrl这6个域分别在6个不同的立体空间添加背景图像,形成室内立体空间景象。可以在VRML中使用的背景图像只能是JPEG、GIF和PNG格式文件。3.利用VRML立体空间六面体创建室内空间背景
事件说明
set_bind入事件(eventIn)和isBound出事件(eventOut)用来实现VRML文件的各种背景切换。工作过程如下:对需要设定为当前背景的Background背景节点中set_bind入事件发送一个TRUE,则这个Background背景节点就变成当前背景节点同时原先的背景节点的出事件isBound(eventOut)向外发送一个FALSE值,就不再是当前背景节点了。在使用背景变换时被用来接收事件和发送事件。事件说明3.1.4Background立体空间背景设计与编程实例室外立体空间背景设计和编程室内立体空间背景设计和编程1.室外立体空间背景设计和编程实例只对立体空间背景的“天空”着色,是单色调的绿颜色,见效果图。3.1.4Background立体空间背景设计与编程实例vrml3-1vrml3-1[实例3·2]只对立体空间背景的“天空”颜色及“空间角”进行设计,产生天空中大气的各种层次的调和颜色效果[实例3·2]只对立体空间背景的“天空”颜色及“空间角”进行Vrml3-2Vrml3-2[实例3-3]
只对立体空间背景的地面颜色及地面角进行设计,产生地面的各种层次的调和颜色效果[实例3-3]只对立体空间背景的地面颜色及地面角进行设Vrml3-3Vrml3-3[实例3-4]对立体空间背景的“天空”颜色和“空间角”及立体空间背景的“地面”颜色和“地面角”同时进行着色设计,产生“天空”与“地面”立体空间的各种层次的调和颜色效果,产生天地合一效果场景。[实例3-4]对立体空间背景的“天空”颜色和“空间角”及立体vrml3-4vrml3-4
2.室内立体空间背景设计和编程实例设计一个室内立体空间背景,包括立体空间的6个面,即由前、后、左、右、上、下平面组成。在VRML中允许使用的背景图像文件有JPEG、GIF和PNG等格式的文件。根据不同的材质和图片,显示不同的效果,现举例加以说明。2.室内立体空间背景设计和编程实例[实例3-5]在室内立体空间背景中,采用外墙图案和地砖图案的室内立体空间效果图[实例3-5]在室内立体空间背景中,采用外墙图案和地砖图案的虚拟现实技术课件第四章[实例3-6]在立体空间中,采用6幅图像,天空绿草地和四周采用的4幅图片(*.jpg文件)产生的效果[实例3-6]在立体空间中,采用6幅图像,天空绿草地和四周采vrml3-6vrml3-63.2基本造型虚拟现实的基本造型有:长方体(Box),圆柱体(Cylinder),圆锥体(Cone),球体(Sphere)这些基本造型都由相应的专门节点直接创建3.2基本造型虚拟现实的基本造型有:3.2.1虚拟现实的基本造型关于Shape节点定义一个造型所具有的几何尺寸、材料、纹理和外观特性所有VR空间里的造型均有Shape节点创建注意区分域名、节点名的大小写Shape节点语法:
Shape节点包括了外观和几何结构两个域。Shape{
appearanceNULL#域值类型SFNode
geometryNULL#域值类型SFNode几何造型外观造型3.2.1虚拟现实的基本造型关于Shape节点几何造型外Shape模型节点语法结构textureShape模型节点Appearance外观节点Box立方体节点Cone圆锥体节点Cylinder圆柱体节点Sphere球体节点Text文本造型节点Geometry域appearance域materialTextureTransformdiffuseColorambientIntensifyspecularColoremissiveColorshininesstransparencyShape模型节点语法结构textureShape模型节点A3.2.2Appearance节点节点语法
appearance{
materialNULL#域值类型SFNode
textureNULL#域值类型SFNodetextureTransform
NOLL#域值类型SFNode}材料属性纹理映像二维纹理坐标变换3.2.2Appearance节点节点语法
appea3.2.3material节点语法Material{
ambientIntensity0.2#域值类型SFFloat
diffuseColor0.80.80.8#域值类型SFColoremissiveColor0.00.00.0#域值类型SFColorshininess0.2#域值类型SFFloatspecularColor0.00.00.0#域值类型SFColortransparency0.0#域值类型SFFloat}
ambientIntensity有多少环境光被该表面反射,依赖于光源的数目,0.2的默认值表示对材料产生较低的环境光线效果
diffuseColor材料的漫反射颜色,表面越接近垂直光性,被反射的漫反射光性越多。默认值(0.80.80.8)表示中强度的白光
emissiveColor发光物体产生的光的颜色,默认值(0.0,0.0,0.0)表示不发光
shininess造型外观材料的亮光,取值从漫反射表面的0到高度抛光的1,默认值为0.2,表示适当的亮度
specularColor物体镜面反射光线的颜色,默认值(0.0,0.0,0.0)表示镜面不反射
transparency物体的透明度,默认值0表示不透明3.2.3material节点语法Material3.2.4空间物体造型外观颜色设计物体造型的外观颜色一般都由几种基本颜色组成:RYB
红(Red)黄(Yellow)
蓝(Blue)CYM
兰绿(青)黄(Yellow)
绛红(Mauve)RGB红(Red)绿(Green)蓝(Blue)CYMK兰绿(青)黄(Yellow)
绛红(Mauve)
黑(Black)3.2.4空间物体造型外观颜色设计虚拟现实技术课件第四章3.2.5Shape空间节点实例3.2.5Shape空间节点实例Vrml3-7Vrml3-73.3Box节点语法Box{
size2.02.02.0#域值类型SFVec3f}#宽高深3.3Box节点语法Box{
size2.0Vrml3-8Vrml3-83.4Sphere节点语法Sphere{
radium1.0#域值类型SFFloat}3.4Sphere节点语法Sphere{
rad虚拟现实技术课件第四章3.5Cone节点语法Cone{
bottomradium1.0#域值类型SFFloatheight2.0#域值类型SFFloatsideTRUE#域值类型SFBoolbottomTRUE#域值类型SFBool}3.5Cone节点语法Cone{
bottomra虚拟现实技术课件第四章Vrml3-10Vrml3-103.6Cylinder节点语法Cylinder{
radium1.0#域值类型SFFloatheight2.0#域值类型SFFloatsideTRUE#域值类型SFBooltopTRUE#域值类型SFBoolbottomTRUE#域值类型SFBool}3.6Cylinder节点语法Cylinder{
虚拟现实技术课件第四章vrml3-11vrml3-113.7Text文本造型节点文本造型节点Text用来在VRML空间中创建文本(文字)造型,通常使用Shape节点的geometry域的域值。Shape{
appearanceNULL#域值类型SFNode
geometryNULL#域值类型SFNode}Shape模型节点Appearance外观属性节点Text文本造型节点Material造型外观节点FontStyle文本外观节点AppearanceGeometry3.7Text文本造型节点文本造型节点Text用来在VRMText节点语法Text{
string[]#exposedFieldMFStringlength[]#exposedFieldMFFloatmaxExtent0.0#exposedFieldSFFloatfontStyleNULL#exposedFieldSFNode}Text节点语法Text{
string[]域名和域值详解(1)string域域值指定了要创建的文本内容,其域值可以是一行文本,也可以是多行文本。这些文本均包含在双引号之内,在引号内的回车符将被忽略,所以不能使用回车键分行。在其域值中每一行文本串使用引号包围起来,不同的行用逗号分开。
"VRMLscene", "Howareyou!"该域值的默认值为空,即不产生文本造型。域名和域值详解(1)string域(2)length域用来指定文本造型的长度,是以VRML单位为计量单位的,这里的长度指的是每一行的文本长度。当设定一个值后,浏览器通过改变字符尺寸或字符间距来进行压缩或扩展,以满足设定长度的要求。1ength域的值是和string域值一一对应的,即一个数值控制一行文本,所以压缩或扩展其实并不是固定数值的,它与string域值有关。当所设定的长度大于其文本造型本来的长度时,则扩展;反之则压缩。该域值的默认值为空列表,即为0.0,表示即不扩展也不压缩。(2)length域(3)maxExtendt域值指定了文本造型中所对应的行的最大有效长度,也是以VRML单位为计量单位的。该域值必须大于0.0,对于那些长度大于所设定长度的行,通过改变字符尺寸或字符间距来进行压缩。该域值的默认值为0.0,表示对文本造型的长度没有限制,可以为任意长度。(4)fontStyle域用来定义文本造型的外观特征。一般情况下其域值为fontStyle节点,该域值的默认值为NULL,即没有定义外观特征。使用默认的外观特征,如左对齐,从左到右,文本尺寸为1.0,文本间距为1.0及默认的字体大小等。(3)maxExtendt域值[实例3-12]在山水画背景下,显示两行文本文字的效果图;在文本中两行不同的文字用逗号隔开,可以设定两行不同的长度以及设定字符串最大有效长度等[实例3-12]在山水画背景下,显示两行文本文字的效果图;在虚拟现实技术课件第四章3.7.2FontStyle文本外观节点FontStyle文本外观节点是Text文本节点的子节点,用来控制文本造型的外观特征,通过设定FontStyle节点可以改变由Text节点创建的文本造型的外观、字体、字形、风格和尺寸大小,等等。FontStyle文本外观节点只出现在Text文本节点中的fontStyle域中,用于说明文字符号的大小、风格、字体、文本造型的排列、文本的摆放和语言设置等。3.7.2FontStyle文本外观节点FontStyleFontStyle文本外观节点语法结构定义FontStyle
{
family“SERIF”#fieldSFStringstyle“PLAIN”#fieldSFStringsize1.0#fieldSFFloatspacing1.0#fieldSFFloatjustify“BEGIN”#fieldSFStringhorizontalTRUE#fieldSFBoolleftToRightTRUE#fieldSFBooltopToBottomTRUE#fieldSFBoollanguage“”#fieldSFString}FontStyle文本外观节点语法结构定义FontStyle域名和域值详解(1)family域用来指定在VRML中使用的VRML字符集,这些字符集包括“SERIF”、“SANS”和“TYPEWRITER”。“SERIF”是指serif字体,是一种变宽的字体,如“TimesRoman”字体;“SANS”是指sans字体,也是一种变宽的字体,如“Helvetica”字体;“TYPEWRITER”是指typewriter字体,是一种等宽字体,如“Coutier”字体。这里要注意的是在VRML浏览器中实际显示的字符集是与浏览器本身有关的,当该域值设定为“SERIF”时,浏览器也有可能显示NewYork字符集,这是由浏览器本身的设置决定的。该域值的默认值为“SERIF”。域名和域值详解(1)family域(2)size域值用来指定所显示的文本字符的高度,单位为VRML单位。改变其高度可以进而改变文本字符的尺寸大小。该域值的默认值为1.0。(3)spacing域值用来指定所显示的文本字符的间距。当文本是水平排列时,该间距指的是水平间距,而当文本是垂直排列时,该间距指的是垂直间距。该域值的默认值为1.0。(4)style域值用来指定所显示的文本的风格。该域值通常包括“PLAIN”、“BOLD”、“ITALIC”和“BOLDITALIC”,这些都是浏览器所能支持的风格。“PLAIN”为常用字体,既不加粗又不倾斜;“BOLD”为加粗字体;“ITALIC”为倾斜字体;“BOLDITALIC”为既加粗又倾斜的字体。该域值的默认值为“PLAIN”。(2)size域值
(5)horizontal域值控制着文本造型的排列方式,既可以是水平排列还可以是垂直排列。该域值的默认值为TRUE,表示文本为水平排列;假如将horizontal域值设定为FALSE,表示两行文本造型是垂直排列的。
(6)
leftToRight域值用来指定相邻字符在水平方向上的摆放。当leftToRight域值为TRUE时,相邻字符沿X正方向从左到右排列;当leftToRight域域值为FALSE时则沿X正方向从右到左排列。(7)topToBottom域值用来指定相邻字符在垂直方向上的摆放。当topToBottom域值为TRUE时,相邻字符沿Y负方向从上到下排列;当topToBottom域值为FALSE时,相邻字符沿Y正方向从下往上排列。(5)horizontal域值(8)justify域值相对于X与Y轴来说的对齐方式。如有两个选项,第1个值为主对齐方式,第2个值为次对齐方式可以有“FIRST”、“BEGIN”、“MIDDLE”、“END”默认值为“BEGIN”、“FIRST”(9)Language域值用来指定string域值中所使用的语言,比如英语德语等。(8)justify域值在一副背景空间下,显示两行文本,要求是typewriter字体、文本字符高度为2.0,字体既加粗又倾斜,造型位于X、Y轴的中心点在一副背景空间下,显示两行文本,要求是typewriter字虚拟现实技术课件第四章什么样的场景?在背景画面中,显示两行垂直文本的画面,要求是sans字体,高度为0.5,造型为加粗字体什么样的场景?在背景画面中,显示两行垂直文本的画面,要求是s虚拟现实技术课件第四章将文本造型与基本造型结合,在背景画面上,增加一个透明板,然后再与文本造型融合的场景。将文本造型与基本造型结合,在背景画面上,增加一个透明板,然后虚拟现实技术课件第四章3.8PointSet“点”节点通过前面介绍的模型节点,可否能创造出复杂多变的复杂场景?前面介绍了通过模型节点创建出一些简单几何造型,如球体、立方体、圆锥体、圆柱体和文本造型等。而一个虚拟空间的内容是丰富多彩的,仅有一些简单造型是不能满足VRML设计需要的。因此,需要创建出更加复杂而多变的场景和造型来满足人们对虚拟现实空间环境的渴望。这样不仅使虚拟现实场景更加逼真,具有真实感,而且使虚拟现实场景等同于现实生活效果。“点”节点的作用PointSet节点用来生成几何点,并为其定位、着色和创建复杂造型,通常用做造型节点的geometry域,当做域值来使用。3.8PointSet“点”节点通过前面介绍的模型节点,3.8.1PointSet“点”节点语法PointSet“点”节点语法结构如下图所示Shape模型节点Appearance外观属性节点PointSet“点”节点Material造型外观节点外观节点Appearance域Geometry域Color
颜色节点Coord
坐标节点3.8.1PointSet“点”节点语法PointSetPointSet{colorNULL#exposedFieldSFNodecoordNULL#exposedFieldSFNode}域值类型注释:exposedField为暴露域;SFNode域含有一个单节点,必须按标准节点语法写成。PointSet{域名和域值详解(1)color域值指定了在点集合中用于着色的颜色。通常该域
值为Color节点。Color节点是PointSet节点的子节点。Color节点的语法很简单,仅包含一个域color。Color节点是专门用来控制物体造型的颜色节点,通过Color节点可以控制造型各部分的颜色。如果Color节点和Material节点同时对同一造型进行着色时,Color节点享有优先权,即按Color节点所定义的颜色对物体造型进行着色。域名和域值详解(1)color域值Color节点的语法定义Color{color[]#exposedFieldMFColor}域值类型注释:exposedFleld为暴露域;MFColor域是一个多值域,包含任意数量的RGB颜色值。域名和域值详解:
color域的值用来指定造型的颜色列表,其颜色列表中第一种颜色用来给第一个点着色,第二种颜色用来给第二个点着色,依次类推。颜色列表中的颜色数至少应该和坐标列表中的坐标数相等。该域值的默认值为NULL,即空的列表,不对点进行着色。Color节点的语法定义Color{(2)coord域值为一个坐标节点,该节点包含了用来进行点定位的每个点的坐标。通常该域值为Coordinate节点。Coord域的默认值为NULL,表示空的列表,即不创建任何点。
Coordinate节点包含了一张坐标列表,也可只包含一个域值point[000]。Coordinate节点语法定义:Coordinate{point[]#exposedFieldMFVec3f}
域名和域值详解:point域提供了一张三维坐标列表,用做一个造型的立体坐标。即X,Y,Z方向上与原点之间的距离,该域值的默认值为空,即point[]。(2)coord域值3.8.2PointSet“点”节点实例3.8.2PointSet“点”节点实例虚拟现实技术课件第四章3.9IndexedLineSet“线”节点线节点的作用?该节点创建了有关线的几何造型,包括直线和折线,该节点也常作为造型节点的Geometry域的值。IndexedLineSet线节点是使用线来构造空间造型。VRML中的线是虚拟世界中两个端点之间的直线。要想确定一条直线,就必须指定这条线的起点和终点,剩下的事由VRML浏览器解决。同样,也可以在VRML中创建折线,多个直线构成角度在端点连接起来就成了折线。浏览器是按点的顺序来连接直线的,在列表前面的点先进行连接“点”节点的作用线节点如何工作IndexedLineSet“线”节点是将许多线集合在一起,并给每一条线一个索引(Index)。将索引1的点坐标和索引2的点坐标相连,索引2的点坐标与索引3的点坐标,依次类推,就形成了一个空间折线。3.9IndexedLineSet“线”节点线节点的3.8.1IndexedLineSet“线”节点语法IndexedLineSet“线”节点语法结构如下图所示Shape模型节点Appearance外观属性节点IndexedLineSet“线”节点Material造型外观节点外观节点Appearance域Geometry域Color
颜色节点Coord
坐标节点3.8.1IndexedLineSet“线”节点语法IndIndexedLineSet线节点语法定义IndexedLineSet{coordNULL#exposedFieldSFNodecoordIndex[]#fieldSFInt32colorNULL#exposedFieldSFNodecolorIndex[]#fieldSFInt32colorPerVertEXTRUE#fieldSFBoolset_coordIndex[]#eventInMFInt32set_colorIndex[]#eventInMFInt32}域值类型注释:exposedField为暴露域;field为域;SFNode域含有一个单节点,必须按标准节点语法写成;MFInt32域是一个多值32位整数;SFBool域是一个单值布尔量。IndexedLineSet线节点语法定义IndexedLi域名和域值详解(1)coord域的值列出了所有构造线坐标的集合列表。该域值的默认值为NULL,为一空列表,表示不创建任何直线。(2)coordIndex域的值指定了一张用来描述一条或多条折线路径的索引都指定了coord域所提供的坐标列表中的一个坐标。该域的值默认为空,表示不创建任何直线。一张坐标索引表可以提供一条或多条折线路径的列表。每一条折线的连接方式都是按坐标索引列表的索引值的顺序从前向后排列的,直到索引表的末尾为“-1”的索引值为止。下一条折线是从“-1”的索引值开始的,直到索引表的末尾的另外一个“-1”的索引值为终止。域名和域值详解(1)coord域的值(3)color域和colorIndex域均用来给所创建的线着色。
color域的值指定了一个节点,用来在线集中对直线进行着色,该域值通常为Color节点。
colorIndex域的值指定了一个颜色索引列表,用来指定要使用的颜色,其域值必须大于或等于0,且为整型,该域值的默认为空。(3)color域和colorIndex域均用来给所创建的线(4)colorPerVertex域的值指定Color节点颜色列表中的颜色是用于每一个折线,还是用于每一个折线的每一个坐标索引。当该域值为TRUE时,则颜色列表中的颜色用于每一个折线的每一个坐标索引;当该域值为FALSE时,则表示用于每一个折线。该域值的默认值为TRUE。当colorPerVertex域为TRUE且colorIndex域为非空时,其颜色索引列表中第一个颜色索引给第一个坐标索引着色,第二种颜色索引用来给第二个坐标索引着色,依次类推。颜色列表中的颜色数至少应该和坐标索引数相等。当colorPerVertex域为FALSE,且colorIndex域为非空时,其颜色索引列表中第一个颜色索引给第一条折线着色,第二种颜
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于房屋租赁托管的合同范本
- 2025关于担保公司借款合同范本
- 二零二五年度影视动画制作与版权转让合同
- 二零二五年度建筑工程用木材采购合同3篇
- 2025版高考数学一轮复习核心考点精准研析1.2命题充分条件与必要条件文含解析北师大版
- 感恩时代青春奋斗
- 二零二五年度房屋买卖合同附家具家电回购协议3篇
- 动脉瘤性蛛网膜下腔出血诊疗指导建议规范课件
- 二零二五年度建筑材料捐赠合同样本3篇
- 二零二五年度商业秘密不可撤销反担保协议3篇
- 农业装备与机械化的经济效益与社会效益
- (完整)中医症候积分量表
- 医疗团队管理技巧与策略
- 《功能点计算方法》课件
- GB/T 451.2-2023纸和纸板第2部分:定量的测定
- 工会提案培训课件
- 高空抛物法律知识讲座
- 射频工程师年终总结
- 2019统编版高中数学A版必修第二册教学计划含教学进度表(高一下学期数学教学计划)
- 抖音短视频运营部门薪酬绩效方案(短视频运营薪酬绩效考核方案)
- 增值税发票销货清单
评论
0/150
提交评论