




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VRML 四 造型的空间变换 编组和素材调用 4 1造型的空间变换4 2造型编组和素材调用4 3其他组节点的使用 Chapter 4 4 1造型的空间变换 在VRML中创建的立体造型都是以默认坐标系的原点为中心进行定位的 Transform坐标变换节点可以创建一个新的坐标系 通过对坐标系的平移 旋转 缩放操作 实现对立体造型位置 角度 缩放比例的改变 一 Tronsform坐标变换节点Transform坐标变换节点用于创建一个或多个不同于默认 原始 坐标系的新坐标系 Transfom节点是一个组节点 在此节点下面可以包含一个或多个子节点 所有子节点的定位中心都基于同一个坐标系的原点 这些子节点可以是Shape造型节点 Group编组节点 也可以是下一层的Transform节点 Transform eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldSFVec3fcenter000exposedFieldMFNodechildren exposedFieldSFRotationrotation0010exposedFieldSFVec3fscale111exposedFieldSFRotationscaleOrientation0010exposedFieldSFVec3ftranslation000fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize 1 1 1 二 空间坐标的平移空间坐标的平移是通过对Transform节点的trans1ation域的域值的设定 建立新的坐标原点 作为children域中所有子节点创建的造型的定位点 从而实现原始坐标系和新坐标系造型之间相对位置的移动和变化的 三 空间坐标的旋转空间坐标系旋转的方法 利用Transform坐标变换节点中rotation域的域值指定旋转轴及旋转角度 形成一个新的旋转后的空间坐标系 然后在新坐标中创建一个或一组造型 如果需要在前面变换的基础上连续进行空间变换 可以使用Transform节点进行逐级的嵌套变换 嵌套级数没有限制 四 空间坐标的缩放现实世界中的物体是千姿百态的 很难用几种标准的造型来概括 例如 前面学习的简单造型节点可以很容易地创建出圆球造型 但是要做出一个椭圆形的气球就不容易了 其实这样的造型可以通过对简单造型圆球进行不同方向上的缩放拉伸来完成 和造型的平移 旋转一样 造型的缩放必须依靠空间坐标度量单位比例的缩放来实现 通常使用的空间坐标 在X Y Z坐标轴上采用相同比例的度量单位 利用Transform坐标变换节点中scale域scaleOrientation域和center域的域值设定不同方向坐标轴的缩放比例 形成一个新的度量单位缩放比例不同的空间坐标系 然后在新坐标系中创建一个或一组经过缩放处理的造型 4 2造型编组和素材调用 VRML提供了一类具有编组功能的节点 它们可以把多个造型作为自己的子节点组合成一个整体 一起进行平移 旋转 缩放 外观设计 定义和调用等项操作 在设计中合理使用组节点 能够减少很多重复性的工作 这类组节点包括 Group编组节点 Transform坐标变换节点 Inline内联接点 Anchor超级链接节点 Switch选择开关节点 Billboard布告牌节点和LOD细节层次控制节点等 一 Group编组节点Group eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldMFNodechildren fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize 1 1 1 二 素材调用的基本方法1 采用DEF节点定义及USE节点引用的方法2 利用Inline内联节点 从本文件范围之外的其他文件或者互联网上 调用不需要进行修改加工的素材 素材成为原场景的一部分3 利用带有链接功能的Anchor锚节点 把存储在本机硬盘或互联网上的素材作为一个新的完整的场景进行调用 取代原来的场景4 利用PROTO语句和EXTERPROTO语句 在本文件内外及互联网上定义的原型节点和外部原型节点 调用素材时可以根据需要对其原有的属性进行更改或赋予更多的功能 三 节点的定义及引用VRML可以采用节点定义及引用的方法 在本文件范围内反复调用相同的素材 在虚拟现实的场景设计中 常常需要将相同的造型经过不同的排列 旋转组合成新的复杂造型 节点定义及引用的语法格式 节点定义 DEF节点名节点 节点引用 USE节点名四 lnline内联节点在VRML中 可以使用IMine内联节点 从本文件范围之外的其他文件或者互联网的任意位置上 调用不需要进行修改加工的素材 当需要创建包括复杂场景和造型的大型虚拟世界的时候 VRML文件就会变得非常庞大 难于进行管理和调试 采用内联的方法 可以将复杂的场景和造型分解成各自独立的小文件 分别进行设计和调试 作为素材模块存在本地硬盘或者互联网的任意位置上 构建主程序时 在需要插入素材模块的位置 只需利用内联节点指明素材文件的地址和文件名即可完成调用和插入素材的过程 素材可以很方便地成为整个场景中的一部分 Inline exposedFieldMFStringurl fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize 1 1 1 五 Anchor锚链接节点内联节点是把存在本机硬盘或互联网上的素材作为整个场景的一个组成部分调到原场景中来 而锚链接节点则是把存在本机硬盘或互联网上的素材作为一个新的完整的场景进行调用 在原场景中设置一个锚点造型 当浏览者点击锚点造型时 VRML浏览器即可链接到设定的素材文件 使浏览者从原场景中出来 进入到素材文件所构建的新场景中去 Anchor eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldMFNodechildren exposedFieldSFStringdescription exposedFieldMFStringparameter exposedFieldMFStringurl fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize 1 1 1 六 原型的定义和调用前面所讲的调用素材的三种方法只适用于对素材不需要进行加工处理 原汁原味调用的情况 如果需要对素材的属性进行更改或赋予更多的功能后调用 可以使用PROTO原型节点或EXTERPROTO外部原型节点 它们可以定义可供修改的属性 例如 颜色 材质 外观等 还可以根据需要增加素材的功能 原型具有以下功能 1 素材调用功能 原型可以作为素材库反复调用 2 节点扩展功能 原型可以使用标准节点和自定义节点创建新的节点类型 3 动态更新和保护功能 原型可以通过设置接口中的域和事件 对虚拟现实中造型属性进行更改或者限制更改 从而达到场景的动态更新和保护一些造型不被改动的目的 4 造型及动作打包功能 VRML中标准节点本身均不具备行为自控能力 通过原型可以将造型与交互动作 事件 脚本等VRML元素捆绑使用 5 网络运作功能 原型 内部原型 可以在当前文件中定义和反复调用 外部原型可以在其他文件和网络中定义 在当前文件中反复调用 外部原型提供了跨越网络调用的强大功能 4 3其他组节点的使用 一 Billboard布告牌节点Billboard eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldSFVec3faxisOfRotation010exposedFieldMFNodechildren fieldSFVec3fbboxCenter000fieldSFVec3fbboxSize 1 1 1 二 Switch选择开关节点Switch exposedFieldMFNodechoice exposedFieldSFInt32whichChoice 1 三 LOD细节层次控制节点在创建VRML虚拟现实空间造型的时候 需要兼顾浏览器的渲染速度和造型刻画真实度之间的关系 造型刻画越细致就越接近于真实 然而相应的VRML文件的体积也越大 浏览器的渲染速度就越低 占用计算机CPU的时间就越长 LOD LevelofDetail 细节层次控制节点主要任务就是解决这个问题 该节点可以根据浏览者与造型距离的远近 选择按照不同的细致度刻画的造型 当造型距离比较远的时候 选择用较低层次细节描述方法创建的造型 忽略一些细节而只刻画造型的轮廓 形状和大小 这与在真实世界中的观察极为相似 远距离的物体只能看到模糊的轮廓而看不到细节 可以减小造型文件的体积 提高浏览器的速度 当造型距离比较近的时候 选择用较高层次细节描述方法创建的造型 清晰地刻画造型的纹理和细微特征 保证造型描述的逼真性 这一点也与我们在真实世界中的观察相一致 物体距离越近 能够看到的细节越多 越清晰 LOD exposedFieldMFNodelevel fieldSFVec3fcenter000fieldMFFloatrange 第五章 虚拟现实的场景环境设计 5 1创建背景5 2创建光源5 3创建雾化效果5 4创建观察视点和视点导航 5 1创建背景 在VRML中添加背景是最简单 最基本的场景环境设计方法 虚拟空间背景分为全景空间背景和天体空间背景两种 全景空间背景是一个将造型包围在里面的空间立方体 具有前 后 左 右 上 下六个平面 可以根据需要设置不同的材质和图片 天体空间背景是一个无穷大的空间球体 分为天空背景和地面背景 天空和地面的划分以地平线为界 地平线位于原始坐标系XOZ平面向后延伸的无穷远处 上面的球体是天空 下面的球体是地面 背景和造型的嵌套关系是 造型在最里面 全景空间背景的立方体为中间包围层 天体空间背景的无穷大球体是最外面的包围层 如果同时增加了全景空间和天体空间两种背景 可以通过设置全景空间背景的透明度值决定能否看到天空和地面的颜色 默认情况下 没有全景空间背景 天空和地面均为黑色 空间模型以VRML空间坐标系的原点为中心的无限大球体以Z X平面为地平面Y 向为天空Y 向为地面天空角天空位置与Y 的夹角地面角地面位置与Y 的夹角 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 2 系统自动过渡相邻位置的颜色角度的单位为弧度颜色由r g b分量合成颜色分量的数值范围 0 0 1 0 一些常用角度的弧度值 弧度 角度 180 5 2创建光源 现实世界中的光源来自于各种能发光的物体 例如太阳 灯泡 蜡烛 激光器等 在默认情况下 VRML浏览器自动生成一个白色头灯光源headlight 此光源为平行光束 与浏览者的视点同步运动 始终照亮浏览者的前方 和井下工作的矿工帽子上的头灯很相似 头灯光源可以通过设置NavigationInfo节点的headlight域的域值 控制光源打开或关闭 FALSE 默认缺省情况下 头灯为打开状态 光源的颜色无法改变 本章之前所有的实例均采用这种默认的白色头灯光源 除此之外 VRML中还可以人工设置三种类型的光源 点光源 点光源 PointLight节点 平行光源 DirectionalLight节点 和锥光源 SpotLight节点 PointLight点光源节点点光源由发光点向四面八方发射亮度相同的光线 各个方向具有相同性 点光源节点既可作为独立的节点 也可作为其他组节点的子节点使用 PointLight exposedFieldSFFloatambientIntensity0exposedFieldSFVec3fattenuation100exposedFieldSFColorcolor111exposedFieldSFFloatintensity1exposedFieldSFVec3flocation000exposedFieldSFBoolonTRUEexposedFieldSFFloatradius100 DirectionalLight平行光源节点现实世界中的平行光源是从无穷远处照射 因此其光线是平行指向同一个方向的 例如 太阳基本是一个平行光源 太阳离地球相当远 当太阳的光线到达地球时基本是平行的 DirectionalLight exposedFieldSFFloatambientIntensity0exposedFieldSFColorcolor111exposedFieldSFVec3fdirection00 1exposedFieldSFFloatintensity1exposedFieldSFBoolonTRUE SpotLight锥光源节点锥光源即光线照射呈光锥状 光源位于圆锥体的顶点 光线被限制在一个圆锥体的照射空间里 造型只有位于圆锥体空间中才会被照亮 VRML中 常常利用SpotLight节点创建锥光源 模拟一些特殊光照效果的场景 如舞台灯光 探照灯 艺术摄影等 SpotLight exposedFieldSFFloatambientIntensity0exposedFieldSFVec3fattenuation100exposedFieldSFFloatbeamWidth1 570796exposedFieldSFColorcolor111exposedFieldSFFloatcutOffAngle0 785398exposedFieldSFVec3fdirection00 1exposedFieldSFFloatintensity1exposedFieldSFVec3flocation000exposedFieldSFBoolonTRUEexposedFieldSFFloatradius100 创建阴影效果VRML光源与自然光源的主要差别在于不能自动产生阴影 自然界的光线无法穿过不透明的物体 当光线照射这些物体时就会出现阴影 由于VRML中的光照只是对造型表面明暗程度的一种模拟 造型对光线没有遮挡作用 光线可以透过造型完全照射到后面的物体上 所以VRML中的光照只能改变造型表面的明暗分布 不能自动产生阴影的效果 如果想在虚拟世界中模拟自然界的光照效果 则必须人工设置阴影造型 阴影的形状常常是造型沿光线照射方向形状的压缩和变形 一般利用Transform节点的scale域模拟阴影的形状 阴影的颜色通常利用Material节点的域值设置为灰色或者半透明的深灰色 有些阴影形状也可以借助于简单造型来模拟 5 3创建雾化效果 在vrml中使用Fog雾节点创建雾化效果 模拟自然界的大气现象 使虚拟现实的场景更加逼真 更加具有层次感 创造一种朦胧的美 雾化效果主要控制两个因素 一是雾的颜色 二是雾的浓度 雾的颜色可以按照实际情况任意选择 但通常使用白色 因为白色更接近自然界雾的本色 雾的浓度与人在雾中的能见度相反 雾越浓人的能见度越差 因此可以通过设定观察者能见范围的大小来调整雾的浓淡程度 Fog exposedFieldSFColorcolor111exposedFieldSFStringfogType LINEAR exposedFieldSFFloatvisibilityRange0eventInSFBoolset bindeventOutSFBoolisBound 5 4创建观察视点和视点导航 Viewpoint视点节点Viewpoint eventInSFBoolset bindexposedFieldSFFloatfieldOfView0 785398exposedFieldSFBooljumpTRUEexposedFieldSFRotationorientation0010exposedFieldSFVec3fposition0010fieldSFStringdescription eventOutSFTimebindTimeeventOutSFBoolisBound NavigationInfo导航节点NavigationInfo eventInSFBoolset bindexposedFieldMFFloatavatarSize 0 25 1 6 0 75 exposedFieldSFBoolheadlightTRUEexposedFieldSFFloatspeed1 0exposedFieldMFStringtype WALK exposedFieldSFFloatvisibilityLimit0 0eventOutSFBoolisBound 第六章 造型的动画效果和交互功能 6 1造型的动画效果6 2造型的交互功能 6 1造型的动画效果 在现实世界中 很多东西都是随时间发生变化的 例如太阳的升起和降落 花蕾的绽开和凋谢 树叶由绿变黄 鱼儿戏水 小鸟飞翔 汽车行驶 表针转动等等 这些就是V盯住要在虚拟环境中 通过人为设置实现的动画效果 VRML创建动画效果的基本方法是 由时间传感器控制动画的时钟 包括动画开始的时间 停止的时间 循环的周期等 然后将时间控制参数作为事件传送给各种插补器节点 插补器依据事先设计好的时间关键点和动画关键值 在浏览器渲染时形成连续变化的动画效果 特点 随时间改变 位置 方向 颜色等 VRML中 不断改变节点的某个域的值两个基本的控制条件 何时开始 何时结束 变化速度 根据所插值的数据类型不同插补器节点可分为六种 颜色差补器 ColorInterpolator节点 位置插补器 PositionInterpolator节点 朝向插补器 OrientationInterpolator节点 标量插补器 ScalarInterpolator节点 坐标插补器 CoordinateInterpolator节点 法向量插补器 NomalInterpolator节点 事件与路由节点由域和事件组成 其中域的取值决定了节点所创建的造型或场景环境的当前状态 事件则为节点提供了接收外界信息或向外界发送信息的能力 事件是按照指定的路径从一个节点发往另一个节点的信息 节点通过事件入口 也称入事件 eventIn 接收来自其他节点的信息改变自己原有域值 通过事件出口 也称出事件 eventout 发送自己的信息以改变其他节点的域值 从一个节点的事件出口到另一个节点的事件入口 用来传送事件的路径称为路由 route 通过路由可以将多个节点联系在一起 形成事件体系 使事件得以传播而引起节点域值的变化 路由 ROUTE 将两个节点连接起来 输出节点的名称和eventOut域的名称 输入节点的名称和eventIn域的名称示例ROUTEMySender rotation changedTOMyReceiver set rotationROUTE和TO必须大写 TimeSensor事件传感器节点TimeSensor exposedFieldSFTimecycleInterval1exposedFieldSFBoolenabledTRUEexposedFieldSFBoolloopFALSEexposedFieldSFTimestartTime0exposedFieldSFTimestopTime0eventOutSFTimecycleTimeeventOutSFFloatfraction changedeventOutSFBoolisActiveeventOutSFTimetime ColorInterpolator颜色插补器ColorInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFColorkeyValue eventOutSFColorvalue changed ScalarInterpolator标量插补器ScalarInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFFloatkeyValue eventOutSFFloatvalue changed PositionInterpolator位置插补器PositionInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFVec3fkeyValue eventOutSFVec3fvalue changed OrientationInterpolator朝向插补器OrientationInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFRotationkeyValue eventOutSFRotationvalue changed CoordinateInterpolator坐标插补器CoordinateInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFVec3fkeyValue eventOutMFVec3fvalue changed NormalInterpolator法向量插补器NormalInterpolator eventInSFFloatset fractionexposedFieldMFFloatkey exposedFieldMFVec3fkeyValue eventOutMFVec3fvalue changed 6 2造型的交互功能 VRML场景中的造型能够对浏览者的动作做出反应 称之为交互功能 虚拟现实技术的魅力在于凭借强大的交互功能 使浏览者在虚拟世界中如同身临其境 例如 浏览者点击电视开关 可以播放影视片断 走近宾馆 大门可以自动打开 可以控制造型的位移或旋转等等 大多数节点只能创建静态造型 时间传感器和插补器虽然可以使造型产生连续变化的动画效果 但是动画的起止时间和变化规律都是设计者事先预置的 浏览者只是观赏而无法参与控制 要想实现人机交互 首先要感知浏览者的操作或者在场景中的观察位置 然后对此操作或者位置移动做出反应 VRML使用七种传感器节点完成感知和反应的交互功能 时间传感器除外 前面己介绍 其中包括 TouchSensor触摸传感器 PlaneSensor平面传感器 Cylindersensor圆柱体传感器 Spheresensor球体传感器 ProximitySensor接近传感器 VisibilitySensor可视传感器 Collision碰撞传感器 第一类传感器 通过感知浏览者对于鼠标的操作行为 移动鼠标 点击鼠标 拖动鼠标 触发并输出事件 实现人机交互的功能 这类传感器有TouchSensor触摸传感器 PlaneSensor平面传感器 CylinderSensor圆柱体传感器 SphereSensor球体传感器 第二种传感器 通过感知浏览者在虚拟场景中的观察位置 也就是当浏览者的视点与造型的接近程度达到一定范围的时候 触发并输出事件 实现人机交互功能 这类传感器有ProximitySensor接近传感器 VisibilitySensor可视传感器 Collision碰撞传感器 TouchSensor触摸传感器TouchSensor exposedFieldSFBoolenabledTRUEeventOutSFVec3fhitNormal changedeventOutSFVec3fhitPoint changedeventOutSFVec2fhitTexCoord changedeventOutSFBoolisActiveeventOutSFBoolisOvereventOutSFTimetouchTime PlaneSensor平面传感器PlaneSensor exposedFieldSFBoolautoOffsetTRUEexposedFieldSFBoolenabledTRUEexposedFieldSFVec2fmaxPosition 1 1exposedFieldSFVec2fminPosition00exposedFieldSFVec3foffset000eventOutSFBoolisActiveeventOutSFVec3ftrackPoint changedeventOutSFVec3ftranslation changed CylinderSensor圆柱体传感器CylinderSen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生育服务保障承诺书(5篇)
- 公交司机考试题库及答案
- 软件开发测试及维护合同书
- 滑县特岗地理考试真题及答案
- 枣庄物理中考试题及答案
- 汽车美容及维修服务合同书
- 合肥七中考试题型及答案
- 光电器件技术考试题库及答案
- 软件测试笔试题及答案解析大全
- 入伍政治考核笔试题及答案
- 小学道德与法治学科教师专业素质考试试题及答案
- GB∕T 23322-2018 纺织品 表面活性剂的测定 烷基酚和烷基酚聚氧乙烯醚
- 全国质量奖现场汇报材料(生产过程及结果)课件
- 政策评价-卫生政策分析课件
- 高中物理实验—测定物体的速度及加速度(含逐差法)
- 饮食习惯与健康
- 华为人力资源管理纲要2.0
- 第二章 园艺设施的类型、结构、性能及应用
- 银行卡收单外包服务协议范本
- 流动资金缺口测算表.xls
- 中国空白地图大全(可直接打印)(共49页)
评论
0/150
提交评论