element Contact
diagram x3d-4.0_diagrams/x3d-4.0_p51.png
type extension of X3DNode
properties
content complex
children IS MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString RigidBody CollidableOffset CollidableShape ProtoInstance
used by
group SceneGraphFragmentContentModel
attributes
Name  Type  Use  Default  Fixed  Annotation
DEF  xs:ID        
appinfo

                    DEF defines a unique ID name for each node, referenceable by other nodes.
               
USE  xs:IDREF        
appinfo

                    USE means reuse an already DEF-ed node ID, excluding all child nodes and all other attributes (except for containerField, which can have a different value).
               
class  xs:NMTOKENS        
appinfo

                    The class attribute is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets.
                    This attribute is only functional if the X3D model is loaded within an HTML page.
               
id  xs:NMTOKEN        
appinfo

                    The id attribute is a unique identifier, reserved for use by HTML5/DOM pages, independent of DEF labeling and internal X3D node referencing.
                    This attribute is only functional if the X3D model is loaded within an HTML page.
               
style  SFString        
appinfo

                    The style attribute provides an inline block of CSS for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets.
                    This attribute is only functional if the X3D model is loaded within an HTML page.
               
appliedParameters  MFString    "BOUNCE"    
documentation
array of appliedParametersChoices. Note that strict validation of appliedParameters enumeration values does not occur via schema since MFString allows any value in any order.
bounce  derived by: SFFloat    0    
contactNormal  SFVec3f    0 1 0    
depth  SFFloat    0    
frictionCoefficients  SFVec2f    0 0    
appinfo
<xs:minInclusive value="0"/>
frictionDirection  SFVec3f    0 1 0    
minBounceSpeed  derived by: SFFloat    0    
position  SFVec3f    0 0 0    
slipCoefficients  SFVec2f    0 0    
softnessConstantForceMix  derived by: SFFloat    0.0001    
softnessErrorCorrection  derived by: SFFloat    0.8    
surfaceSpeed  SFVec2f    0 0    
containerField  xs:NMTOKEN    contacts    
annotation
appinfo
<xs:attribute name="appliedParameters" type="appliedParametersChoices">
<xs:annotation>
<xs:documentation>Multiple optional values, but cannot be extended.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:element name="body1" type="SFNode" fixed="inputOutputField" default="RigidBody"/>
<xs:element name="body2" type="SFNode" fixed="inputOutputField" default="RigidBody"/>
<xs:element name="geometry1" type="SFNode" fixed="inputOutputField" default="X3DNBodyCollidableNode"/>
<xs:element name="geometry2" type="SFNode" fixed="inputOutputField" default="X3DNBodyCollidableNode"/>
<xs:attribute name="componentName" type="componentNameChoices" fixed="RigidBodyPhysics"/>
<xs:attribute name="componentLevel" type="xs:positiveInteger" fixed="2"/>
                Contact nodes are produced as output events when two collidable objects or spaces make contact.
           
source <xs:element name="Contact">
 
<xs:annotation>
   
<xs:appinfo>
     
<xs:attribute name="appliedParameters" type="appliedParametersChoices">
       
<xs:annotation>
         
<xs:documentation>Multiple optional values, but cannot be extended.</xs:documentation>
       
</xs:annotation>
     
</xs:attribute>
     
<xs:element name="body1" type="SFNode" fixed="inputOutputField" default="RigidBody"/>
     
<xs:element name="body2" type="SFNode" fixed="inputOutputField" default="RigidBody"/>
     
<xs:element name="geometry1" type="SFNode" fixed="inputOutputField" default="X3DNBodyCollidableNode"/>
     
<xs:element name="geometry2" type="SFNode" fixed="inputOutputField" default="X3DNBodyCollidableNode"/>
     
<xs:attribute name="componentName" type="componentNameChoices" fixed="RigidBodyPhysics"/>
     
<xs:attribute name="componentLevel" type="xs:positiveInteger" fixed="2"/>
                Contact nodes are produced as output events when two collidable objects or spaces make contact.
           
</xs:appinfo>
   
<xs:documentation source="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#Contact"/>
 
</xs:annotation>
 
<xs:complexType>
   
<xs:complexContent>
     
<xs:extension base="X3DNode">
       
<xs:sequence>
         
<!-- TODO refactor, follow pattern show below for geometry1/geometry2 so that RigidBody nodes might be replaced with ProtoInstance -->
         
<xs:sequence minOccurs="0">
           
<xs:element ref="RigidBody">
             
<xs:annotation>
               
<xs:documentation>body1</xs:documentation>
             
