版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、虚拟现实技术主讲:杨文晖主讲:杨文晖6 动态感知虚拟现实节点在在VRML中,最具特色的中,最具特色的“节点节点”就是具有动态、就是具有动态、交互和感知特性的节点,其中包括交互和感知特性的节点,其中包括1.TimeSensor时间传感器节点2.动画插补器节点3.触摸节点4.感知节点等。动画插补器节点在在VRML中,动画插补器节点可以实现模拟大干世中,动画插补器节点可以实现模拟大干世界万物的变化。包括的动画控制节点有界万物的变化。包括的动画控制节点有:1.PositionInterpolator位置插补器2.OrientationInterpolator朝向插补器节3.ScalarInterpol
2、ator标量插补器节点4.ColorInterpolator颜色插补器节5.CoordinateInterpolator坐标插补器6.NormalInterpolator法线插补器节点触摸节点VRML触摸节点在路由的作用下,动画插补器节点触摸节点在路由的作用下,动画插补器节点联合使用可以产生更加生动、逼真的动态交互效联合使用可以产生更加生动、逼真的动态交互效果,使观测者有身临其境的感觉。触摸节点有:果,使观测者有身临其境的感觉。触摸节点有:1.由TouchSensor触摸传感器节点2.PlaneSensor平面检测器节点3.CylinderSensor圆柱检测器节点4.SphereSensor
3、球面检测器节点感知节点VRML感知节点已具有初级智能作用,是感知节点已具有初级智能作用,是VRML最最具代表性节点具代表性节点, 也是非常重要的节点。感知节点也是非常重要的节点。感知节点包括:包括:1.VisibilitySensor能见度传感器节点2.ProximtitySensor亲近度传感器节点3.Collision碰撞传感器节点6.1 时间传感器节点时间传感器节点在现实世界中,万物的变化往往是自动的,而且是有一定规在现实世界中,万物的变化往往是自动的,而且是有一定规律的,即不是随人的意志而改变。这就需要在律的,即不是随人的意志而改变。这就需要在VRML虚拟世虚拟世界中,创建出界中,创建
4、出能自动变化而不需要人为改变的造型能自动变化而不需要人为改变的造型。我们可以通过我们可以通过设定时间按某种规律变化来控制造型变化设定时间按某种规律变化来控制造型变化,而,而控制时间按某种规律变化最常见的就是时间传感器。控制时间按某种规律变化最常见的就是时间传感器。 TimeSenor时间传感器节点的作用就是时间传感器节点的作用就是1.创建一个虚拟时钟,2.并对其他节点发送时间值,3.控制VRML立体空间的动态对象的开始、变化和结果过程的时间,4.实现空间物体造型的移动、变色、变形等自动变化。TimeSensor时间传感器又包含时间传感器又包含绝对时间绝对时间(Absolute Time)和和部
5、分部分时间时间(Fractional Time)两个概念。两个概念。 绝对时间是以秒为单位计算的。在绝对时间内,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中中并不产生任何造型和可并不产生任何造型和可视效果视效果。其作用只是。其作用只是向各插补
6、器节点输出事件向各插补器节点输出事件,以使插补器,以使插补器节点产生所需要的动画效果。节点产生所需要的动画效果。该节点可以包含在任何组节点中作为子节点,但独立于所选该节点可以包含在任何组节点中作为子节点,但独立于所选用的坐标系。用的坐标系。 TimeSensor时间传感器节点语法结构时间传感器节点语法结构Group组节点组节点Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点各种插补器节点各种插补器节点ROUTE路由路由Inline内联节点内联节点TimeSensor节点语法节点语法TimeSensor enable TRUE # exposedField S
7、FBool startTime 0.0 # exposedField SFTime stopTime 0.0 # exposedField SFTime cycleInterval 1.0 # exposedField SFTime loop FALSE # exposedField SFBool isActive # eventOut SFTime Time # eventOut SFTime cycleTime # eventOut SFTime fraction_changed # eventOut SFFloat 域名和域值详解域名和域值详解cycleInterval域的域值域的域值定
8、义了一个时间长度,用来说 明这个时间传感器从00时刻到10时刻之间的周期间隔,单位为秒。该域值必须大于0.0,其默认值为1.0秒。 Enabaled 域的域值域的域值定义了时间传感器的打开或关闭。该域值为布尔量。若为TRUE,时间传感器被打开;若为FALSE时,时节传感器被关闭。其默认值为TRUE。 loop域的值域的值定义了时间传感器是否循环输出。该域值为布尔量。如果为TRUE,则时间传感器会自动循环,一直到停止时间为止;如果为FALSE,时间传感器不循环,只经过一个周期后,就会自动停止。其默认值为FALSE。(4) startTime域的值域的值定义了时间传感器开始输出事件的时间(绝对时间
9、)。该域值的默认值为00秒。(5) stopTime域的值域的值定义了时间传感器停止输出事件的时间(绝对时间)。该域值的默认值为00秒。上述上述startTime和和stopTime, cycleInterval和和loop域值共域值共同控制着时间传感器的事件输出。当这同控制着时间传感器的事件输出。当这4个域同时个域同时使用时,根据这使用时,根据这4个域值之间的关系,决定时间传个域值之间的关系,决定时间传感器的工作状态。感器的工作状态。6.2 VRML动画控制节点动画控制节点在在VRML中,动画控制节点是用来中,动画控制节点是用来实现动画效果实现动画效果的,在现实世的,在现实世界中,万物都是在
10、变化着的,如太阳的升落,树叶由绿变黄界中,万物都是在变化着的,如太阳的升落,树叶由绿变黄等,这些都是自然界中实现的动画效果。在等,这些都是自然界中实现的动画效果。在VRML中也可以实中也可以实现同样动画效果,使现同样动画效果,使VRML世界更加生动、真实。世界更加生动、真实。VRML提供了提供了多个用来控制动画的插补器。多个用来控制动画的插补器。 插补器插补器(Interpolator)节点节点 是为线性关键帧动画而设计的, 其采用一组关键数值,且每个关键值对应一种状态。这个状态允许以各种形式表示,如SFVec3f 或 SFColor, 浏览器会根据这些状态生成连续的动画。 一般来说,浏览器在
11、两个相邻关键帧之间生成的连续帧是线性的。插补器节点可根据其所插值的类型不同分为插补器节点可根据其所插值的类型不同分为6种:种: 位置插补器(PositionInterpolator) 朝向插补器(OrientationInterpolator) 颜色插补器(ColorInterpolator) 标量插补器(ScalarInterpolator)。 坐标插补器(CoordinateInterpolator) 法线插补器(NormalInterpolator)6.2.1 PositionInterpolator位置插补器节点位置插补器节点PositionInterpolator位置插补器节点是位置
12、插补器节点是空间造型位置移动节点,用来描述一系列用于动画的关键值,使物体移动形成动画。该节点不创建任何造型,在一组SFVec3f值之间进行线性插值,适合于对于平移进行插值PositionInterpolator位置插补器节点语法结构如图位置插补器节点语法结构如图Group组节点组节点Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点PositionInterpolator位置位置插补器节点插补器节点ROUTE路由路由Inline内联节点内联节点PositionInterpolator key # exposedField MFFloat keyValue #
13、exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f域名和域值详解域名和域值详解(1) key域的值域的值 定义了一张变化时刻关键值列表。每一个时间值都代表全部动态时间中的一个相对时间,每个时刻值一般在0.0与1.0之间,并且由0依次到1。然而关键时刻值可以是任意大小的正值或负值,但必须以递增的顺序排列,其默认值是一张空列表。(2) keyValue域的值域的值 定义了一组三维坐标值列表。每一组坐标值都对应key域值中的一个相对时间段,其默认值是一张空列表 。事件说明事件说明 (1
14、)set_fraction为入事件(eventIn),当接收到一个时刻值时,PositionInterpolator节点计算出基于关键位置表和相关的关键时刻的一个位置,并通过value_changed事件出口输出新的位置列表。 (2) value_changed为出事件(eventOut),将信息传送给目标节点,传递内容为一组方位值。 为了更好的理解、掌握和控制动画的为了更好的理解、掌握和控制动画的插补器实现动插补器实现动画过程画过程,结合下面实例,结合下面实例将动画所需时间传感器相对时间的逻辑值和空间坐标的位置值对应起来,如图6-3所示。再结合空间物体造型的立体空间坐标示意图,如图6-4所示
15、,可以更好的理解和掌握VRML具有动态 交互的各个节点。keykeyValue0.0 0 0 0 # 从坐标原点出发0.2 0 0 -200.4 8 5 -200.5 8 -5 -20 # 经过曲折路径0.6-8 -5 -200.8-8 5 -200.9 0 0 -2001.0 0 0 0 # 返回原点相对时间的逻辑值相对时间的逻辑值 空间坐标的位置对应值空间坐标的位置对应值 key 0.0keyValue(0 0 0)( 0 0 -200) keyValue( 8 5 -20) keyValue( 8 -5 -20 ) keyValue(- 8 -5 -20 ) keyValue(- 8 5
16、 -20 ) keyValuekeyValue(0 0 -20)key 0.2图图6-4 6-4 立体空间物体造型移动轨迹的立体空间坐标示意图立体空间物体造型移动轨迹的立体空间坐标示意图 使用位置插补器节点,引入使用位置插补器节点,引入VRML飞碟空间造型;飞碟空间造型;在时间传感器与位置插补器共同作用下,使飞碟沿在时间传感器与位置插补器共同作用下,使飞碟沿着指定路径飞驰;从坐标原点出发,经过曲折的路着指定路径飞驰;从坐标原点出发,经过曲折的路径最后返回原点,并循环往复运行。实例径最后返回原点,并循环往复运行。实例 6-1路由把每一个节点联系起来,其中,路由把每一个节点联系起来,其中,frac
17、tion_changed为时间传感器的出事件传送给位置为时间传感器的出事件传送给位置插补器节点的插补器节点的set_fraction入事件,然后再由位置插入事件,然后再由位置插补器节点的补器节点的value_changed出事件传递给立体空间造出事件传递给立体空间造型飞碟中坐标变换节点的暴露域型飞碟中坐标变换节点的暴露域set_translation入时入时间,从而实现飞碟的飞行。间,从而实现飞碟的飞行。飞碟如何运动?飞碟如何运动? 范例范例6-26.2.2 0rientationInterpolator朝向插补器节点朝向插补器节点0rientationInterpolator朝向插补器节点是
18、朝向插补器节点是方位变换方位变换节节点,点,用来描述一系列在动画中使用的旋转值。该节点不创建任何造型,可以在不同时刻旋转到所对应的方位(朝向)。通过使用该节点,可以使造型旋转。orientationInterpolator朝向插补器节点语法结构朝向插补器节点语法结构Group组节点组节点Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点0rientationInterpolator位置插补器节点位置插补器节点ROUTE路由路由Inline内联节点内联节点OrientationInterpolator节点语法节点语法OrientationInterpolator
19、 key # exposedField MFFloat keyValue # exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f 域名和域值详解域名和域值详解(1) key域的域值域的域值 定义了一组相对时间间隔的时间关键值。时间值一般在0.0和1.0之间,并且由0依次到1以递增的顺序排列。其默认值是一张空列表 。(2) keyValue域的域值域的域值 定义了一个三维旋转关键值的列表。每一个旋转关键值是一个4个值的组,前3个值指定了一个旋转轴的X、Y和Z分量,第4个值指定了旋转
20、轴的一个旋转角度。其默认值是一张空列表 。 (1) set_fraction 为入事件( eventIn ),当接收到一个时刻值时, OrientationInterpolator朝向插补器节点根据关键时刻列表和其对应关键旋转列表计算出一个关键旋转子列表,并通过value_changed事件出口输出新算出的旋转列表。 (2) value_changed 为出事件(eventOut),把信息传送给目标节点,传递内容为一组方位值。在蓝色背景下,使用时间传感器节点、内联节点和在蓝色背景下,使用时间传感器节点、内联节点和朝向插补器节点使飞船沿朝向插补器节点使飞船沿Y轴旋转轴旋转180,且循环执,且循环
21、执行。行。vrml 6-3.wrl6.2.3 ScalarInterpolator 标量插补器节点标量插补器节点ScalarInterpolator标量插补器节点是标量插补器节点是强度变换强度变换动态节动态节点,描述的是在动画中使用的一系列关键值。点,描述的是在动画中使用的一系列关键值。该节点不创建任何造型,在一组该节点不创建任何造型,在一组SFFloat值之间进行值之间进行线性插值,这个插值适合于用简单的浮点值定义的线性插值,这个插值适合于用简单的浮点值定义的任何参数。任何参数。 使用使用ScalarInterpolator标量插补器节点和标量插补器节点和TimeSensor时间传感器节点来
22、改变光线节点中的时间传感器节点来改变光线节点中的Intensity域的域的域值域值(光线强度光线强度),使光线强度随时间的改变而变化,使光线强度随时间的改变而变化,实现动态效果。,实现动态效果。ScalarInterpolator标量插补器节点语法结构标量插补器节点语法结构Group组节点组节点Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点ScalarInterpolator标量插补器节点标量插补器节点ROUTE路由路由Inline内联节点内联节点DirectionalLight方向光源节点方向光源节点ScalarInterpolator节点语法节点语法S
23、calarInterpolator key # exposedField MFFloat keyValue # exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f 域名和域值详解域名和域值详解(1) key域的域值域的域值 提供了一组时间关键值列表,每个时间值代表一个相对时间段的值,该时间值一般在0.0和1.0之间,但必须以递增的顺序排列。其默认值是一张空列表 。 (2) keyValue域的值域的值 指定了一系列三维坐标值。每一组坐标值都对应key域的域值中的一个相对时间段的值
24、。其默认值为一个空的序列 。 (1)set_fraction 为入事件(eventIn),当收到一个时刻值时, ScalarInterpolator节点根据关键值的序列和它们对应的关键时刻值,计算一个浮点值,并通过value_changed事件出口输出计算后的浮点值。 (2)value_changed 为出事件(ewntOut),它把信息传送给目标节点,传递内容为一组方位值。ScalarInterpolator节点还可以用来控制节点还可以用来控制VRML造型的造型的透明度,通过控制透明度,通过控制 Mateirial 节点的节点的 transparency 域域值,使造型的透明度改变值,使造型
25、的透明度改变vrml 6-4.wrl在立体空间背景下,利用方在立体空间背景下,利用方向光源节点、时间传感器、向光源节点、时间传感器、内联节点和标量插补器节点内联节点和标量插补器节点,使平行光源的光照强度发,使平行光源的光照强度发生变化,创建动态视觉效果生变化,创建动态视觉效果vrml 6-5.wrl让空间球体的透明度发生变让空间球体的透明度发生变化,从而使哑铃的可见度也化,从而使哑铃的可见度也发生变化发生变化6.2.4 ColorInterpolator颜色插补器节点颜色插补器节点ColorInterpolator颜色插补器节点是用来表示颜色间颜色插补器节点是用来表示颜色间插值的节点,使立体空
26、间插值的节点,使立体空间场景与造型颜色发生变化场景与造型颜色发生变化。该节点并不创建造型,在该节点并不创建造型,在VRML场景中是看不见的场景中是看不见的。该节点可以作为任何编组节点的子节点,但又独立该节点可以作为任何编组节点的子节点,但又独立于所使用的坐标系,即不受坐标系的限制。于所使用的坐标系,即不受坐标系的限制。ColorInterpolator颜色插补器节点语法结构颜色插补器节点语法结构Group组节点组节点Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点ColorInterpolator颜色插补器节点颜色插补器节点ROUTE路由路由Inline内联
27、节点内联节点DirectionalLight方向光源节点方向光源节点ColorInterpolator节点语法节点语法ColorInterpolator key # exposedField MFFloat keyValue # exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f 域名和域值详解域名和域值详解(1) key域的域值域的域值 提供了一组时间关键值列表,每个时间值代表一个相对时间段的值,该时间值一般在0.0至1.0之间,但必须以递增的顺序排列。其默认值是一张空列表 。
28、 (2) keyValue域的值域的值 指定了一系列三维坐标的关键RGB色彩值。每个RGB色彩都是由在0.0至1.0区间内的3个浮点数所表示的,它们分别表示混合色中红、绿、蓝的数值。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默认值为一张空列表 。 (1) set_fraction 为入事件(eventIn),当收到一个时刻值时,ColorInterpolator颜色插补器节点就在关键色彩值和它们相应的关键时间值的基础上计算出一个RGB色彩值,并通过value_changed出事件输出该RGB色彩值。(2) value_changed 为出事件(eventOut),用来输出计算后
29、的RGB色彩值。实例实例6-6 利用方向光源节点、时间传感器节点、内利用方向光源节点、时间传感器节点、内联节点及颜色插补器节点来改变颜色,实现动态控联节点及颜色插补器节点来改变颜色,实现动态控制颜色的变化的效果,并在场景中利用路由控制和制颜色的变化的效果,并在场景中利用路由控制和传递信息传递信息vrml 6-6.wrlvrml 6-7.wrl6.2.5 CoordinateInterpolator坐标插补器节点坐标插补器节点CoordinateInterpolator坐标插补器节点是表示坐标插补器节点是表示坐标插坐标插值值的节点,该节点在一组的节点,该节点在一组MFVec3f值之间进行线性值之
30、间进行线性插值。插值。通过使用该节点,可以使一个造型的组成坐标发生通过使用该节点,可以使一个造型的组成坐标发生变化。同变化。同ColorInterpolator节点一样,节点一样, CoordinateInterpolator节点也不创建任何造型,在节点也不创建任何造型,在VRML场景中也是不可见的。场景中也是不可见的。坐标插补器的作用是坐标插补器的作用是利用坐标点的移动实现动画。通过使用CoordinateInterpolator节点,可使VRML中的物体造型上的各个坐标点形成独自的运动轨迹,可以使物体造型改变运动方向。 CoordinateInterpolator坐标插补器节点语法结构坐标
31、插补器节点语法结构Background背景节点背景节点TimeSensor时间传感器节点时间传感器节点CoordinateInterpolator颜色插补器节点颜色插补器节点ROUTE路由路由Shape模型节点模型节点CoordinateInterpolator 坐标插补器节点语法坐标插补器节点语法CoordinateInterpolator key # exposedField MFFloat keyValue # exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f 域名和域值
32、详解域名和域值详解(1) key域的域值域的域值 提供了一组时间关键值列表,每个时间值代表一个相对时间段的值。该时间值一般在00至10之间,但必须以递增的顺序排列。其默认值是一张空列表1)。(2) keyValue域的值域的值 指定了一系列三维坐标的列表。每一个坐标都包含3个浮点数值,分别为向量的X、Y和Z分量。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默认值为一张空的列表 。(1) set_fraction 为入事件(eventIn),当收到一个时刻值时,CoordinateInterpolator节点就依据关键时刻列表和它们相对应的关键坐标子列表计算出一张坐标的子列表,并通
33、过value_changed出事件输出新的坐标列表。 (2) value_changed 为出事件(eventOut),用来输出计算后的新的坐标列表值。实例实例6-8 使用坐标插补器节点和时间传感器节点,使用坐标插补器节点和时间传感器节点,并利用面节点控制面的尺寸大小,从而使立体空间并利用面节点控制面的尺寸大小,从而使立体空间造型产生循环运动的动画效果,也可以使造型畸形造型产生循环运动的动画效果,也可以使造型畸形变化。变化。vrml 6-8.wrlvrml 6-9.wrl6.2.6 NormalInterpolator 法线插补器节点法线插补器节点NormalInterpolator 法线插补
34、器节点可以改变法向量法线插补器节点可以改变法向量Normal节点中节点中vector域的域值。域的域值。 vector域的域值定义了一个法向量列表域的域值定义了一个法向量列表(X Y Z),法向,法向量量Normal节点是面节点和海拔栅格节点中的一个节节点是面节点和海拔栅格节点中的一个节点。点。NormalInterpolator法线插补器节点在时间传感器的法线插补器节点在时间传感器的配合下,产生虚拟世界的各种逼真的动感效果。配合下,产生虚拟世界的各种逼真的动感效果。NormalInterpolator法线插补器节点语法结构法线插补器节点语法结构Background背景节点背景节点TimeSe
35、nsor时间传感器节点时间传感器节点NormalInterpolator颜色插补器节点颜色插补器节点ROUTE路由路由Shape模型节点模型节点NormalInterpolator法线插补器节点语法法线插补器节点语法NormalInterpolator key # exposedField MFFloat keyValue # exposedField MFVec3f set_faction # eventIn SFFloat value_changed # eventOut SFVec3f 域名和域值详解域名和域值详解(1) key域的域值域的域值 提供了一组时间关键值列表,每个时间值代表一
36、个相对时间段的值。该时间值一般在0.0至1.0之间,但必须以递增的顺序排列。其默认值是一张空列表 。(2) keyValue域的值域的值 指定了一系列法向量列表。每一个坐标都包含3个浮点数值,分别为向量的X、Y和Z分量。每一组坐标值都对应key域的域值中的一个相对时间段的值。其默认值为一个空的列表 。 (1)set_fraction 为入事件(eventIn),当收到一个时刻值时,NormalInterpolator法线插补器节点就依据关键时刻列表和它们相对应的关键法向量列表计算出一个法向量子列表,通过如e changed出事件输出新的法向量列表。 (2)value_changed 为出事件(
37、eventOut),用来输出计算后的新法向量列表值。实例实例6-10 在蓝色立体空间背景下,利用模型节点在蓝色立体空间背景下,利用模型节点、面节点、时间传感器节点及法线插补器节点使立、面节点、时间传感器节点及法线插补器节点使立体空间造型的两个垂直面在法向量的控制下产生变体空间造型的两个垂直面在法向量的控制下产生变化的效果化的效果vrml 6-10.wrl6.3 VRML触摸检测器节点触摸检测器节点实现实现VRML的交互功能,需要设计触动检测器或传感器。的交互功能,需要设计触动检测器或传感器。在在VRML虚拟世界中,用户与虚拟现实世界之间的交互是通过虚拟世界中,用户与虚拟现实世界之间的交互是通过
38、一系列一系列检测器节点检测器节点来实现的,通过使用这些检测器节点,使来实现的,通过使用这些检测器节点,使浏览器感知用户的各种操作,比如开门、旋转、移动和飞行浏览器感知用户的各种操作,比如开门、旋转、移动和飞行等。这样用户就可以和等。这样用户就可以和VRML虚拟世界中的三维对象直接进行虚拟世界中的三维对象直接进行交互。交互。触动检测器是触动检测器是用来检测用户的触动动作用来检测用户的触动动作的,其中包括的,其中包括 TouchSensor节点 Planesensor节点 CylinderSensorr节点 SphereSensor节点等6.3.1 TouchSensor 触摸传感器节点触摸传感器
39、节点TouchSensor触摸传感器节点是触摸传感器节点是浏览者与虚拟对象浏览者与虚拟对象之间相接触型传感器节点之间相接触型传感器节点。TouchSensor触摸传感器节点创建了一个检测用户触摸传感器节点创建了一个检测用户动作并将其转化后输出,以触发一个动画的检测器动作并将其转化后输出,以触发一个动画的检测器。它用来测试用户触摸事件的检测器。它用来测试用户触摸事件的检测器。该节点可以为任何成组节点的子节点,并感知用户该节点可以为任何成组节点的子节点,并感知用户对该组节点的动作。对该组节点的动作。TouchSensor触摸传感器节点语法结构触摸传感器节点语法结构Group组节点组节点Backgr
40、ound背景节点背景节点TimeSensor时间传感器节点时间传感器节点各种插补检测器节点各种插补检测器节点ROUTE路由路由Inline内联节点内联节点TouchSensor触摸传感器节点触摸传感器节点TouchSensor节点语法节点语法(触摸传感器节点触摸传感器节点)TouchSensor enable TRUE # exposedField SFBool isActive # eventOut SFBool isOver # eventOut SFBool touchTime # eventOut SFVec3f hitPoint_changed # eventOut SFVec3f
41、hitNormal_changed # eventOut SFVec3f hitTexcood_changed # eventOut SFVec3f域名和域值详解域名和域值详解enabled域的域值域的域值 定义了一个开关,即是否激活触摸传感检测器。当该域值为TRUE时,该检测器允许被用户激活,并产生输出;当该域值为FALSE时,用户无法激活该检测器。该域值的默认值为TRUE。事件说明事件说明(1) isOver 为出事件,当用户的鼠标位于被感应的三维对象上方时,将引发isOver事件,且该事件为TRUE。反之,当用户的鼠标不在被感应的三维对象上方时,该事件值为FALSE。(2) hitPoi
42、nt_changed 为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的坐标。(3) hitNormal_changed 为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的表面法向量。(4) hitTexCoord_changed 为出事件,当用户在被感应的几何图形(由isOver指定)上单击鼠标时,发送该值。其值表示对象上点的纹理坐标。纹理坐标功能是VRML中很重要的一个功能。我们使用这一功能可以像HTML网页一样实现在一幅贴图上面划分多个区域,然后将每个区域设置各自的交互。(5) isActiv
43、e 为出事件,当用户单击对象时,检测器被激活,该域值由FALSE变为TRUE;反之当检测器失效时,该域值将由TRUE变为FALSE。(6) touchTime 为出事件,当isOver为TRUE,而isActive为FALSE时发送该事件,所发送的值是系统当前的时间。实例实例6-11 在蓝色立体空间背景下,首先将光标移在蓝色立体空间背景下,首先将光标移到飞碟立体空间造型上,当出现触摸图标时,一直到飞碟立体空间造型上,当出现触摸图标时,一直按住鼠标左键不放开,这时在屏幕上会看见一个在按住鼠标左键不放开,这时在屏幕上会看见一个在触摸节点触发下飞行的飞碟触摸节点触发下飞行的飞碟第一个路由是把(第一个
44、路由是把(Touch.isActive)触摸传感器节点)触摸传感器节点鼠标按下时间的鼠标按下时间的”TRUE”传送给(传送给(Time.enabled)时)时间传感器节点的控制开关间传感器节点的控制开关“enabled”,使,使enabled由由“FALSE”变成变成“TRUE”第二个路由是把(第二个路由是把( Touch.touchTime )触摸传感器)触摸传感器节点的单击事件的发生时间传送给(节点的单击事件的发生时间传送给(Time.startTime)时间传感器的开始时间)时间传感器的开始时间第三个路由是把(第三个路由是把(Time.fraction_changed)时间传感)时间传感
45、器的执行一段时间值传送给(器的执行一段时间值传送给(flyinter.set_fraction)移动位置节点的一个时间片。移动位置节点的一个时间片。第四个路由是把(第四个路由是把(flyinter.value_changed)移动位置)移动位置节点的一组值传送给目标节点(节点的一组值传送给目标节点(flyinter.set_translation)使飞碟沿着设定的路径飞行)使飞碟沿着设定的路径飞行。6.3.2 PlaneSensor平面检测器节点平面检测器节点PlaneSensor平面检测器节点是使虚拟对象平面检测器节点是使虚拟对象在在X-Y平平面移动型面移动型传感器节点。传感器节点。Plan
46、eSensor 平面检测器节点能感应到观察者的拖动平面检测器节点能感应到观察者的拖动行为,进而改变虚拟现实对象的位置但是不能改变行为,进而改变虚拟现实对象的位置但是不能改变方位方位,而且只限定于而且只限定于X-Y平面。当观察者拖动虚拟造平面。当观察者拖动虚拟造型时,光标会在虚拟造型上变为一个收装的光标。型时,光标会在虚拟造型上变为一个收装的光标。 该节点创建了一个可将浏览者的动作转换成适于该节点创建了一个可将浏览者的动作转换成适于操作造型的输出的检测器。操作造型的输出的检测器。该节点可以为任何成组节点的子节点,用以感知用该节点可以为任何成组节点的子节点,用以感知用户对该组节点的动作,使造型按用
47、户的动作而平移户对该组节点的动作,使造型按用户的动作而平移。 PlaneSensor 平面检测器节点语法结构平面检测器节点语法结构Group组节点组节点Background背景节点背景节点PlaneSensor平面检测器节点平面检测器节点ROUTE路由路由Inline内联节点内联节点PlaneSensor平面检测器节点语法平面检测器节点语法PlaneSensor enable TRUE # exposedField SFBool autoOffset TRUE # exposedField SFBool offset 0.0 0.0 0.0 # exposedField SFVec3f max
48、Position -1.0 -1.0 # exposedField SFVec2f minPosition 1.0 1.0 # exposedField SFVec2f isActive # eventOut SFBool translation_changed # eventOut SFVec3f tracPoint_changed # eventOut SFVec3f域名和域值详解域名和域值详解(1) enabled域的域值域的域值 是布尔量,定义了一个开关,即是否激活平面移动传感检测器,当该域值为TRUE时,该检测器允许被用户激活,并产生输出;当该域值为FALSE时,用户无法激活该检测器
49、。其默认值为TRUE。 (2) autoOffset域的域值域的域值 是一个布尔量。如果为TRI正时,(L亿程序会根据用户实际拖拉鼠标的情况,计算出每一次平移的偏移量;如果为F虬SE时,表示每当用户进行一次新的拖曳后,就会自动重新回到默认值。其默认值为TR(正。(3) maxPosition域的域值域的域值 用来设置检测器的最大位置值,其功能是限制移动对象的范围只能在XY平面的某一点的下方和此点的左半部。其默认值为( 1 1 )。 (4) minPosition域的域值域的域值 用来设置检测器的最小位置值,其功能是限制移动对象的范围只能在XY平面的某一点的上方和此点的右半部。其默认值为( 0
50、0 )。(5) offset域的域值域的域值 用于设置偏移量,即每一次输出位置时的偏移量。当autoOffset域的域值为TRUE时,人为设置的偏移量将被忽略。其功能是每当用户进行一次新的拖曳时,能够从默认位置被移动到的最远距离。其默认值为( 0 0 0 )。 事件说明事件说明 (1) isActive 为出事件(eventOut),若该事件为TRUE时,表示鼠标是被按下的状态,若为FALSE时,则反之。该事件只会送出鼠标键是否被按下,但不是处于拖曳状态。 (2) trackPoint_changed 为出事件,表示进行拖曳后,用户的鼠标在XY平面上的确切位置。当检测器被激活且用户单击鼠标时,
51、该出事件发送该值。其值代表的是虚拟平面上的当前单击点。 (3) translation_changed 为出事件,表示在进行拖曳的任意时刻,用户的鼠标在XY平面上的暂时位置。当检测器被激活且用户单击鼠标时,该出事件发送该值。其值代表虚拟平面上的平移坐标值。 实例实例6-12 使用平面检测器节点,能使帆船在使用平面检测器节点,能使帆船在VRML立体空间行驶;当用户单击帆船造型后,帆船会按立体空间行驶;当用户单击帆船造型后,帆船会按指定路径左移到指定位置指定路径左移到指定位置vrml 6-12.wrl6.3.2 CylinderSensor圆柱检测器节点圆柱检测器节点CylinderSensor圆
52、柱检测器节点是虚拟造型圆柱检测器节点是虚拟造型按圆柱体按圆柱体的中心轴旋转型的中心轴旋转型传感器。传感器。CylinderSensor圆柱检测器节点用来创建一个将用户圆柱检测器节点用来创建一个将用户动作转换成造型围绕动作转换成造型围绕Y轴旋转的检测器。轴旋转的检测器。该节点可以作为任何组节点的子节点。此节点能够该节点可以作为任何组节点的子节点。此节点能够感应到用户的拖动动作,让被拖动的虚拟对象沿着感应到用户的拖动动作,让被拖动的虚拟对象沿着Y轴旋转,虚拟对象就绕着圆柱体的中心轴被拖动轴旋转,虚拟对象就绕着圆柱体的中心轴被拖动旋转。旋转。CylinderSensor圆柱检测器节点语法结构圆柱检测
53、器节点语法结构Group组节点组节点Background背景节点背景节点CylinderSensor平面检测器节点平面检测器节点ROUTE路由路由Inline内联节点内联节点CylinderSensor圆柱检测器节点语法圆柱检测器节点语法CylinderSensor enable TRUE # exposedField SFBool diskAngle 0.262 # exposedField SFFloat autoOffset TRUE # exposedField SFBool offset 0 # exposedField SFVec3f maxAngle -1.0 # exposed
54、Field SFFloat minAngle 0.0 # exposedField SFFloat isActive # eventOut SFBool rotation_changed # eventOut SFVec3f tracPoint_changed # eventOut SFVec3f域名和域值详解域名和域值详解(1) enabled域值域值 是布尔量。若为TRUE时,表示检测器允许被用户激活;若为FALSE时,检测器未被用户激活。其默认值为TRUE。(2)autoOffset域的值域的值 也是布尔量。若该域值为TRUE时,VRML程序会根据用户实际拖拉鼠标的情况,计算出每一次旋转
55、的偏移量;若为FALSE时,表示每当用户重新拖拉一次鼠标后,就会自动回到默认值。其默认值为TRUE。 (3) offset域的值域的值 指定了物体旋转的偏移量,即虚拟对象能够从默认位置被旋转多少弧度。其默认值为0。当autoOffset字段的值为TRUE时,人为设置的偏移量将被忽略。 (4) maxAngle域的值域的值 定义了检测器输出的最大旋转角度。 (5) minAngle 域的值域的值 定义了检测器输出的最小旋转角度。 (6) diskAngle域的值域的值 定义了检测器在圆盘行为和圆柱行为之间 切换角度。默认值为切换角度。默认值为 0262弧度。弧度。事件说明事件说明 (1) isA
56、ctive 为出事件,当检测器被激活时,若该值为TRUE, 表示当前用户正在进行拖拉操作,若为表示当前用户正在进行拖拉操作,若为FALSE则反之。则反之。 (2)trackPoint_changed 为出事件,当用户激活检测器并进行拖拉操作时,将引发该事件值。其值代表圆柱体表面点的坐标。 (3)rotation_changed 为出事件,当用户激活检测器并进行拖拉操作时,将引发该事件值。该值是虚拟的圆柱体的旋转值。实例实例6-13 在蓝色立体空间背景下,使用圆柱检测在蓝色立体空间背景下,使用圆柱检测器节点,打开一扇门;当用户单击门造型时,此门器节点,打开一扇门;当用户单击门造型时,此门旋转旋转
57、90度打开度打开 vrml 6-13.wrl vrml 6-14.wrl 6.3.4 SphereSensor球面检测器节点球面检测器节点SphereSensor球面检测器节点是使虚拟对象球面检测器节点是使虚拟对象按任意按任意轴方向旋转型轴方向旋转型传感器。传感器。SphereSens球面检测器节点创建了一个将用户动作球面检测器节点创建了一个将用户动作转换成造型绕某一点旋转的检测器。转换成造型绕某一点旋转的检测器。该节点可作为其他组节点的子节点。它能感受到用该节点可作为其他组节点的子节点。它能感受到用户使用鼠标的拖动行为,使造型在没有固定旋转轴户使用鼠标的拖动行为,使造型在没有固定旋转轴的情况
58、下,被任意拖动地旋转,也可以改变方位,的情况下,被任意拖动地旋转,也可以改变方位,但不能移动位置。空间造型可在一个以球体为中心但不能移动位置。空间造型可在一个以球体为中心的任意旋转轴上旋转。的任意旋转轴上旋转。SphereSensor球面检测器节点语法结构球面检测器节点语法结构Group组节点组节点Background背景节点背景节点SphereSensor平面检测器节点平面检测器节点ROUTE路由路由Inline内联节点内联节点SphereSensor球面监测器节点语法球面监测器节点语法SphereSensor enable TRUE # exposedField SFBool autoOf
59、fset TRUE # exposedField SFBool offset 0.0 1.0 0.0 0.0 # exposedField SFVec3f isActive # eventOut SFBool rotation_changed # eventOut SFVec3f tracPoint_changed # eventOut SFVec3f域名和域值详解域名和域值详解(1) enabled域值域值 是布尔量。若为TRUE时,表示检测器允许被用户激活;若为FALSE,检测器未被用户激活。其默认值为TRUE。 (2) autoOffset域的值域的值 是布尔量。若为TRUE,表示物体拖
60、拉前后所移动的轨迹,且停在拖拉后的位置;若为FALSE,则表示每当用户进行一次新的拖拉后,就会自动重新回到默认值。其默认值为TRUE。该域值作用是指定该旋转值是否发生偏移。 (3) offse真域的域值真域的域值 指定了检测器每一次输出的旋转量。作用是每当用户执行一次新的拖拉时,虚拟对象能够从默认方位被旋转一定的角度。其默认值为(0 1 0 0)。当autoOffset域值设置为TRUE时,本字段的设置将被忽略。vrml 6-15.wrl飞船会按要求旋转,当用户单飞船会按要求旋转,当用户单击飞船时,可使飞船在以球体击飞船时,可使飞船在以球体为中心的任意轴上旋转为中心的任意轴上旋转6.4 VRM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育心理学能力提升试卷A卷附答案
- 2024年度山西省高校教师资格证之高等教育法规模拟考核试卷含答案
- 2024年度年福建省高校教师资格证之高等教育学测试卷(含答案)
- 2024年现场总线计算机通讯模板项目资金需求报告代可行性研究报告
- 四年级数学(简便运算)计算题专项练习与答案
- 终身教育视角下职业教育提质培优路径探析
- 2024年商品买卖协议模板2
- 2024年工程监理外部合作协议
- 2024年专业有机肥购销协议详细样本
- 2024年真石漆外墙施工协议
- 干部人事档案任前审核登记表范表
- 北京市道德与法治初一上学期期中试卷及答案指导(2024年)
- 高校实验室安全基础学习通超星期末考试答案章节答案2024年
- 四川省绵阳市高中2025届高三一诊考试物理试卷含解析
- 朗致集团逻辑测评试卷2024
- 铁合金生产工艺
- 焦化厂生产工序及工艺流程图
- 汽车排放控制系统的检修
- 《新能源》题库(试题及答案29个)
- (完整版)油罐换底工程施工方案
- 悬吊技术的临床应
评论
0/150
提交评论