当前位置:文档之家› 虚拟现实场景模拟论文

虚拟现实场景模拟论文

虚拟现实课程学习实践报告院系:理学院数学系专业:应用数学班级:应数1301学号:131003014姓名:李媛媛任课教师:侯筱婷日期:2016年5月______VRML 基础——三维场景建模一.参考“ VRML2.0交互式三维图形编程”等文献资料,回答下列问题。

1)field, exposedField, eventIn, eventOut (P13)节点有的是用来定义三维形体,有的是用来定义形体的显示特征如颜色,有的是用来产生形体的运动等变化,每一个节点都有一个或者多个参数,这些参数称为字段(field )及事件(event ). 字段有两种类型:field,exposedField, 事件也有两种:eventIn,eventOut, 我们把它翻译成事件进和事件出2)vrml 的坐标系统(国际标准规定,P16)VRML 文件显示的是三维空间的物体,将其所生产的物体放置在一个符合右手螺旋法则的三维坐标系中,可以将这个坐标系看做是程序的总体坐标系,国际标准规定:物体从+Z轴方向投影在一个+X轴向右、+Y轴向上的二位坐标系统中,+Z 轴朝外,人的眼睛及观察点的坐标为(0 0 10 )人的眼睛朝原点看去,这是缺省时的观察位置及观察方向。

3)局部坐标系(P16,Transform 节点构建局部坐标系P37)一些VRM程序中的Transform,Group节点可以使多个物体组成一个节点组,节点组可以放置在空间的任意地方,也可以在程序中移动或旋转节点组的坐标,一个大节点组里可以有小节点组,小节点组里可以有小小节点组,每个节点组拥有一个坐标系,称为这个节点组的局部坐标系。

Transform 是一个重要的组节点,它可以构成一个局部坐标系,利用translation,rotation,scale 等字段可以对Transform 的字节点中的形体产生移位、旋转、比例放缩等效果。

4)Appearanee 节点(P22)的三个域material、texture (重点:ImageTexture节点)、textureTransform (P109用来实现纹理的几何变换,产生特殊效果纹理,比如贴图的重复和部分显示)Appeara nee节点可以用来定义形体的外观效果,如材质、贴图。

其三个域为material 、texture 、textureTransform 。

可以用在material 后面的节点是Material ,它定义了物体的材质。

可以用在texture 后面的节点是ImageTexture,Movietexture,Pixeltexture 三个节点,texture 在计算机图形学里表示纹理。

ImageTexture,Movietexture,Pixeltexture 分别表示静止图片纹理、运动影像纹理、像素图纹理。

可用在textureTransform 后面的节点为TextureTransform ,这一节点可以用来进行纹理的几何变换,以产生特殊效果的纹理,还可以使贴图旋转。

5)Extrusion挤出造型节点(P23,扭曲造型怎样实现)通过Extrusion 节点可以生成一个拉伸体,拉伸及诶单形成一个形体,形体由一个断面沿着三维空间里的一条折线段伸展而成,断面在不同位置可以有比例的变化甚至旋转,由此生成我们所需要的有复杂形状的物体。

6)和空间中点相关的节点:Coordinate 节点(P23)、PointSet 节点(P29-30,用Material 节点的emissiveColor 来定义点的颜色,模拟夜空中的星星)Coordinate 节点只有一个字段:point ,表示点的坐标,由于这个字段是exposedField 字段,因而可以在程序运行时改变点的坐标。

PointSet 节点有两个字段,并且是在程序运行时可以改变的字段,PointSet 节点主要用于表示夜晚天空的星星,点的大小不能定义,可以定义多个点的坐标和颜色,也可以只定义点的坐标,点的颜色利用Material 节点的emissiveColor.7) 1 ndexedFaceSet节点(P32,平面的正方向确定、solid 域的作用、构造每个面有不同颜色的三维形体、实现正反面不同贴图)构造三锥形体时,常常觉得基本形体无法满足需求,这是我们可以利用IndexedFaceSet 节点来造型,IndexedFaceSet 节点通过三个或多个顶点构造平面多边形来表现三维物体的形状,理论上说,任何三维形体都可以由IndexedFaceSet 节点精确或近似的构造8)Group 节点和Transform 节点的比较(P41)Group 节点和Transform 有相同的地方:它可以把多个形体结合在一起,但Group 节点没有形体几何变换的功能,可以说Group节点是一个没有几何变化的Transform 节点。

