首页 虚拟现实技术vrml程序设计

虚拟现实技术vrml程序设计

举报
开通vip

虚拟现实技术vrml程序设计VRML程序设计四、造型的空间变换、编组和素材调用4.1造型的空间变换4.2造型编组和素材调用4.3其他组节点的使用Chapter44.1造型的空间变换在VRML中创建的立体造型都是以默认坐标系的原点为中心进行定位的。Transform坐标变换节点可以创建一个新的坐标系,通过对坐标系的平移、旋转、缩放操作,实现对立体造型位置、角度、缩放比例的改变。一、Tronsform坐标变换节点Transform坐标变换节点用于创建一个或多个不同于默认(原始)坐标系的新坐标系。Transfom节点是一个组节点,在此节点下面可以包...

虚拟现实技术vrml程序设计
VRML程序设计四、造型的空间变换、编组和素材调用4.1造型的空间变换4.2造型编组和素材调用4.3其他组节点的使用Chapter44.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圆柱体传感器CylinderSensor{exposedFieldSFBoolautoOffsetTRUEexposedFieldSFFloatdiskAngle0.262exposedFieldSFBoolenabledTRUEexposedFieldSFFloatmaxAngle-1exposedFieldSFFloatminAngle0exposedFieldSFFloatoffset0eventOutSFBoolisActiveeventOutSFRotationrotation_changedeventOutSFVec3ftrackPoint_changed}SphereSensor球体传感器SphereSensor{exposedFieldSFBoolautoOffsetTRUEexposedFieldSFBoolenabledTRUEexposedFieldSFRotationoffset0100eventOutSFBoolisActiveeventOutSFRotationrotation_changedeventOutSFVec3ftrackPoint_changed}ProximitySensor接近传感器ProximitySensor{exposedFieldSFVec3fcenter000exposedFieldSFVec3fsize000exposedFieldSFBoolenabledTRUEeventOutSFBoolisActiveeventOutSFVec3fposition_changedeventOutSFRotationorientation_changedeventOutSFTimeenterTimeeventOutSFTimeexitTime}VisibilitySensor可视传感器VisibilitySensor{exposedFieldSFVec3fcenter000exposedFieldSFBoolenabledTRUEexposedFieldSFVec3fsize000eventOutSFTimeenterTimeeventOutSFTimeexitTimeeventOutSFBoolisActive}Collision碰撞传感器Collision{eventInMFNodeaddChildreneventInMFNoderemoveChildrenexposedFieldMFNodechildren[]exposedFieldSFBoolcollideTRUEfieldSFVec3fbboxCenter000fieldSFVec3fbboxSize-1-1-1fieldSFNodeproxyNULLeventOutSFTimecollideTime}
本文档为【虚拟现实技术vrml程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:ppt
大小:340KB
软件:PowerPoint
页数:57
分类:
上传时间:2022-01-21
浏览量:0