虚拟现实技术课件第四章群节点_第1页
虚拟现实技术课件第四章群节点_第2页
虚拟现实技术课件第四章群节点_第3页
虚拟现实技术课件第四章群节点_第4页
虚拟现实技术课件第四章群节点_第5页
已阅读5页,还剩535页未读 继续免费阅读

下载本文档

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

文档简介

虚拟现实技术主讲:杨文晖虚拟现实技术主讲:杨文晖第四章VRML1VRML简介2VRML编程语法基础3VRML基本节点编程4群节点创建VRML立体空间造型5VRML场景效果节点编程设计6VRML动态感知虚拟现实节点7VRML通用接口节点8VRML实例编程第四章VRML1VRML简介1VRML简介VRML是什么?虚拟现实三维立体网络程序设计语言VRML(虚拟现实建模语言)VERML的意义?作为第二代网络程序设计语言的VRML完全改变了网络的二维平面世界,实现了真正意义上的三维立体网络世界、动态交互与智能感知等,实现计算机网络、多媒体及人工智能的完美结合使人们真正感受到计算机网络世界的无穷魅力1VRML简介VRML是什么?1.1VRML的发展历史计算机技术的迅猛发展计算机将人类社会带人崭新的信息时代。尤其是计算机网络的飞速发展;使我们的地球变成了一个地球村早期的网络系统主要传送文字、数字等信息,但多媒体技术在网络上的应用,使目前计算机网络无法承受如此巨大的信息量。为此,人们开发出信息高速公路,即宽带网络系统,而在信息高速公路上驰骋的高速跑车就是VRML虚拟现实建模语言系统,也就是“虚拟现实三维立体网络程序设计语言”。初级计算、实时控制、事务处理巨型化、微型化、网络化、智能化、多媒体1.1VRML的发展历史计算机技术的迅猛发展初级计算VRML(VirtualRealityModelingLanguage)是什么?虚拟现实建模语言,是一种三维造型和渲染的图形描述语言,通过创建一个虚拟场景以达到现实中的效果。是一项和多媒体通讯、因特网、虚拟现实等领域密切相关的新技术,用来描述一个目标对象是如何呈现在Web上的。和HTML一样,VRML也是可由浏览器解释的描述语言,只不过VRML不是描述成一个Page的格式,而是描述成3D环境和目标的布局。它的主要特征有三维性、交互性、动态性、实时性等VRML给网络带来了什么?

