欢迎来到天天文库
浏览记录
ID:13900757
大小:44.50 KB
页数:3页
时间:2018-07-24
《cylindersensor节点》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、CylinderSensor节点CylinderSensor{minAngle0#expectedfieldSFFloatmaxAngle-1#expectedfieldSFFloatenableTRUE#expectedfieldSFFBooldiskAngle0.262#expectedfieldSFFloatoffset0#expectedfieldSFFloatautoOffsetTRUE#expectedfieldSFFBool} 域minAngle允许旋转的最小角度(旋转角小于此范围时,仍被钳制在这一范围内)。 maxAngle允许旋转的最大角度(旋转角大
2、于此范围时,仍被钳制在这一范围内)。 enable指明传感器是否监控定点设备事件。若想关闭监控,可向它发送一个值为FALSE的set_value事件。diskAngle决定被监控对象的动作是象一个圆柱或象磁碟绕y轴旋转。若用户在圆柱轴附近点击,被监控对象的动作象磁碟转动,否则象圆柱一样转动。offset指出从初始方向转动被监控对象的角度值。autoOffset指出是否在每次拖动完成后将当前的方向角存入offset域,以达到跟踪当前方位的目的。如果autoOffset是FALSE,每当用户开始一个新的托动时,被拖动几何体恢复至最初的方位。 事件isActiveevent
3、In SFBool指出用户是否正在拖曳被监控的几何体。 trackPoint_changedevevtOut SFVec3f输出用户随时所指向的在圆柱或磁碟轨迹面上的轨迹的点。 rotation_changedeventOut SFRotation输出旋转角度。 说明 圆柱监控器节点把二维的拖曳输入(如拖曳鼠标)转变为三维空间中沿y轴的旋转。根据用户点击的位置(相当于传感器的y轴),CylinderSensor节点可以有两种相关行为,即象一个圆柱或象磁碟绕y轴旋转。 当用户移动鼠标至可感知几何体并按下按键时,浏览器产生一个绕监控器局部坐标系统y轴
4、的虚拟圆柱,这个圆柱的底和测面大小的比例由diskAngle确定。可以把diskAngle看做是一个在虚拟圆柱内部的圆锥的顶角,圆锥的底面圆盘即为圆柱的顶面。 如果用户点中圆柱的顶或低面,拖曳动作就会被解释为和旋转一个平面圆盘一样。如果用户点中圆柱的侧面部分,拖曳动作就会被解释为旋转这个圆柱。如果仅仅对特殊的旋转范围有兴趣,可以通过设置minAngle和maxAngle的值把旋转限制在那一范围内。如果minAngle大于maxAngle,就没有任何限制了。 如果希望几何体在已旋转的基础上继续旋转,则设置autoOffset为TURE,否则设置为FALSE. 当圆柱监控
5、器处于激活状态时(即当用户拖曳感知物体时),其它定点设备传感器不会作任何事件。第三讲VRML交互程序编程利用Interpolator内插器节点和TimeSensor时间传感器节点,再加上ROUTE语句,人们可以编写出VRML动画程序。利用其它传感器Sensor节点,人们可以编写出VRML交互程序。下面我们对这些节点一一介绍:一.CylinderSensor节点作用:可使鼠标的移动转变成形体的绕自身Y轴的旋转运动。通过坐标变换,可使形体绕任意轴旋转。可以用鼠标拖动一个形体,来使自身旋转。也可以用鼠标拖动一个形体,来使另一个形体旋转主要字段:maxAngle可用来控制最大
6、旋转角度minAngle可用来控制最小旋转角度rotation_changed向外发出的旋转信号编程步骤1:利用Transform构造一个坐标系,里面放置两个内容:一个形体和一个CylinderSensor,它们放置在一个方扩弧里面。用DEF对Transform和CylinderSensor命名,假设Transform的名字为NAMETT,CylinderSensor的名字为NAMECC。编程步骤2:通过编写一个ROUTE语句,使鼠标的移动变成形体的转动。编写的ROUTE语句为:ROUTENAMECC.rotationTONAMETT.rotation(也可以写成:R
7、OUTENAMECC.rotation_changedTONAMETT.set_rotation)#VRMLV2.0utf8DEFTRANTransform{children[Shape{appearanceAppearance{materialMaterial{diffuseColor100}}geometryCylinder{}}DEFTTTCylinderSensor{}]}ROUTETTT.rotation_changedTOTRAN.set_rotationBackground{skyColor111}
此文档下载收益归作者所有