VRML基础教程资料ppt课件.ppt_第1页
VRML基础教程资料ppt课件.ppt_第2页
VRML基础教程资料ppt课件.ppt_第3页
VRML基础教程资料ppt课件.ppt_第4页
VRML基础教程资料ppt课件.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第1页 第一个虚拟境界 VRMLV2 0utf8这是VRML文件的标志 所有2 0版本的VRML文件都以这行文字开头 VRML97是由VRML2 0版修订而成的 符合VRML97规范的VRML文件也以这行文字开头 其中 表示这是一个注释 而utf8表示此文件采用的是utf8编码方案 这在VRML标准中有详细说明 第2页 第一个虚拟境界 Group节点加入一个Group节点 组节点 Group 组节点花括号之内的所有内容视为一个整体 利用组节点可以把虚拟场景组织成条理清晰的树形分支结构 下面定义组节点的children域 孩子域 children 在children后的方括号内定义Group节点的所有孩子对象 第一个孩子是一个Shape节点 形态节点 它描述一个几何形状及其颜色等特征 Shape 在Shape节点内定义一个几何体Box 方盒节点 geometryBox 注意 我们没有为Box定义任何域 这意味着它的尺寸和坐标位置等特性取缺省值 单位立方体 随后补齐每个右括号 第3页 第一个虚拟境界 HelloWorld1 wrl VRMLV2 0utf8Group children Shape geometryBox 第4页 第一个虚拟境界 下面定义立方体的外观 这只需改变Shape节点的appearance域 外观 appearance域是一个Appearance节点 此Appearance节点的material域 材质 定义为一个Material节点 第5页 第一个虚拟境界 下面定义立方体的外观 这只需改变Shape节点的appearance域 外观 appearance域是一个Appearance节点 此Appearance节点的material域 材质 定义为一个Material节点 第6页 第一个虚拟境界 Shape appearanceAppearance materialMaterial geometryBox 第7页 第一个虚拟境界 diffuseColor域 漫反射颜色 VRML的颜色说明采用RGB颜色模型 所以要定义红色的立方体 漫反射颜色应该是 100 三个数字依次表示红色 绿色和蓝色 取值范围都是0到1 materialMaterial diffuseColor100 第8页 第一个虚拟境界 HelloWorld2 wrl VRMLV2 0utf8Group children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox 第9页 第一个虚拟境界 HelloWorld2 wrl VRMLV2 0utf8Group children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox 第10页 第一个虚拟境界 红色的立方体位于屏幕的中心 它的中心坐标为 000 移动位置可以外套一个Transform 变换节点 来实现 Transform translation500children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox 第11页 第一个虚拟境界 在VRML中 Transform节点除了可以引进平移 旋转和缩放变换以外 其作用和Group节点的作用一样 把Transform节点的translation域 平移 设置为500 意味着Transform节点所在的坐标系相对于其上层坐标系向右平移 即x轴方向 5个单位 在其它两个方向不移动 VRML的距离单位是米 5个单位相当于5米 第12页 第一个虚拟境界 HelloWorld3 wrl VRMLV2 0utf8Group children Transform translation500children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox 第13页 第一个虚拟境界 接下来我们把方块所在的Transform节点复制三份 并把各自包含的几何形状依次定义为方块 球体和圆锥 第14页 第一个虚拟境界 HelloWorld4 wrl VRMLV2 0utf8Group children Transform translation500children Shape geometryBox Transform translation000children Shape geometrySphere Transform translation 500children Shape geometryCone endofGroupchildren 第15页 第一个虚拟境界 VRML文件中有许多括号 花括号 和方括 请注意括号的配对 建议采用本教程的缩进风格 上述VRML文件中三个Transform节点的平移量是不同的 因而三个几何体的位置也就不同 另外 还可以修改三个几何体的颜色 球面Sphere为绿色 010 圆锥为蓝色 010 第16页 第一个虚拟境界 为了以后引用方便 分别给这三个Transform节点指定一个名称 DEFboxTransform DEFsphereTransform DEFconeTransform 第17页 第一个虚拟境界 HelloWorld5 wrl VRMLV2 0utf8Group children DEFboxTransform translation500children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox DEFsphereTransform translation000children Shape appearanceAppearance materialMaterial diffuseColor010 geometrySphere DEFconeTransform translation 500children Shape appearanceAppearance materialMaterial diffuseColor001 geometryCone endofGroupchildren 第18页 增加交互能力 上一节我们学习了用几何体建立虚拟境界以及为几何体赋予色彩和材质的方法 这样建立的虚拟境界是静态的 这一节我们将使一个几何体 为了更具一般性 下面我们称之为对象 能够根据用户动作做出反应 即交互能力 这是VRML2 0最突出的特征 第19页 增加交互能力 1 检测器在VRML中 检测器 Sensor 节点是交互能力的基础 检测器节点共九种 在场景图中 检测器节点一般是以其它节点的子节点的身份而存在的 它的父节点称为可触发节点 触发条件和时机由检测器节点类型确定 第20页 增加交互能力 接触检测器 TouchSensor 是最常用的检测器之一最典型的应用例子是开关 其它检测器将在后续章节中陆续介绍 这里我们定义一个开关节点lightSwitch 这是一个组节点 并定义一个接触检测器作为它的子节点 DEFlightSwitchGroup children 各几何造型子节点 DEFtouchSensorTouchSensor 第21页 增加交互能力 这样开关节点lightSwitch就是一个可触发节点 当然 检测器存在的理由是它被触发时能够引起某种变化 所以在更深入讨论开关节点之前 我们先讨论一下场景的变化 第22页 增加交互能力 2 视点最常见的变化是视点的变化 在我们的第一个境界中你可能已经体验到视点变化 当你拖动鼠标或按动箭头键时 按照VRML术语 称为航行 虚拟境界就会旋转或缩放 这实际上是在调整你的视点位置或视角 在虚拟场景的重要位置可以定义视点节点 ViewPoint 它们是境界作者给用户推荐的最佳观赏方位 在CosmoPlayer浏览器中 用户就可以通过鼠标右键选择作者推荐的各个视点 这里我们定义两个视点节点 第23页 增加交互能力 这里我们定义两个视点节点 DEFview1Viewpoint position0020description View1 DEFview2Viewpoint position5020description view2 第24页 增加交互能力 我们的目的是使用户可以通过触发开关节点来切换视点 现在先研究一下这两个视点节点 其中的坐标表示视点在场景中的位置 坐标的单位是米 这在前面已经提到过 视点的名称将会在浏览器菜单中提示出来供用户选择 把上述视点说明加入helloworld5 wrl中 放在Group节点之前 并把其中的方块节点修改成可触发节点 第25页 增加交互能力 DEFboxTransform children Shape Box DEFtouchBoxTouchSensor 把修改过的文件另存为 HelloWorld6 wrl 第26页 增加交互能力 3 事件传递把触发 用鼠标箭头按动方块 和场景变化 视点切换 这两件事情联系起来 在场景图中 除节点构成的层次体系外 还有一个 事件体系 事件体系由相互通讯的节点组成 能够接收事件的节点都应具有事件入口 eventIn 如果它要接收多种类型的事件 称为入事件 它就应该具有多个事件入口 也就是说 事件入口象节点的域一样是有类型的 同样 发送事件的节点应有事件出口 eventOut 事件出口也是有类型的 例如ViewPoint节点就有一个事件入口set bind 当向此事件送入一个值 TRUE 即所谓的入事件 时 该viewpoint节点成为当前视点 又如 接触检测器TouchSensor有一个事件出口isActive 当受到用户触发后它就从此出口送出一个 TRUE 即所谓的出事件 在下一个事件发送之前 此事件一直保存在事件出口中 作为记录 第27页 增加交互能力 3 事件传递事件出口和事件入口通过路径相连 这就是VRML文件中除节点以外的另一基本组成部分 ROUTE语句 ROUTE语句把事件出口和事件入口联系在一起 从而构成事件体系 在这里 我们把接触检测器touchBox的事件出口isActive连接到视点节点view2的事件入口set bind ROUTEtouchBox isActiveTOview2 set bind好了 现在我们得到的VRML文件是 HelloWorld6 wrl 第28页 增加交互能力 VRMLV2 0utf8DEFview1Viewpoint position0020description view1 DEFview2Viewpoint position5020description view2 Group children DEFboxTransform translation500children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox DEFtouchBoxTouchSensor DEFsphereTransform translation000children Shape appearanceAppearance materialMaterial diffuseColor010 geometrySphere DEFconeTransform translation 500children Shape appearanceAppearance materialMaterial diffuseColor001 geometryCone endofGroupchildren ROUTEtouchBox isActiveTOview2 set bind 第29页 增加交互能力 把文件调入浏览器 然后把鼠标指向方块并按下左钮 可以看到视点已经变为view2 内部的机制我们已经很清楚 左钮按下时方块节点的接触检测器被触发 接着接触检测器从事件出口isActive送出一个事件 TRUE 这个事件通过路由进入视点节点view2的事件入口set bind view2收到 TRUE 后成为当前视点 所以在我们眼前的场景发生了变化 第30页 增加交互能力 现在松开左钮 可以看到场景恢复到原来方位 这种功能称为视点回跳 其原因是松开左钮后接触检测器向view2发送了一个 FASLE 事件 这样view2的当前视点地位被解除 原来的视点成为即当前视点 详细说明可参考VRML标准中对视点节点的专门论述 如果我们不想视点回跳 就想停留在view2视点 那该怎么办呢 这种非系统缺省功能要自己来定义 第31页 利用脚本编写自定义行为 在VRML中 利用Script节点 脚本节点 定义用户自定义行为 所谓定义就是用脚本描述语言 ScriptingLanguage 编写脚本的过程 VRML97支持的脚本描述语言目前有两种 Java和EMCAScript 这是JavaScript标准化后的名称 关于这两种语言本身 请参考相应的参考资料 VRML97标准中定义了它们和VRML的接口方法 应该注意的是 VRML是基于节点的语言 所以脚本也是封装在Script这个特殊节点中的 这里我们不能过多地讨论脚本描述语言的细节 主要讨论把脚本集成到VRML文件中的方法 第32页 利用脚本编写自定义行为 我们曾把接触检测器touchBox和视点view2直接通过路径连接起来 现在要定义我们指定的行为 就需要在二者之间插入一个脚本节点 也就是让路径绕个弯 ROUTEtouchBox isActiveTOtouchScript touchBoxIsActiveROUTEtouchScript bindView2TOview2 set bind 第33页 利用脚本编写自定义行为 其中的脚本节点touchScript有一个事件人口touchBoxIsActive和一个事件出口bind View2 前者接收来自接触检测器touchBox的事件 然后经自己的脚本处理后 把结果发送给视点节点view2 DEFtouchScriptScript eventInSFBooltouchBoxIsActiveeventOutSFBoolbindView2url javescript functiontouchBoxIsActive active bindView2 TRUE 第34页 利用脚本编写自定义行为 关于这个Script节点 请注意以下几点 1 它的事件入口touchBoxIsActive和事件出口bindView2是自定义的 而其它VRML节点的域和事件都是固定的 2 事件入口touchBoxIsActive和事件出口bindView2的类型都是SFBool 单值布尔型 touchBox的事件出口isActive和view2的事件入口set bind的类型也是相同的 3 url 是脚本节点的一个域 可以直接包含脚本 也可以包含一个或多个用URL地址指示的脚本 若有多个地址 则按照先后次序获取第一个可得到的脚本 4 脚本是以函数 function 的形式给出的 函数名touchBoxIsActive与事件入口的名称相同 这是和ECMAScript语言的接口约定 表示相应事件入口接收到事件后应调用此函数进行处理 第35页 事件流程 下面我们整理一下事件流程 1 用户在方块上按下鼠标左键 2 接触检测器发出一个 TRUE 事件 3 此事件进入脚本节点touchScript的事件入口touchBoxIsActive 4 调用脚本函数touchBoxIsActive 注意 脚本函数并没有判断入事件的值 5 函数向touchScript的事件出口bindView2发送一个 TRUE 事件 还可以进行其它判断或执行其它事件 6 view2节点收到 TRUE 事件 成为当前视点 按照VRML约定 认为 上述事件是同时发生的 也就是这些事件的时间戳相同 7 若用户松开鼠标左键 则接触检测器发出一个 FALSE 事件 此事件同样引起脚本函数调用并发送 TRUE 事件 所以view2仍然保持为当前视点 本节的完整代码是 HelloWorld7 wrl 第36页 事件流程 VRMLV2 0utf8DEFview1Viewpoint position0020description view1 DEFview2Viewpoint position5020description view2 Group children DEFboxTransform translation500children Shape appearanceAppearance materialMaterial diffuseColor100 geometryBox DEFtouchBoxTouchSensor DEFsphereTransform translation000children Shape appearanceAppearance materialMaterial diffuseColor010 geometrySphere DEFconeTransform translation 500children Shape appearanceAppearance materialMaterial diffuseColor001 geometryCone endofGroupchildren DEFtouchScriptScript eventInSFBooltouchBoxIsActiveeventOutSFBoolbindView2url javascript functiontouchBoxIsActive active bindView2 TRUE ROUTEtouchBox isActiveTOtouchScript touchBoxIsActiveROUTEtouchScript bindView2TOview2 set bind 第37页 MAYA导入VRML 第38页 MAYA导入VRML 第39页 MAYA导入VRML 第40页 MAYA导入VRML 第41页 MAYA导入VRML 打开VRMLPAD 打开导入的模型 第42页 MAYA导入VRML 打开VRMLPAD 打开导入的模型 手动进行调节模型 第43页 MAYA导入VRML translation 5000rotation0011 571 translation 用于位置移动 此例中我们把物体沿 x轴方向移动50个单位 2 rotation 用于转动物体 它的前三个参数定下一点 从原点到该点形成一个转动轴 第四个参数表示沿该轴转动的弧度数 此例表示把物体沿z轴转动90度 第44页 MAYA导入带材质VRML Fortextures bydefault Mayauseabsolutepath url D Mesdocuments maya projects default Map jpg Forthemoment Webseedonlyreadsrelativepath url Map jpg OnesolutiontosolvetheproblemistoeditthepathinVrmlfile IfVrmlandTexturesareatsamelevel theurlis url Map jpg IfVrmlisatrootandtexturesinafolder theurlis url Folder Map jpg IfVrmlandtexturesareinindividualfoldersatsameleveltheurlis url Folder Map jpg 第45页 MAYA导入带材质VRML 实例中的草地图片 第46页 Text节点 Text节点用来在VRML场景中创建文本造型 通常作为Shape节点geometry域的域值使用 Text节点语法格式如下 Text string length maxExtent0 0fontStyleNULL 第47页 Text节点 续 String域的域值使用UTF 8编码设置要创建的文本内容 每一行字符都由双引号界定 引号内的回车符 Length域的域值设置每一行字符的长度 以VRML长度单位进行度量 Length域的域值要与strin

温馨提示

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

评论

0/150

提交评论