diagram | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
type | extension of X3DNode | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
properties |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
children | IS MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString RigidBody CollidableOffset CollidableShape ProtoInstance | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
used by |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
attributes |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
annotation |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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> |
type | MFString | ||
properties |
|
||
annotation |
|
||
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> |
type | restriction of SFFloat | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
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> |
type | SFVec3f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
source | <xs:attribute name="contactNormal" type="SFVec3f" default="0 1 0"/> |
type | SFFloat | ||
properties |
|
||
source | <xs:attribute name="depth" type="SFFloat" default="0"/> |
type | SFVec2f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
annotation |
|
|||||||||
source | <xs:attribute name="frictionCoefficients" type="SFVec2f" default="0 0"> <xs:annotation> <xs:appinfo> <xs:minInclusive value="0"/> </xs:appinfo> </xs:annotation> </xs:attribute> |
type | SFVec3f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
source | <xs:attribute name="frictionDirection" type="SFVec3f" default="0 1 0"/> |
type | restriction of SFFloat | ||||||
properties |
|
||||||
facets |
|
||||||
source | <xs:attribute name="minBounceSpeed" default="0"> <xs:simpleType> <xs:restriction base="SFFloat"> <xs:minInclusive value="0"/> </xs:restriction> </xs:simpleType> </xs:attribute> |
type | SFVec3f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
source | <xs:attribute name="position" type="SFVec3f" default="0 0 0"/> |
type | SFVec2f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
source | <xs:attribute name="slipCoefficients" type="SFVec2f" default="0 0"/> |
type | restriction of SFFloat | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
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> |
type | restriction of SFFloat | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
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> |
type | SFVec2f | |||||||||
properties |
|
|||||||||
facets |
|
|||||||||
source | <xs:attribute name="surfaceSpeed" type="SFVec2f" default="0 0"/> |
type | xs:NMTOKEN | ||
properties |
|
||
source | <xs:attribute name="containerField" type="xs:NMTOKEN" default="contacts"/> |