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, referencable 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 XML stylesheets.
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/documents/specifications/19775-1/V3.3/Part01/components/rigid_physics.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 |
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
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 |
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 |
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 |
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