分类:
2009-07-30 13:35:35
虚拟现实x3d简明教程3 收藏
第三节 邻近检测器
本节讨论邻近检测器(proximitySensor),当用户进入或离开邻近检测器所划定的区域时就会触发它。ProximitySensor节点用法如下:当用户摄像机走进或离开的监测区域, 或在监测区域中移动时, ProximitySensor发送事件. (用一个盒子来定义的这个区域的大小) 提示: 使用USE实例化引用的效果是相加的, 但不重叠. 提示: 可以先使用Transform 来改变监测区域的位置. 提示: 一旦场景载入, 监测就开始. DEF [DEF ID #IMPLIED] DEF给这个节点定义了唯一的ID, 这样在其它节点里就可以引用这个节点. 提示: 为DEF命名时,使用有意义的描述性的名称可以帮助规范文件, 以提高文件可读性. USE [USE IDREF #IMPLIED] USE用来引用DEF定义的节点ID, 同时忽略其它的属性和子对象. 提示: 使用USE引用其它的对象而不是复制节点可以提高性能. 警告: 使用USE的代码不要包括DEF或其他的属性值! enabled [enabled: accessType inputOutput, type SFBool (true|false) "true"] 设置传感器节点是否有效. center [center: accessType inputOutput, type SFVec3f CDATA "0 0 0"] 从局部坐标系统原点的位置偏移. size [size: accessType inputOutput, type SFVec3f CDATA "0 0 0"] 代理传感器盒的尺寸. 提示: size 0 0 0 值将使传感器失效. isActive [isActive: accessType outputOnly, type SFBool (true|false) #FIXED ""] 当用户摄像机走进或离开的监测区域时发送isActive true/false 事件. position_changed [position_changed: accessType outputOnly, type SFVec3f CDATA #FIXED ""] 当用户摄像机在监测区域中移动时, 发送相对于中心的 translation事件. orientation_changed [orientation_changed: accessType outputOnly, type SFRotation CDATA #FIXED ""] 当用户摄像机在监测区域中转动时, 发送相对于中心的rotation事件. enterTime [enterTime: accessType outputOnly, type SFTime CDATA #FIXED ""] 当用户摄像机走进监测区域时发送时间事件. exitTime [exitTime: accessType outputOnly, type SFTime CDATA #FIXED ""] 当用户摄像机走进或离开的监测区域发送时间事件. containerField [containerField: NMTOKEN "children"] containerField 是field标签的前缀, 表明了子节点和父节点的关系. 范例: geometry Box, children Group, proxy Shape. containerField 属性只有在X3D场景用XML编码时才使用. class [class CDATA #IMPLIED] class 是用空格分开的类的列表, 保留给XML样式表使用. 只有X3D场景用XML编码时才支持class 属性. 我们的出发点是第一节中建造的境界helloworld,它是由方块、球体和圆柱这三个物体构成的静态世界,现在在球体周围增加一个邻近检测区:
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuzhao/archive/2008/07/10/2635224.aspx