虚拟VR大作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字段是写进程序中的节点内的参数,而事件则是具有交互作用的重要概念。字段 有两种类型:field, exposedField ;事件也有两种:eventIn, evemtOut,我们分别称之为事 件出和事件进。实际上,字段 exposedField 是 field,eventIn,和 evemtOut 的组合。例如 一个名为 a 的 exposedField 字段,它包含一个名为 a 的字段,一个名为 set_a 的 eventIn (事件进),一个名为 a_changed 的 evemtOut(事件出)。事件被用于路由语句 ROUTE 时,前缀 set_和后缀_changed 可以省略。 2) vrml 的坐标系统(国际标准规定,P16)
} Transform {
translatBiblioteka Baiduon -3 3 0 children Anchor {
url "#LEFTVIEW" children Shape {
appearance Appearance {material Material { diffuseColor 1 0 0}}
下面程序通过对导航节点 NavigationInfo 的定义,使观察者不能移动观察点或旋转 观察方向,只能通过点击带有锚节点的形体,来改变 Viewpoint,从而限制人们在程序 运行时对三维环境的控制程度。
Group { children [ Transform { translation 0 -1 0 children Shape { appearance Appearance {material Material {diffuseColor 1 1 0}} geometry Box { size 10 1 8 } }
Group { children [
Transform { translation 0 -1 0 children Shape { appearance Appearance {material Material {diffuseColor 1 1 0}} geometry Box {size 10 1 8} }
在 vrml 程序中的 Transform,Group 节点可以使多个物体组成一个节点组,节点组 可以放在空间中任意地方,也可以在程序中移动或旋转节点组的坐标,一个大节点组 里可以有多个小节点,小节点组里还可以包括小节点,每个节点组拥有一个坐标系, 我们称为这个组的局部坐标系。
Transform 节点有两个事件进,八个字段,其中六个字段类型为 exposedField,可 以在程序运行过程中改变这些字段的数据。
} Transform {
children Shape { appearance Appearance {material Material {diffuseColor 1 0 0}} geometry Box {} }
DEF TOS TouchSensor {} } ] } DEF VP Viewpoint { position 0 5 7 orientation 1 0 0 -0.9 } Background {skyColor 1 1 1} DEF SI ScalarInterpolator { key [0 .5 1] keyValue [.8 3 .8] } DEF TS TimeSensor {loop TRUE cycleInterval 20}
Appearance 有三个 exposedFile 字段,Appearance 节点可以用来定义形体的外观效 果,如材质,贴图。 material 后面的节点是 Material 节点,它定义了物体的材质。
texture 后面的节点是 ImageTexture、MoveTexture、PixelTexture 三个节点,texture 在计 算机图形学里表示纹理。ImageTexture、MoveTexture、PixelTexture 分别表示静止图片 纹理、运动影像纹理及像素图纹理。
据需要对形体进行一定的组合。 9) DEF 和 USE(P42)
例如:DEF Leg Group{} 这里 Group 是一个节点名,程序为了重复使用 Group 组中的内容,利用 DEF 给这 个 Group 起了一个名称 Leg,在程序的其他地方用 USE 重复使用了这一组形体。简单的 说,先用 DEF 命名,使用时用 USE 代替原先大段的内容。 10)Anchor(锚/链接节点,P43)可用于实现场景中显示提示信息引导用户文件跳转、视 点跳转(解决三维漫游时迷失方向问题)等。 Anchor 节点有两个主要的作用: 第一个作用是从一个文件跳到另一个文件去。Anchor 附在某一形体上,并附带有 另一文件的地址,当鼠标移动到这一形体上时,鼠标的形状发生改变,点击这一形体 时,浏览器就将调用另一文件,这一文件是 VRML 文件,也可以是 HTML 文件或其他 浏览器可执行的文件。 另一个作用是在同一文件中从一个观察点跳到另一个观察点,例如跳到一个较好 的位置,有了这样的作用我们在浏览三维世界时就不会迷失方向,一旦迷失了方向, 我们可以跳回到一个设定好的方向和位置。 11)Billboard(布告牌节点,P44)可实现某些形体无论视点怎么变化始终面向观察者。 Billboard 节点有四个事件进,有四个字段,其中 axisofRotation 可用来设定旋转轴。 Billboard 节点用来调节局部坐标系的方位,使得局部坐标系的 Z 轴随着观察方向的改 变而绕 Y 轴或 X 轴旋转,并永远指向观察者,当我们设定 axisofRotation 的值为(0, 0,0)时,产生一个特例,这时局部坐标系的 Y 轴永远朝上,方向不会改变,我们称 为 viewer-alignment. 12)Vrml 的 Collision(碰撞检测节点)不能实现形体和形体之间的碰撞检测,考虑如何实 现?(可选) 13)视点固定,视角动态变化的例子(P53,应用标量插补器节点 ScalarInterpolator) 下面程序显示的是一个固定形体,观察点也是固定的,但观察的视角在不断变化, 由大变小,由小变大。
Transform 节点中字段的使用先后顺序如下: Translation,center,Rotation, scaleOrientation,scale,-ScaleRotation,-center 4) Appearance 节点(P22)的三个域 material、texture(重点:ImageTexture 节点)、 textureTransform(P109 用来实现纹理的几何变换,产生特殊效果纹理,比如贴图的重复和 部分显示)
vrml 文件显示的是三维空间的物体,国际标准规定:物体从 Z 轴正方向投影在一 个 X 轴正方向向右,Y 轴正方向向上的二维坐标系统中,Z 轴正方向向外。例如(0 0 10),人的眼睛向原点看去,这是缺省时的观察位置及观察方向。 3) 局部坐标系(P16,Transform 节点构建局部坐标系 P37)
IndexedFaceSet 有 4 个事件进,14 个字段,构造三维形体时,觉得基本形体无法 满足需要,可以利用 IndexedFaceSet 节点来造型,IndexedFaceSet 节点通过三个或多个 顶点构造平面多边形来变现三维物体的形状。Solid 的用法和 Extrusion 节点相同。定 义每个面时,构成面的所有顶点应在同一平面上,顶点连接成的多边形线段不能交叉。 平面的正方向指的是右手顺着顶点的顺序逆时针方向旋转得到的方向。 8) Group 节点和 Transform 节点的比较(P41)
TextureTransform 实现贴图的重复或部分显示,还可以是贴图旋转 5) Extrusion 挤出造型节点(P23,扭曲造型怎样实现)
Extrusion 节点有 10 个字段,4 个事件进。 Extrusion 意思为挤压出的物品,通过 Extrusion 节点可以生成一个拉伸体,就仿佛 虚拟世界的一团面,可以根据自己的需要将其拉成某一形状的物体。拉伸体节点生成 一个形体,形体有一个断面沿着三维空间里的一条折线段伸展而成,断面在不同位置 可以有比例的变化甚至可以旋转。 6) 和空间中点相关的节点:Coordinate 节点(P23)、PointSet 节点(P29-30,用 Material 节点的 emissiveColor 来定义点的颜色,模拟夜空中的星星) Coordinate 节点的定义是:Coordinate{exposedField MFVec3f point[ ]} 由定义可以看出,Coordinate 节点只有一个字段:point 表示点的坐标,因为这个字段 是 exposedField 字段,所以在程序运行时可以改变点的坐标。字段的类型为 MFVec3f, 所以可以通过 Coordinate 节点定义多个点的坐标。一些节点在定义时需要点的 xyz 坐 标,可以利用 Coordinate 节点来输入点的坐标,输入多个点时,第一个点的下标为 0, 第二个点的下标为 1。 PointSet 节点的定义是:
PointSet{ exposedField SFNode color NULL exposedField SFNode coord NULL}
由定义知 PointSet 节点有两个字段,并且是在程序运行时可以改变的字段。PointSet 节点主要表示夜晚天空的星星,点的大小不能定义,可以定义多个点的坐标及颜色, 点的颜色利用 Material 节点的 emissiveColor。diffuseColor 在黑夜里不起作用。 7) IndexedFaceSet 节点(P32,平面的正方向确定、solid 域的作用、构造每个面有不同颜 色的三维形体、实现正反面不同贴图)
Group 节点和 Transform 节点有相同点:它可以把多个形体组合到一起,但 Group 节点没有形体几何变换的功能,可以说 Group 节点是一个没有几何变换的 Transform 节点。Group 在程序中使用主要使文件内的形体有一个合理的组合,方便复杂文件的 阅读及分析。通常程序中有一个 Group 节点作为一个根节点放在程序的第二行,并根
AddChildren、remoceChildren 这两个事件进用来在程序运行过程中增加或减少 Transform 节点的子节点。Center 字段用于确定 Transform 节点所定义的局部坐标系原 点与其父节点(或程序)坐标原点的位移。Rotation 定义了 Transform 的子节点的坐标 系的旋转角度(例如 Rotation 0 1 0 1.57 代表绕 Y 轴旋转 90 度)。Scale 表示在某一方 面进行比例放大(例如 scale 1 2 0.5 表示沿 Y 轴方向放大一倍,沿 Z 轴方向缩小一倍)。 scaleOrientation 表示沿着一定的方向进行比例放大,可用于产生形体的剪切效果,其 作用是在 scale 之前旋转局部坐标系,scale 后再旋转回来,一般不常使用。Translation 用于将子节点的坐标系产生位移。
ROUTE TOS.touchTime TO TS.startTime ROUTE TS.fraction_changed TO SI.set_fraction ROUTE SI.value_changed TO VP.fieldOfView 14)定义 NavigationInfo 导航节点,实现限制观察者程序运行时对三维环境的控制程度的 例子(P59)。
虚拟现实
课程学习实践报告
院 系:理学院数学系 专 业:应用数学 班 级: 学 号: 姓 名: 任课教师: 日 期:
一.参考“VRML2.0 交互式三维图形编程”等文献资料,理解并掌握下述内容(另附页, 按照次序回答每一项内容) 1)field, exposedField, eventIn, eventOut(P13)
} Transform {
translatBiblioteka Baiduon -3 3 0 children Anchor {
url "#LEFTVIEW" children Shape {
appearance Appearance {material Material { diffuseColor 1 0 0}}
下面程序通过对导航节点 NavigationInfo 的定义,使观察者不能移动观察点或旋转 观察方向,只能通过点击带有锚节点的形体,来改变 Viewpoint,从而限制人们在程序 运行时对三维环境的控制程度。
Group { children [ Transform { translation 0 -1 0 children Shape { appearance Appearance {material Material {diffuseColor 1 1 0}} geometry Box { size 10 1 8 } }
Group { children [
Transform { translation 0 -1 0 children Shape { appearance Appearance {material Material {diffuseColor 1 1 0}} geometry Box {size 10 1 8} }
在 vrml 程序中的 Transform,Group 节点可以使多个物体组成一个节点组,节点组 可以放在空间中任意地方,也可以在程序中移动或旋转节点组的坐标,一个大节点组 里可以有多个小节点,小节点组里还可以包括小节点,每个节点组拥有一个坐标系, 我们称为这个组的局部坐标系。
Transform 节点有两个事件进,八个字段,其中六个字段类型为 exposedField,可 以在程序运行过程中改变这些字段的数据。
} Transform {
children Shape { appearance Appearance {material Material {diffuseColor 1 0 0}} geometry Box {} }
DEF TOS TouchSensor {} } ] } DEF VP Viewpoint { position 0 5 7 orientation 1 0 0 -0.9 } Background {skyColor 1 1 1} DEF SI ScalarInterpolator { key [0 .5 1] keyValue [.8 3 .8] } DEF TS TimeSensor {loop TRUE cycleInterval 20}
Appearance 有三个 exposedFile 字段,Appearance 节点可以用来定义形体的外观效 果,如材质,贴图。 material 后面的节点是 Material 节点,它定义了物体的材质。
texture 后面的节点是 ImageTexture、MoveTexture、PixelTexture 三个节点,texture 在计 算机图形学里表示纹理。ImageTexture、MoveTexture、PixelTexture 分别表示静止图片 纹理、运动影像纹理及像素图纹理。
据需要对形体进行一定的组合。 9) DEF 和 USE(P42)
例如:DEF Leg Group{} 这里 Group 是一个节点名,程序为了重复使用 Group 组中的内容,利用 DEF 给这 个 Group 起了一个名称 Leg,在程序的其他地方用 USE 重复使用了这一组形体。简单的 说,先用 DEF 命名,使用时用 USE 代替原先大段的内容。 10)Anchor(锚/链接节点,P43)可用于实现场景中显示提示信息引导用户文件跳转、视 点跳转(解决三维漫游时迷失方向问题)等。 Anchor 节点有两个主要的作用: 第一个作用是从一个文件跳到另一个文件去。Anchor 附在某一形体上,并附带有 另一文件的地址,当鼠标移动到这一形体上时,鼠标的形状发生改变,点击这一形体 时,浏览器就将调用另一文件,这一文件是 VRML 文件,也可以是 HTML 文件或其他 浏览器可执行的文件。 另一个作用是在同一文件中从一个观察点跳到另一个观察点,例如跳到一个较好 的位置,有了这样的作用我们在浏览三维世界时就不会迷失方向,一旦迷失了方向, 我们可以跳回到一个设定好的方向和位置。 11)Billboard(布告牌节点,P44)可实现某些形体无论视点怎么变化始终面向观察者。 Billboard 节点有四个事件进,有四个字段,其中 axisofRotation 可用来设定旋转轴。 Billboard 节点用来调节局部坐标系的方位,使得局部坐标系的 Z 轴随着观察方向的改 变而绕 Y 轴或 X 轴旋转,并永远指向观察者,当我们设定 axisofRotation 的值为(0, 0,0)时,产生一个特例,这时局部坐标系的 Y 轴永远朝上,方向不会改变,我们称 为 viewer-alignment. 12)Vrml 的 Collision(碰撞检测节点)不能实现形体和形体之间的碰撞检测,考虑如何实 现?(可选) 13)视点固定,视角动态变化的例子(P53,应用标量插补器节点 ScalarInterpolator) 下面程序显示的是一个固定形体,观察点也是固定的,但观察的视角在不断变化, 由大变小,由小变大。
Transform 节点中字段的使用先后顺序如下: Translation,center,Rotation, scaleOrientation,scale,-ScaleRotation,-center 4) Appearance 节点(P22)的三个域 material、texture(重点:ImageTexture 节点)、 textureTransform(P109 用来实现纹理的几何变换,产生特殊效果纹理,比如贴图的重复和 部分显示)
vrml 文件显示的是三维空间的物体,国际标准规定:物体从 Z 轴正方向投影在一 个 X 轴正方向向右,Y 轴正方向向上的二维坐标系统中,Z 轴正方向向外。例如(0 0 10),人的眼睛向原点看去,这是缺省时的观察位置及观察方向。 3) 局部坐标系(P16,Transform 节点构建局部坐标系 P37)
IndexedFaceSet 有 4 个事件进,14 个字段,构造三维形体时,觉得基本形体无法 满足需要,可以利用 IndexedFaceSet 节点来造型,IndexedFaceSet 节点通过三个或多个 顶点构造平面多边形来变现三维物体的形状。Solid 的用法和 Extrusion 节点相同。定 义每个面时,构成面的所有顶点应在同一平面上,顶点连接成的多边形线段不能交叉。 平面的正方向指的是右手顺着顶点的顺序逆时针方向旋转得到的方向。 8) Group 节点和 Transform 节点的比较(P41)
TextureTransform 实现贴图的重复或部分显示,还可以是贴图旋转 5) Extrusion 挤出造型节点(P23,扭曲造型怎样实现)
Extrusion 节点有 10 个字段,4 个事件进。 Extrusion 意思为挤压出的物品,通过 Extrusion 节点可以生成一个拉伸体,就仿佛 虚拟世界的一团面,可以根据自己的需要将其拉成某一形状的物体。拉伸体节点生成 一个形体,形体有一个断面沿着三维空间里的一条折线段伸展而成,断面在不同位置 可以有比例的变化甚至可以旋转。 6) 和空间中点相关的节点:Coordinate 节点(P23)、PointSet 节点(P29-30,用 Material 节点的 emissiveColor 来定义点的颜色,模拟夜空中的星星) Coordinate 节点的定义是:Coordinate{exposedField MFVec3f point[ ]} 由定义可以看出,Coordinate 节点只有一个字段:point 表示点的坐标,因为这个字段 是 exposedField 字段,所以在程序运行时可以改变点的坐标。字段的类型为 MFVec3f, 所以可以通过 Coordinate 节点定义多个点的坐标。一些节点在定义时需要点的 xyz 坐 标,可以利用 Coordinate 节点来输入点的坐标,输入多个点时,第一个点的下标为 0, 第二个点的下标为 1。 PointSet 节点的定义是:
PointSet{ exposedField SFNode color NULL exposedField SFNode coord NULL}
由定义知 PointSet 节点有两个字段,并且是在程序运行时可以改变的字段。PointSet 节点主要表示夜晚天空的星星,点的大小不能定义,可以定义多个点的坐标及颜色, 点的颜色利用 Material 节点的 emissiveColor。diffuseColor 在黑夜里不起作用。 7) IndexedFaceSet 节点(P32,平面的正方向确定、solid 域的作用、构造每个面有不同颜 色的三维形体、实现正反面不同贴图)
Group 节点和 Transform 节点有相同点:它可以把多个形体组合到一起,但 Group 节点没有形体几何变换的功能,可以说 Group 节点是一个没有几何变换的 Transform 节点。Group 在程序中使用主要使文件内的形体有一个合理的组合,方便复杂文件的 阅读及分析。通常程序中有一个 Group 节点作为一个根节点放在程序的第二行,并根
AddChildren、remoceChildren 这两个事件进用来在程序运行过程中增加或减少 Transform 节点的子节点。Center 字段用于确定 Transform 节点所定义的局部坐标系原 点与其父节点(或程序)坐标原点的位移。Rotation 定义了 Transform 的子节点的坐标 系的旋转角度(例如 Rotation 0 1 0 1.57 代表绕 Y 轴旋转 90 度)。Scale 表示在某一方 面进行比例放大(例如 scale 1 2 0.5 表示沿 Y 轴方向放大一倍,沿 Z 轴方向缩小一倍)。 scaleOrientation 表示沿着一定的方向进行比例放大,可用于产生形体的剪切效果,其 作用是在 scale 之前旋转局部坐标系,scale 后再旋转回来,一般不常使用。Translation 用于将子节点的坐标系产生位移。
ROUTE TOS.touchTime TO TS.startTime ROUTE TS.fraction_changed TO SI.set_fraction ROUTE SI.value_changed TO VP.fieldOfView 14)定义 NavigationInfo 导航节点,实现限制观察者程序运行时对三维环境的控制程度的 例子(P59)。
虚拟现实
课程学习实践报告
院 系:理学院数学系 专 业:应用数学 班 级: 学 号: 姓 名: 任课教师: 日 期:
一.参考“VRML2.0 交互式三维图形编程”等文献资料,理解并掌握下述内容(另附页, 按照次序回答每一项内容) 1)field, exposedField, eventIn, eventOut(P13)