Group在程序中的使用主要是为了使文件内的形体有一个合理的组合,方便复杂文件的阅读和分析。

9)DEF和USE( P42)VRML2.0中DEF用来给节点命名,任何需要重复使用的节点都可以用DEF命名,在其它地方用USE使用它,DEF和USE使用起来非常简单:先用吧DEF来命名,使用时用USE代替原先大段内容。

10) Anchor (锚/链接节点,P43)可用于实现场景中显示提示信息引导用户文件跳转、视点跳转(解决三维漫游时迷失方向问题)等。

Anchor 节点有两个主要作用:第一个作用是从一个文件跳到另一个文件去,Anchor 附在某一形体上,并附带有另一文件的地址,当鼠标移动到这一形体上时,鼠标的形状发生变化,点取这一形体时,浏览器将调用另一文件,这一文件可以是VRM文件,也可以是HTML, 文件或其他浏览器可以执行的文件。

第二个作用是在同一个文件中从一个观察点跳到另一个观察点,例如跳到一个较好的显示位置。

有了这样的作用我们在浏览三维世界时就不会迷失了方向,一旦迷失了方向,我们可以跳回到一个设定好的位置及方向。

11)Billboard (布告牌节点,P44)可实现某些形体无论视点怎么变化始终面向观察者。

Billboard 节点可用来调节局部坐标系的方位,使得局部坐标系的Z 轴随着观察方向的改变而绕丫轴(0 1 0)或X( 1 0 0)轴旋转,并永远指向观察者。

12)Vrml 的Collision (碰撞检测节点)不能实现形体和形体之间的碰撞检测,考虑如何实现?(可选)13)视点固定,视角动态变化的例子(P53,应用标量插补器节点)一个固定的物体,观察点是固定的,但观察的视角在不断的变化,由大变小,由小变大,这一变化由标量插补器节点做出。

14)定义NavigationInfo 导航节点,实现限制观察者程序运行时对三维环境的控制程度的例子(P59)。

EX5-08程序通过Navigationlnfo 节点的定义,使观察者不能移动观察点或旋转观察方向,只能通过点击带有锚节点的是形体,以此来改变Viewpoint ,其目的是限制人们在程序运行时对三维环境的控制程度。

15)Inline 节点可用于实现复杂场景模块化建模(P115)Inline 节点可用来将外部的VRML?序调入Inline节点所在的VRML?序,以此构造复杂的三维空间,外部的VRMLS序调入后被摆放在Inline节点所在的局部坐标系中。

16)LOD节点可用于实现根据视点距离形体的远近动态调用形体不同精细级别的模型,通常与Inline 节点配合使用(P116)。

LOD可用来定义一个复杂物体的不同细节,并根据观察点离物体离的远近,让浏览器自动选择合适的浏览内容以产生合适的显示效果。

在浏览三维世界时,有的复杂的形体离观察着较远,如果将其调入到计算机内存,计算机需要进行复杂的计算,有事这样的计算会影响计算效果,如速度跟不上,为简化计算,我们可以用简单的形体代替复杂的形体,直至形体离观察点较近时再调进复杂的形体,这样既能提高显示速度,又能满足显示效果的需求。

LOD节点就是完成这样工作的节点,它通常与Inline节点共同使用,能够在浏览时自动计算观察点与复杂形体你的距离,并且根据距离的远近,调用形状简单或复杂的模型。

17)Switch 选择节点,常和Script 节点配合使用(P119)。

Switch 节点主要用来在多种选择中作出某种选择,例如某形体上的贴图又三种,根据具体的需求选择其中的一种,在编?时,Switch 节点一般与Script 节点一起使用。

