element Contact

diagram |
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