版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VRML程序设计程序设计四、造型的空间变换、编组和素材调用四、造型的空间变换、编组和素材调用4.1 造型的空间变换4.2 造型编组和素材调用4.3 其他组节点的使用Chapter4 44.1 造型的空间变换造型的空间变换在VRML中创建的立体造型都是以默认坐标系的原点为中心进行定位的。Transform坐标变换节点可以创建一个新的坐标系,通过对坐标系的平移、旋转、缩放操作,实现对立体造型位置、角度、缩放比例的改变 。一、Tronsform坐标变换节点Transform坐标变换节点用于创建一个或多个不同于默认(原始)坐标系的新坐标系。Transfom节点是一个组节点,在此节点下面可以包含一个或多
2、个子节点,所有子节点的定位中心都基于同一个坐标系的原点。这些子节点可以是Shape造型节点、Group编组节点,也可以是下一层的Transform节点。 Transform eventIn MFNode addChildren eventIn MFNode removeChildren exposedField SFVec3f center 0 0 0 exposedField MFNode children exposedField SFRotation rotation 0 0 1 0 exposedField SFVec3f scale 1 1 1 exposedField SFRota
3、tion scaleOrientation 0 0 1 0 exposedField SFVec3f translation 0 0 0 field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1 二、空间坐标的平移 空间坐标的平移是通过对Transform节点的trans1ation域的域值的设定,建立新的坐标原点,作为children域中所有子节点创建的造型的定位点,从而实现原始坐标系和新坐标系造型之间相对位置的移动和变化的。 三、空间坐标的旋转空间坐标系旋转的方法:利用Transform坐标变换节点中rotation域的域
4、值指定旋转轴及旋转角度,形成一个新的旋转后的空间坐标系,然后在新坐标中创建一个或一组造型。 如果需要在前面变换的基础上连续进行空间变换,可以使用Transform节点进行逐级的嵌套变换,嵌套级数没有限制。 四、空间坐标的缩放现实世界中的物体是千姿百态的,很难用几种标准的造型来概括。例如,前面学习的简单造型节点可以很容易地创建出圆球造型,但是要做出一个椭圆形的气球就不容易了,其实这样的造型可以通过对简单造型圆球进行不同方向上的缩放拉伸来完成。和造型的平移、旋转一样,造型的缩放必须依靠空间坐标度量单位比例的缩放来实现。通常使用的空间坐标,在X、Y、Z坐标轴上采用相同比例的度量单位,利用Transf
5、orm坐标变换节点中scale域scaleOrientation域和center域的域值设定不同方向坐标轴的缩放比例,形成一个新的度量单位缩放比例不同的空间坐标系,然后在新坐标系中创建一个或一组经过缩放处理的造型。 4.2 造型编组和素材调用造型编组和素材调用VRML提供了一类具有编组功能的节点,它们可以把多个造型作为自己的子节点组合成一个整体,一起进行平移、旋转、缩放、外观设计、定义和调用等项操作。在设计中合理使用组节点,能够减少很多重复性的工作。这类组节点包括:Group编组节点、Transform坐标变换节点、Inline内联接点、Anchor超级链接节点、Switch选择开关节点、Bi
6、llboard布告牌节点和LOD细节层次控制节点等。 一、Group编组节点Group eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1二、素材调用的基本方法1.采用DEF节点定义及USE节点引用的方法2.利用Inline内联节点,从本文件范围之外的其他文件或者互联网上,调用不需要进行修改加工的素材,素材成为原场景的一部分3.利用带有链接功能的Anc
7、hor锚节点,把存储在本机硬盘或互联网上的素材作为一个新的完整的场景进行调用,取代原来的场景4.利用PROTO语句和EXTERPROTO语句,在本文件内外及互联网上定义的原型节点和外部原型节点,调用素材时可以根据需要对其原有的属性进行更改或赋予更多的功能三、节点的定义及引用VRML可以采用节点定义及引用的方法,在本文件范围内反复调用相同的素材。在虚拟现实的场景设计中,常常需要将相同的造型经过不同的排列、旋转组合成新的复杂造型。 节点定义及引用的语法格式:节点定义:DEF 节点名 节点 节点引用:USE 节点名四、lnline内联节点在VRML中,可以使用IMine内联节点,从本文件范围之外的其
8、他文件或者互联网的任意位置上,调用不需要进行修改加工的素材。当需要创建包括复杂场景和造型的大型虚拟世界的时候,VRML文件就会变得非常庞大,难于进行管理和调试。采用内联的方法,可以将复杂的场景和造型分解成各自独立的小文件,分别进行设计和调试,作为素材模块存在本地硬盘或者互联网的任意位置上。构建主程序时,在需要插入素材模块的位置,只需利用内联节点指明素材文件的地址和文件名即可完成调用和插入素材的过程,素材可以很方便地成为整个场景中的一部分。Inline exposedField MFString url field SFVec3f bboxCenter 0 0 0 field SFVec3f b
9、boxSize -1 -1 -1五、Anchor锚链接节点内联节点是把存在本机硬盘或互联网上的素材作为整个场景的一个组成部分调到原场景中来,而锚链接节点则是把存在本机硬盘或互联网上的素材作为一个新的完整的场景进行调用,在原场景中设置一个锚点造型,当浏览者点击锚点造型时,VRML浏览器即可链接到设定的素材文件,使浏览者从原场景中出来,进入到素材文件所构建的新场景中去。Anchor eventIn MFNode addChildren eventIn MFNode removeChildren exposedField MFNode children exposedField SFString d
10、escription “ exposedField MFString parameter exposedField MFString url field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1六、原型的定义和调用前面所讲的调用素材的三种方法只适用于对素材不需要进行加工处理、原汁原味调用的情况,如果需要对素材的属性进行更改或赋予更多的功能后调用,可以使用PROTO原型节点或EXTERPROTO外部原型节点,它们可以定义可供修改的属性,例如:颜色、材质、外观等,还可以根据需要增加素材的功能。 原型具有以下功能 (1)素材调用
11、功能。原型可以作为素材库反复调用。(2)节点扩展功能。原型可以使用标准节点和自定义节点创建新的节点类型。(3)动态更新和保护功能。原型可以通过设置接口中的域和事件,对虚拟现实中造型属性进行更改或者限制更改,从而达到场景的动态更新和保护一些造型不被改动的目的。(4)造型及动作打包功能。VRML中标准节点本身均不具备行为自控能力,通过原型可以将造型与交互动作、事件、脚本等VRML元素捆绑使用。(5)网络运作功能。原型(内部原型)可以在当前文件中定义和反复调用,外部原型可以在其他文件和网络中定义,在当前文件中反复调用。外部原型提供了跨越网络调用的强大功能。4.3 其他组节点的使用其他组节点的使用一、
12、Billboard布告牌节点Billboard eventIn MFNode addChildren eventIn MFNode removeChildren exposedField SFVec3f axisOfRotation 0 1 0 exposedField MFNode children field SFVec3f bboxCenter 0 0 0 field SFVec3f bboxSize -1 -1 -1二、Switch选择开关节点Switch exposedField MFNode choice exposedField SFInt32 whichChoice -1三、L
13、OD细节层次控制节点在创建VRML虚拟现实空间造型的时候,需要兼顾浏览器的渲染速度和造型刻画真实度之间的关系。造型刻画越细致就越接近于真实,然而相应的VRML文件的体积也越大,浏览器的渲染速度就越低,占用计算机CPU的时间就越长。LOD (Level of Detail) 细节层次控制节点主要任务就是解决这个问题,该节点可以根据浏览者与造型距离的远近,选择按照不同的细致度刻画的造型。当造型距离比较远的时候,选择用较低层次细节描述方法创建的造型,忽略一些细节而只刻画造型的轮廓、形状和大小,这与在真实世界中的观察极为相似。远距离的物体只能看到模糊的轮廓而看不到细节,可以减小造型文件的体积,提高浏览
14、器的速度。当造型距离比较近的时候,选择用较高层次细节描述方法创建的造型,清晰地刻画造型的纹理和细微特征,保证造型描述的逼真性,这一点也与我们在真实世界中的观察相一致,物体距离越近,能够看到的细节越多、越清晰。LOD exposedField MFNode level field SFVec3f center 0 0 0 field MFFloat range 第五章、虚拟现实的场景环境设计第五章、虚拟现实的场景环境设计5.1 创建背景5.2 创建光源5.3 创建雾化效果5.4 创建观察视点和视点导航5.1 创建背景创建背景在VRML中添加背景是最简单、最基本的场景环境设计方法。虚拟空间背景分为
15、全景空间背景和天体空间背景两种:全景空间背景是一个将造型包围在里面的空间立方体,具有前、后、左、右、上、下六个平面,可以根据需要设置不同的材质和图片。天体空间背景是一个无穷大的空间球体,分为天空背景和地面背景。天空和地面的划分以地平线为界。地平线位于原始坐标系XOZ平面向后延伸的无穷远处,上面的球体是天空,下面的球体是地面。背景和造型的嵌套关系是:造型在最里面,全景空间背景的立方体为中间包围层,天体空间背景的无穷大球体是最外面的包围层。如果同时增加了全景空间和天体空间两种背景,可以通过设置全景空间背景的透明度值决定能否看到天空和地面的颜色。默认情况下,没有全景空间背景,天空和地面均为黑色。空间
16、模型空间模型以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.01.0 一些
17、常用角度的弧度值(弧度一些常用角度的弧度值(弧度=角度角度*/180)5.2 创建光源创建光源现实世界中的光源来自于各种能发光的物体,例如太阳、灯泡、蜡烛、激光器等。 在默认情况下,VRML浏览器自动生成一个白色头灯光源headlight。此光源为平行光束,与浏览者的视点同步运动,始终照亮浏览者的前方,和井下工作的矿工帽子上的头灯很相似。头灯光源可以通过设置NavigationInfo节点的headlight域的域值,控制光源打开或关闭(FALSE),默认缺省情况下,头灯为打开状态,光源的颜色无法改变。本章之前所有的实例均采用这种默认的白色头灯光源。除此之外,VRML中还可以人工设置三种类型的
18、光源:点光源:点光源 (PointLight节点),平行光源(DirectionalLight节点)和锥光源(SpotLight节点)。 PointLight 点光源节点点光源由发光点向四面八方发射亮度相同的光线,各个方向具有相同性。点光源节点既可作为独立的节点,也可作为其他组节点的子节点使用。PointLight exposedField SFFloat ambientIntensity 0 exposedField SFVec3f attenuation 1 0 0 exposedField SFColor color 1 1 1 exposedField SFFloat intensit
19、y 1 exposedField SFVec3f location 0 0 0 exposedField SFBool on TRUE exposedField SFFloat radius 100DirectionalLight平行光源节点现实世界中的平行光源是从无穷远处照射,因此其光线是平行指向同一个方向的。例如,太阳基本是一个平行光源,太阳离地球相当远,当太阳的光线到达地球时基本是平行的。DirectionalLight exposedField SFFloat ambientIntensity 0 exposedField SFColor color 1 1 1 exposedFiel
20、d SFVec3f direction 0 0 -1 exposedField SFFloat intensity 1 exposedField SFBool on TRUE SpotLight锥光源节点 锥光源即光线照射呈光锥状,光源位于圆锥体的顶点,光线被限制在一个圆锥体的照射空间里;造型只有位于圆锥体空间中才会被照亮。VRML中,常常利用SpotLight节点创建锥光源,模拟一些特殊光照效果的场景,如舞台灯光、探照灯、艺术摄影等。 SpotLight exposedField SFFloat ambientIntensity 0 exposedField SFVec3f attenuat
21、ion 1 0 0 exposedField SFFloat beamWidth 1.570796 exposedField SFColor color 1 1 1 exposedField SFFloat cutOffAngle 0.785398 exposedField SFVec3f direction 0 0 -1 exposedField SFFloat intensity 1 exposedField SFVec3f location 0 0 0 exposedField SFBool on TRUE exposedField SFFloat radius 100 创建阴影效果VR
22、ML光源与自然光源的主要差别在于不能自动产生阴影。自然界的光线无法穿过不透明的物体,当光线照射这些物体时就会出现阴影。由于VRML中的光照只是对造型表面明暗程度的一种模拟,造型对光线没有遮挡作用,光线可以透过造型完全照射到后面的物体上,所以VRML中的光照只能改变造型表面的明暗分布,不能自动产生阴影的效果。如果想在虚拟世界中模拟自然界的光照效果,则必须人工设置阴影造型。 阴影的形状常常是造型沿光线照射方向形状的压缩和变形,一般利用Transform节点的scale域模拟阴影的形状。阴影的颜色通常利用Material节点的域值设置为灰色或者半透明的深灰色。有些阴影形状也可以借助于简单造型来模拟。
23、5.3 创建雾化效果创建雾化效果在vrml中使用Fog雾节点创建雾化效果,模拟自然界的大气现象,使虚拟现实的场景更加逼真、更加具有层次感,创造一种朦胧的美。雾化效果主要控制两个因素:一是雾的颜色,二是雾的浓度。雾的颜色可以按照实际情况任意选择,但通常使用白色,因为白色更接近自然界雾的本色。雾的浓度与人在雾中的能见度相反,雾越浓人的能见度越差,因此可以通过设定观察者能见范围的大小来调整雾的浓淡程度。 Fog exposedField SFColor color 1 1 1 exposedField SFString fogType LINEAR exposedField SFFloat visi
24、bilityRange 0 eventIn SFBool set_bind eventOut SFBool isBound5.4 创建观察视点和视点导航创建观察视点和视点导航Viewpoint视点节点Viewpoint eventIn SFBool set_bind exposedField SFFloat fieldOfView 0.785398 exposedField SFBool jump TRUE exposedField SFRotation orientation 0 0 1 0 exposedField SFVec3f position 0 0 10 field SFStrin
25、g description eventOut SFTime bindTime eventOut SFBool isBoundNavigationInfo导航节点 NavigationInfo eventIn SFBool set_bind exposedField MFFloat avatarSize 0.25, 1.6, 0.75 exposedField SFBool headlight TRUE exposedField SFFloat speed 1.0 exposedField MFString type WALK exposedField SFFloat visibilityLim
26、it 0.0 eventOut SFBool isBound第六章、造型的动画效果和交互功能第六章、造型的动画效果和交互功能6.1 造型的动画效果6.2 造型的交互功能6.1 造型的动画效果造型的动画效果在现实世界中,很多东西都是随时间发生变化的,例如太阳的升起和降落、花蕾的绽开和凋谢、树叶由绿变黄、鱼儿戏水、小鸟飞翔、汽车行驶、表针转动等等。这些就是V盯住要在虚拟环境中,通过人为设置实现的动画效果。VRML创建动画效果的基本方法是:由时间传感器控制动画的时钟,包括动画开始的时间、停止的时间、循环的周期等:然后将时间控制参数作为事件传送给各种插补器节点,插补器依据事先设计好的时间关键点和动画关
27、键值,在浏览器渲染时形成连续变化的动画效果。 特点:随时间改变特点:随时间改变 - 位置、方向、颜色等位置、方向、颜色等 - VRML中:不断改变节点的某个域的值中:不断改变节点的某个域的值两个基本的控制条件:两个基本的控制条件: - 何时开始、何时结束何时开始、何时结束 - 变化速度变化速度根据所插值的数据类型不同插补器节点可分为六种:颜色差补器(ColorInterpolator节点)、位置插补器(PositionInterpolator节点)、朝向插补器(OrientationInterpolator节点)、标量插补器(ScalarInterpolator节点)、坐标插补器(Coordi
28、nateInterpolator节点、法向量插补器(NomalInterpolator节点)。事件与路由节点由域和事件组成,其中域的取值决定了节点所创建的造型或场景环境的当前状态;事件则为节点提供了接收外界信息或向外界发送信息的能力。事件是按照指定的路径从一个节点发往另一个节点的信息,节点通过事件入口也称入事件(eventIn)接收来自其他节点的信息改变自己原有域值,通过事件出口也称出事件(eventout)发送自己的信息以改变其他节点的域值。从一个节点的事件出口到另一个节点的事件入口,用来传送事件的路径称为路由(route)。通过路由可以将多个节点联系在一起,形成事件体系,使事件得以传播而引
29、起节点域值的变化。路由路由(ROUTE)将两个节点连接起来:将两个节点连接起来: - 输出节点的名称和输出节点的名称和eventOut域的名称域的名称 - 输入节点的名称和输入节点的名称和eventIn域的名称域的名称示例示例 ROUTE MySender.rotation_changed TO MyReceiver.set_rotationROUTE 和和TO 必须大写必须大写TimeSensor事件传感器节点TimeSensor exposedField SFTime cycleInterval 1 exposedField SFBool enabled TRUE exposedField
30、 SFBool loop FALSE exposedField SFTime startTime 0 exposedField SFTime stopTime 0 eventOut SFTime cycleTime eventOut SFFloat fraction_changed eventOut SFBool isActive eventOut SFTime timeColorInterpolator颜色插补器ColorInterpolator eventIn SFFloat set_fraction exposedField MFFloat key exposedField MFColo
31、r keyValue eventOut SFColor value_changedScalarInterpolator标量插补器ScalarInterpolator eventIn SFFloat set_fraction exposedField MFFloat key exposedField MFFloat keyValue eventOut SFFloat value_changedPositionInterpolator位置插补器PositionInterpolator eventIn SFFloat set_fraction exposedField MFFloat key exp
32、osedField MFVec3f keyValue eventOut SFVec3f value_changedOrientationInterpolator朝向插补器OrientationInterpolator eventIn SFFloat set_fraction exposedField MFFloat key exposedField MFRotation keyValue eventOut SFRotation value_changedCoordinateInterpolator坐标插补器CoordinateInterpolator eventIn SFFloat set_f
33、raction exposedField MFFloat key exposedField MFVec3f keyValue eventOut MFVec3f value_changedNormalInterpolator法向量插补器NormalInterpolator eventIn SFFloat set_fraction exposedField MFFloat key exposedField MFVec3f keyValue eventOut MFVec3f value_changed6.2 造型的交互功能造型的交互功能VRML场景中的造型能够对浏览者的动作做出反应,称之为交互功能。
34、虚拟现实技术的魅力在于凭借强大的交互功能,使浏览者在虚拟世界中如同身临其境。例如,浏览者点击电视开关,可以播放影视片断;走近宾馆,大门可以自动打开:可以控制造型的位移或旋转等等。大多数节点只能创建静态造型,时间传感器和插补器虽然可以使造型产生连续变化的动画效果,但是动画的起止时间和变化规律都是设计者事先预置的,浏览者只是观赏而无法参与控制。要想实现人机交互,首先要感知浏览者的操作或者在场景中的观察位置,然后对此操作或者位置移动做出反应。 VRML使用七种传感器节点完成感知和反应的交互功能(时间传感器除外,前面己介绍),其中包括: TouchSensor触摸传感器、 PlaneSensor平面传
35、感器、 Cylindersensor圆柱体传感器、Spheresensor球体传感器、ProximitySensor接近传感器、VisibilitySensor可视传感器、 Collision碰撞传感器。第一类传感器:通过感知浏览者对于鼠标的操作行为(移动鼠标、点击鼠标、拖动鼠标),触发并输出事件,实现人机交互的功能。这类传感器有TouchSensor触摸传感器、PlaneSensor平面传感器、CylinderSensor圆柱体传感器、SphereSensor球体传感器。第二种传感器:通过感知浏览者在虚拟场景中的观察位置,也就是当浏览者的视点与造型的接近程度达到一定范围的时候,触发并输出事件
36、,实现人机交互功能。这类传感器有ProximitySensor接近传感器、VisibilitySensor可视传感器、Collision碰撞传感器。 TouchSensor触摸传感器TouchSensor exposedField SFBool enabled TRUE eventOut SFVec3f hitNormal_changed eventOut SFVec3f hitPoint_changed eventOut SFVec2f hitTexCoord_changed eventOut SFBool isActive eventOut SFBool isOver eventOut S
37、FTime touchTimePlaneSensor平面传感器PlaneSensor exposedField SFBool autoOffset TRUE exposedField SFBool enabled TRUE exposedField SFVec2f maxPosition -1 -1 exposedField SFVec2f minPosition 0 0 exposedField SFVec3f offset 0 0 0 eventOut SFBool isActive eventOut SFVec3f trackPoint_changed eventOut SFVec3f translation_changedCylinderSensor 圆柱体传感器CylinderSensor exposedField SFBool autoOffset TRUE expose
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山西运城市北赵引黄服务中心有限公司招聘20人考试备考题库及答案解析
- 2026年靖宇县公开招聘城市社区工作者专职岗位人员(12人)考试备考题库及答案解析
- 2026福建三明市浦丰乡村发展集团有限公司及其下属企业招聘4人考试备考题库及答案解析
- 2026四川省革命伤残军人休养院(四川省第一退役军人医院)第一批招聘编外人员11人考试参考试题及答案解析
- 2026年甘肃卫生职业学院招聘高层次人才20人(第一批)考试备考题库及答案解析
- 2025天津市第二批次工会社会工作者招聘笔试环节及相关安排考试参考题库及答案解析
- 2025安徽芜湖市湾沚区国有资本建设投资(集团)有限公司及其子公司第一批人员招聘递补考试备考题库及答案解析
- 2026年保山市图书馆城镇公益性岗位招聘(8人)考试参考题库及答案解析
- 2026广东江门市供销集团侨通农产品有限公司招聘业务岗1人考试备考试题及答案解析
- 2026年保山市昌宁县机关事务管理局招聘编外工作人员(1人)考试备考题库及答案解析
- 发改价格〔2007〕670号建设工程监理与相关服务收费标准
- 道岔滚轮作用原理讲解信号设备检修作业课件
- 小学师徒结对师傅工作总结
- 廉洁征兵培训课件
- 农业机械行业调研报告
- 金融行业风险控制与投资策略研究
- 北京巿通州区2025届高二数学第一学期期末考试试题含解析
- 幼儿园大班语言活动《新年礼物》课件
- BCG-并购后整合培训材料-201410
- 古代汉语与中华文明智慧树知到期末考试答案章节答案2024年山东师范大学
- JB-T 8881-2020 滚动轴承 渗碳轴承钢零件 热处理技术条件
评论
0/150
提交评论