




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
虚拟现实技术主讲:杨文晖6动态感知虚拟现实节点在VRML中,最具特征的“节点〞就是具有动态、交互和感知特性的节点,其中包括TimeSensor时间传感器节点动画插补器节点触摸节点感知节点等。动画插补器节点在VRML中,动画插补器节点可以实现模拟大干世界万物的变化。包括的动画控制节点有:PositionInterpolator位置插补器OrientationInterpolator朝向插补器节ScalarInterpolator标量插补器节点ColorInterpolator颜色插补器节CoordinateInterpolator坐标插补器NormalInterpolator法线插补器节点触摸节点VRML触摸节点在路由的作用下,动画插补器节点结合运用可以产生更加生动、逼真的动态交互效果,使观测者有身临其境的觉得。触摸节点有:由TouchSensor触摸传感器节点PlaneSensor平面检测器节点CylinderSensor圆柱检测器节点SphereSensor球面检测器节点感知节点VRML感知节点已具有初级智能作用,是VRML最具代表性节点,也是非常重要的节点。感知节点包括:VisibilitySensor能见度传感器节点ProximtitySensor亲近度传感器节点Collision碰撞传感器节点6.1时间传感器节点在现实世界中,万物的变化往往是自动的,而且是有一定规律的,即不是随人的意志而改动。这就需求在VRML虚拟世界中,创建出能自动变化而不需求人为改动的外型。我们可以经过设定时间按某种规律变化来控制外型变化,而控制时间按某种规律变化最常见的就是时间传感器。TimeSenor时间传感器节点的作用就是创建一个虚拟时钟,并对其他节点发送时间值,控制VRML立体空间的动态对象的开场、变化和结果过程的时间,实现空间物体外型的挪动、变色、变形等自动变化。TimeSensor时间传感器又包含绝对时间(AbsoluteTime)和部分时间(FractionalTime)两个概念。绝对时间是以秒为单位计算的。在绝对时间内,1秒发生在绝对日期的时间经过1秒之后,如2003年6月16日08点58分59秒,经过1秒钟变为2003年6月16日08点59分。部分时间又称相对时间,是空间物体运动从某一时辰0.0开场运动不断到1.0为止。从0.0时辰到1.0时辰称为相对时间,相对时间的差可以是绝对时间的30秒,10分钟或1小时等,这段时间差也称为动态对象的运动周期。TimeSensor时间传感器节点在VRML中并不产生任何外型和可视效果。其作用只是向各插补器节点输出事件,以使插补器节点产生所需求的动画效果。该节点可以包含在任何组节点中作为子节点,但独立于所选用的坐标系。TimeSensor时间传感器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点各种插补器节点ROUTE路由Inline内联节点TimeSensor节点语法TimeSensor{enableTRUE#exposedFieldSFBoolstartTime0.0#exposedFieldSFTimestopTime0.0#exposedFieldSFTimecycleInterval1.0#exposedFieldSFTimeloopFALSE#exposedFieldSFBoolisActive#eventOutSFTimeTime#eventOutSFTimecycleTime#eventOutSFTimefraction_changed#eventOutSFFloat}域名和域值详解cycleInterval域的域值定义了一个时间长度,用来说明这个时间传感器从0.0时辰到1.0时辰之间的周期间隔,单位为秒。该域值必需大于0.0,其默许值为1.0秒。Enabaled域的域值定义了时间传感器的翻开或封锁。该域值为布尔量。假设为TRUE,时间传感器被翻开;假设为FALSE时,时节传感器被封锁。其默许值为TRUE。loop域的值定义了时间传感器能否循环输出。该域值为布尔量。假设为TRUE,那么时间传感器会自动循环,不断到停顿时间为止;假设为FALSE,时间传感器不循环,只经过一个周期后,就会自动停顿。其默许值为FALSE。(4)startTime域的值定义了时间传感器开场输出事件的时间(绝对时间)。该域值的默许值为0.0秒。(5)stopTime域的值定义了时间传感器停顿输出事件的时间(绝对时间)。该域值的默许值为0.0秒。上述startTime和stopTime,cycleInterval和loop域值共同控制着时间传感器的事件输出。当这4个域同时运用时,根据这4个域值之间的关系,决议时间传感器的任务形状。6.2VRML动画控制节点在VRML中,动画控制节点是用来实现动画效果的,在现实世界中,万物都是在变化着的,如太阳的升落,树叶由绿变黄等,这些都是自然界中实现的动画效果。在VRML中也可以实现同样动画效果,使VRML世界更加生动、真实。VRML提供了多个用来控制动画的插补器。插补器(Interpolator)节点是为线性关键帧动画而设计的,其采用一组关键数值,且每个关键值对应一种形状。这个形状允许以各种方式表示,如SFVec3f或SFColor,阅读器会根据这些形状生成延续的动画。普通来说,阅读器在两个相邻关键帧之间生成的延续帧是线性的。插补器节点可根据其所插值的类型不同分为6种:①位置插补器(PositionInterpolator)②朝向插补器(OrientationInterpolator)③颜色插补器(ColorInterpolator)④标量插补器(ScalarInterpolator)。⑤坐标插补器(CoordinateInterpolator)⑥法线插补器(NormalInterpolator)6.2.1PositionInterpolator位置插补器节点PositionInterpolator位置插补器节点是空间外型位置挪动节点,用来描画一系列用于动画的关键值,使物体挪动构成动画。该节点不创建任何外型,在一组SFVec3f值之间进展线性插值,适宜于对于平移进展插值PositionInterpolator位置插补器节点语法构造如图Group组节点Background背景节点TimeSensor时间传感器节点PositionInterpolator位置插补器节点ROUTE路由Inline内联节点PositionInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的值定义了一张变化时辰关键值列表。每一个时间值都代表全部动态时间中的一个相对时间,每个时辰值普通在0.0与1.0之间,并且由0依次到1。然而关键时辰值可以是恣意大小的正值或负值,但必需以递增的顺序陈列,其默许值是一张空列表[]。(2)keyValue域的值定义了一组三维坐标值列表。每一组坐标值都对应key域值中的一个相对时间段,其默许值是一张空列表[]。事件阐明(1)set_fraction为入事件(eventIn),当接纳到一个时辰值时,PositionInterpolator节点计算出基于关键位置表和相关的关键时辰的一个位置,并经过value_changed事件出口输出新的位置列表。(2)value_changed为出事件(eventOut),将信息传送给目的节点,传送内容为一组方位值。为了更好的了解、掌握和控制动画的插补器实现动画过程,结合下面实例将动画所需时间传感器相对时间的逻辑值和空间坐标的位置值对应起来,如图6-3所示。再结合空间物体外型的立体空间坐标表示图,如图6-4所示,可以更好的了解和掌握VRML具有动态交互的各个节点。keykeyValue0.0
000
#从坐标原点出发0.2
00-200.4
85-200.5
8-5-20
#经过曲折路径0.6-8-5-200.8-85-200.9
00-2001.0
000
#返回原点相对时间的逻辑值空间坐标的位置对应值key0.0keyValue(000)(00-200)keyValue(85-20)keyValue(8-5-20)keyValue(-8-5-20)keyValue(-85-20)keyValuekeyValue(00-20)key0.2图6-4立体空间物体外型挪动轨迹的立体空间坐标表示图运用位置插补器节点,引入VRML飞碟空间外型;在时间传感器与位置插补器共同作用下,使飞碟沿着指定途径飞驰;从坐标原点出发,经过曲折的途径最后前往原点,并循环往复运转。实例6-1路由把每一个节点联络起来,其中,fraction_changed为时间传感器的出事件传送给位置插补器节点的set_fraction入事件,然后再由位置插补器节点的value_changed出事件传送给立体空间外型飞碟中坐标变换节点的暴露域set_translation入时间,从而实现飞碟的飞行。飞碟如何运动?范例6-26.2.20rientationInterpolator朝向插补器节点0rientationInterpolator朝向插补器节点是方位变换节点,用来描画一系列在动画中运用的旋转值。该节点不创建任何外型,可以在不同时辰旋转到所对应的方位(朝向)。经过运用该节点,可以使外型旋转。orientationInterpolator朝向插补器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点0rientationInterpolator位置插补器节点ROUTE路由Inline内联节点OrientationInterpolator节点语法OrientationInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的域值定义了一组相对时间间隔的时间关键值。时间值普通在0.0和1.0之间,并且由0依次到1以递增的顺序陈列。其默许值是一张空列表[]。(2)keyValue域的域值定义了一个三维旋转关键值的列表。每一个旋转关键值是一个4个值的组,前3个值指定了一个旋转轴的X、Y和Z分量,第4个值指定了旋转轴的一个旋转角度。其默许值是一张空列表[]。(1)set_fraction为入事件(eventIn),当接纳到一个时辰值时,OrientationInterpolator朝向插补器节点根据关键时辰列表和其对应关键旋转列表计算出一个关键旋转子列表,并经过value_changed事件出口输出新算出的旋转列表。(2)value_changed为出事件(eventOut),把信息传送给目的节点,传送内容为一组方位值。在蓝色背景下,运用时间传感器节点、内联节点和朝向插补器节点使飞船沿Y轴旋转180°,且循环执行。vrml6-3.wrl6.2.3ScalarInterpolator标量插补器节点ScalarInterpolator标量插补器节点是强度变换动态节点,描画的是在动画中运用的一系列关键值。该节点不创建任何外型,在一组SFFloat值之间进展线性插值,这个插值适宜于用简单的浮点值定义的任何参数。运用ScalarInterpolator标量插补器节点和TimeSensor时间传感器节点来改动光线节点中的Intensity域的域值(光线强度),使光线强度随时间的改动而变化,实现动态效果。ScalarInterpolator标量插补器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点ScalarInterpolator标量插补器节点ROUTE路由Inline内联节点DirectionalLight方向光源节点ScalarInterpolator节点语法ScalarInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的域值提供了一组时间关键值列表,每个时间值代表一个相对时间段的值,该时间值普通在0.0和1.0之间,但必需以递增的顺序陈列。其默许值是一张空列表[]。(2)keyValue域的值指定了一系列三维坐标值。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默许值为一个空的序列[]。(1)set_fraction为入事件(eventIn),当收到一个时辰值时,ScalarInterpolator节点根据关键值的序列和它们对应的关键时辰值,计算一个浮点值,并经过value_changed事件出口输出计算后的浮点值。(2)value_changed为出事件(ewntOut),它把信息传送给目的节点,传送内容为一组方位值。ScalarInterpolator节点还可以用来控制VRML外型的透明度,经过控制Mateirial节点的transparency域值,使外型的透明度改动vrml6-4.wrl在立体空间背景下,利用方向光源节点、时间传感器、内联节点和标量插补器节点,使平行光源的光照强度发生变化,创建动态视觉效果vrml6-5.wrl让空间球体的透明度发生变化,从而使哑铃的可见度也发生变化6.2.4ColorInterpolator颜色插补器节点ColorInterpolator颜色插补器节点是用来表示颜色间插值的节点,使立体空间场景与外型颜色发生变化。该节点并不创建外型,在VRML场景中是看不见的。该节点可以作为任何编组节点的子节点,但又独立于所运用的坐标系,即不受坐标系的限制。ColorInterpolator颜色插补器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点ColorInterpolator颜色插补器节点ROUTE路由Inline内联节点DirectionalLight方向光源节点ColorInterpolator节点语法ColorInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的域值提供了一组时间关键值列表,每个时间值代表一个相对时间段的值,该时间值普通在0.0至1.0之间,但必需以递增的顺序陈列。其默许值是一张空列表[]。(2)keyValue域的值指定了一系列三维坐标的关键RGB颜色值。每个RGB颜色都是由在0.0至1.0区间内的3个浮点数所表示的,它们分别表示混合色中红、绿、蓝的数值。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默许值为一张空列表[]。(1)set_fraction为入事件(eventIn),当收到一个时辰值时,ColorInterpolator颜色插补器节点就在关键颜色值和它们相应的关键时间值的根底上计算出一个RGB颜色值,并经过value_changed出事件输出该RGB颜色值。(2)value_changed为出事件(eventOut),用来输出计算后的RGB颜色值。[实例6-6]利用方向光源节点、时间传感器节点、内联节点及颜色插补器节点来改动颜色,实现动态控制颜色的变化的效果,并在场景中利用路由控制和传送信息vrml6-6.wrlvrml6-7.wrl6.2.5CoordinateInterpolator坐标插补器节点CoordinateInterpolator坐标插补器节点是表示坐标插值的节点,该节点在一组MFVec3f值之间进展线性插值。经过运用该节点,可以使一个外型的组成坐标发生变化。同ColorInterpolator节点一样,CoordinateInterpolator节点也不创建任何外型,在VRML场景中也是不可见的。坐标插补器的作用是利用坐标点的挪动实现动画。经过运用CoordinateInterpolator节点,可使VRML中的物体外型上的各个坐标点构成单独的运动轨迹,可以使物体外型改动运动方向。CoordinateInterpolator坐标插补器节点语法构造Background背景节点TimeSensor时间传感器节点CoordinateInterpolator颜色插补器节点ROUTE路由Shape模型节点CoordinateInterpolator坐标插补器节点语法CoordinateInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的域值提供了一组时间关键值列表,每个时间值代表一个相对时间段的值。该时间值普通在0.0至1.0之间,但必需以递增的顺序陈列。其默许值是一张空列表1)。(2)keyValue域的值指定了一系列三维坐标的列表。每一个坐标都包含3个浮点数值,分别为向量的X、Y和Z分量。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默许值为一张空的列表[]。(1)set_fraction为入事件(eventIn),当收到一个时辰值时,CoordinateInterpolator节点就根据关键时辰列表和它们相对应的关键坐标子列表计算出一张坐标的子列表,并经过value_changed出事件输出新的坐标列表。(2)value_changed为出事件(eventOut),用来输出计算后的新的坐标列表值。[实例6-8]运用坐标插补器节点和时间传感器节点,并利用面节点控制面的尺寸大小,从而使立体空间外型产生循环运动的动画效果,也可以使外型畸形变化。vrml6-8.wrlvrml6-9.wrl6.2.6NormalInterpolator法线插补器节点NormalInterpolator法线插补器节点可以改动法向量Normal节点中vector域的域值。vector域的域值定义了一个法向量列表(XYZ),法向量Normal节点是面节点和海拔栅格节点中的一个节点。NormalInterpolator法线插补器节点在时间传感器的配合下,产生虚拟世界的各种逼真的动感效果。NormalInterpolator法线插补器节点语法构造Background背景节点TimeSensor时间传感器节点NormalInterpolator颜色插补器节点ROUTE路由Shape模型节点NormalInterpolator法线插补器节点语法NormalInterpolator{key[]#exposedFieldMFFloatkeyValue[]#exposedFieldMFVec3fset_faction#eventInSFFloatvalue_changed#eventOutSFVec3f}域名和域值详解(1)key域的域值提供了一组时间关键值列表,每个时间值代表一个相对时间段的值。该时间值普通在0.0至1.0之间,但必需以递增的顺序陈列。其默许值是一张空列表[]。(2)keyValue域的值指定了一系列法向量列表。每一个坐标都包含3个浮点数值,分别为向量的X、Y和Z分量。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默许值为一个空的列表[]。(1)set_fraction为入事件(eventIn),当收到一个时辰值时,NormalInterpolator法线插补器节点就根据关键时辰列表和它们相对应的关键法向量列表计算出一个法向量子列表,经过Ⅷ如echanged出事件输出新的法向量列表。(2)value_changed为出事件(eventOut),用来输出计算后的新法向量列表值。[实例6-10]在蓝色立体空间背景下,利用模型节点、面节点、时间传感器节点及法线插补器节点使立体空间外型的两个垂直面在法向量的控制下产生变化的效果vrml6-10.wrl6.3VRML触摸检测器节点实现VRML的交互功能,需求设计触动检测器或传感器。在VRML虚拟世界中,用户与虚拟现实世界之间的交互是经过一系列检测器节点来实现的,经过运用这些检测器节点,使阅读器感知用户的各种操作,比如开门、旋转、挪动和飞行等。这样用户就可以和VRML虚拟世界中的三维对象直接进展交互。触动检测器是用来检测用户的触动动作的,其中包括TouchSensor节点Planesensor节点CylinderSensorr节点SphereSensor节点等6.3.1TouchSensor触摸传感器节点TouchSensor触摸传感器节点是阅读者与虚拟对象之间相接触型传感器节点。TouchSensor触摸传感器节点创建了一个检测用户动作并将其转化后输出,以触发一个动画的检测器。它用来测试用户触摸事件的检测器。该节点可以为任何成组节点的子节点,并感知用户对该组节点的动作。TouchSensor触摸传感器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点各种插补检测器节点ROUTE路由Inline内联节点TouchSensor触摸传感器节点TouchSensor节点语法(触摸传感器节点)TouchSensor{enableTRUE#exposedFieldSFBoolisActive#eventOutSFBoolisOver#eventOutSFBooltouchTime#eventOutSFVec3fhitPoint_changed#eventOutSFVec3fhitNormal_changed#eventOutSFVec3fhitTexcood_changed#eventOutSFVec3f}域名和域值详解enabled域的域值定义了一个开关,即能否激活触摸传感检测器。当该域值为TRUE时,该检测器允许被用户激活,并产生输出;当该域值为FALSE时,用户无法激活该检测器。该域值的默许值为TRUE。事件阐明(1)isOver为出事件,当用户的鼠标位于被感应的三维对象上方时,将引发isOver事件,且该事件为TRUE。反之,当用户的鼠标不在被感应的三维对象上方时,该事件值为FALSE。(2)hitPoint_changed为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的坐标。(3)hitNormal_changed为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的外表法向量。(4)hitTexCoord_changed为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的纹理坐标。纹理坐标功能是VRML中很重要的一个功能。我们运用这一功能可以像HTML网页一样实如今一幅贴图上面划分多个区域,然后将每个区域设置各自的交互。(5)isActive为出事件,当用户单击对象时,检测器被激活,该域值由FALSE变为TRUE;反之当检测器失效时,该域值将由TRUE变为FALSE。(6)touchTime为出事件,当isOver为TRUE,而isActive为FALSE时发送该事件,所发送的值是系统当前的时间。[实例6-11]在蓝色立体空间背景下,首先将光标移到飞碟立体空间外型上,当出现触摸图标时,不断按住鼠标左键不放开,这时在屏幕上会看见一个在触摸节点触发下飞行的飞碟第一个路由是把〔Touch.isActive〕触摸传感器节点鼠标按下时间的〞TRUE〞传送给〔Time.enabled〕时间传感器节点的控制开关“enabled〞,使enabled由“FALSE〞变成“TRUE〞第二个路由是把〔Touch.touchTime〕触摸传感器节点的单击事件的发生时间传送给〔Time.startTime〕时间传感器的开场时间第三个路由是把〔Time.fraction_changed〕时间传感器的执行一段时间值传送给〔flyinter.set_fraction〕挪动位置节点的一个时间片。第四个路由是把〔flyinter.value_changed〕挪动位置节点的一组值传送给目的节点〔flyinter.set_translation〕使飞碟沿着设定的途径飞行。6.3.2PlaneSensor平面检测器节点PlaneSensor平面检测器节点是使虚拟对象在X-Y平面挪动型传感器节点。PlaneSensor平面检测器节点能感应到察看者的拖动行为,进而改动虚拟现实对象的位置但是不能改动方位,而且只限定于X-Y平面。当察看者拖动虚拟外型时,光标会在虚拟外型上变为一个收装的光标。该节点创建了一个可将阅读者的动作转换成适于操作外型的输出的检测器。该节点可以为任何成组节点的子节点,用以感知用户对该组节点的动作,使外型按用户的动作而平移。PlaneSensor平面检测器节点语法构造Group组节点Background背景节点PlaneSensor平面检测器节点ROUTE路由Inline内联节点PlaneSensor平面检测器节点语法PlaneSensor{enableTRUE#exposedFieldSFBoolautoOffsetTRUE#exposedFieldSFBooloffset0.00.00.0#exposedFieldSFVec3fmaxPosition-1.0-1.0#exposedFieldSFVec2fminPosition1.01.0#exposedFieldSFVec2fisActive#eventOutSFBooltranslation_changed#eventOutSFVec3ftracPoint_changed#eventOutSFVec3f}域名和域值详解(1)enabled域的域值是布尔量,定义了一个开关,即能否激活平面挪动传感检测器,当该域值为TRUE时,该检测器允许被用户激活,并产生输出;当该域值为FALSE时,用户无法激活该检测器。其默许值为TRUE。(2)autoOffset域的域值是一个布尔量。假设为TRI正时,Ⅵ(L亿程序会根据用户实践迁延鼠标的情况,计算出每一次平移的偏移量;假设为F虬SE时,表示每当用户进展一次新的拖曳后,就会自动重新回到默许值。其默许值为TR(正。(3)maxPosition域的域值用来设置检测器的最大位置值,其功能是限制挪动对象的范围只能在X—Y平面的某一点的下方和此点的左半部。其默许值为(–1–1)。(4)minPosition域的域值用来设置检测器的最小位置值,其功能是限制挪动对象的范围只能在X—Y平面的某一点的上方和此点的右半部。其默许值为(00)。(5)offset域的域值用于设置偏移量,即每一次输出位置时的偏移量。当autoOffset域的域值为TRUE时,人为设置的偏移量将被忽略。其功能是每当用户进展一次新的拖曳时,可以从默许位置被挪动到的最远间隔。其默许值为(000)。事件阐明(1)isActive为出事件(eventOut),假设该事件为TRUE时,表示鼠标是被按下的形状,假设为FALSE时,那么反之。该事件只会送出鼠标键能否被按下,但不是处于拖曳形状。(2)trackPoint_changed为出事件,表示进展拖曳后,用户的鼠标在X—Y平面上确实切位置。当检测器被激活且用户单击鼠标时,该出事件发送该值。其值代表的是虚拟平面上的当前单击点。(3)translation_changed为出事件,表示在进展拖曳的恣意时辰,用户的鼠标在X—Y平面上的暂时位置。当检测器被激活且用户单击鼠标时,该出事件发送该值。其值代表虚拟平
面上的平移坐标值。[实例6-12]运用平面检测器节点,能使帆船在VRML立体空间行驶;当用户单击帆船外型后,帆船会按指定途径左移到指定位置vrml6-12.wrl6.3.2CylinderSensor圆柱检测器节点CylinderSensor圆柱检测器节点是虚拟外型按圆柱体的中心轴旋转型传感器。CylinderSensor圆柱检测器节点用来创建一个将用户动作转换成外型围绕Y轴旋转的检测器。该节点可以作为任何组节点的子节点。此节点可以感应到用户的拖动动作,让被拖动的虚拟对象沿着Y轴旋转,虚拟对象就绕着圆柱体的中心轴被拖动旋转。CylinderSensor圆柱检测器节点语法构造Group组节点Background背景节点CylinderSensor平面检测器节点ROUTE路由Inline内联节点CylinderSensor圆柱检测器节点语法CylinderSensor{enableTRUE#exposedFieldSFBooldiskAngle0.262#exposedFieldSFFloatautoOffsetTRUE#exposedFieldSFBooloffset0#exposedFieldSFVec3fmaxAngle-1.0#exposedFieldSFFloatminAngle0.0#exposedFieldSFFloatisActive#eventOutSFBoolrotation_changed#eventOutSFVec3ftracPoint_changed#eventOutSFVec3f}域名和域值详解(1)enabled域值是布尔量。假设为TRUE时,表示检测器允许被用户激活;假设为FALSE时,检测器未被用户激活。其默许值为TRUE。(2)autoOffset域的值也是布尔量。假设该域值为TRUE时,VRML程序会根据用户实践迁延鼠标的情况,计算出每一次旋转的偏移量;假设为FALSE时,表示每当用户重新迁延一次鼠标后,就会自动回到默许值。其默许值为TRUE。(3)offset域的值指定了物体旋转的偏移量,即虚拟对象可以从默许位置被旋转多少弧度。其默许值为0。当autoOffset字段的值为TRUE时,人为设置的偏移量将被忽略。(4)maxAngle域的值定义了检测器输出的最大旋转角度。(5)minAngle域的值定义了检测器输出的最小旋转角度。(6)diskAngle域的值定义了检测器在圆盘行为和圆柱行为之间切换角度。默许值为0.262弧度。事件阐明(1)isActive为出事件,当检测器被激活时,假设该值为TRUE,表示当前用户正在进展迁延操作,假设为FALSE那么反之。(2)trackPoint_changed为出事件,当用户激活检测器并进展迁延操作时,将引发该事件值。其值代表圆柱体外表点的坐标。(3)rotation_changed为出事件,当用户激活检测器并进展迁延操作时,将引发该事件值。该值是虚拟的圆柱体的旋转值。[实例6-13]在蓝色立体空间背景下,运用圆柱检测器节点,翻开一扇门;当用户单击门外型时,此门旋转90度翻开vrml6-13.wrlvrml6-14.wrl6.3.4SphereSensor球面检测器节点SphereSensor球面检测器节点是使虚拟对象按恣意轴方向旋转型传感器。SphereSens球面检测器节点创建了一个将用户动作转换成外型绕某一点旋转的检测器。该节点可作为其他组节点的子节点。它能感遭到用户运用鼠标的拖动行为,使外型在没有固定旋转轴的情况下,被恣意拖动地旋转,也可以改动方位,但不能挪动位置。空间外型可在一个以球体为中心的恣意旋转轴上旋转。SphereSensor球面检测器节点语法构造Group组节点Background背景节点SphereSensor平面检测器节点ROUTE路由Inline内联节点SphereSensor球面监测器节点语法SphereSensor{enableTRUE#exposedFieldSFBoolautoOffsetTRUE#exposedFieldSFBooloffset0.01.00.00.0#exposedFieldSFVec3fisActive#eventOutSFBoolrotation_changed#eventOutSFVec3ftracPoint_changed#eventOutSFVec3f}域名和域值详解(1)enabled域值是布尔量。假设为TRUE时,表示检测器允许被用户激活;假设为FALSE,检测器未被用户激活。其默许值为TRUE。(2)autoOffset域的值是布尔量。假设为TRUE,表示物体迁延前后所挪动的轨迹,且停在迁延后的位置;假设为FALSE,那么表示每当用户进展一次新的迁延后,就会自动重新回到默许值。其默许值为TRUE。该域值作用是指定该旋转值能否发生偏移。(3)offse真域的域值指定了检测器每一次输出的旋转量。作用是每当用户执行一次新的迁延时,虚拟对象可以从默许方位被旋转一定的角度。其默许值为(0100)。当autoOffset域值设置为TRUE时,本字段的设置将被忽略。vrml6-15.wrl飞船会按要求旋转,当用户单击飞船时,可使飞船在以球体为中心的恣意轴上旋转6.4VRML感知检测器节点运用VRML感知检测器可以感知用户与外型的接近程度。感知检测器包括VisibilitySensor能见度传感器节点、ProximtitySensor亲近度传感器节点Collision碰撞传感器节点6.4.1VisibilitySensor能见度传感器节点VisibilitySensor能见度传感器节点也称为可见性感知检测器节点。VisibilitySensor能见度传感器节点用来从察看者的方向和位置感知一个长方体区域在当前的坐标系中何时才是可视的。该节点可作为恣意组节点的子节点。VisibilitySensor能见度传感器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点VisibilitySensor能见度传感器节点ROUTE路由Inline内联节点PositionInterpolator位置插补器节点VisibilitySensor能见度传感器节点语法VisibilitySensor{enabledTRUE#exposedFieldSFBoolcenter0.00.00.0#exposedFieldSFVec3fsize0.00.00.0#exposedFieldSFVec3fisActive#eventOutSFBoolenterTime#eventOutSFTimeexitTime#eventOutSFTime}域名和域值详解(1)enabled域的域值是一个布尔量。假设为TRUE,表示能见度传感器节点可以感遭到能见度的改动;假设为FALSE,那么反之。(2)center域的域值定义了一个箱型区域中的一个可感知区域的几何中心点的三维坐标。假设在这个限制的箱型区域内,表示能见度识别最大,传感器可以启动一些动态行为;假设在这个限制箱型区域外,那么表示能见度识别较差,传感器将停顿一些动态行为。该域值的默许值为坐标原点(000)。(3)size域的域值指定了一个能见度传感器节点箱型长方体区域的尺寸(XYZ),该域值的3个数值分别表示长方体区域的宽度、高度和深度。该域值的默许值是在原点的一个点区域(000)。[实例6-16]在立体空间背景下,利用能见度传感器节点使飞碟与帆船在可见性感知检测器节点控制下产生动态运动行为vrml6-16.wrl6.4.2ProximitySensor亲近度传感器节点ProximitySensor亲近度传感器节点也称为接近感知器节点,用来感知用户何时进入、退出和挪动于坐标系内的一个长方体区域。该节点可以感应观测者进入和挪动VRA4L虚拟现实场景中的长方体感知区域。当观测者穿越这个长方体感知区域时,可以使亲近度传感器启动某个动态对象;当观测者分开这个长方体感知区域,将停顿某个动态对象。例如,亲近度传感器节点控制一个自动门,当观测者经过自动门时,门被翻开,然后自动封锁。ProximitySensor亲近度传感器节点语法构造Group组节点Background背景节点TimeSensor时间传感器节点ProximitySensor亲近度传感器节点ROUTE路由Shape模型节点PositionInterpolator位置插补器节点ProximitySensor亲近度传感器节点语法ProximitySensor{enabledTRUE#exposedFieldSFBoolcenter0.00.00.0#exposedFieldSFVec3fsize0.00.00.0#expos
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城投供应链管理制度
- 培训室基地管理制度
- 培训班岗位管理制度
- 备件库备件管理制度
- 外加工安全管理制度
- 消防日常队伍管理制度
- 消防廉洁从业管理制度
- 外包队用电管理制度
- 外来务工人管理制度
- 多媒体教室管理制度
- DL∕T 516-2017 电力调度自动化运行管理规程
- 江苏省盐城市东台市2023-2024学年八年级下学期期末英语试卷(含答案解析)
- 2024年河南省三门峡市灵宝市小升初数学试卷
- 服装工艺师岗位职责
- 深圳市体育场馆租赁合同
- 肝硬化护理查房课件
- 竞赛试卷(试题)-2023-2024学年六年级下册数学人教版
- 轴承座基本工艺专业课程设计
- 网络空间安全概论智慧树知到期末考试答案2024年
- MOOC 管理学原理-东北财经大学 中国大学慕课答案
- 政务新闻摄影技巧培训课件
评论
0/150
提交评论