| 
       Collision节点  | 
  ||
| Collision { | ||
| children | [ ] | # exposed field MFNode | 
| collide | TRUE | # exposed field SFBool | 
| proxy | NULL | # SFNode | 
| bboxCenter | 0 0 0 | # SFVec3f | 
| bboxSize | -1 -1 -1 | # SFVec3f | 
| } | ||
| 域 | ||
| children | 包含作碰撞检测的节点或节点组。如果提供了碰撞代体,则以它替代进行碰撞检测。 | |
| collide | 指明本节点的子节点是(TRUE)否(FALSE)要接收碰撞检查。 | |
| proxy | 取代children域中对象进行碰撞检测的物体。 | |
| bboxCenter | 包围Collision节点的所有子节点的包围盒的中心。 | |
| bboxSize | 包围Collision节点的所有子节点的包围盒在x、y、z方向上的尺寸。 | |
| 事件 | ||
| addChildren | eventIn           
      MFNode 将指定节点加入到Collision节点的子节点列表中。如果指定节点已经在子节点列表中,则忽略。  |      
  |
| removeChildren | eventIn           
      MFNode 将指定节点从Collision节点的子节点列表中删除。如果指定节点不在子节点列表中,则忽略。  |      
  |
| collideTime | eventOut    SFTime 指明检测到的碰撞发生的时间。  |      
  |
| 说明 | ||
|          
      Collision组节点允许对某些物体关闭碰撞检测,或者用一个简单形状的替代物加快检测的速度。 缺省的情况下,认为场景中的所有物体都有可能被碰撞。如果在一个场景中没有指定Collision节点,在进行浏览时浏览器将检测用户是否要与某个物体发生碰撞。例如,这一检测可以预防用户穿过建筑物的墙壁,或者限制用户浏览场景中的特定区域。当碰撞发生时会有什么反应将由浏览器定义。例如,当用户跑入一物体中,浏览器可能将用户弹出此物体或者简单的停止其运动过程。 由于对任意复杂的几何形体进行碰撞检测的计算量相当大,一个提高运行性能的方法是另外定义一个碰撞代体(proxy)完成碰撞检测。这个proxy域中定义的代体可以是任意合法的VRML组或子节点。在碰撞检测时,仅用代体参与检测,所有Collision节点的子节点完全的被忽略掉。一个代体可以简单到时一个包围盒或包围球。 如果children域为空,collide域为TRUE,且已指定一个代体,那么尽管什么也没有显示,碰撞检测仍将针对代体进行。这是一种针对不可见几何形体进行的碰撞检测。 proxy和children可以包含嵌套的Collision节点。如果一个子Collision节点检测到一次碰撞并且发出一个Collision输出事件,它的所有的父Collision节点也会发出一个与它的collideTime值相同的collision输出事件。 如果collide的值为FALSE,将不会对本节点的子节点、碰撞代体或本节点的任何深层子节点进行碰撞检测。如果一个场景中的根节点是一个collide域被设为FALSE的Collision节点,那么不管深层Collision节点的collide域是否设为TRUE,整个场景都不会进行碰撞检测。  |     
  ||