您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > VRML_实验指导书1
VRML编程实验指导2010年3月1入门篇VRML简介在本次实验中,我们来学习使用VRML编程。一、VRML的历史和现状VRML(VirtualRealityModelingLanguage),意为虚拟现实建模语言。简单点说,VRML是一种用于描述三维造型与交互环境的简单的文本语言;复杂点说,VRML是在Internet上建立3D多媒体和共享虚拟世界的一个开放标准。VRML的基本目标是建立因特网上的交互式三维多媒体,基本特征包括分布式、三维、交互性、多媒体集成、境界逼真性等。VRML开始于20世纪90年代初期。1994年3月在日内瓦召开的第一届大会上,首次正式提出了VRML这个名字。1994年10月在芝加哥召开的第二届草案。1996年8月在新奥尔良召开的3D图形技术会议—Siggraph’96上公布通过了规范的VRML2.0第一版。比VRML1.0增加了近30个节点,增强了静态世界,增加了交互性、动画功能、编程功能、原形定义功能。1997年12月VRML作为国际标准正式发布,1998年1月正式获得国际标准化组织ISO批准(国际标准号ISO/IEC14772-1:1997)。简称VRML97。VRML97只是在VRML2.0基础上进行了少量的修正。1999年底,VRML的又一种编码方案X3D草案发布。X3D整合正在发展的XML、JAVA等先进技术,包括了更强大、更高效的3D计算能力、渲染质量和传输速度。2000年6月世界web3D协会发布了VRML2000国际标准(草案),2000年9月又发布了VRML2000国际标准(草案修订版)。VRML从此又进入了一个崭新的发展时代。二、VRML的功能和工作原理VRML包含3D动画、音效、传感器触发、事件输入输出、行为控制、支持多种脚本与多重使用者等功能,真正在Web上实现了动态页面,并加强了互动功能,达到真正虚拟的效果。VRML的访问方式是基于客户/服务器模式,其中服务器提供VRML文件(后缀为.WRL)及支持资源客户通过网络下载希望访问的文件,并通过本地平台上的VRML浏览器(Browse)交互式访问该文件描述的虚拟境界(VirtualWorld),因为浏览器是本地平台提供的,从而实现了和硬件平台的无关性。VRML象HTML一样,是一种ASCII码描述语言,它是一套告诉浏览器如何创建一个三维世界并在其中航行(Navigation)的指令,这些指令由绘制器(Render)解释执行,绘制器是一个内置于浏览器中或外部的程序。三、VRML的核心体系VRML文件描述的基于时间的三维空间称为虚拟境界(VirtualWorld),它由对象构成,而对象及其属性用节点描述,节点(Node)是VRML的基本单元。每个节点由类型、域(Field)、2事件(Event)、实现、名字组成,节点按一定规则构成场景图(Scenegraph),场景图中分两类节点,第一类节点用于视觉、听觉角度表现对象,它们按层次体系组织,反映境界的空间结构,提供颜色、灯光、超链接、材质、化身、重力、碰撞、地形随动、飞行等功能,支持局部坐标系;第二类节点参与事件产生和路由(Route)机制,形成路由图,确定境界随时间推移如何动态变化。环境变化、用户交互、时间推移产生事件,传感器(Sensor)检测并发出初始事件,实践产生其他事件或修改场景图结构,从而提供动态特性。插补器(Interpolator)是特殊事件处理器,利用它可以设计动画。对于复杂行为处理则须利用脚本节点(Scriptnode),它包含一组脚本描述语言编写的函数,Script节点收到事件后,将执行相应的函数,该函数可以通过常规的事件路由机制发送事件或直接向Script节点指定节点发送事件,脚本也能动态增、删路由。四、VRML的使用与开发条件VRML的浏览环境:IE+VRML浏览插件(如CosmoPlayer、Cortona等)VRML的开发工具:Windows记事本或专业VRML开发工具(如VRMLPad)五、VRML编程的一些基本概念1.虚拟世界中的坐标系:在VR世界中,X轴指向屏幕的右侧,Y轴指向屏幕的上方向,Z轴指向观察者,原点位于屏幕表面的中心,空间中的任何一点都可以用坐标(X,Y,Z)的形式表示。2.VRML程序的构成:所有的VRML文件都是以扩展名WRL结尾的文本文件或以WRZ(压缩格式)结尾的二进制文件,它一般包含如下4个部分:(1)文件头:位于VRML文件的首行,给浏览器提供文件的版本信息。对于VRML2.0,它是:#VRMLV2.0utf8。(2注释:以#号开始的一段文字。(3)节点:场景信息的单位。可以用它来描述场景中的造型、灯光及声音等,如:Cylinder{...}描述的就是场景中的一个圆柱形节点。(4)域值:域用于描述及改变节点的属性,值反应了域的大小。如:Cylinder{height2.0radius1.5}其中的height与radius就是域,而2.0和1.5就是值。域是可选的且顺序不限,如果一个节点中没有任何域,则域取内定的缺省值。掌握了以上这些知识,我们就可以着手进行VRML简单编程的学习了!3基础篇VRML简单编程准备工作1.安装VRML的IE插件Cortona(可从服务器上下载,cortvrml.exe)2.打开Windows附件中的“记事本”程序,作为文本编辑器,也可以使用Vrmlpad编辑器(可从服务器下载)。第一节HelloWorld一、实验目的掌握使用几何体构建境界及设定几何体的颜色与材质的方法二、实验内容创建一个由立方体、圆锥和球体组成的场景三、实验步骤1.创建立方体在文本编辑器中输入的第一行文字是:#VRMLV2.0utf8这是VRML文件的标志,所有2.0版本的VRML文件都以这行文字打头,VRML97是由VRML2.0版修订而成的,符合VRML97规范的VRML文件也以这行文字打头。其中“#”表示这是一个注释。而utf8表示此文件采用的是utf8编码方案,这在标准中有详细说明。先加入一个Group节点(组节点):4Group{组节点的花括号之内的所有内容视为一个整体,利用组节点可以把虚拟场景组织成条理清晰的树形分支结构。下面定义组节点的children域(孩子域):children[在children后的方括号内定义Group节点的所有孩子对象,第一个孩子是一个Shape节点(形态节点),它描述一个几何形状及其颜色等特征:Shape{在Shape节点内定义一个几何体Box(方盒节点):geometryBox{}注意我们没有为Box定义任何域,这意味着它的尺寸和坐标位置等特性取缺省值(单位立方体)。随后补齐各右括号:}]}至此,我们已经成功地制作了第一个虚拟境界,把它保存为“01_白色立方体.wrl”,下面是完整的代码:#VRMLV2.0utf8Group{children[Shape{geometryBox{}}]}用浏览器打开这个文件,你会看到一个白色的立方体,如图1.1所示。尽管不太好看,但你还是可以通过改变视点位置从不同方位观察它,初步体验“三维交互”的感觉。图1.12.定义立方体的外观下面定义立方体的外观,这只需改变Shape节点的appearance域(外观),appearance域是一个Appearance节点,此Appearance节点的material域(材质)定义为一个Material节点:appearanceAppearance{materialMaterial{}}这样,上面的Shape节点变成了:5Shape{appearanceAppearance{materialMaterial{}}geometryBox{}}这是定义几何造型的基本格式。现在立方体还是白色的,这是因为其中的Material节点采用的还是缺省值,下面修改它的diffuseColor域(漫射色),VRML的颜色说明采用的是RGB颜色模型,所以要定义红色的立方体,漫射色应该是{100},三个数字依次表示红色、绿色和蓝色,取值范围都是0到1:materialMaterial{diffuseColor100}现在我们生成了第二个场景,完整的代码是:#VRMLV2.0utf8Group{children[Shape{appearanceAppearance{materialMaterial{diffuseColor100}}geometryBox{}}]}将其保存为“01_红色立方体.wrl”。在这个场景中,红色的立方体位于屏幕的中心,它的中心坐标为{000},如图1.2所示。图1.23.移动立方体若想把这个立方体移动一个位置,可以通过为它外套一个Transform(变换节点)来实现:Transform{translation500children[Shape{appearanceAppearance{materialMaterial{}}6geometryBox{}}]}在VRML中,Transform节点除了可以引进平移、旋转和缩放变换以外,其作用和Group节点的作用一样。把Transform节点的translation域(平移)设置为500,意味着Transform节点所在的坐标系相对于其上层坐标系向右平移(即x轴方向)5个单位,在其它两个方向不移动,VRML的距离单位是米,5个单位相当于5米。第三个场景的完整代码是:#VRMLV2.0utf8Group{children[Transform{translation500children[Shape{appearanceAppearance{materialMaterial{diffuseColor100}}geometryBox{}}]}]}将其保存为“01_平移.wrl”。在这个场景中,红色立方体向右平移了5个单位,如图1.3所示。图1.34.创建完整场景接下来我们把立方体所在的Transform节点复制三份,并把各自包含的几何形状依次定义为立方体、球体和圆锥:Group{children[Transform{7translation500children[Shape{....geometryBox{}}]}Transform{translation000children[Shape{...geometrySphere{}}]}Transform{translation-500children[Shape{...geometryCone{}}]}]#endofGroupchildren}由于VRML文件中有许多括号(花括号“{}”和方括号“[]”),所以务请注意括号的配对,建议采用本教程的缩进风格。注意上面的VRML文件中三个Transform节点的平移量是不同的,因而三个几何体的位置也就不同。另外,还可以修改三个几何体的颜色:球面Sphere为绿色(010),圆锥为蓝色(001)。最后,为了以后引用方便,分别给这三个Transform节点指定一个名称:DEFboxTransform{...}DEFsphereTransform{...}DEFconeTransform{...}这个VRML场景的完整代码是:#VRMLV2.0utf8Group{children[DEFboxTransform{translation500children[Shape{appearanceAppearance{materialMaterial{diffuseColor100}}geometryBox{}}]}DEFsphereTransform{8translation000children[Shape{appearanceAppearance{materialMaterial{diffuseColor010}}geometrySphere{}}]}DEFconeTransform{translation-500children[Shape{appearanceAppearance{materialMaterial{diffuse
本文标题:VRML_实验指导书1
链接地址:https://www.777doc.com/doc-3508760 .html