VRML支持功能大大改变了原来万维网上单调、交互性较差的弱点,创建一个全新的可进入、可参与的三维虚拟现实世界。VRML(VirtualRealityModelingVRML虚拟现实建模语言用来在网络上创建逼真的三维虚拟场景。有哪些改进?增强了静态世界;增加了交互性;增加了动画功能;增加了编程功能;增加了原形定义功能。

VRML虚拟现实建模语言用来在网络上创建逼真的三维虚拟场关于场景?对象?节点?实例?VRML是虚拟现实建模语言,是一种三维造型和渲染的图形描述性语言,它把“虚拟世界”看做一个“场景”,而场景中的一切都被看做“对象”(也称为节点),对每一个对象的描述就构成了.wrl文件。本质上是一种面向web,面向对象的三维造型语言,而且它是一种解释性语言。VRML的对象称为节点,子节点的集合可以构成复杂的景物。节点可以通过实例得到复用,对它们赋以名字,进行定义后,即可建立动态的VR(虚拟世界)。关于场景?对象?节点?实例?发展历史发展历史后期发展?SGI公司,最有影响力的VRML厂商,已经引进Cosmo3D——一个VRML2.0的API,作为其新的工具结构Viper的基础。SGI公司许多广为传播的工具也支持VRML2.0。SunMicrosystem公司,Java的先驱,选择VRML2.0作为其基于Java的3DAPI——Java3D的功能内核。Microsoft公司已经采纳了VRML2.0标准,并已利用DimmensionX基于Java的LiquidReality来生成用于WML2·0测览的ActiveX组件。IBM公司和Apple公司与ParaGraph公司合作,开发以图形压缩为特点的VRML二进制格式,这项工作不仅可以使文件大小减少50%,还可以把VRML使用者的范围拓宽后期发展?1.2VRML的特点VRML具有的特点?平台无关性;网络传输高速性;实时性;可扩充性可建模性1.2VRML的特点VRML具有的特点?1.3VRML的发展前景虚拟现实建模语言VRML设计源于虚拟现实技术。虚拟现实技术是20世纪末发展起来的涉及众多学科的高新技术,它是集计算机、仿真、微电子、传感与测量技术于一体的高新科技的融合。而虚拟现实建模语言VRML正是利用虚拟现实技术在计算机中创建一种虚拟环境,通过视觉、听觉、触觉、味觉、嗅觉及生理反映等感知器,使用户产生一种与现实生活相同的感受,有身临其境的感觉,甚至生理感觉,可实现用户与虚拟现实环境直接进行交互。虚拟现实建模语言VRML涉及计算机网络、多媒体和人工智能技术三大领域及自然科学、社会科学和哲学。具体地讲,虚拟现实环境一般包括计算机图形学、图像处理、模式识别、传感器、语音处理、网络技术、并行处理、人工智能等高新技术,还涉及天文、地理、数学、物理、化学、美学、医学、军事、生理学和心理学等领域。1.3VRML的发展前景虚拟现实建模语言VRML设计源关于Wed3DX3D与VRML?VRML发展已经成为新的国际标准X3D,它在VRML的基础上做了很多改动。X3D是一种支持XML编码格式的开放式3D标准,3D数据可以通过网络实现实时交流,具有可移植性,页面整合性,易于和下一代的网络技术整合,另外采用了组件化结构设计减少了系统资源的占用且具有很强的扩展性1998年。VRML组织把自己改名为Web3D组织,同时制订了一个新的标准,Extensible3D(X3D),到了2000年春天,Web3D组织完成了VRML到X3D的转换。X3D整合正在发展的XML、JAVA、流技术等先进技术,包括了更强大、更高效的3D计算能力、渲染质量和传输速度关于Wed3DX3D与VRML?

没有统一标准的Web3D,谁是最后的赢家呢?Java3D和GL4Java(OpenGlForJava)Fluid3DSuperscape(VRT)Vecta3Dpulse3Dblaxxun3D和Shout3DCult3dAtmosphere没有统一标准的Web3D,谁是最后的赢家呢?Java3D和GL4Java(OpenGlForJava)应用?JAVA3D可用在三维动画、三维游戏、机械CAD等领域。与VRML的异同点?可以用来编写三维形体,但和VRML不同,JAVA3D没有基本形体,利用JAVA3D所带的UTILITY生成一些基本形体如立方体、球、圆锥等,或者直接调用其他软件生成的形体可以和VRML一样,使形体带有颜色、贴图。可以产生形体的运动、变化,动态地改变观测点的位置及视角。可以具有交互作用前景?可以充分利用JAVA语言的强大功能,编写出复杂的三维应用程序。Java3D和GL4Java(OpenGlForJavaFluid3D应用与特点?Fluid3D并不是一个Web编写工具,它着眼于强化3D制作平台的性能。Fluid3D插件填补了市场的一个空白,尽管到目前为止它的应用范围还相当有限。它的主要功能是可以用来传输高度压缩的3D图像,而这种图像的下载通常是相当麻烦和耗时的。它的运用有助于使Web的3D技术更实用和切合实际,使之对桌面用户而言更有乐趣。Fluid3D应用与特点?Superscape(VRT)应用?SuperscapeVRT是Superscape公司基于Direct3D开发的一个虚拟现实环境编程平台。特点?它最重要的特点是引入了面向对象技术,结合当前流行的可视化编程界面另外,它还具有很好的扩展性。用户通过VRT可以创建真正的交互式的3D世界,并通过浏览器在本地或Internet上进行浏览。Superscape(VRT)应用?Vecta3D应用?它是3DSMAX的一款插件,可生成输出FLASH的文件与AdobeIllustrator的AI文件。Vecta3D应用?pulse3D应用?Pulse在娱乐游戏领域发展,他瞄准的目标市场也是娱乐业Pusle3D提供了一个多媒体平台,囊括2D和3D图形、声音、文本以及动画等,特点?Pusle平台分为三个组件:PuslePlayerPusleProducerPusleCreatorpulse3D应用?Pusle3D的三个组件PuslePlayerPuslePlayer也即播放器插件,除了为IE和Netscape提供的浏览器插件外,Pusle还得到了Apple和Realnetwork的支持,在Quicktime和RealPlayer中已经包含了Pulse播放器PusleProducer是用来在三维动画工具中输出Pulse所需数据的插件能够输出到Pulse3D中的数据包括:几何体网格、纹理、骨骼变形系统、Morph网格变形动画、要害帧动画、音轨信息和摄像机信息等PusleCreator是Pulse3D的总组装平台,在导入数据后它负责加入交互性、打光、压缩、流传输和缓存等制作任务Pusle3D的三个组件PuslePlayerblaxxun3D和Shout3D应用?blaxxun3D和Shout3D是一个基于JAVAapplet的渲染引擎,它渲染特定的VRML结点而不需要插件的下载安装。他们都遵循VRML、X3D规范特点?

Shout3D用插件直接从MAX中输出3D内容和动画。

blaxxun3D是BrilliantDigital娱乐公司的产品,给3DStudioMax提供的b3d技术。Brilliant的程序员开发了一个数据压缩和发布技术,使得使得在窄带下也能够实现3D数据流的传输。它引入了以对象为基础的数据库将数据流和所存贮的数据连接起来。然后角色按情节指令进行动画。艺术家和动画师可以直接从3dstudiomax中直接输出动画到b3d授权环境下,在那里文件被压缩并使用Brilliant的数字播放技术发布到web上。blaxxun3D和Shout3D应用?Cult3d定义?位于瑞典的Cycore原是一家为AdobeAfterEffect和其它视频编辑软件开发效果插件的公司。为了开发一个运用于电子商务的软件,Cycore动用了50多名工程师来开发他的流式三维技术。现在,Cycore的Cult3D技术在电子商务领域已经得到了广泛的推广运用。和Viewpoint相比,Cult3D的内核是基于JAVA,它可以嵌入JAVA类,利用JAVA来增强交互和扩展,但是对于Viewpoint,他的Xml构架能够和浏览器与数据库达到方便通信。Cult3D的开发环境比Viewpoint人性化和条理化,开发效率也要高得多Cult3d定义?Atmosphere应用?这是在Adobe公司推出的一个通过互连网连接多用户的3D环境下的在线聊天工具。在Atmosphere中浏览的感觉类似于玩Doom类的3D视频游戏,不同的是其场景可以通过互联网让多个用户参与,彼此实时地看到对方对象的位置和运动情况,并在线聊天。由于Atmosphere环境提供了对自然重力和碰撞的模拟,使浏览的感受极具真实性。Atmosphere应用?Shockwave3D应用?Macromedia公司的Shockwave3D技术已在全球拥有1亿多用户,它包含了Intel的网上3D图形技术。鉴于Intel和Macromedia在业界的地位,Shockwave3D得到了众多软硬件厂商的支持,包括ATI和nVidia公司也在其新发布的显示芯片中提供了对Shockwave3D硬件加速的支持。已推出的MacromediaDirectorShockwaveStudio8.5开发工具中,最重大的改变就是加入了Shockwave3D引擎。Shockwave3D技术具有以下特点:支持骨骼变形系统;支持次细分表面,可以根据客户端机器性能自动增减模型精度;支持平滑表面、照片质量的纹理、卡通渲染模式;支持烟、火、水等非凡效果;具有强大的交互能力等。由于Shockwave3D在画面生成质量上还无法与VET和Cult3D抗衡,因此在产品展示应用领域它并不具备优势,其主要用场将是需要复杂交互性控制能力的娱乐游戏和教育领域Shockwave3D应用?VET(ViewpointExperienceTechnology)前身是由Metastream和Intel合作开发的Metastream技术,在Metastream收购了Viewpoint公司后就采用了该新名称。早在Metastream2.0版中,其技术优势就已经表现出来。它生成的文件格式非常小,3D多边形网格结构具有可伸缩和流传输的特性,非常适于在网络上传输。在其3D数据的下载过程中,可以看到一个低精度的粗糙模型逐步转化为完整的高精度模型。VET(即Metastream3.0)在老版本基础上进行了推陈出新,其结构上有两部分:存储3D数据和贴图数据的mts文件、对场景参数和交互进行描述的基于XML的mtx文件。VET具有一个纯软件的高质量实时渲染引擎,渲染效果接近真实而不需要任何的硬件加速设备。VET可以和用户发生交互操作,通过鼠标或浏览器事件引发一段动画或是一个状态的改变,从而动态地演示一个交互过程。目前,该技术主要被许多企业或电子商务网站所采用,来进行产品宣传或商品展示。VET(ViewpointExperienceTechn1.4VRML浏览器

VRML文件需要通过VRML文件的浏览器支持才能运行,支持VRML文件的浏览器有很多,常见的有:MicrosoftVRML浏览器Cosmo播放器这两款浏览器的操作按钮功能相似,但这两款浏览器(播放器)所定义的初始视点不同,所以同一VRML文件所显示的VRML场景不尽相同。在这个浏览器能正常浏览而在另一个浏览器中则不能正常运行的情况。1.4VRML浏览器VRML文件需要通过VRML文件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工作原理图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程序中的主函数的作用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

NULL#域值类型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“点”节点通过前面介绍的模型节点,可否能创造出复杂多变的复杂场景?前面

温馨提示

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

评论

0/150

提交评论