《第二章VRML的基本知识.ppt》由会员分享,可在线阅读,更多相关《第二章VRML的基本知识.ppt(57页珍藏版)》请在三一办公上搜索。
1、Ch2 VRML基本知识,开发及运行VRML所需工具示例程序基本概念,VRML的运行环境,VRML对硬件与软件的环境要求都较低,一般计算机都可以运行,配置较高,运行速度较快。一般推荐配置为:(1)硬件环境:建议采用Pentium 4以上的计算机,主频2G以上、内存128M以上、显存64M以上、硬盘10G以上。(2)软件环境:操作系统可采用Windows2000/XP/2003等,安装VRML相关浏览插件。(3)网络环境:浏览VRML场景时可以采用拨号、宽带、无线等网络接入方式,网络浏览器可采用IE浏览器或Netscape浏览器。,开发及运行VRML所需工具,编辑工具:一般的文本编辑器如记事本N
2、otePad或写字板WordPad,编辑VRML源程序代码。程序存盘时文件的扩展名必须是.wrl(world的缩写)或.wrz vrmlpad2.0浏览工具:安装浏览器插件:cortonaPlayer Version 4.2安装过程中取默认值即可,VRML的编辑器,VrmlPad是由Parallel Graphics 公司开发的基于文本式的、支持即时预览的VRML专用开发工具,另外还有如Cosmo World、Internet3D Space Builder等可视化场景创作工具。主流的三维建摸软件如3DSmax、Maya、Blender等通过插件的方式都支持场景的VRML格式输出。文件/导出,
3、选择wrl格式即可.VrmlPad常用版本是2.0.,VrmlPad编辑器的主界面,VrmlPad编辑器的主要功能有:,文件管理功能,(2)文件编辑功能,(3)具有预览功能,(4)方便快捷的材质编辑功能,(5)方便下载VRML资源,7.2.2 VRML场景的浏览器,要在浏览器中观察VRML场景,需要安装VRML浏览器插件。下面的清单列出了目前常用的VRML/X3D浏览器插件。,BitManagement BS Contact X3D/VRML97插件,支持Internet Explorer(Windows)Octaga X3D/VRML浏览器,支持Internet Explorer(Windo
4、ws)CRC FreeWRL X3D/VRML浏览器,基于C语言开发,开源,支持MacOSX,Linux平台Xj3D for X3D/VRML97 开源浏览器,是用于制定X3D规范的试验工具,2.0版本采用Java,其它浏览器:Parallel Graphics Cortona3D VRML97 插件,支持Netscape与Internet ExplorercortnaPlayer Version 4.2。blaxxun Contact VRML97 插件,支持Netscape or Internet Explorer Cosmo Player VRML 插件,是对VRML97标准支持程度最高
5、的一款浏览器,已停止开发,支持 Firefox 与 Internet Explorer OpenVRML 一个跨平台的VRML/X3D运行环境(MacOSX,Linux,FreeBSD),第二节 示例程序P11,#VRML V2.0 utf8DEF qiuti Transform children Shape appearance Appearance material Material diffuseColor 0 1 1geometry Sphere radius 1.1 DEFtime TimeSensor#时间传感器 cycleInterval 2.0 loop TRUEDEFbian
6、hua PositionInterpolator#移动位置节点key 0.0,1.0#相对时间的逻辑值keyValue 0 0-10#空间坐标的位置值与相对时间的逻辑值对应 0 0 6 ROUTE time.fraction_changedTO bianhua.set_fractionROUTE bianhua.value_changed TO qiuti.set_translation,第三节 VRML 2.0基本概念,VRML空间计量单位文件结构VRML的域VRML数据类型对象和事件路由,在构建虚拟场景时,构成场景的造型有大小差别,物体间有相对位置的不同,并且造型还有旋转、移动等运动。这就
7、涉及到物体的空间坐标系、相应的长度、角度及颜色等。在VRML中,采用空间直角坐标系确定造型的位置,并且用特定的计量单位定量表示长度。,VRML的空间坐标与计量单位,VRML的空间坐标与计量单位(1)VRML空间坐标系 在VRML场景中,空间直角坐标满足右手螺旋法则,就是说,右手四指从X方向转到Y方向,则拇指的指向是Z方向。在默认情况下,X坐标向右为正;Y坐标向上为正;而Z坐标指向观察者,如图所示。,VRML三维空间坐标系,VRML采用笛卡儿坐标系统,在空间的正中间定义了默认的原点,并以此基点建立了笛卡儿坐标系。空间的每一个点的位置用一组由三个实数构成的组表示,作为该点相对于原点的坐标。形式为(
8、X Y Z)。第一个数X为横坐标,表示对象在空间中的左右位置,第二个数Y为纵坐标,表示对象在空间中的上下位置,第三个数Z表示对象在空间中的远近位置。,长度及坐标的计量单位是一个VRML单位,在三维空间中,它是统一的,实际应用时由开发者统一协调.需要注意的是,这里表示的单位和实际环境中的计量没有任何可比性,和一些三维建模软件如3DSMAX的计量单位也没有可比性。,(2)VRML长度单位,(3)VRML角度单位 在VRML中,使用的角度不是普通的角度,而是用弧度表示,这是浏览器接受的角度描述。当换算成弧度后,再将其写入到VRML源程序中。VRML中的360角度等于2弧度,由此,1弧度约等于57。,
9、一些常用角度的弧度值(弧度=角度*/180),(4)空间立体着色 在VRML三维空间中,无论是背景、光线的颜色、物体,它们的颜色都是由红、绿、蓝(RGB)组合而成,对应3个浮点数,其域值为0.0-1.0之间,由这三原色组合成各种颜色。常用颜色组合P13,空间背景结点,Background skyAngle 天空角1,天空角2,skyColor 天空色0,天空色1,天空色2,groundAngle 地面角1,地面角2,groundColor 地面色0,地面色1,地面色2,,结点说明,天空色0为0度天空位置的颜色地面色0为0度地面位置的颜色天空色1,2,对应天空角1,2,地面色1,2,对应地面角1
10、,2,系统自动过渡相邻位置的颜色角度的单位为弧度颜色由r、g、b分量合成颜色分量的数值范围:0.01.0,制作VRML网页bk.wrl。(空间背景),例 题,参考源代码,#VRML V2.0 utf8Group children Background skyAngle 1.047 1.570#60度,90度 skyColor 0.0 0.0 1.0,0.2 0.2 0.8,1.0 1.0 1.0 groundAngle 1.396 1.570#80度,90度 groundColor 0.0 1.0 0.0,0.0 0.5 0.2,1.0 1.0 1.0,二、VRML的语法结构,VRML语法主要
11、包括有文件头、节点、原型、脚本和路由等。只有文件头是必须的。在VRML文件中,节点是核心,没有节点,VRML也就没有意义了。VRML场景可以由一个或多个节点组成,VRML中还可以通过原型节点创建新的节点。节点之间过路由实现动态的交互与感知,或是使用脚本文件或外部接口进行动态交互。,通用的VRML文件语法结构:,#VRML V2.0 utf8#VRML文件的第一行必须有这一 行,这是VRML文件标志节点名#VRML的的各种“节点”域 域值#对应“节点”的“域”与“域值”Script#脚本Script节点 ROUTE#路由:把入事件与出事件相关联 在这个VRML文件结构中,包括有以下几个内容。它是
12、一个很典型的VRML文件。它表达了下述几个方面的含义:,1.文件头 VRML文件中的第一行#VRML V2.0 utf8,这是VRML文件头,任何VRML文件都必须有这样的文件头,并且必须放在第一行.(1)#,这个#不是注释,而是VRML文件的一个部分;(2)VRML表示告诉浏览器,这是个vrml文件;(3)V2.0表示告诉浏览器,这个文件使用vrml2.0版的规范完成;(4)utf8表示文件是使用国际UTF-8的字符集。,专用名词,节点域,节点(Node)是VRML文档基本的组成单元,是VRML的精髓和核心。它描述对象某一方面的特征:如形状、材质等。VRML文件就是若干表现功能各异的节点层层
13、嵌套构成.节点具有节点名、节点类型、域、事件接口和实现五个组成部分。节点可以用DEF语句命名,用USE语句引用。,节点格式,节点名#各种类型的节点 域名 域 值 域值类型说明.如:geometry Sphere radius 1.5,域,域定义了节点的各个属性,每个域都代表了不同的属性类似于高级语言中的“变量”或“数组”域的类型1)普通域(field)2)公共域(exposedField)除脚本节点外,其余节点内的每个域的类型是预定的。域名:节点内域名是唯一的,是VRML中的关键字域值:域的取值,和VRML的数据类型有关。除脚本节点外,其余节点内的每个域有自己的默认值。,同一个节点中的域的特点
14、,无序性 可选性(有默认值)域名的唯一性 具有不同的类型,例,#VRML V2.0 utf8Shape appearance Appearance material Material diffuseColor 1 0 0geometry Sphere radius 1.5,单值类型:以“SF”开始,只包含单值。单值:一个独立的数,或表示向量、颜色或旋转的视为一组的数.多值类型 以“MF”开始,多个单独的数或多组 用方括号括起来的一系列用逗号和空格隔开的单值,VRML的数据类型(域的类型),SFBoolSFFloat 和MFFloatSFInt 和MFIntSFVec2f 和MFVec2f SF
15、Vec3f 和MFVec3fSFString和MFStringSFTime和MFTimeSFColor和MFColorSFRotation和MFRotation,VRML的数据类型(域的类型),SFBool单值布尔型,只有两个值:TRUE/FALSETRUE(真)/FALSE(假)不能用1 和0表示,SFFloat 和MFFloatSFFloat:单精度浮点数,如1.5MFFloat:多个单精度浮点数,空格或逗号分割.如:0.1 0.5,如:field MFFloat abc 0.0 1.0定义一个普通域,MFFloat类型,域名abc可以以数组格式引用abc0,abc1,SFString和M
16、FStringSFString字符串,用双引号括起来.“How Are You!”字符串中有双引号,则在其前面加”“How Are“You“!”MFString:“abc”,“def”,SFVec2f 和MFVec2f 二维向量SFVec2f:0.0 1.0,一组数.MFVec2f:0.1 1.0,1.0 2.0 MFVec2f可以采用数组引用:field MFVec2f qiu 0.1 1.0,1.0 2.0,SFTime和MFTime绝对时间和相对时间绝对时间:从格林威治时间1970年1月1日零时开始到现在的秒值.P13,相对时间:某一时刻作为计时的0点,用0表示,另一时刻作为终点,用1表
17、示.0 1,实际时间可以是1秒1分1小时若干小时.,SFRotation和MFRotation围绕指定轴旋转的数据.有4个值0 0 1 1.57前3个是坐标,最后一个是旋转角度,对象和事件,对象:具有属性(如高度、宽度、颜色等)、行为动作的实体或模型。VRML 中的 节点就是对象。例题2-1 中的qiuti、time、bianhua等。对象具有收发信息的功能。通过事件完成。,事件(Event),在VRML中,“事件”是操作者、节点、系统本身、程序代码产生的行为动作。如:鼠标点击是事件,操作者所为 时间传感器的定时时间到,由系统产生。坐标值变化是事件,由节点产生,比如位置插补器节点.,事件(Ev
18、ent),每一个节点一般都有两种事件:“入事件”(eventIn)和“出事件”(eventOut),每个节点通过这些“入事件”和“出事件”来改变节点自己的域值。“出事件”:发送节点域值和时间值:入事件”:接收节点域值和时间值,事件的命名规律:,“入事件”以set _开头,“出事件”以_changed结尾。节点中的公共域,如果名为translantion,则有出事件translantion _changed,入事件:set _ translantion,事件的命名规律:,如果出事件传递的值类型为SFBool,事件名以is开头.如:触摸传感器节点中的出事件:isActive、isOver如果出入事
19、件传递值类型是SFTime,则名称常以Time结尾。如:时间传感器入事件startTime,触摸传感器节点中的出事件TouchTime,事件的引用,对象本身的引用直接使用对象名称;对象的事件、属性、方法引用使用“.”操作符,如:对象名.事件名对象名.属性名对象名.方法名,MFNode 类型的节点,对象引用涉及数组。P18 例题。,路由,路由的功能是连接一个节点的入事件 eventIn和另外一个节点的出事件 eventOut。实现对象之间通过事件发生的节点域值、时间值的传递。路由以ROUTE开头.,路由的出现,可使虚拟空间具有交互性、动感性与灵活性。借助于事件和路由,能够使得所建立的虚拟场景更接
20、近于现实。,注意:,值传递时出事件的数据类型和入事件的数据类型必须匹配,否则就会出错。例题:2-1 line19、20ROUTE time.fraction_changedTO bianhua.set_fractionROUTE bianhua.value_changed TO qiuti.set_translation,示例程序P11,#VRML V2.0 utf8DEF qiuti Transform children Shape appearance Appearance material Material diffuseColor 0 1 0geometry Sphere radius 1.1 DEFtime TimeSensor#时间传感器 cycleInterval 2.0 loop TRUEDEFbianhua PositionInterpolator#位置插补节点key 0.0,1.0#相对时间的逻辑值keyValue 0 0-10#空间坐标的位置值与相对时间的逻辑值对应 0 0 6 ROUTE time.fraction_changedTO bianhua.set_fractionROUTE bianhua.value_changed TO qiuti.set_translation,坐标变换节点,立体造型节点,