</xs:annotation>
           
</xs:element>
           
<xs:element ref="RigidBody" minOccurs="0">
             
<xs:annotation>
               
<xs:documentation>body2</xs:documentation>
             
</xs:annotation>
           
</xs:element>
         
</xs:sequence>
         
<!-- TODO:  content model indeterminism problem -->
         
<!--
                        <xs:sequence>
                               
<xs:element ref="RigidBody">
                                       
<xs:annotation>
                                           
<xs:documentation>body1</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:element ref="RigidBody" minOccurs="0">
                                       
<xs:annotation>
                                           
<xs:documentation>body2</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:choice minOccurs="0">
                                       
<xs:sequence>
                                           
<xs:element ref="CollidableOffset">
                                                   
<xs:annotation>
                                                           
<xs:documentation>geometry1</xs:documentation>
                                                   
</xs:annotation>
                                           
</xs:element>
                                           
<xs:element ref="CollidableShape" minOccurs="0">
                                                   
<xs:annotation>
                                                           
<xs:documentation>geometry2</xs:documentation>
                                                   
</xs:annotation>
                                           
</xs:element>
                                       
</xs:sequence>
                                       
<xs:sequence minOccurs="0">
                                           
<xs:element ref="CollidableShape">
                                                   
<xs:annotation>
                                                           
<xs:documentation>geometry1</xs:documentation>
                                                   
</xs:annotation>
                                           
</xs:element>
                                           
<xs:element ref="CollidableOffset" minOccurs="0">
                                                   
<xs:annotation>
                                                           
<xs:documentation>geometry2</xs:documentation>
                                                   
</xs:annotation>
                                           
</xs:element>
                                       
</xs:sequence>
                               
</xs:choice>
                               
<xs:sequence minOccurs="0" maxOccurs="4">
                                       
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
           
</xs:element>
                               
</xs:sequence>
                       
</xs:sequence>
                       
<xs:sequence>
                               
<xs:element ref="CollidableOffset">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry1</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:element ref="CollidableShape" minOccurs="0">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry2</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0">
                                       
<xs:element ref="RigidBody">
                                           
<xs:annotation>
                                                   
<xs:documentation>body1</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                                       
<xs:element ref="RigidBody" minOccurs="0">
                                           
<xs:annotation>
                                                   
<xs:documentation>body2</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                               
</xs:sequence>
                               
<xs:sequence minOccurs="0" maxOccurs="4">
                                       
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
           
</xs:element>
                               
</xs:sequence>
                       
</xs:sequence>
                       
<xs:sequence>
                               
<xs:element ref="CollidableOffset">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry1</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0">
                                       
<xs:element ref="RigidBody">
                                           
<xs:annotation>
                                                   
<xs:documentation>body1</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                                       
<xs:element ref="RigidBody" minOccurs="0">
                                           
<xs:annotation>
                                                   
<xs:documentation>body2</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                               
</xs:sequence>
                               
<xs:element ref="CollidableShape" minOccurs="0">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry2</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0" maxOccurs="4">
                                       
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
           
</xs:element>
                               
</xs:sequence>
                       
</xs:sequence>
                       
<xs:sequence>
                               
<xs:element ref="CollidableShape">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry1</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:element ref="CollidableOffset" minOccurs="0">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry2</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0">
                                       
<xs:element ref="RigidBody">
                                           
<xs:annotation>
                                                   
<xs:documentation>body1</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                                       
<xs:element ref="RigidBody" minOccurs="0">
                                           
<xs:annotation>
                                                   
<xs:documentation>body2</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                               
</xs:sequence>
                               
<xs:sequence minOccurs="0" maxOccurs="4">
                                       
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
           
</xs:element>
                               
</xs:sequence>
                       
</xs:sequence>
                       
<xs:sequence>
                               
<xs:element ref="CollidableShape">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry2</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0">
                                       
<xs:element ref="RigidBody">
                                           
<xs:annotation>
                                                   
<xs:documentation>body1</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                                       
<xs:element ref="RigidBody" minOccurs="0">
                                           
<xs:annotation>
                                                   
<xs:documentation>body2</xs:documentation>
                                           
</xs:annotation>
                                       
</xs:element>
                               
</xs:sequence>
                               
<xs:element ref="CollidableOffset" minOccurs="0">
                                       
<xs:annotation>
                                           
<xs:documentation>geometry1</xs:documentation>
                                       
</xs:annotation>
                               
</xs:element>
                               
<xs:sequence minOccurs="0" maxOccurs="4">
                                       
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
           
</xs:element>
                               
</xs:sequence>
                       
