分享
 
 
 

X3D实战基础讲座之十一

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

我们知道,对于Visual C++而言,交互的实现是通过消息映射来进行的。同样,X3D的交互实现也是通过类似的映射机制。用户事件的产生是通过相应的传感器产生的,而ROUTE语句就是相当于事件的映射,它映射到另一个输入事件中。

X3D中,用户事件的传感器有:KeySensor(键盘传感器) 、StringSensor(字符串传感器)、 ToUChSensor(触摸传感器)、PlaneSensor(平移传感器) 、SphereSensor(绕点旋转感器)和CylinderSensor(Y轴旋转传感器)等。由于BS浏览插件对X3D新增的KeySensor和StringSensor节点的支持不够好,故这里暂不讨论。

一、 TouchSensor(触摸传感器)节点

TouchSensor(触摸传感器)节点产生基于定点输入设备(通常是鼠标)的事件。这些事件表明用户是否正在点选某个几何体和用户在什么地方,以及在什么时候按了定点设备的键。它的主要域或事件有:

description -- 这个节点功能的文字提示。

enabled -- 设置传感器节点是否有效。默认值为True。

isActive -- 当点击或移动鼠标(指点设备时)发送事件。按下鼠标主键时isActive=True, 放开时

isActive=False。

isOver -- 当指点设备移动过传感器表面时发送事件。

hitPoint_changed -- 事件输出在子节点局部坐标系统点击点的定位。

hitNormal_changed -- 事件输出了点击点的表面的法线向量。

hitTexCoord_changed -- 事件输出了点击点的表面的纹理坐标。

touchTime -- 当传感器被指点设备点击时产生时间事件。

需要说明的是:

(1) 若定点设备未指向传感器的兄弟几何体,而用户开始将定点设备移到传感器的兄弟几何体时,传感器将产生一个isOver事件,并将其值设置为True;相反,若定点设备已经指向传感器的兄弟几何体,此时用户将定点设备移出传感器的兄弟几何体,传感器将产生一个isOver事件,并将其值设置为False。

(2) 当用户将定点设备从几何体的一点移动到另一点时,传感器将发送一系列事件: hitPoint_changed、hitNormal_changed、hitTexCoord_changed,分别表明用户所指的位置、该点的法向量和纹理坐标。

(3) 当用户点击被TouchSensor监视的对象时,传感器将产生值为True的isActive事件;而当用户释放定点设备的键时,传感器将产生isActive为False的事件。

(4) 若用户在指向几何体时按下鼠标键,然后在仍然指向这个几何体(或又回到这个几何体)时释放鼠标键,传感器将要发送一个touchTime事件,表明键被释放的时间。可以使用这一事件来模拟许多常用的用户接口(如只有在用户点击和释放定点设备按键时才产生的动作)。

下面举两个例子来说明:

示例1:当鼠标处在立方体的时候,就会有一个小球跟随鼠标移动。

示例代码如下:

(图片较大,请拉动滚动条观看)

示例的结果如下图所示:

说明:需要将触摸传感器节点和要触摸的形体节点放在同一个父节点处。

示例2:当单击中间小球时,将打开点光源,照亮四周的两个球。

示例代码如下:

示例的结果如下图所示:

进入讨论组讨论。

二、 PlaneSensor(平移传感器)节点

PlaneSensor 传感器节点用于指点设备在平行于Z=0平面上的动作,只要用户点按、拖动该传感器的兄弟几何体,此节点均将拖动(如用户使用鼠标进行的拖动)解释为在传感器的局部xy平面上的变换。其主要域或事件如下:

description -- 这个节点功能的文字提示。

enabled -- 设置传感器节点是否有效。默认值为True。

minPosition -- 在xy平面内限制当前点向上和向右的translation事件。

maXPosition -- 在xy平面内限制当前点向下和向左的translation事件。

offset -- 该域指出相关几何体被移动后相对于初始点的位置。

autoOffset -- 指示是否在拖动结束时将当前位置保存在offset中来实现在两次拖动之间跟踪当前位置(True表示跟踪)。若autoOffset值为False,则用户每次开始新一轮拖动时,被拖动的几何体都自动先复位到初始位置。

isActive -- 指示定点设备当前按钮是否按下。此事件仅当按钮被按下或释放时才发出,拖动期间则不生成。

isOver -- 当指点设备移动过传感器表面时发送事件。

trackPoint_changed -- 拖动期间任何给定时刻用户的定点设备在xy平面上的实际点(忽略 minPosition和 maxPosition)。

translation_changed -- 拖动期间任何给定时刻用户的定点设备在xy平面上的锁定点(受限于minPosition和 maxPosition)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有