Difference between revisions of "Collision"

From Web3D.org
Jump to: navigation, search
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
* [[Node Reference]]
 
* [[Node Reference]]
 
==Collision==
 
==Collision==
 +
 +
Specification Link: [http://www.web3d.org/documents/specifications/19775-1/V3.4/Part01/components/navigation.html#Collision Collision]
  
 
<pre>
 
<pre>
Line 6: Line 8:
 
   MFNode  [in]    addChildren            [X3DChildNode]
 
   MFNode  [in]    addChildren            [X3DChildNode]
 
   MFNode  [in]    removeChildren          [X3DChildNode]
 
   MFNode  [in]    removeChildren          [X3DChildNode]
  SFBool  [in,out] enabled
 
 
   MFNode  [in,out] children      []      [X3DChildNode]
 
   MFNode  [in,out] children      []      [X3DChildNode]
 +
  SFBool  [in,out] enabled        TRUE
 
   SFNode  [in,out] metadata      NULL    [X3DMetadataObject]
 
   SFNode  [in,out] metadata      NULL    [X3DMetadataObject]
 
   SFTime  [out]    collideTime
 
   SFTime  [out]    collideTime
Line 13: Line 15:
 
   SFVec3f []      bboxCenter    0 0 0    (-∞,∞)
 
   SFVec3f []      bboxCenter    0 0 0    (-∞,∞)
 
   SFVec3f []      bboxSize      -1 -1 -1 [0,∞) or −1 −1 −1
 
   SFVec3f []      bboxSize      -1 -1 -1 [0,∞) or −1 −1 −1
�SFNode []      proxy          NULL    [X3DChildNode]
+
  SFNode []      proxy          NULL    [X3DChildNode]
 
}
 
}
 
</pre>
 
</pre>
  
The Collision node is a grouping node that specifies the collision detection properties for its children (and their descendants), specifies surrogate objects that replace its children during collision detection, and sends events signalling that a collision has occurred between the avatar and the Collision node's geometry or surrogate. By default, all geometric nodes in the scene are collidable with the viewer except IndexedLineSet and PointSet. Browsers shall detect geometric collisions between the avatar (see 23.3.4 NavigationInfo) and the scene's geometry and prevent the avatar from 'entering' the geometry. See the ''Collision detection and terrain following'' section of the X3D specification for general information on collision detection.
+
==DTD Validation==
 
+
 
+
If there are no Collision nodes specified in a X3D file, browsers shall detect collisions between the avatar and all objects during navigation.
+
 
+
 
+
The ''Grouping and children node types'' section of the X3D specification contains a description of the ''children'', ''addChildren'', and ''removeChildren'' fields.
+
 
+
 
+
The Collision node's ''collide'' field enables and disables collision detection. If collide is set to FALSE, the children and all descendants of the Collision node shall not be checked for collision, even though they are drawn. This includes any descendent Collision nodes that have collide set to TRUE (i.e., setting collide to FALSE turns collision off for every node below it).
+
  
 +
===Children===
  
Collision nodes with the ''collide''<sup>(1)</sup> field set to TRUE detect the nearest collision with their descendent geometry (or proxies). When the nearest collision is detected, the collided Collision node sends the time of the collision through its collideTime field. If a Collision node contains a child, descendant, or proxy (see below) that is a Collision node, and both Collision nodes detect that a collision has occurred, both send a collideTime event at the same time. A collideTime event shall be generated if the avatar is colliding with collidable geometry when the Collision node is read from a X3D file or inserted into the transformation hierarchy.
+
Children must appear as follows:
  
 +
# A single, optional IS.
 +
# A single, optional node derived from ''X3DMetadataObject'' for the ''metadata'' field.
 +
# Any number, including none, of nodes derived from ''X3DChildNode'' or Prototype nodes in any order.
  
The ''bboxCenter'' and ''bboxSize'' fields specify a bounding box that encloses the Collision node's children. This is a hint that may be used for optimization purposes. The results are undefined if the specified bounding box is smaller than the actual bounding box of the children at any time. A default bboxSize value, (-1, -1, -1), implies that the bounding box is not specified and if needed shall be calculated by the browser. More details on the bboxCenter and bboxSize fields can be found in the ''Bounding boxes'' section of the X3D specification.
+
===Attributes===
  
 +
There is no validation of the numerical values of the ''bboxCenter'' or ''bboxSize'' fields. Neither is there any validation of the number of values.
  
The collision proxy, defined in the ''proxy'' field, is any legal children node as described in the ''Grouping and children node types'' section of the X3D specification that is used as a substitute for the Collision node's children during collision detection. The proxy is used strictly for collision detection; it is not drawn.
+
==Schema Validation==
  
 +
===Children===
  
If the value of the ''collide'' field is TRUE and the ''proxy'' field is non-NULL, the ''proxy'' field defines the scene on which collision detection is performed. If the proxy value is NULL, collision detection is performed against the children of the Collision node.
+
Children must appear as follows:
  
 +
# A single, optional IS.
 +
# A single, optional node derived from ''X3DMetadataObject'' for the ''metadata'' field.
 +
# Any number, including none, of nodes derived from ''X3DChildNode'' or Prototype nodes in any order.
  
If proxy is specified, any descendent children of the Collision node are ignored during collision detection. If children is empty, collide is TRUE, and proxy is specified, collision detection is performed against the proxy but nothing is displayed. In this manner, invisible collision objects may be supported.
+
===Attributes===
  
 +
* The ''bboxCenter'' field accepts a triplet of numerical values.
 +
* The ''bboxsize'' field accepts either three positive values or the triplet -1 -1 -1.
  
The ''collideTime'' field generates an event specifying the time when the avatar (see 23.3.4 NavigationInfo) makes contact with the collidable children or proxy of the Collision node. An ideal implementation computes the exact time of collision. Implementations may approximate the ideal by sampling the positions of collidable objects and the user. The NavigationInfo node contains additional information for parameters that control the avatar size.
+
==Schematron validation==
  
'''(1) The ''collide'' field was changed to the ''enabled'' field in Amendment 2.'''
+
TBD
  
 
* [[Node Reference]]
 
* [[Node Reference]]

Latest revision as of 07:50, 14 May 2015

Collision

Specification Link: Collision

Collision : X3DGroupingNode, X3DSensorNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFBool  [in,out] enabled        TRUE
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFTime  [out]    collideTime
  SFBool  [out]    isActive
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or −1 −1 −1
  SFNode  []       proxy          NULL     [X3DChildNode]
}

DTD Validation

Children

Children must appear as follows:

  1. A single, optional IS.
  2. A single, optional node derived from X3DMetadataObject for the metadata field.
  3. Any number, including none, of nodes derived from X3DChildNode or Prototype nodes in any order.

Attributes

There is no validation of the numerical values of the bboxCenter or bboxSize fields. Neither is there any validation of the number of values.

Schema Validation

Children

Children must appear as follows:

  1. A single, optional IS.
  2. A single, optional node derived from X3DMetadataObject for the metadata field.
  3. Any number, including none, of nodes derived from X3DChildNode or Prototype nodes in any order.

Attributes

  • The bboxCenter field accepts a triplet of numerical values.
  • The bboxsize field accepts either three positive values or the triplet -1 -1 -1.

Schematron validation

TBD