</xs:sequence>
                        --
>
         
<xs:choice minOccurs="0">
           
<xs:sequence>
             
<xs:annotation>
               
<xs:documentation>geometry1</xs:documentation>
             
</xs:annotation>
             
<xs:element ref="CollidableOffset"/>
             
<xs:choice minOccurs="0">
               
<xs:annotation>
                 
<xs:documentation>geometry2</xs:documentation>
               
</xs:annotation>
               
<xs:element ref="CollidableOffset"/>
               
<xs:element ref="CollidableShape"/>
               
<xs:element ref="ProtoInstance">
                 
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
                 
</xs:annotation>
               
</xs:element>
             
</xs:choice>
           
</xs:sequence>
           
<xs:sequence>
             
<xs:annotation>
               
<xs:documentation>geometry1</xs:documentation>
             
</xs:annotation>
             
<xs:element ref="CollidableShape"/>
             
<xs:choice minOccurs="0">
               
<xs:annotation>
                 
<xs:documentation>geometry2</xs:documentation>
               
</xs:annotation>
               
<xs:element ref="CollidableOffset"/>
               
<xs:element ref="CollidableShape"/>
               
<xs:element ref="ProtoInstance">
                 
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
                 
</xs:annotation>
               
</xs:element>
             
</xs:choice>
           
</xs:sequence>
           
<xs:sequence>
             
<xs:annotation>
               
<xs:documentation>geometry1</xs:documentation>
             
</xs:annotation>
             
<xs:element ref="ProtoInstance">
               
<xs:annotation>
                 
<xs:documentation>Appropriately typed substitution node</xs:documentation>
               
</xs:annotation>
             
</xs:element>
             
<xs:choice minOccurs="0">
               
<xs:annotation>
                 
<xs:documentation>geometry2</xs:documentation>
               
</xs:annotation>
               
<xs:element ref="CollidableOffset"/>
               
<xs:element ref="CollidableShape"/>
               
<xs:element ref="ProtoInstance">
                 
<xs:annotation>
                   
<xs:documentation>Appropriately typed substitution node</xs:documentation>
                 
</xs:annotation>
               
</xs:element>
             
</xs:choice>
           
</xs:sequence>
         
</xs:choice>
       
</xs:sequence>
       
<xs:attribute name="appliedParameters" type="MFString" default='"BOUNCE"'>
         
<xs:annotation>
           
<xs:documentation>array of appliedParametersChoices. Note that strict validation of appliedParameters enumeration values does not occur via schema since MFString allows any value in any order.</xs:documentation>
         
</xs:annotation>
       
</xs:attribute>
       
<xs:attribute name="bounce" default="0">
         
<xs:simpleType>
           
<xs:restriction base="SFFloat">
             
<xs:minInclusive value="0"/>
             
<xs:maxInclusive value="1"/>
           
</xs:restriction>
         
</xs:simpleType>
       
</xs:attribute>
       
<xs:attribute name="contactNormal" type="SFVec3f" default="0 1 0"/>
       
<xs:attribute name="depth" type="SFFloat" default="0"/>
       
<xs:attribute name="frictionCoefficients" type="SFVec2f" default="0 0">
         
<xs:annotation>
           
<xs:appinfo>
             
<xs:minInclusive value="0"/>
           
</xs:appinfo>
         
</xs:annotation>
       
</xs:attribute>
       
<xs:attribute name="frictionDirection" type="SFVec3f" default="0 1 0"/>
       
<xs:attribute name="minBounceSpeed" default="0">
         
<xs:simpleType>
           
<xs:restriction base="SFFloat">
             
<xs:minInclusive value="0"/>
           
</xs:restriction>
         
</xs:simpleType>
       
</xs:attribute>
       
<xs:attribute name="position" type="SFVec3f" default="0 0 0"/>
       
<xs:attribute name="slipCoefficients" type="SFVec2f" default="0 0"/>
       
<xs:attribute name="softnessConstantForceMix" default="0.0001">
         
<xs:simpleType>
           
<xs:restriction base="SFFloat">
             
<xs:minInclusive value="0"/>
             
<xs:maxInclusive value="1"/>
           
</xs:restriction>
         
</xs:simpleType>
       
</xs:attribute>
       
<xs:attribute name="softnessErrorCorrection" default="0.8">
         
<xs:simpleType>
           
<xs:restriction base="SFFloat">
             
<xs:minInclusive value="0"/>
             
<xs:maxInclusive value="1"/>
           
</xs:restriction>
         
</xs:simpleType>
       
</xs:attribute>
       