18)PROT(原型节点,可以定义新的节点(P122)。

VRML97国际标准允准人们用PROTON定义新的节点,这样我可以有自己的节点了,PROTON我们带来了灵活和方便。

在其19)内插器节点需要和时间传感器节点配合使用,时间周期归一化(P53)19)内插器节点需要和时间传感器节点配合使用,时间周期归一化(P53)内插器节点主要有:ColorInterpolator (颜色插补器),CoordinateInterpolator (坐标插补器),NormalInterpolator (平面正法线插补器),OrientationInterpolator (方向插补器),PositionInterpolator (位置插补器),ScalarInterpolator (SFFloat 插补器)六种,由于插补器节点的作用都是随着时间的变化而产生的,所以,这些插补器节点在使用时都需要与一个时间传感器(TimeSenser)配合使用。

TimeSenser 节点会在cycIeIntervar 给定时间的周期长度,但TimeSenser 节点会将其转换为归一化的时间周期,在插补器中使用时只需使用归一化的时间周期节点即可。

1. 内插器节点的字段和事件(一个enventIn, 一个eventOut ,两个exposedField )的作用(P53)所有的插补器节点都有两个exposedField 字段和一个入事件,一个出事件。

其中两个exposedField 字段分别是用来指定插补器产生作用的关键时间节点值的key 字段,和指定与key 中关键时间节点相对应的变化参数值的keyValue 字段,这两个字段会根据插补器的不同有不同的参数类型的要求。

但一般都是多值类型。

在两个时间当中,入事件set —fraction 负责接受TimeSenser 节点时间值的变化量,而出事件则是将插补器通过传入的时间值变化量计算得到的对应功能参数的变化量传出到相应的节点当中,从而实现动态的效果。

21)CoordinateInterpolator 实现形体的变形(非基本形体)和点的跳跃的例子。

形体变形:Shape {appearance Appearance {material Material { diffuseColor1 1 0}# 指定形体的颜色为黄颜色}geometry IndexedFaceSet {# 指定形体为面造型coord DEF coCoordinate {point [-3 -1 -2,-3 -1 2,3 -1 2,3 -1 -2,-3 1 -2,-3 1 2,3 1 2,3 1 -2] }#定义面造型上的顶点坐标coordIndex [ 0 1 2 3 -1,4 7 6 5 -1,0 4 5 1 -1,0 3 7 4 -1,32 6 7 -1,2 1 5 6 -1]# 定义构造面是得顶点连接序列}}DEF ts TimeSensor {# 定义时间传感器cycleInterval 10.0# 将时间传感器的周期设置为10 秒loop TRUE#将时间传感器的作用设置为循环模式}DEF c1 CoordinateInterpolator {#定义坐标插补器key [0.0 0.25 0.5 0.751.0]# 指定插补器关键时间节点keyValue [-3 -1 -2,-3 -1 2,3 -1 2,3 -1 -2,-31 -2,-3 1 2,3 12,3 1 -2,-5 -2 -4,-5 -2 4,5 -2 4,5 -2 -4,-5 3 -4,-5 3 4,5 34,5 3 -4,-7 -4 -6,-7 -4 6,7 -4 6,7 -4 -6,-7 5 -6,-7 5 6,7 56,7 5 -6,-5 -2 -4,-5 -2 4,5 -2 4,5 -2 -4,-5 3 -4,-5 3 4,5 34,5 3 -4,-3 -1 -2,-3 -1 2,3 -1 2,3 -1 -2,-3 1 -2,-3 1 2,3 12,3 1-2]#指定key中每个关键时间节点对应的面造型的每个顶点的坐标}Background {skyColor 1 1 1}# 设置背景Viewpoint {# 设置视点position 2 8 18orientation 1 0 0 -0.5}ROUTEts.fraction_changed TOc1.set_fraction# 路由,将时间插补器的#时间变化值传入到坐标插补器中ROUTE c1.value_changed TO co.pointOrientationInterpolator# 将坐标插#补器计算得出的坐标变化后的值传给面节点的point 字段,实现形体上个顶点的变换,从而实现形体的变化。

相关主题