<xs:attribute name="surfaceSpeed" type="SFVec2f" default="0 0"/>
       
<xs:attribute name="containerField" type="xs:NMTOKEN" default="contacts"/>
     
</xs:extension>
   
</xs:complexContent>
 
</xs:complexType>
</xs:element>

attribute Contact/@appliedParameters
type MFString
properties
default "BOUNCE"
annotation
documentation
array of appliedParametersChoices. Note that strict validation of appliedParameters enumeration values does not occur via schema since MFString allows any value in any order.
source <xs:attribute name="appliedParameters" type="MFString" default='"BOUNCE"'>
 
<xs:annotation>
   
<xs:documentation>array of appliedParametersChoices. Note that strict validation of appliedParameters enumeration values does not occur via schema since MFString allows any value in any order.</xs:documentation>
 
</xs:annotation>
</xs:attribute>

attribute Contact/@bounce
type restriction of SFFloat
properties
default 0
facets
Kind Value Annotation
minInclusive 0
maxInclusive 1
pattern \s*([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="bounce" default="0">
 
<xs:simpleType>
   
<xs:restriction base="SFFloat">
     
<xs:minInclusive value="0"/>
     
<xs:maxInclusive value="1"/>
   
</xs:restriction>
 
</xs:simpleType>
</xs:attribute>

attribute Contact/@contactNormal
type SFVec3f
properties
default 0 1 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){2}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="contactNormal" type="SFVec3f" default="0 1 0"/>

attribute Contact/@depth
type SFFloat
properties
default 0
facets
Kind Value Annotation
pattern \s*([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="depth" type="SFFloat" default="0"/>

attribute Contact/@frictionCoefficients
type SFVec2f
properties
default 0 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){1}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
annotation
appinfo
<xs:minInclusive value="0"/>
source <xs:attribute name="frictionCoefficients" type="SFVec2f" default="0 0">
 
<xs:annotation>
   
<xs:appinfo>
     
<xs:minInclusive value="0"/>
   
</xs:appinfo>
 
</xs:annotation>
</xs:attribute>

attribute Contact/@frictionDirection
type SFVec3f
properties
default 0 1 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){2}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="frictionDirection" type="SFVec3f" default="0 1 0"/>

attribute Contact/@minBounceSpeed
type restriction of SFFloat
properties
default 0
facets
Kind Value Annotation
minInclusive 0
pattern \s*([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="minBounceSpeed" default="0">
 
<xs:simpleType>
   
<xs:restriction base="SFFloat">
     
<xs:minInclusive value="0"/>
   
</xs:restriction>
 
</xs:simpleType>
</xs:attribute>

attribute Contact/@position
type SFVec3f
properties
default 0 0 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){2}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="position" type="SFVec3f" default="0 0 0"/>

attribute Contact/@slipCoefficients
type SFVec2f
properties
default 0 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){1}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="slipCoefficients" type="SFVec2f" default="0 0"/>

attribute Contact/@softnessConstantForceMix
type restriction of SFFloat
properties
default 0.0001
facets
Kind Value Annotation
minInclusive 0
maxInclusive 1
pattern \s*([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="softnessConstantForceMix" default="0.0001">
 
<xs:simpleType>
   
<xs:restriction base="SFFloat">
     
<xs:minInclusive value="0"/>
     
<xs:maxInclusive value="1"/>
   
</xs:restriction>
 
</xs:simpleType>
</xs:attribute>

attribute Contact/@softnessErrorCorrection
type restriction of SFFloat
properties
default 0.8
facets
Kind Value Annotation
minInclusive 0
maxInclusive 1
pattern \s*([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="softnessErrorCorrection" default="0.8">
 
<xs:simpleType>
   
<xs:restriction base="SFFloat">
     
<xs:minInclusive value="0"/>
     
<xs:maxInclusive value="1"/>
   
</xs:restriction>
 
</xs:simpleType>
</xs:attribute>

attribute Contact/@surfaceSpeed
type SFVec2f
properties
default 0 0
facets
Kind Value Annotation
whiteSpace collapse
pattern \s*(([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s+){1}([+-]?((0|[1-9][0-9]*)(\.[0-9]*)?|\.[0-9]+)([Ee][+-]?[0-9]+)?)\s*
source <xs:attribute name="surfaceSpeed" type="SFVec2f" default="0 0"/>

attribute Contact/@containerField
type xs:NMTOKEN
properties
default contacts
source <xs:attribute name="containerField" type="xs:NMTOKEN" default="contacts"/>


XML Schema documentation generated by XMLSpy Schema Editor http://www.altova.com/xmlspy