X3DNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DNode" appinfo="All instantiable nodes implement X3DNode, which corresponds to SFNode type in the X3D specification.">
<componentInfo name="Core" level="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" description="IS/connect statements define prototype connections between ProtoInterface fields and node fields within a ProtoBody." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" baseType="xs:ID" description="DEF defines a unique ID name for each node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" baseType="xs:NMTOKENS" description="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." />
<field name="id" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="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." />
<field name="style" type="SFString" accessType="inputOutput" description="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." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DAppearanceChildNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DAppearanceChildNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DAppearanceChildNode" appinfo="Nodes of this type can be used as child nodes for Appearance.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DAppearanceNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DAppearanceNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DAppearanceNode" appinfo="Base type for all Appearance nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="AppearanceChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DArrayField
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DArrayField">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/fieldTypes.html#X3DArrayField" appinfo="X3DArrayField is the abstract field type from which all field types that can contain multiple values are derived, implementing the X3DField interface. All fields derived from X3DArrayField have names beginning with MF (multiple-valued field). MF fields may zero or more values, each of which shall be of the type indicated by the corresponding SF field type. It is illegal for any MF field to mix values of different SF field types.">
<Inheritance x3dType="X3DField" />
</InterfaceDefinition>
</AbstractNodeType>
'
X3DChildNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DChildNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DChildNode" appinfo="A node that implements X3DChildNode is one of the legal children for a X3DGroupingNode parent.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DBindableNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DBindableNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DBindableNode" appinfo="Bindable nodes implement the binding stack, so that only one of each node type is active at a given time.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="set_bind" type="SFBool" accessType="inputOnly" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DBackgroundNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DBackgroundNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#X3DBackgroundNode" appinfo="Abstract type from which all backgrounds inherit, also defining a background binding stack.">
<componentInfo name="EnvironmentalEffects" level="1" />
<Inheritance baseType="X3DBindableNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" />
<field name="groundAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1.5708">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="groundColor" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" />
<field name="skyAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="3.1416">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="skyColor" type="MFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DFollowerNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DFollowerNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#X3DFollowerNode" appinfo="X3DFollowerNode is the abstract base class for all nodes in the Followers component.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DChaserNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DChaserNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#X3DChaserNode" appinfo="The X3DChaserNode abstract node type calculates the output on value_changed as a finite impulse response (FIR) based on the events received on set_destination field.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DFollowerNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DGeometricPropertyNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DGeometricPropertyNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DGeometricPropertyNode" appinfo="Base type for all geometric property node types.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DColorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DColorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DColorNode" appinfo="Base type for color specifications in X3D.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DVolumeRenderStyleNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DVolumeRenderStyleNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#X3DVolumeRenderStyleNode" appinfo="The X3DVolumeRenderStyleNode abstract node type is the base type for all node types that specify a specific visual rendering style to be used when rendering volume data.">
<componentInfo name="VolumeRendering" level="1" />
<Inheritance baseType="X3DNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DComposableVolumeRenderStyleNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DComposableVolumeRenderStyleNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#X3DComposableVolumeRenderStyleNode" appinfo="The X3DComposableVolumeRenderStyleNode abstract node type is the base type for all node types that allow rendering styles to be sequentially composed together to form a single renderable output.">
<componentInfo name="VolumeRendering" level="1" />
<Inheritance baseType="X3DVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DGeometryNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DGeometryNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DGeometryNode" appinfo="Geometry nodes produce renderable geometry and are contained by a Shape node.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DComposedGeometryNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DComposedGeometryNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DComposedGeometryNode" appinfo="Composed geometry nodes produce renderable geometry, can contain Color Coordinate Normal TextureCoordinate, and are contained by a Shape node.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DCoordinateNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DCoordinateNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DCoordinateNode" appinfo="Base type for all coordinate node types in X3D.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DDamperNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DDamperNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#X3DDamperNode" appinfo="The X3DDamperNode abstract node type creates an IIR response that approaches the destination value according to the shape of the e-function only asymptotically but very quickly.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DFollowerNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DSensorNode" appinfo="Base type for all sensors.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DPointingDeviceSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DPointingDeviceSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#X3DPointingDeviceSensorNode" appinfo="Base type for all pointing device sensors.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="isOver" type="SFBool" accessType="outputOnly" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DDragSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DDragSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#X3DDragSensorNode" appinfo="Base type for all drag-style pointing device sensors.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DPointingDeviceSensorNode" />
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="trackPoint_changed" type="SFVec3f" accessType="outputOnly" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DEnvironmentalSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DEnvironmentalSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html#X3DEnvironmentalSensorNode" appinfo="Base type for the environmental sensor nodes ProximitySensor, TransformSensor and VisibilitySensor.">
<componentInfo name="EnvironmentalSensor" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTextureNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTextureNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DTextureNode" appinfo="Base type for all nodes which specify sources for texture images.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DEnvironmentTextureNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DEnvironmentTextureNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing.html#X3DEnvironmentTextureNode" appinfo="Base type for all nodes that specify cubic environment map sources for texture images.">
<componentInfo name="CubeMapTexturing" level="1" />
<Inheritance baseType="X3DTextureNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DField
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DField">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/fieldTypes.html#X3DField" appinfo="X3DField is the abstract field type from which all single values field types are derived. All fields directly derived from X3DField have names beginning with SF (single-valued field). SF fields may only contain a single value of the type indicated by the name of the field type." />
</AbstractNodeType>
'
X3DFontStyleNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DFontStyleNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#X3DFontStyleNode" appinfo="Base type for all font style nodes.">
<componentInfo name="Text" level="1" />
<Inheritance baseType="X3DNode" />
<field name="class" type="SFString" accessType="inputOutput" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DBoundedObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DBoundedObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#X3DBoundedObject" appinfo="X3DBoundedObject indicates that bounding box values can be provided (or computed) to encompass this node and any children.">
<componentInfo name="Grouping" level="1" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
</InterfaceDefinition>
</AbstractObjectType>
'
X3DGroupingNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DGroupingNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#X3DGroupingNode" appinfo="Grouping nodes can contain other nodes as children, thus making up the backbone of a scene graph.">
<componentInfo name="Grouping" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DInfoNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DInfoNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#X3DInfoNode" appinfo="Base type for all nodes that contain only information without visual semantics.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DInterpolatorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DInterpolatorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#X3DInterpolatorNode" appinfo="Interpolator nodes are designed for linear keyframed animation. Interpolators are driven by an input key ranging [0..1] and produce corresponding piecewise-linear output functions.">
<componentInfo name="Interpolation" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DKeyDeviceSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DKeyDeviceSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/keyDeviceSensor.html#X3DKeyDeviceSensorNode" appinfo="Base type for all sensor node types that operate using key devices.">
<componentInfo name="KeyDeviceSensor" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DPickableObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DPickableObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#X3DPickableObject" appinfo="The X3DPickableObject abstract interface marks a node as being capable of having customized picking performed on its contents or children.">
<componentInfo name="Picking" level="1" />
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" />
</InterfaceDefinition>
</AbstractObjectType>
'
X3DLayerNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DLayerNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#X3DLayerNode" appinfo="The X3DLayerNode abstract node type is the base node type for layer nodes.">
<componentInfo name="Layering" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DPickableObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" />
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DLayoutNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DLayoutNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#X3DLayoutNode" appinfo="X3DLayoutNode is the base node type for layout nodes.">
<componentInfo name="Layout" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DLightNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DLightNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html#X3DLightNode" appinfo="Light nodes provide illumination for rendering geometry in the scene. Implementing nodes must include a global field with type SFBool and accessType inputOutput.">
<componentInfo name="Lighting" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="on" type="SFBool" accessType="inputOutput" default="true" />
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DMaterialNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DMaterialNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DMaterialNode" appinfo="Base type for all Material nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNBodyCollidableNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNBodyCollidableNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#X3DNBodyCollidableNode" appinfo="The X3DNBodyCollidableNode abstract node type represents objects that act as the interface between the rigid body physics, collision geometry proxy, and renderable objects in the scene graph hierarchy.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNBodyCollisionSpaceNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNBodyCollisionSpaceNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#X3DNBodyCollisionSpaceNode" appinfo="The X3DNBodyCollisionSpaceNode abstract node type represents objects that act as a self-contained spatial collection of objects that can interact through collision detection routines.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNetworkSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNetworkSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#X3DNetworkSensorNode" appinfo="Base typefor all sensors that generate events based on network activity.">
<componentInfo name="Networking" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNormalNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNormalNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#X3DNormalNode" appinfo="Base type for all normal node types in X3D.">
<componentInfo name="Rendering" level="2" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNurbsControlCurveNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNurbsControlCurveNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#X3DNurbsControlCurveNode" appinfo="Base type for all nodes that provide control curve information in 2D space.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DNode" />
<field name="controlPoint" type="MFVec2d" accessType="inputOutput" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DParametricGeometryNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DParametricGeometryNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#X3DParametricGeometryNode" appinfo="Base type for all geometry node types that are created parametrically and use control points to describe the final shape of the surface.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DNurbsSurfaceGeometryNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DNurbsSurfaceGeometryNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#X3DNurbsSurfaceGeometryNode" appinfo="Abstract geometry type for all types of NURBS surfaces.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DParametricGeometryNode" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|NurbsTextureCoordinate" />
<field name="uClosed" type="SFBool" accessType="initializeOnly" default="false" />
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" />
<field name="uKnot" type="MFDouble" accessType="initializeOnly" />
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" />
<field name="uTessellation" type="SFInt32" accessType="inputOutput" default="0" />
<field name="vClosed" type="SFBool" accessType="initializeOnly" default="false" />
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" />
<field name="vKnot" type="MFDouble" accessType="initializeOnly" />
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" />
<field name="vTessellation" type="SFInt32" accessType="inputOutput" default="0" />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DOneSidedMaterialNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DOneSidedMaterialNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DOneSidedMaterialNode" appinfo="Base type for material nodes that describe how the shape looks like from one side. A different number of contanied texture nodes are allowed by each of the implementing nodes.">
<componentInfo name="Shape" level="4" />
<Inheritance baseType="X3DMaterialNode" />
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0">
<componentInfo name="Shape" level="2" />
</field>
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DParticleEmitterNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DParticleEmitterNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#X3DParticleEmitterNode" appinfo="The X3DParticleEmitterNode abstract type represents any node that is an emitter of particles.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="on" type="SFBool" accessType="inputOutput" default="true" />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DParticlePhysicsModelNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DParticlePhysicsModelNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#X3DParticlePhysicsModelNode" appinfo="The X3DParticlePhysicsModelNode abstract type represents any node that applies a form of constraints on the particles after they have been generated.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DPickSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DPickSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#X3DPickSensorNode" appinfo="The X3DPickSensorNode abstract node type is the base node type that represents the lowest common denominator of picking capabilities.">
<componentInfo name="Picking" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" />
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" />
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DProductStructureChildNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DProductStructureChildNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#X3DProductStructureChildNode" appinfo="Base type marking nodes that are valid product structure children for the CADGeometry component.">
<componentInfo name="CADGeometry" level="2" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="name" type="SFString" accessType="inputOutput" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DPrototypeInstance
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DPrototypeInstance">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DPrototypeInstance" appinfo="Base type for all prototype instances. Note that direct children nodes are disallowed, instead let fieldValue with type SFNode/MFNode contain them. Current practice is that, if desired, prototype authors must explicitly add the metadata SFNode field in the ProtoInterface.">
<componentInfo name="Core" level="2" />
<Inheritance baseType="X3DNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DRigidJointNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DRigidJointNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#X3DRigidJointNode" appinfo="The X3DRigidJointNode abstract node type is the base type for all joint types.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DNode" />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DUrlObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DUrlObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#X3DUrlObject" appinfo="X3DUrlObject indicates that a node has content loaded from a Uniform Resource Locator (URL) and can be tracked via a LoadSensor. Such child nodes have containerField='children' to indicate their relationship to the parent LoadSensor node.">
<componentInfo name="Networking" level="1" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" />
<field name="url" type="MFString" accessType="inputOutput">
<componentInfo name="Networking" level="4" />
</field>
</InterfaceDefinition>
</AbstractObjectType>
'
X3DScriptNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DScriptNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/scripting.html#X3DScriptNode" appinfo="Base type for scripting nodes (but not shader nodes).">
<componentInfo name="Scripting" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" />
<field name="url" type="MFString" accessType="inputOutput">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSequencerNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSequencerNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#X3DSequencerNode" appinfo="Base type from which all Sequencers are derived.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="next" type="SFBool" accessType="inputOnly" />
<field name="previous" type="SFBool" accessType="inputOnly" />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DShaderNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DShaderNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#X3DShaderNode" appinfo="Base type for all nodes that specify a programmable shader.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="activate" type="SFBool" accessType="inputOnly" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isSelected" type="SFBool" accessType="outputOnly" />
<field name="isValid" type="SFBool" accessType="outputOnly" />
<field name="language" type="SFString" accessType="initializeOnly" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DShapeNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DShapeNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#X3DShapeNode" appinfo="Base type for all Shape nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="appearance" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DAppearanceNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="castShadow" type="SFBool" accessType="inputOutput" default="true" />
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ShapeChildContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTextureCoordinateNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTextureCoordinateNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DTextureCoordinateNode" appinfo="Base type for all nodes which specify texture coordinates.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSingleTextureCoordinateNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSingleTextureCoordinateNode">
<InterfaceDefinition specificationSection="X3D version 4" specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DSingleTextureCoordinateNode" appinfo="Base type for all texture coordinate nodes which specify texture coordinates for a single texture.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSingleTextureNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSingleTextureNode">
<InterfaceDefinition specificationSection="X3D version 4" specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DSingleTextureNode" appinfo="Base type for all texture node types that define a single texture. A single texture can be used to influence a parameter of various material nodes in the Shape component, and it can be a child of MultiTexture.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTextureNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTextureTransformNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTextureTransformNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DTextureTransformNode" appinfo="Base type for all nodes which specify a transformation of texture coordinates.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSingleTextureTransformNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSingleTextureTransformNode">
<InterfaceDefinition specificationSection="X3D version 4" specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DSingleTextureTransformNode" appinfo="Base type for all texture transform nodes which specify texture coordinate transformation for a single texture.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTextureTransformNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSoundNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSoundNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#X3DSoundNode" appinfo="Base type for all sound nodes.">
<componentInfo name="Sound" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSoundChannelNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSoundChannelNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#X3DSoundChannelNode" appinfo="Base type for all sound destination nodes, which represent the final destination of an audio signal and are what the user can ultimately hear.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSoundDestinationNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSoundDestinationNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#X3DSoundDestinationNode" appinfo="Base type for all sound destination nodes, which represent the final destination of an audio signal and are what the user can ultimately hear.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" />
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTimeDependentNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTimeDependentNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/time.html#X3DTimeDependentNode" appinfo="Base type from which all time-dependent nodes are derived.">
<componentInfo name="Time" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" />
<field name="isPaused" type="SFBool" accessType="outputOnly">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSoundProcessingNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSoundProcessingNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#X3DSoundProcessingNode" appinfo="Base type for all sound processing nodes, which are used to enhance audio with filtering, delaying, changing gain, etc.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DTimeDependentNode" />
<AdditionalInheritance baseType="X3DSoundNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DSoundSourceNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DSoundSourceNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#X3DSoundSourceNode" appinfo="Nodes implementing X3DSoundSourceNode provide signal inputs to the audio graph.">
<componentInfo name="Sound" level="1" />
<Inheritance baseType="X3DTimeDependentNode" />
<AdditionalInheritance baseType="X3DSoundNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DStatement
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DStatement">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#scenegraph" appinfo="X3DStatement is a marker interface that identifies statements relating to nonrenderable scene graph structure. X3DStatement does not extend from any other node type since it is not an explicit part of the X3D node interface hierarchy, and DEF/USE is not appropriate for such statements.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTexture2DNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTexture2DNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#X3DTexture2DNode" appinfo="Base type for all nodes which specify 2D sources for texture images.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DSingleTextureNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTexture3DNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTexture3DNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#X3DTexture3DNode" appinfo="Base type for all nodes that specify 3D sources for texture images.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DTextureNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTextureProjectorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTextureProjectorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/textureProjector.html#X3DTextureProjectorNode" appinfo="Base type for all node types that specify texture projector nodes, which provide a form of lighting.">
<componentInfo name="TextureProjection" level="4" />
<Inheritance baseType="X3DLightNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" />
<field name="aspectRatio" type="SFFloat" accessType="outputOnly" minExclusive="0" />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" />
<field name="description" type="SFString" accessType="inputOutput" />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" />
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" />
<field name="global" type="SFBool" accessType="inputOutput" default="true" />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" />
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" />
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTouchSensorNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTouchSensorNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#X3DTouchSensorNode" appinfo="Base type for all touch-style pointing device sensors.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DPointingDeviceSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="touchTime" type="SFTime" accessType="outputOnly" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DTriggerNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DTriggerNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#X3DTriggerNode" appinfo="Base type from which all trigger nodes are derived.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DVertexAttributeNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DVertexAttributeNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#X3DVertexAttributeNode" appinfo="Base type for all nodes that specify per-vertex attribute information to the shader.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="name" type="SFString" accessType="initializeOnly" baseType="xs:NMTOKEN" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DViewpointNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DViewpointNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#X3DViewpointNode" appinfo="Node type X3DViewpointNode defines a specific location in the local coordinate system from which the user may view the scene, and also defines a viewpoint binding stack.">
<componentInfo name="Navigation" level="1" />
<Inheritance baseType="X3DBindableNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" />
<field name="description" type="SFString" accessType="inputOutput">
<componentInfo name="Navigation" level="2" />
</field>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" />
<field name="jump" type="SFBool" accessType="inputOutput" default="true" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" />
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false">
<componentInfo name="Navigation" level="2" />
</field>
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" />
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NavigationInfo" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DViewportNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DViewportNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#X3DViewportNode" appinfo="The X3DViewportNode abstract node type is the base node type for viewport nodes.">
<componentInfo name="Layering" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DVolumeDataNode
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractNodeType name="X3DVolumeDataNode">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#X3DVolumeDataNode" appinfo="The X3DVolumeDataNode abstract node type is the base type for all node types that describe volumetric data to be rendered.">
<componentInfo name="VolumeRendering" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" baseType="bboxSizeType" />
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</AbstractNodeType>
'
X3DConcreteNode
X3DConcreteStatement
X3DFogObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DFogObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#X3DFogOjbect" appinfo="Abstract type describing a node that influences the lighting equation through the use of fog semantics.">
<componentInfo name="EnvironmentalEffects" level="2" />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" />
<field name="fogType" type="SFString" accessType="inputOutput" default="LINEAR" additionalEnumerationValuesAllowed="false" simpleType="fogTypeChoices" baseType="xs:NMTOKEN">
<enumeration value="LINEAR" appinfo="linear blending as a function of distance." />
<enumeration value="EXPONENTIAL" appinfo="exponential blending as a function of distance." />
</field>
<field name="visibilityRange" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" />
</InterfaceDefinition>
</AbstractObjectType>
'
X3DMetadataObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DMetadataObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#X3DMetadataObject" appinfo="Each node inheriting the X3DMetadataObject interface contains a single array of strictly typed values: MFBool, MFInt32, MFFloat, MFDouble, MFString, or MFNode, the latter having children that are all Metadata nodes.">
<componentInfo name="Core" level="1" />
<field name="name" type="SFString" accessType="inputOutput" />
<field name="reference" type="SFString" accessType="inputOutput" />
</InterfaceDefinition>
</AbstractObjectType>
'
X3DProgrammableShaderObject
XML
b'<?xml version='1.0' encoding='utf8'?>
<AbstractObjectType name="X3DProgrammableShaderObject">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#X3DProgrammableShaderObject" appinfo="Base type for all nodes that specify arbitrary fields for interfacing with per-object attribute values.">
<componentInfo name="Shaders" level="1" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</AbstractObjectType>
'
AcousticProperties
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="AcousticProperties">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#AcousticProperties" appinfo="AcousticProperties specifies the interaction of sound waves with characteristics of geometric objects in the scene.">
<componentInfo name="Shape" level="5" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="absorption" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="specifies the sound absorption coefficient of a surface, meaning the ratio of sound intensity not reflected by a surface." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="diffuse" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="diffuse coefficient of sound reflection indicates how much of the incident sound energy is reflected back in multiple directions." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="refraction" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="sound refraction coefficient of a medium, which determines change in propagation direction of sound wave when obliquely crossing boundary between two mediums where its speed is different." />
<field name="specular" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="specular coefficient of sound reflection striking a plane surface, directly reflected back into space, where angle of reflection equals angle of incidence." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="acousticProperties" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "AcousticProperties": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@absorption": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@diffuse": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@refraction": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@specular": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
absorption
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="absorption" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="specifies the sound absorption coefficient of a surface, meaning the ratio of sound intensity not reflected by a surface." />
'

JSON "@absorption": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
diffuse
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diffuse" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="diffuse coefficient of sound reflection indicates how much of the incident sound energy is reflected back in multiple directions." />
'

JSON "@diffuse": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
refraction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="refraction" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="sound refraction coefficient of a medium, which determines change in propagation direction of sound wave when obliquely crossing boundary between two mediums where its speed is different." />
'

JSON "@refraction": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
specular
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specular" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="specular coefficient of sound reflection striking a plane surface, directly reflected back into space, where angle of reflection equals angle of incidence." />
'

JSON "@specular": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Analyser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Analyser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Analyser" appinfo="Analyser provides real-time frequency and time-domain analysis information, without any change to the input.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="fftSize" type="SFInt32" accessType="inputOutput" default="2048" minInclusive="0" description="fftSize represents size of Fast Fourier Transform (FFT) used to determine frequency domain." />
<field name="frequencyBinCount" type="SFInt32" accessType="inputOutput" default="1024" minInclusive="0" description="frequencyBinCount is half of fftSize and generally equates to number of data values available for the visualization." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="maxDecibels" type="SFFloat" accessType="inputOutput" default="-30" description="maxDecibels represents maximum power value in scaling range for FFT analysis data." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minDecibels" type="SFFloat" accessType="inputOutput" default="-100" description="minDecibels represents minimum power value in scaling range for FFT analysis data." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="smoothingTimeConstant" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" description="smoothingTimeConstant represents averaging constant during last analysis frame." />
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Analyser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@fftSize": {
          "minimum": 0,
          "default": 2048,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@frequencyBinCount": {
          "minimum": 0,
          "default": 1024,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxDecibels": {
          "default": -30,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minDecibels": {
          "default": -100,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@smoothingTimeConstant": {
          "minimum": 0,
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
fftSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fftSize" type="SFInt32" accessType="inputOutput" default="2048" minInclusive="0" description="fftSize represents size of Fast Fourier Transform (FFT) used to determine frequency domain." />
'

JSON "@fftSize": {
  "minimum": 0,
  "default": 2048,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
frequencyBinCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frequencyBinCount" type="SFInt32" accessType="inputOutput" default="1024" minInclusive="0" description="frequencyBinCount is half of fftSize and generally equates to number of data values available for the visualization." />
'

JSON "@frequencyBinCount": {
  "minimum": 0,
  "default": 1024,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxDecibels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxDecibels" type="SFFloat" accessType="inputOutput" default="-30" description="maxDecibels represents maximum power value in scaling range for FFT analysis data." />
'

JSON "@maxDecibels": {
  "default": -30,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minDecibels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minDecibels" type="SFFloat" accessType="inputOutput" default="-100" description="minDecibels represents minimum power value in scaling range for FFT analysis data." />
'

JSON "@minDecibels": {
  "default": -100,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
smoothingTimeConstant
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="smoothingTimeConstant" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" description="smoothingTimeConstant represents averaging constant during last analysis frame." />
'

JSON "@smoothingTimeConstant": {
  "minimum": 0,
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Anchor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Anchor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#Anchor" appinfo="Anchor is a Grouping node that can contain most nodes.">
<componentInfo name="Networking" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="The [autoRefresh field has no effect, Anchor operation is only triggered by user selection." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="The [autoRefreshTimeLimit field has no effect, Anchor operation is only triggered by user selection." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="The load field has no effect, Anchor operation is only triggered by user selection." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="parameter" type="MFString" accessType="inputOutput" description="If provided, parameter tells the X3D player where to to redirect the loaded url." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Address of replacement world, or #ViewpointDEFName within the current scene, or alternate Web resource, activated by the user selecting Shape geometry within the Anchor children nodes.">
<componentInfo name="Networking" level="4" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesX3DUrlObject" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Anchor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@parameter": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="The [autoRefresh field has no effect, Anchor operation is only triggered by user selection." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="The [autoRefreshTimeLimit field has no effect, Anchor operation is only triggered by user selection." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="The load field has no effect, Anchor operation is only triggered by user selection." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
parameter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="parameter" type="MFString" accessType="inputOutput" description="If provided, parameter tells the X3D player where to to redirect the loaded url." />
'

JSON "@parameter": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Address of replacement world, or #ViewpointDEFName within the current scene, or alternate Web resource, activated by the user selecting Shape geometry within the Anchor children nodes.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Appearance
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Appearance">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Appearance" appinfo="Appearance specifies the visual properties of geometry by containing the Material, ImageTexture/MovieTexture/PixelTexture, FillProperties, LineProperties, programmable shader nodes (ComposedShader, PackagedShader, ProgramShader) and TextureTransform nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DAppearanceNode" />
<field name="acousticProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="AcousticProperties" description="Single contained acousticProperties node that can specify additional acoustic attributes applied to associated surface geometry.">
<componentInfo name="Shape" level="5" />
</field>
<field name="alphaCutoff" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Threshold value used for pixel rendering either transparent or opaque, used when alphaMode=&quot;MASK&quot;." />
<field name="alphaMode" type="SFString" accessType="inputOutput" default="AUTO" additionalEnumerationValuesAllowed="false" simpleType="alphaModeChoices" baseType="SFString" description="Provides options for control of alpha transparency handling for textures.">
<enumeration value="AUTO" appinfo="Material transparency is applied to texture transparency." />
<enumeration value="OPAQUE" appinfo="Ignore alpha channel texture transparency, opaque." />
<enumeration value="MASK" appinfo="Alpha-testing mode for transparent when alpha value less than 0.5 and opaque when greater than or equal to 0.5." />
<enumeration value="BLEND" appinfo="Blend combines partial transparency of textures and materials." />
</field>
<field name="backMaterial" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" />
<field name="fillProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FillProperties" description="Single contained FillProperties node that can specify additional visual attributes applied to polygonal areas of corresponding geometry, on top of whatever other appearance is already defined.">
<componentInfo name="Shape" level="3" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="lineProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="LineProperties" description="Single contained LineProperties node that can specify additional visual attributes applied to corresponding line geometry.">
<componentInfo name="Shape" level="2" />
</field>
<field name="material" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" description="Single contained Material node that can specify visual attributes for lighting response (color types, transparency, etc." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pointProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="PointProperties" description="Single contained PointProperties node that can specify additional visual attributes applied to corresponding point geometry.">
<componentInfo name="Shape" level="5" />
</field>
<field name="shaders" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DShaderNode" description="Zero or more contained programmable shader nodes (ComposedShader, PackagedShader, ProgramShader) that specify, in order of preference, author-programmed rendering characteristics.">
<componentInfo name="Shape" level="3" />
</field>
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTextureNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
<field name="textureTransform" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTextureTransformNode" description="Single contained TextureTransform node that defines 2D transformation applied to texture coordinates.">
<componentInfo name="Shape" level="2" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="appearance" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="AppearanceChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Appearance": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-acousticProperties": {
          "$ref": "#/$defs/-AcousticPropertiesSFNode"
        },
        "@alphaCutoff": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.5,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@alphaMode": {
          "enum": [
            "AUTO",
            "OPAQUE",
            "MASK",
            "BLEND"
          ],
          "default": "AUTO",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-backMaterial": {
          "$ref": "#/$defs/-X3DMaterialNodeSFNode"
        },
        "-fillProperties": {
          "$ref": "#/$defs/-FillPropertiesSFNode"
        },
        "-lineProperties": {
          "$ref": "#/$defs/-LinePropertiesSFNode"
        },
        "-material": {
          "$ref": "#/$defs/-X3DMaterialNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-pointProperties": {
          "$ref": "#/$defs/-PointPropertiesSFNode"
        },
        "-shaders": {
          "$ref": "#/$defs/-X3DShaderNodeMFNode"
        },
        "-texture": {
          "$ref": "#/$defs/-X3DTextureNodeSFNode"
        },
        "-textureTransform": {
          "$ref": "#/$defs/-X3DTextureTransformNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
acousticProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="acousticProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="AcousticProperties" description="Single contained acousticProperties node that can specify additional acoustic attributes applied to associated surface geometry.">
<componentInfo name="Shape" level="5" />
</field>
'

JSON "-acousticProperties": {
  "$ref": "#/$defs/-AcousticPropertiesSFNode"
}
alphaCutoff
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="alphaCutoff" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Threshold value used for pixel rendering either transparent or opaque, used when alphaMode=&quot;MASK&quot;." />
'

JSON "@alphaCutoff": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.5,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
alphaMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="alphaMode" type="SFString" accessType="inputOutput" default="AUTO" additionalEnumerationValuesAllowed="false" simpleType="alphaModeChoices" baseType="SFString" description="Provides options for control of alpha transparency handling for textures.">
<enumeration value="AUTO" appinfo="Material transparency is applied to texture transparency." />
<enumeration value="OPAQUE" appinfo="Ignore alpha channel texture transparency, opaque." />
<enumeration value="MASK" appinfo="Alpha-testing mode for transparent when alpha value less than 0.5 and opaque when greater than or equal to 0.5." />
<enumeration value="BLEND" appinfo="Blend combines partial transparency of textures and materials." />
</field>
'

JSON "@alphaMode": {
  "enum": [
    "AUTO",
    "OPAQUE",
    "MASK",
    "BLEND"
  ],
  "default": "AUTO",
  "$comment": "SFString inputOutput",
  "type": "string"
}
backMaterial
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backMaterial" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" />
'

JSON "-backMaterial": {
  "$ref": "#/$defs/-X3DMaterialNodeSFNode"
}
fillProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fillProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FillProperties" description="Single contained FillProperties node that can specify additional visual attributes applied to polygonal areas of corresponding geometry, on top of whatever other appearance is already defined.">
<componentInfo name="Shape" level="3" />
</field>
'

JSON "-fillProperties": {
  "$ref": "#/$defs/-FillPropertiesSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
lineProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lineProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="LineProperties" description="Single contained LineProperties node that can specify additional visual attributes applied to corresponding line geometry.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "-lineProperties": {
  "$ref": "#/$defs/-LinePropertiesSFNode"
}
material
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="material" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" description="Single contained Material node that can specify visual attributes for lighting response (color types, transparency, etc." />
'

JSON "-material": {
  "$ref": "#/$defs/-X3DMaterialNodeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pointProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pointProperties" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="PointProperties" description="Single contained PointProperties node that can specify additional visual attributes applied to corresponding point geometry.">
<componentInfo name="Shape" level="5" />
</field>
'

JSON "-pointProperties": {
  "$ref": "#/$defs/-PointPropertiesSFNode"
}
shaders
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shaders" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DShaderNode" description="Zero or more contained programmable shader nodes (ComposedShader, PackagedShader, ProgramShader) that specify, in order of preference, author-programmed rendering characteristics.">
<componentInfo name="Shape" level="3" />
</field>
'

JSON "-shaders": {
  "$ref": "#/$defs/-X3DShaderNodeMFNode"
}
texture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTextureNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
'

JSON "-texture": {
  "$ref": "#/$defs/-X3DTextureNodeSFNode"
}
textureTransform
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureTransform" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTextureTransformNode" description="Single contained TextureTransform node that defines 2D transformation applied to texture coordinates.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "-textureTransform": {
  "$ref": "#/$defs/-X3DTextureTransformNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Arc2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Arc2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Arc2D" appinfo="Arc2D is a line-based geometry node that defines a linear circular arc with center (0,0) in X-Y plane, with angles measured starting at positive x-axis and sweeping towards positive y-axis.">
<componentInfo name="Geometry2D" level="2" />
<Inheritance baseType="X3DGeometryNode" />
<field name="endAngle" type="SFFloat" accessType="initializeOnly" default="1.570796" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius, of which the arc is a portion." />
<field name="startAngle" type="SFFloat" accessType="initializeOnly" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Arc2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@endAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": 1.570796,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@radius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@startAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
endAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="endAngle" type="SFFloat" accessType="initializeOnly" default="1.570796" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
'

JSON "@endAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": 1.570796,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius, of which the arc is a portion." />
'

JSON "@radius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
startAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startAngle" type="SFFloat" accessType="initializeOnly" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
'

JSON "@startAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ArcClose2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ArcClose2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#ArcClose2D" appinfo="ArcClose2D is a polygonal geometry node that defines a linear circular arc, closed by PIE or CHORD line segments, with center (0,0) in X-Y plane, with angles measured starting at positive x-axis and sweeping towards positive y-axis.">
<componentInfo name="Geometry2D" level="2" />
<Inheritance baseType="X3DGeometryNode" />
<field name="closureType" type="SFString" accessType="initializeOnly" default="PIE" additionalEnumerationValuesAllowed="false" simpleType="closureTypeChoices" baseType="xs:NMTOKEN" description="Defines whether pair of line segments connect to center (PIE), or single line-segment chord connects arc endpoints (CHORD).">
<enumeration value="PIE" appinfo="Connects arc endpoints to center, forming a pie wedge." />
<enumeration value="CHORD" appinfo="Connects arc endpoints directly to each other, as in chord on a circle." />
</field>
<field name="endAngle" type="SFFloat" accessType="initializeOnly" default="1.570796" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius, of which the arc is a portion." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="startAngle" type="SFFloat" accessType="initializeOnly" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ArcClose2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closureType": {
          "enum": [
            "PIE",
            "CHORD"
          ],
          "default": "PIE",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@endAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": 1.570796,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@radius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@solid": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@startAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closureType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closureType" type="SFString" accessType="initializeOnly" default="PIE" additionalEnumerationValuesAllowed="false" simpleType="closureTypeChoices" baseType="xs:NMTOKEN" description="Defines whether pair of line segments connect to center (PIE), or single line-segment chord connects arc endpoints (CHORD).">
<enumeration value="PIE" appinfo="Connects arc endpoints to center, forming a pie wedge." />
<enumeration value="CHORD" appinfo="Connects arc endpoints directly to each other, as in chord on a circle." />
</field>
'

JSON "@closureType": {
  "enum": [
    "PIE",
    "CHORD"
  ],
  "default": "PIE",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
endAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="endAngle" type="SFFloat" accessType="initializeOnly" default="1.570796" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
'

JSON "@endAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": 1.570796,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius, of which the arc is a portion." />
'

JSON "@radius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
startAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startAngle" type="SFFloat" accessType="initializeOnly" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="Arc extends from startAngle counterclockwise to endAngle, in radians." />
'

JSON "@startAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
AudioClip
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="AudioClip">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#AudioClip" appinfo="AudioClip provides audio data used by parent Sound nodes.">
<componentInfo name="Sound" level="1" />
<Inheritance baseType="X3DSoundSourceNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="duration_changed" type="SFTime" accessType="outputOnly" minInclusive="-1" description="or -1." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="pitch" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Multiplier for the rate at which sampled sound is played." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of sound file or stream.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="source" type="containerFieldChoicesAudioClip" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "AudioClip": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@loop": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@pitch": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
loop
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
'

JSON "@loop": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
pitch
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pitch" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Multiplier for the rate at which sampled sound is played." />
'

JSON "@pitch": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of sound file or stream.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
AudioDestination
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="AudioDestination">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#AudioDestination" appinfo="AudioDestination node represents the final audio destination and is what user ultimately hears, typically from the speakers of user device.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundDestinationNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundDestinationNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundDestinationNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSoundDestinationNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="maxChannelCount" type="SFInt32" accessType="inputOutput" default="2" minInclusive="0" description="[maxChannelCount." />
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundDestinationNode" description="mediaDeviceID field provides ID parameter functionality." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "AudioDestination": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxChannelCount": {
          "minimum": 0,
          "default": 2,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@mediaDeviceID": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundDestinationNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxChannelCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxChannelCount" type="SFInt32" accessType="inputOutput" default="2" minInclusive="0" description="[maxChannelCount." />
'

JSON "@maxChannelCount": {
  "minimum": 0,
  "default": 2,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
mediaDeviceID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundDestinationNode" description="mediaDeviceID field provides ID parameter functionality." />
'

JSON "@mediaDeviceID": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Background
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Background">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#Background" appinfo="Background simulates ground and sky, using vertical arrays of wraparound color values.">
<componentInfo name="EnvironmentalEffects" level="1" />
<Inheritance baseType="X3DBackgroundNode" />
<field name="backUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="event sent when node becomes active/inactive." />
<field name="bottomUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="frontUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="groundAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1.5708" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="groundColor" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the ground at the various angles on the ground partial sphere." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="event true sent when node becomes active, event false sent when unbound by another node." />
<field name="leftUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rightUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Input event set_bind=true makes this node active, input event set_bind=false makes this node inactive." />
<field name="skyAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="3.1416" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="skyColor" type="MFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the sky at various angles on the sky sphere.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="topUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" baseType="unitIntervalType" description="how &quot;clear&quot; the background is, allows underlying page to show through: 1." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Background": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@backUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@bottomUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@frontUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@groundAngle": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 1.5708,
            "minimum": 0,
            "type": "number"
          }
        },
        "@groundColor": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@leftUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rightUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@skyAngle": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 3.1416,
            "minimum": 0,
            "type": "number"
          }
        },
        "@skyColor": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@topUrl": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
backUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@backUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
bottomUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottomUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@bottomUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
frontUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frontUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@frontUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
groundAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="groundAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1.5708" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@groundAngle": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 1.5708,
    "minimum": 0,
    "type": "number"
  }
}
groundColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="groundColor" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the ground at the various angles on the ground partial sphere." />
'

JSON "@groundColor": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
leftUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="leftUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@leftUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rightUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rightUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@rightUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
skyAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skyAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="3.1416" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@skyAngle": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 3.1416,
    "minimum": 0,
    "type": "number"
  }
}
skyColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skyColor" type="MFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the sky at various angles on the sky sphere.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@skyColor": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
topUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="topUrl" type="MFString" accessType="inputOutput" description="Image background panorama between ground/sky backdrop and scene's geometry.">
<componentInfo name="Networking" level="4" />
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@topUrl": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" baseType="unitIntervalType" description="how &quot;clear&quot; the background is, allows underlying page to show through: 1." />
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BallJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BallJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#BallJoint" appinfo="BallJoint represents an unconstrained joint between two bodies that pivot about a common anchor point.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body1AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body1AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body2AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BallJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@anchorPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
anchorPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
'

JSON "@anchorPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Billboard
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Billboard">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#Billboard" appinfo="Billboard is a Grouping node that can contain most nodes.">
<componentInfo name="Navigation" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="axisOfRotation" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axisOfRotation direction is relative to local coordinate system." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Billboard": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@axisOfRotation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
axisOfRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axisOfRotation" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axisOfRotation direction is relative to local coordinate system." />
'

JSON "@axisOfRotation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BiquadFilter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BiquadFilter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#BiquadFilter" appinfo="BiquadFilter node is an AudioNode processor implementing common low-order filters.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune field forms a compound field together with playbackRate that together determine a computedPlaybackRate value." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="frequency" type="SFFloat" accessType="inputOutput" default="350" minInclusive="0" description="frequency at which the BiquadFilterNode operates, in Hz." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="qualityFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="qualityFactor is Quality Factor (Q) of the respective filter algorithm." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="type" type="SFString" accessType="inputOutput" default="LOWPASS" additionalEnumerationValuesAllowed="false" simpleType="biquadTypeFilterChoices" baseType="SFString" description="type selects which BiquadFilter algorithm is used.">
<enumeration value="LOWPASS" alias="lowpass" appinfo="X3D version of &quot;lowpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="HIGHPASS" alias="highpass" appinfo="X3D version of &quot;highpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="BANDPASS" alias="bandpass" appinfo="X3D version of &quot;bandpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="LOWSHELF" alias="lowshelf" appinfo="X3D version of &quot;lowshelf&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="HIGHSHELF" alias="highshelf" appinfo="X3D version of &quot;highshelf&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="PEAKING" alias="peaking" appinfo="X3D version of &quot;peaking&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="NOTCH" alias="notch" appinfo="X3D version of &quot;notch&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="ALLPASS" alias="allpass" appinfo="X3D version of &quot;allpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BiquadFilter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@detune": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@frequency": {
          "minimum": 0,
          "default": 350,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@qualityFactor": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@type": {
          "enum": [
            "LOWPASS",
            "HIGHPASS",
            "BANDPASS",
            "LOWSHELF",
            "HIGHSHELF",
            "PEAKING",
            "NOTCH",
            "ALLPASS"
          ],
          "default": "LOWPASS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
detune
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune field forms a compound field together with playbackRate that together determine a computedPlaybackRate value." />
'

JSON "@detune": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
frequency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frequency" type="SFFloat" accessType="inputOutput" default="350" minInclusive="0" description="frequency at which the BiquadFilterNode operates, in Hz." />
'

JSON "@frequency": {
  "minimum": 0,
  "default": 350,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
qualityFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="qualityFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="qualityFactor is Quality Factor (Q) of the respective filter algorithm." />
'

JSON "@qualityFactor": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="inputOutput" default="LOWPASS" additionalEnumerationValuesAllowed="false" simpleType="biquadTypeFilterChoices" baseType="SFString" description="type selects which BiquadFilter algorithm is used.">
<enumeration value="LOWPASS" alias="lowpass" appinfo="X3D version of &quot;lowpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="HIGHPASS" alias="highpass" appinfo="X3D version of &quot;highpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="BANDPASS" alias="bandpass" appinfo="X3D version of &quot;bandpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="LOWSHELF" alias="lowshelf" appinfo="X3D version of &quot;lowshelf&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="HIGHSHELF" alias="highshelf" appinfo="X3D version of &quot;highshelf&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="PEAKING" alias="peaking" appinfo="X3D version of &quot;peaking&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="NOTCH" alias="notch" appinfo="X3D version of &quot;notch&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
<enumeration value="ALLPASS" alias="allpass" appinfo="X3D version of &quot;allpass&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-biquadfiltertype" />
</field>
'

JSON "@type": {
  "enum": [
    "LOWPASS",
    "HIGHPASS",
    "BANDPASS",
    "LOWSHELF",
    "HIGHSHELF",
    "PEAKING",
    "NOTCH",
    "ALLPASS"
  ],
  "default": "LOWPASS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BlendedVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BlendedVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#BlendedVolumeStyle" appinfo="BlendedVolumeStyle combines rendering of two voxel data sets into one by blending voxel values.">
<componentInfo name="VolumeRendering" level="3" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="renderStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DComposableVolumeRenderStyleNode" description="Single contained X3DComposableVolumeRenderStyleNode node that defines specific rendering technique for data in the voxels field, and the result is blended with parent VolumeData or SegmentedVoliumeData node." />
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides second set of raw voxel information utilized by corresponding rendering styles." />
<field name="weightConstant1" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" description="weightConstant1 is used when weightFunction1=CONSTANT." />
<field name="weightConstant2" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" description="weightConstant2 is used when weightFunction2=CONSTANT." />
<field name="weightFunction1" type="SFString" accessType="inputOutput" default="CONSTANT" additionalEnumerationValuesAllowed="false" simpleType="volumeRenderingWeightFunctionChoices" baseType="xs:NMTOKEN" description="specifies 2D textures used to determine weight values when weight function is set to TABLE.">
<enumeration value="CONSTANT" appinfo="Use weightConstant1." />
<enumeration value="ALPHA1" appinfo="Use O_v." />
<enumeration value="ALPHA2" appinfo="Use O_blend." />
<enumeration value="ONE_MINUS_ALPHA1" appinfo="Use 1 - O_v." />
<enumeration value="ONE_MINUS_ALPHA2" appinfo="Use 1 - O_blend." />
<enumeration value="TABLE" appinfo="Use table lookup value." />
</field>
<field name="weightFunction2" type="SFString" accessType="inputOutput" default="CONSTANT" additionalEnumerationValuesAllowed="false" simpleType="volumeRenderingWeightFunctionChoices" baseType="xs:NMTOKEN" description="specifies 2D textures used to determine weight values when weight function is set to TABLE.">
<enumeration value="CONSTANT" appinfo="Use weightConstant1." />
<enumeration value="ALPHA1" appinfo="Use O_v." />
<enumeration value="ALPHA2" appinfo="Use O_blend." />
<enumeration value="ONE_MINUS_ALPHA1" appinfo="Use 1 - O_v." />
<enumeration value="ONE_MINUS_ALPHA2" appinfo="Use 1 - O_blend." />
<enumeration value="TABLE" appinfo="Use table lookup value." />
</field>
<field name="weightTransferFunction1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="The weightTransferFunction1 and weightTransferFunction2 fields specify two-dimensional textures that are used to determine the weight values when the weight function is set to &quot;TABLE&quot;." />
<field name="weightTransferFunction2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="The weightTransferFunction1 and weightTransferFunction2 fields specify two-dimensional textures that are used to determine the weight values when the weight function is set to &quot;TABLE&quot;." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture2DContentModel" />
<GroupContentModel name="VolumeRenderStyleContentModel" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BlendedVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-renderStyle": {
          "$ref": "#/$defs/-X3DComposableVolumeRenderStyleNodeSFNode"
        },
        "-voxels": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@weightConstant1": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.5,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@weightConstant2": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.5,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@weightFunction1": {
          "enum": [
            "CONSTANT",
            "ALPHA1",
            "ALPHA2",
            "ONE_MINUS_ALPHA1",
            "ONE_MINUS_ALPHA2",
            "TABLE"
          ],
          "default": "CONSTANT",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@weightFunction2": {
          "enum": [
            "CONSTANT",
            "ALPHA1",
            "ALPHA2",
            "ONE_MINUS_ALPHA1",
            "ONE_MINUS_ALPHA2",
            "TABLE"
          ],
          "default": "CONSTANT",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-weightTransferFunction1": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-weightTransferFunction2": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
renderStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="renderStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DComposableVolumeRenderStyleNode" description="Single contained X3DComposableVolumeRenderStyleNode node that defines specific rendering technique for data in the voxels field, and the result is blended with parent VolumeData or SegmentedVoliumeData node." />
'

JSON "-renderStyle": {
  "$ref": "#/$defs/-X3DComposableVolumeRenderStyleNodeSFNode"
}
voxels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides second set of raw voxel information utilized by corresponding rendering styles." />
'

JSON "-voxels": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
weightConstant1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightConstant1" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" description="weightConstant1 is used when weightFunction1=CONSTANT." />
'

JSON "@weightConstant1": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.5,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
weightConstant2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightConstant2" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" maxInclusive="1" description="weightConstant2 is used when weightFunction2=CONSTANT." />
'

JSON "@weightConstant2": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.5,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
weightFunction1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightFunction1" type="SFString" accessType="inputOutput" default="CONSTANT" additionalEnumerationValuesAllowed="false" simpleType="volumeRenderingWeightFunctionChoices" baseType="xs:NMTOKEN" description="specifies 2D textures used to determine weight values when weight function is set to TABLE.">
<enumeration value="CONSTANT" appinfo="Use weightConstant1." />
<enumeration value="ALPHA1" appinfo="Use O_v." />
<enumeration value="ALPHA2" appinfo="Use O_blend." />
<enumeration value="ONE_MINUS_ALPHA1" appinfo="Use 1 - O_v." />
<enumeration value="ONE_MINUS_ALPHA2" appinfo="Use 1 - O_blend." />
<enumeration value="TABLE" appinfo="Use table lookup value." />
</field>
'

JSON "@weightFunction1": {
  "enum": [
    "CONSTANT",
    "ALPHA1",
    "ALPHA2",
    "ONE_MINUS_ALPHA1",
    "ONE_MINUS_ALPHA2",
    "TABLE"
  ],
  "default": "CONSTANT",
  "$comment": "SFString inputOutput",
  "type": "string"
}
weightFunction2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightFunction2" type="SFString" accessType="inputOutput" default="CONSTANT" additionalEnumerationValuesAllowed="false" simpleType="volumeRenderingWeightFunctionChoices" baseType="xs:NMTOKEN" description="specifies 2D textures used to determine weight values when weight function is set to TABLE.">
<enumeration value="CONSTANT" appinfo="Use weightConstant1." />
<enumeration value="ALPHA1" appinfo="Use O_v." />
<enumeration value="ALPHA2" appinfo="Use O_blend." />
<enumeration value="ONE_MINUS_ALPHA1" appinfo="Use 1 - O_v." />
<enumeration value="ONE_MINUS_ALPHA2" appinfo="Use 1 - O_blend." />
<enumeration value="TABLE" appinfo="Use table lookup value." />
</field>
'

JSON "@weightFunction2": {
  "enum": [
    "CONSTANT",
    "ALPHA1",
    "ALPHA2",
    "ONE_MINUS_ALPHA1",
    "ONE_MINUS_ALPHA2",
    "TABLE"
  ],
  "default": "CONSTANT",
  "$comment": "SFString inputOutput",
  "type": "string"
}
weightTransferFunction1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightTransferFunction1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="The weightTransferFunction1 and weightTransferFunction2 fields specify two-dimensional textures that are used to determine the weight values when the weight function is set to &quot;TABLE&quot;." />
'

JSON "-weightTransferFunction1": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
weightTransferFunction2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weightTransferFunction2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="The weightTransferFunction1 and weightTransferFunction2 fields specify two-dimensional textures that are used to determine the weight values when the weight function is set to &quot;TABLE&quot;." />
'

JSON "-weightTransferFunction2": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BooleanFilter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BooleanFilter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#BooleanFilter" appinfo="BooleanFilter selectively passes true, false or negated events.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="inputFalse" type="SFBool" accessType="outputOnly" description="inputFalse only passes a false value, which occurs when set_boolean is false." />
<field name="inputNegate" type="SFBool" accessType="outputOnly" description="inputNegate is an output event that provides an opposite value by negating set_boolean input." />
<field name="inputTrue" type="SFBool" accessType="outputOnly" description="inputTrue only passes a true value, which occurs when set_boolean input is true." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_boolean" type="SFBool" accessType="inputOnly" description="set_boolean is the input value to be filtered." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BooleanFilter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BooleanSequencer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BooleanSequencer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#BooleanSequencer" appinfo="BooleanSequencer generates periodic discrete Boolean values.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DSequencerNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DSequencerNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFBool" accessType="inputOutput" description="Output values for linear sequencing, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="next" type="SFBool" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="Send next output value in keyValue array, and reset internal fraction field to match corresponding value in key array." />
<field name="previous" type="SFBool" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="Send previous output value in keyValue array, and reset internal fraction field to match corresponding value in key array." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFBool" accessType="outputOnly" description="Single intermittent output value determined by current key time and corresponding keyValue entry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BooleanSequencer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFBool inputOutput",
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DSequencerNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFBool" accessType="inputOutput" description="Output values for linear sequencing, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFBool inputOutput",
  "type": "array",
  "items": {
    "type": "boolean"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BooleanToggle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BooleanToggle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#BooleanToggle" appinfo="BooleanToggle maintains state and negates output when a true input is provided.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_boolean" type="SFBool" accessType="inputOnly" description="If input event set_boolean is true, flip state by negating current value of the toggle field Hint: for logical consistency, input event set_boolean false has no effect (under review as part of Mantis issue 519)." />
<field name="toggle" type="SFBool" accessType="inputOutput" default="false" description="Persistent state value that gets toggled or reset." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BooleanToggle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@toggle": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
toggle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="toggle" type="SFBool" accessType="inputOutput" default="false" description="Persistent state value that gets toggled or reset." />
'

JSON "@toggle": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BooleanTrigger
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BooleanTrigger">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#BooleanTrigger" appinfo="BooleanTrigger converts time events to boolean true events.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DTriggerNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_triggerTime" type="SFTime" accessType="inputOnly" description="set_triggerTime provides input time event, typical event sent is TouchSensor touchTime." />
<field name="triggerTrue" type="SFBool" accessType="outputOnly" description="triggerTrue outputs a true value whenever a triggerTime event is received." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BooleanTrigger": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BoundaryEnhancementVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BoundaryEnhancementVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#BoundaryEnhancementVolumeStyle" appinfo="BoundaryEnhancementVolumeStyle provides boundary enhancement for the volume rendering style.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="boundaryOpacity" type="SFFloat" accessType="inputOutput" default="0.9" minInclusive="0" maxInclusive="1" description="boundaryOpacity k_gs is the factored amount of the gradient enhancement to use." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="opacityFactor" type="SFFloat" accessType="inputOutput" default="2" minInclusive="0" description="opacityFactor k_ge is the power function to control the slope of the opacity curve to highlight the set of data." />
<field name="retainedOpacity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" description="retainedOpacity k_gc is the amount of initial opacity to mix into the output." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BoundaryEnhancementVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@boundaryOpacity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.9,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@opacityFactor": {
          "minimum": 0,
          "default": 2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@retainedOpacity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
boundaryOpacity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="boundaryOpacity" type="SFFloat" accessType="inputOutput" default="0.9" minInclusive="0" maxInclusive="1" description="boundaryOpacity k_gs is the factored amount of the gradient enhancement to use." />
'

JSON "@boundaryOpacity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.9,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
opacityFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="opacityFactor" type="SFFloat" accessType="inputOutput" default="2" minInclusive="0" description="opacityFactor k_ge is the power function to control the slope of the opacity curve to highlight the set of data." />
'

JSON "@opacityFactor": {
  "minimum": 0,
  "default": 2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
retainedOpacity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="retainedOpacity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" description="retainedOpacity k_gc is the amount of initial opacity to mix into the output." />
'

JSON "@retainedOpacity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BoundedPhysicsModel
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BoundedPhysicsModel">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#BoundedPhysicsModel" appinfo="BoundedPhysicsModel provides user-defined geometrical boundaries for particle motion.">
<componentInfo name="ParticleSystems" level="2" />
<Inheritance baseType="X3DParticlePhysicsModelNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="Single contained geometry node provides the geometry used for each particle when the parent ParticleSystem node has geometryType=GEOMETRY." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="physics" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GeometryContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BoundedPhysicsModel": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-geometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
geometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="Single contained geometry node provides the geometry used for each particle when the parent ParticleSystem node has geometryType=GEOMETRY." />
'

JSON "-geometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Box
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Box">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#Box" appinfo="Box is a geometry node specifying a rectangular cuboid.">
<componentInfo name="Geometry3D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="size" type="SFVec3f" accessType="initializeOnly" default="2 2 2" description="size x y z in meters." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Box": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 2,
            "type": "number"
          }
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="initializeOnly" default="2 2 2" description="size x y z in meters." />
'

JSON "@size": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 2,
    "type": "number"
  }
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
BufferAudioSource
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="BufferAudioSource">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#BufferAudioSource" appinfo="BufferAudioSource node represents a memory-resident audio asset that can contain one or more channels.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundSourceNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="buffer" type="MFFloat" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="buffer is a memory-resident audio asset that can contain one or more channels." />
<field name="bufferDuration" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="bufferDuration is duration in seconds to use from buffer field." />
<field name="bufferlength" type="SFInt32" accessType="outputOnly" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune field forms a compound field together with playbackRate that together determine a computedPlaybackRate value." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="length" type="SFInt32" accessType="outputOnly" minInclusive="0" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
<field name="loopEnd" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="loopEnd field is optional playhead position where looping ends if loop=true." />
<field name="loopStart" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="loopStart field is optional playhead position where looping begins if loop=true." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="numberOfChannels" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="numberOfChannels is number of audio channels found in this buffer source." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="playbackRate" type="SFFloat" accessType="inputOutput" default="1" description="playbackRate field is speed at which to render the audio stream, and forms a compound field together with detune field Hint: negative values play in reverse." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="sampleRate" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="sampleRate field is sample-frames per second." />
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of sound file.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesSoundSource" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "BufferAudioSource": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@buffer": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 1,
            "minimum": -1,
            "type": "number"
          }
        },
        "@bufferDuration": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@detune": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@loop": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@loopEnd": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@loopStart": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@numberOfChannels": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@playbackRate": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@sampleRate": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
buffer
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="buffer" type="MFFloat" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="buffer is a memory-resident audio asset that can contain one or more channels." />
'

JSON "@buffer": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 1,
    "minimum": -1,
    "type": "number"
  }
}
bufferDuration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bufferDuration" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="bufferDuration is duration in seconds to use from buffer field." />
'

JSON "@bufferDuration": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
detune
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune field forms a compound field together with playbackRate that together determine a computedPlaybackRate value." />
'

JSON "@detune": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
loop
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
'

JSON "@loop": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
loopEnd
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loopEnd" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="loopEnd field is optional playhead position where looping ends if loop=true." />
'

JSON "@loopEnd": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
loopStart
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loopStart" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="loopStart field is optional playhead position where looping begins if loop=true." />
'

JSON "@loopStart": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
numberOfChannels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="numberOfChannels" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="numberOfChannels is number of audio channels found in this buffer source." />
'

JSON "@numberOfChannels": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
playbackRate
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="playbackRate" type="SFFloat" accessType="inputOutput" default="1" description="playbackRate field is speed at which to render the audio stream, and forms a compound field together with detune field Hint: negative values play in reverse." />
'

JSON "@playbackRate": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
sampleRate
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sampleRate" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="sampleRate field is sample-frames per second." />
'

JSON "@sampleRate": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of sound file.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CADAssembly
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CADAssembly">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#CADAssembly" appinfo="CADAssembly holds a set of Computer-Aided Design (CAD) assemblies or parts grouped together.">
<componentInfo name="CADGeometry" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<AdditionalInheritance baseType="X3DProductStructureChildNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CADAssembly": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CADFace
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CADFace">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#CADFace" appinfo="CADFace holds geometry representing one face in a Computer-Aided Design (CAD) CADPart.">
<componentInfo name="CADGeometry" level="2" />
<Inheritance baseType="X3DProductStructureChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
<field name="shape" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Shape|LOD|Transform" description="Contained Shape for this CADPart." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Shape" />
<NodeContentModel name="LOD" />
<NodeContentModel name="Transform" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CADFace": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-shape": {
          "$ref": "#/$defs/-Shape-LOD-TransformSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
shape
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shape" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Shape|LOD|Transform" description="Contained Shape for this CADPart." />
'

JSON "-shape": {
  "$ref": "#/$defs/-Shape-LOD-TransformSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CADLayer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CADLayer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#CADLayer" appinfo="CADLayer nodes define a hierarchy that shows layer structure for a Computer-Aided Design (CAD) model.">
<componentInfo name="CADGeometry" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" description="Optional name for this particular CAD node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CADLayer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" description="Optional name for this particular CAD node." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CADPart
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CADPart">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#CADPart" appinfo="CADPart is an atomic part that defines both coordinate-system location and the faces that constitute a part in a Computer-Aided Design (CAD) model.">
<componentInfo name="CADGeometry" level="2" />
<Inheritance baseType="X3DProductStructureChildNode" />
<AdditionalInheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="CADFace" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="CADFace" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="CADFace" />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="CADFace" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CADPart": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-CADFaceMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="CADFace" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="CADFace" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-CADFaceMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DProductStructureChildNode" description="Optional name for this particular CAD node." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CartoonVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CartoonVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#CartoonVolumeStyle" appinfo="CartoonVolumeStyle generates cartoon-style non-photorealistic rendering of associated volumetric data.">
<componentInfo name="VolumeRendering" level="3" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="colorSteps" type="SFInt32" accessType="inputOutput" default="4" minInclusive="1" maxInclusive="64" description="Number of distinct colors taken from interpolated colors and used to render the object." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orthogonalColor" type="SFColorRGBA" accessType="inputOutput" default="1 1 1 1" minInclusive="0" maxInclusive="1" description="orthogonalColor is used for surface normals that are orthogonal (perpendicular) to viewer's current location." />
<field name="parallelColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 1" minInclusive="0" maxInclusive="1" description="parallelColor is used for surface normals that are orthogonal to viewer's current location." />
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CartoonVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@colorSteps": {
          "maximum": 64,
          "minimum": 1,
          "default": 4,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@orthogonalColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@parallelColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-surfaceNormals": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
colorSteps
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorSteps" type="SFInt32" accessType="inputOutput" default="4" minInclusive="1" maxInclusive="64" description="Number of distinct colors taken from interpolated colors and used to render the object." />
'

JSON "@colorSteps": {
  "maximum": 64,
  "minimum": 1,
  "default": 4,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
orthogonalColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orthogonalColor" type="SFColorRGBA" accessType="inputOutput" default="1 1 1 1" minInclusive="0" maxInclusive="1" description="orthogonalColor is used for surface normals that are orthogonal (perpendicular) to viewer's current location." />
'

JSON "@orthogonalColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
parallelColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="parallelColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 1" minInclusive="0" maxInclusive="1" description="parallelColor is used for surface normals that are orthogonal to viewer's current location." />
'

JSON "@parallelColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
surfaceNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
'

JSON "-surfaceNormals": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ChannelMerger
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ChannelMerger">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#ChannelMerger" appinfo="ChannelMerger unites different input channels into a single output channel.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundChannelNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundChannelNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ChannelMerger": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ChannelSelector
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ChannelSelector">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#ChannelSelector" appinfo="ChannelSelector selects a single channel output from all input channels.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundChannelNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundChannelNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="channelSelection" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="channelSelection is single channel of interest from those provided by input nodes." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ChannelSelector": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelSelection": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelSelection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelSelection" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="channelSelection is single channel of interest from those provided by input nodes." />
'

JSON "@channelSelection": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ChannelSplitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ChannelSplitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#ChannelSplitter" appinfo="ChannelSplitter separates the different channels of a single audio source into a set of monophonic output channels.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundChannelNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundChannelNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node, making up a section of the audio graph." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="outputs" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSoundChannelNode|X3DSoundProcessingNode|X3DSoundSourceNode" description="The outputs field is a set of output nodes receiving the split channels, and making up a section of the audio graph." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ChannelSplitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-outputs": {
          "$ref": "#/$defs/-X3DSoundChannelNode-X3DSoundProcessingNode-X3DSoundSourceNodeMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundChannelNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node, making up a section of the audio graph." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node, making up a section of the audio graph." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundChannelNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
outputs
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="outputs" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSoundChannelNode|X3DSoundProcessingNode|X3DSoundSourceNode" description="The outputs field is a set of output nodes receiving the split channels, and making up a section of the audio graph." />
'

JSON "-outputs": {
  "$ref": "#/$defs/-X3DSoundChannelNode-X3DSoundProcessingNode-X3DSoundSourceNodeMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Circle2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Circle2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Circle2D" appinfo="Circle2D is a geometry node that defines a linear X-Y circle with center (0,0) in X-Y plane.">
<componentInfo name="Geometry2D" level="2" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Circle2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@radius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="circle radius." />
'

JSON "@radius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ClipPlane
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ClipPlane">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#ClipPlane" appinfo="ClipPlane specifies a single plane equation used to clip (i.">
<componentInfo name="Rendering" level="5" />
<Inheritance baseType="X3DChildNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="plane" type="SFVec4f" accessType="inputOutput" default="0 1 0 0" minInclusive="-1" maxInclusive="1" description="If (a,b,c,d) is the plane, with the first three components being a normalized vector describing the plane's normal direction (and thus the fourth component d being distance from the origin), a point (x,y,z) is visible to the user, with regards to the clipping plane, if a*x+b*y+c*z+d is greater than 0." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ClipPlane": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@plane": {
          "maximum": 1,
          "minimum": -1,
          "$comment": "SFVec4f inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
plane
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="plane" type="SFVec4f" accessType="inputOutput" default="0 1 0 0" minInclusive="-1" maxInclusive="1" description="If (a,b,c,d) is the plane, with the first three components being a normalized vector describing the plane's normal direction (and thus the fourth component d being distance from the origin), a point (x,y,z) is visible to the user, with regards to the clipping plane, if a*x+b*y+c*z+d is greater than 0." />
'

JSON "@plane": {
  "maximum": 1,
  "minimum": -1,
  "$comment": "SFVec4f inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    }
  ],
  "items": false
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CollidableOffset
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CollidableOffset">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#CollidableOffset" appinfo="CollidableOffset repositions geometry relative to center of owning body.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DNBodyCollidableNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollidableNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollidableNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="collidable" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The collidable field holds a reference to a single nested item of a collidable scene graph." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DNBodyCollidableNode" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Position (x, y, z in meters) of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="CollidableOffset" />
<NodeContentModel name="CollidableShape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CollidableOffset": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-collidable": {
          "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollidableNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollidableNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
collidable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collidable" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The collidable field holds a reference to a single nested item of a collidable scene graph." />
'

JSON "-collidable": {
  "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DNBodyCollidableNode" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Position (x, y, z in meters) of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CollidableShape
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CollidableShape">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#CollidableShape" appinfo="CollidableShape connects the collision detection system, the rigid body model, and the renderable scene graph.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DNBodyCollidableNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollidableNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollidableNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DNBodyCollidableNode" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
<field name="shape" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="Shape" description="The shape field provides a geometry proxy for specifying which geometry best represents the collidable object." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Position (x, y, z in meters) of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Shape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CollidableShape": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-shape": {
          "$ref": "#/$defs/-ShapeSFNode"
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollidableNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollidableNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DNBodyCollidableNode" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
shape
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shape" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="Shape" description="The shape field provides a geometry proxy for specifying which geometry best represents the collidable object." />
'

JSON "-shape": {
  "$ref": "#/$defs/-ShapeSFNode"
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DNBodyCollidableNode" description="Position (x, y, z in meters) of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollidableNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Collision
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Collision">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#Collision" appinfo="Collision detects camera-to-object contact using current view and NavigationInfo avatarSize.">
<componentInfo name="Navigation" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<AdditionalInheritance baseType="X3DSensorNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="collideTime" type="SFTime" accessType="outputOnly" description="Time of collision between camera (avatar) and geometry." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables collision detection for children and all descendants." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent when triggering the sensor." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="proxy" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DChildNode" description="The proxy node is used as a substitute for Collision children during collision detection, simplifying collision-intersection computations." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Collision": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-proxy": {
          "$ref": "#/$defs/-X3DChildNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables collision detection for children and all descendants." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
proxy
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="proxy" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DChildNode" description="The proxy node is used as a substitute for Collision children during collision detection, simplifying collision-intersection computations." />
'

JSON "-proxy": {
  "$ref": "#/$defs/-X3DChildNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CollisionCollection
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CollisionCollection">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#CollisionCollection" appinfo="CollisionCollection holds a collection of objects that can be managed as a single entity for resolution of inter-object collisions.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="appliedParameters" type="MFString" accessType="inputOutput" default="&quot;BOUNCE&quot;" additionalEnumerationValuesAllowed="false" simpleType="appliedParametersChoices" baseType="MFString" description="Default global parameters for collision outputs of rigid body physics system.">
<enumeration value="&quot;BOUNCE&quot;" appinfo="The bounce field value is used." />
<enumeration value="&quot;USER_FRICTION&quot;" appinfo="The system will normally calculate the friction direction vector that is perpendicular to the contact normal. This setting indicates that the user-supplied value in this contact should be used." />
<enumeration value="&quot;FRICTION_COEFFICIENT-2&quot;" appinfo="Apply frictionCoefficients values." />
<enumeration value="&quot;ERROR_REDUCTION&quot;" appinfo="Apply softnessErrorCorrection value." />
<enumeration value="&quot;CONSTANT_FORCE&quot;" appinfo="Apply softnessConstantForceMix value." />
<enumeration value="&quot;SPEED-1&quot;" appinfo="Apply first component of surfaceSpeed array." />
<enumeration value="&quot;SPEED-2&quot;" appinfo="Apply second component of surfaceSpeed array." />
<enumeration value="&quot;SLIP-1&quot;" appinfo="Apply first component of slipFactors array." />
<enumeration value="&quot;SLIP-2&quot;" appinfo="Apply second component of slipFactors array." />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="bounce indicates bounciness (0 = no bounce at all, 1 = maximum bounce)." />
<field name="collidables" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollisionSpaceNode|X3DNBodyCollidableNode" description="CollisionCollection node holds a collection of objects in the collidables field that can be managed as a single entity for resolution of inter-object collisions with other groups of collidable objects." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="frictionCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" minInclusive="0" description="frictionCoefficients used for computing surface drag." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minBounceSpeed" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="minBounceSpeed m/s needed to bounce." />
<field name="slipFactors" type="SFVec2f" accessType="inputOutput" default="0 0" description="slipFactors used for computing surface drag." />
<field name="softnessConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" minInclusive="0" maxInclusive="1" description="softnessConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
<field name="softnessErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="softnessErrorCorrection indicates fraction of collision error fixed in a set of evaluations (0 = no error correction, 1 = all errors corrected in single step)." />
<field name="surfaceSpeed" type="SFVec2f" accessType="inputOutput" default="0 0" description="surfaceSpeed defines speed vectors for computing surface drag, if contact surfaces move independently of bodies." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="collider" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="CollidableOffset" />
<NodeContentModel name="CollidableShape" />
<NodeContentModel name="CollisionSpace" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CollisionCollection": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@appliedParameters": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "BOUNCE",
              "USER_FRICTION",
              "FRICTION_COEFFICIENT-2",
              "ERROR_REDUCTION",
              "CONSTANT_FORCE",
              "SPEED-1",
              "SPEED-2",
              "SLIP-1",
              "SLIP-2"
            ],
            "default": "BOUNCE",
            "type": "string"
          }
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@bounce": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-collidables": {
          "$ref": "#/$defs/-X3DNBodyCollisionSpaceNode-X3DNBodyCollidableNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@frictionCoefficients": {
          "minimum": 0,
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minBounceSpeed": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@slipFactors": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@softnessConstantForceMix": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.0001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@softnessErrorCorrection": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceSpeed": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
appliedParameters
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appliedParameters" type="MFString" accessType="inputOutput" default="&quot;BOUNCE&quot;" additionalEnumerationValuesAllowed="false" simpleType="appliedParametersChoices" baseType="MFString" description="Default global parameters for collision outputs of rigid body physics system.">
<enumeration value="&quot;BOUNCE&quot;" appinfo="The bounce field value is used." />
<enumeration value="&quot;USER_FRICTION&quot;" appinfo="The system will normally calculate the friction direction vector that is perpendicular to the contact normal. This setting indicates that the user-supplied value in this contact should be used." />
<enumeration value="&quot;FRICTION_COEFFICIENT-2&quot;" appinfo="Apply frictionCoefficients values." />
<enumeration value="&quot;ERROR_REDUCTION&quot;" appinfo="Apply softnessErrorCorrection value." />
<enumeration value="&quot;CONSTANT_FORCE&quot;" appinfo="Apply softnessConstantForceMix value." />
<enumeration value="&quot;SPEED-1&quot;" appinfo="Apply first component of surfaceSpeed array." />
<enumeration value="&quot;SPEED-2&quot;" appinfo="Apply second component of surfaceSpeed array." />
<enumeration value="&quot;SLIP-1&quot;" appinfo="Apply first component of slipFactors array." />
<enumeration value="&quot;SLIP-2&quot;" appinfo="Apply second component of slipFactors array." />
</field>
'

JSON "@appliedParameters": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "BOUNCE",
      "USER_FRICTION",
      "FRICTION_COEFFICIENT-2",
      "ERROR_REDUCTION",
      "CONSTANT_FORCE",
      "SPEED-1",
      "SPEED-2",
      "SLIP-1",
      "SLIP-2"
    ],
    "default": "BOUNCE",
    "type": "string"
  }
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="bounce indicates bounciness (0 = no bounce at all, 1 = maximum bounce)." />
'

JSON "@bounce": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
collidables
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collidables" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollisionSpaceNode|X3DNBodyCollidableNode" description="CollisionCollection node holds a collection of objects in the collidables field that can be managed as a single entity for resolution of inter-object collisions with other groups of collidable objects." />
'

JSON "-collidables": {
  "$ref": "#/$defs/-X3DNBodyCollisionSpaceNode-X3DNBodyCollidableNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
frictionCoefficients
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frictionCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" minInclusive="0" description="frictionCoefficients used for computing surface drag." />
'

JSON "@frictionCoefficients": {
  "minimum": 0,
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minBounceSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minBounceSpeed" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="minBounceSpeed m/s needed to bounce." />
'

JSON "@minBounceSpeed": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
slipFactors
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="slipFactors" type="SFVec2f" accessType="inputOutput" default="0 0" description="slipFactors used for computing surface drag." />
'

JSON "@slipFactors": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
softnessConstantForceMix
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="softnessConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" minInclusive="0" maxInclusive="1" description="softnessConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
'

JSON "@softnessConstantForceMix": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.0001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
softnessErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="softnessErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="softnessErrorCorrection indicates fraction of collision error fixed in a set of evaluations (0 = no error correction, 1 = all errors corrected in single step)." />
'

JSON "@softnessErrorCorrection": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceSpeed" type="SFVec2f" accessType="inputOutput" default="0 0" description="surfaceSpeed defines speed vectors for computing surface drag, if contact surfaces move independently of bodies." />
'

JSON "@surfaceSpeed": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CollisionSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CollisionSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#CollisionSensor" appinfo="CollisionSensor generates collision-detection events.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DSensorNode" />
<field name="collider" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="CollisionCollection" description="The collider field specifies a CollisionCollection node that holds a collidables field of nodes and spaces that are to be included in collision-detection computations." />
<field name="contacts" type="MFNode" accessType="outputOnly" acceptableNodeTypes="Contact">
<componentInfo name="RigidBodyPhysics" level="2" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="intersections" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DNBodyCollidableNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent when sensing starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="CollisionCollection" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CollisionSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-collider": {
          "$ref": "#/$defs/-CollisionCollectionSFNode"
        },
        "-contacts": {
          "$ref": "#/$defs/-ContactMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-intersections": {
          "$ref": "#/$defs/-X3DNBodyCollidableNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
collider
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collider" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="CollisionCollection" description="The collider field specifies a CollisionCollection node that holds a collidables field of nodes and spaces that are to be included in collision-detection computations." />
'

JSON "-collider": {
  "$ref": "#/$defs/-CollisionCollectionSFNode"
}
contacts
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="contacts" type="MFNode" accessType="outputOnly" acceptableNodeTypes="Contact">
<componentInfo name="RigidBodyPhysics" level="2" />
</field>
'

JSON "-contacts": {
  "$ref": "#/$defs/-ContactMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intersections
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intersections" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DNBodyCollidableNode" />
'

JSON "-intersections": {
  "$ref": "#/$defs/-X3DNBodyCollidableNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CollisionSpace
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CollisionSpace">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#CollisionSpace" appinfo="CollisionSpace holds collection of objects considered together for resolution of inter-object collisions.">
<componentInfo name="RigidBodyPhysics" level="1" />
<Inheritance baseType="X3DNBodyCollisionSpaceNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollisionSpaceNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="collidables" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollisionSpaceNode|X3DNBodyCollidableNode" description="Collection of collidable objects as well as nested CollisionSpace collections." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="useGeometry" type="SFBool" accessType="inputOutput" default="false" description="useGeometry indicates whether collision-detection code checks down to level of geometry, or only make approximations using geometry bounds." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="CollidableOffset" />
<NodeContentModel name="CollidableShape" />
<NodeContentModel name="CollisionSpace" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CollisionSpace": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-collidables": {
          "$ref": "#/$defs/-X3DNBodyCollisionSpaceNode-X3DNBodyCollidableNodeMFNode"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@useGeometry": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DNBodyCollisionSpaceNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
collidables
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collidables" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollisionSpaceNode|X3DNBodyCollidableNode" description="Collection of collidable objects as well as nested CollisionSpace collections." />
'

JSON "-collidables": {
  "$ref": "#/$defs/-X3DNBodyCollisionSpaceNode-X3DNBodyCollidableNodeMFNode"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
useGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="useGeometry" type="SFBool" accessType="inputOutput" default="false" description="useGeometry indicates whether collision-detection code checks down to level of geometry, or only make approximations using geometry bounds." />
'

JSON "@useGeometry": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DNBodyCollisionSpaceNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Color
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Color">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#Color" appinfo="Color node defines a set of RGB color values that apply either to a sibling Coordinate|CoordinateDouble node, or else to a parent ElevationGrid node.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DColorNode" />
<field name="color" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="The color field defines an array of 3-tuple RGB colors." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="color" type="containerFieldChoicesColor" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Color": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@color": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="The color field defines an array of 3-tuple RGB colors." />
'

JSON "@color": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ColorChaser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ColorChaser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#ColorChaser" appinfo="ColorChaser generates a series of SFColor values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial destination value for this node." />
<field name="initialValue" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="SFColor" accessType="inputOnly" minInclusive="0" maxInclusive="1" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFColor" accessType="inputOnly" minInclusive="0" maxInclusive="1" description="set_value resets current value of this node." />
<field name="value_changed" type="SFColor" accessType="outputOnly" minInclusive="0" maxInclusive="1" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ColorChaser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ColorDamper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ColorDamper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#ColorDamper" appinfo="ColorDamper generates a series of RGB color values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial destination value for this node." />
<field name="initialValue" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="SFColor" accessType="inputOnly" minInclusive="0" maxInclusive="1" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFColor" accessType="inputOnly" minInclusive="0" maxInclusive="1" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="SFColor" accessType="outputOnly" minInclusive="0" maxInclusive="1" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ColorDamper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFColor" accessType="initializeOnly" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ColorInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ColorInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#ColorInterpolator" appinfo="ColorInterpolator generates a range of color values.">
<componentInfo name="Interpolation" level="2" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFColor" accessType="outputOnly" minInclusive="0" maxInclusive="1" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ColorInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ColorRGBA
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ColorRGBA">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#ColorRGBA" appinfo="ColorRGBA node defines a set of RGBA color values that apply either to a sibling Coordinate|CoordinateDouble node, or else to a parent ElevationGrid node.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DColorNode" />
<field name="color" type="MFColorRGBA" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="The color field defines an array of 4-tuple RGBA colors.">
<componentInfo name="Rendering" level="4" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="color" type="containerFieldChoicesColor" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ColorRGBA": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@color": {
          "$comment": "MFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="MFColorRGBA" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="The color field defines an array of 4-tuple RGBA colors.">
<componentInfo name="Rendering" level="4" />
</field>
'

JSON "@color": {
  "$comment": "MFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ComposedCubeMapTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ComposedCubeMapTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing.html#ComposedCubeMapTexture" appinfo="ComposedCubeMapTexture is a texture node that defines a cubic environment map source as an explicit set of images drawn from individual 2D texture nodes.">
<componentInfo name="CubeMapTexturing" level="1" />
<Inheritance baseType="X3DEnvironmentTextureNode" />
<field name="backTexture" synonym="back" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
<field name="bottomTexture" synonym="bottom" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture, other texture nodes)." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="frontTexture" synonym="front" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="leftTexture" synonym="left" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodese)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rightTexture" synonym="right" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="topTexture" synonym="top" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="ProtoInstance" />
<NodeContentModel name="TextureProperties" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ComposedCubeMapTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-backTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-back": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-bottomTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-bottom": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-frontTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-front": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-leftTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-left": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-rightTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-right": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "-topTexture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "-top": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
backTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backTexture" synonym="back" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
'

JSON "-backTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
bottomTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottomTexture" synonym="bottom" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture, other texture nodes)." />
'

JSON "-bottomTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
frontTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frontTexture" synonym="front" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
'

JSON "-frontTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
leftTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="leftTexture" synonym="left" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodese)." />
'

JSON "-leftTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rightTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rightTexture" synonym="right" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
'

JSON "-rightTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
topTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="topTexture" synonym="top" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" description="Parent ComposedCubeMapTexture element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture, other texture nodes)." />
'

JSON "-topTexture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ComposedShader
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ComposedShader">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#ComposedShader" appinfo="ComposedShader can contain field declarations, but no CDATA section of plain-text source code, since programs are composed from child ShaderPart nodes.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DShaderNode" />
<AdditionalInheritance baseType="X3DProgrammableShaderObject" />
<field name="activate" type="SFBool" accessType="inputOnly" inheritedFrom="X3DShaderNode" description="activate forces the shader to activate the contained objects." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the ComposedShader node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="isSelected" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isValid" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isValid indicates whether current shader objects can be run as a shader program." />
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="parts" type="MFNode" accessType="inputOutput" acceptableNodeTypes="ShaderPart" description="ComposedShader can contain multiple ShaderPart nodes in the parts field." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="shaders" type="xs:NMTOKEN" />
<ContentModel>
<FieldDeclaration minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ShaderPart" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ComposedShader": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "field": {
          "$ref": "#/$defs/field"
        },
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@language": {
          "anyOf": [
            {
              "enum": [
                "Cg",
                "GLSL",
                "HLSL"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-parts": {
          "$ref": "#/$defs/-ShaderPartMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the ComposedShader node." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
language
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
'

JSON "@language": {
  "anyOf": [
    {
      "enum": [
        "Cg",
        "GLSL",
        "HLSL"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString initializeOnly",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
parts
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="parts" type="MFNode" accessType="inputOutput" acceptableNodeTypes="ShaderPart" description="ComposedShader can contain multiple ShaderPart nodes in the parts field." />
'

JSON "-parts": {
  "$ref": "#/$defs/-ShaderPartMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ComposedTexture3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ComposedTexture3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#ComposedTexture3D" appinfo="ComposedTexture3D defines a 3D image-based texture map as a collection of 2D texture sources at various depths.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DTexture3DNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="texture" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DTexture2DNode" description="collection of 2D texture sources." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture3DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="MovieTexture" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ComposedTexture3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@repeatR": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatS": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texture": {
          "$ref": "#/$defs/-X3DTexture2DNodeMFNode"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
repeatR
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
'

JSON "@repeatR": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texture" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DTexture2DNode" description="collection of 2D texture sources." />
'

JSON "-texture": {
  "$ref": "#/$defs/-X3DTexture2DNodeMFNode"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ComposedVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ComposedVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#ComposedVolumeStyle" appinfo="ComposedVolumeStyle allows compositing multiple rendering styles into single rendering pass.">
<componentInfo name="VolumeRendering" level="3" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DComposableVolumeRenderStyleNode" description="List of contributing rendering style nodes or node references that can be applied to the object." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="VolumeRenderStyleContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ComposedVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-renderStyle": {
          "$ref": "#/$defs/-X3DComposableVolumeRenderStyleNodeMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
renderStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DComposableVolumeRenderStyleNode" description="List of contributing rendering style nodes or node references that can be applied to the object." />
'

JSON "-renderStyle": {
  "$ref": "#/$defs/-X3DComposableVolumeRenderStyleNodeMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Cone
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Cone">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#Cone" appinfo="Cone is a geometry node.">
<componentInfo name="Geometry3D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="bottom" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw bottom (other inside faces are not drawn)." />
<field name="bottomRadius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
<field name="height" type="SFFloat" accessType="initializeOnly" default="2" minExclusive="0" description="Size in meters." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="side" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw sides (other inside faces are not drawn)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Cone": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bottom": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bottomRadius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@height": {
          "exclusiveMinimum": 0,
          "default": 2,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@side": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bottom
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottom" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw bottom (other inside faces are not drawn)." />
'

JSON "@bottom": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bottomRadius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottomRadius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
'

JSON "@bottomRadius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
height
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="height" type="SFFloat" accessType="initializeOnly" default="2" minExclusive="0" description="Size in meters." />
'

JSON "@height": {
  "exclusiveMinimum": 0,
  "default": 2,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
side
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="side" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw sides (other inside faces are not drawn)." />
'

JSON "@side": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ConeEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ConeEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#ConeEmitter" appinfo="ConeEmitter generates all available particles from a specific point in space.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="angle" type="SFFloat" accessType="inputOutput" default="0.7854" minInclusive="0" maxInclusive="3.1416" description="Cone boundary for random distribution of particles about initial direction." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ConeEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@angle": {
          "maximum": 3.1416,
          "minimum": 0,
          "default": 0.7854,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@direction": {
          "maximum": 1,
          "minimum": -1,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
angle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="angle" type="SFFloat" accessType="inputOutput" default="0.7854" minInclusive="0" maxInclusive="3.1416" description="Cone boundary for random distribution of particles about initial direction." />
'

JSON "@angle": {
  "maximum": 3.1416,
  "minimum": 0,
  "default": 0.7854,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
'

JSON "@direction": {
  "maximum": 1,
  "minimum": -1,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Contact
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Contact">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#Contact" appinfo="Contact nodes are produced as output events when two collidable objects or spaces make contact.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DNode" />
<field name="appliedParameters" type="MFString" accessType="inputOutput" default="&quot;BOUNCE&quot;" additionalEnumerationValuesAllowed="false" simpleType="appliedParametersChoices" baseType="MFString" description="Default global parameters for collision outputs of rigid body physics system.">
<enumeration value="&quot;BOUNCE&quot;" appinfo="The bounce field value is used." />
<enumeration value="&quot;USER_FRICTION&quot;" appinfo="The system will normally calculate the friction direction vector that is perpendicular to the contact normal. This setting indicates that the user-supplied value in this contact should be used." />
<enumeration value="&quot;FRICTION_COEFFICIENT-2&quot;" appinfo="Apply frictionCoefficients values." />
<enumeration value="&quot;ERROR_REDUCTION&quot;" appinfo="Apply softnessErrorCorrection value." />
<enumeration value="&quot;CONSTANT_FORCE&quot;" appinfo="Apply softnessConstantForceMix value." />
<enumeration value="&quot;SPEED-1&quot;" appinfo="Apply first component of surfaceSpeed array." />
<enumeration value="&quot;SPEED-2&quot;" appinfo="Apply second component of surfaceSpeed array." />
<enumeration value="&quot;SLIP-1&quot;" appinfo="Apply first component of slipFactors array." />
<enumeration value="&quot;SLIP-2&quot;" appinfo="Apply second component of slipFactors array." />
</field>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" description="The body1 and body2 fields specify two top-level nodes that should be evaluated in the physics model as a single set of interactions with respect to each other." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" description="The body1 and body2 fields specify two top-level nodes that should be evaluated in the physics model as a single set of interactions with respect to each other." />
<field name="bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="bounce indicates bounciness (0 = no bounce at all, 1 = maximum bounce)." />
<field name="contactNormal" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="contactNormal is unit vector describing normal between two colliding bodies." />
<field name="depth" type="SFFloat" accessType="inputOutput" default="0" description="depth indicates how deep the current intersection is along normal vector." />
<field name="frictionCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" minInclusive="0" description="frictionCoefficients used for computing surface drag." />
<field name="frictionDirection" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="frictionDirection controls friction vector." />
<field name="geometry1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry1 and geometry2 fields specify collision-related information about body1 and body2." />
<field name="geometry2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry1 and geometry2 fields specify collision-related information about body1 and body2." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minBounceSpeed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="minBounceSpeed m/s needed to bounce." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position (x, y, z in meters) of exact location of collision." />
<field name="slipCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" description="slipCoefficients used for computing surface drag." />
<field name="softnessConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" minInclusive="0" maxInclusive="1" description="softnessConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
<field name="softnessErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="softnessErrorCorrection indicates fraction of collision error fixed in a set of evaluations (0 = no error correction, 1 = all errors corrected in single step)." />
<field name="surfaceSpeed" type="SFVec2f" accessType="inputOutput" default="0 0" description="surfaceSpeed defines speed vectors for computing surface drag, if contact surfaces move independently of bodies." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="contacts" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="RigidBody" />
<NodeContentModel name="CollidableOffset" />
<NodeContentModel name="CollidableShape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Contact": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@appliedParameters": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "BOUNCE",
              "USER_FRICTION",
              "FRICTION_COEFFICIENT-2",
              "ERROR_REDUCTION",
              "CONSTANT_FORCE",
              "SPEED-1",
              "SPEED-2",
              "SLIP-1",
              "SLIP-2"
            ],
            "default": "BOUNCE",
            "type": "string"
          }
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@bounce": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@contactNormal": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@depth": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@frictionCoefficients": {
          "minimum": 0,
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "@frictionDirection": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-geometry1": {
          "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
        },
        "-geometry2": {
          "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minBounceSpeed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@slipCoefficients": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@softnessConstantForceMix": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.0001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@softnessErrorCorrection": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceSpeed": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
appliedParameters
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appliedParameters" type="MFString" accessType="inputOutput" default="&quot;BOUNCE&quot;" additionalEnumerationValuesAllowed="false" simpleType="appliedParametersChoices" baseType="MFString" description="Default global parameters for collision outputs of rigid body physics system.">
<enumeration value="&quot;BOUNCE&quot;" appinfo="The bounce field value is used." />
<enumeration value="&quot;USER_FRICTION&quot;" appinfo="The system will normally calculate the friction direction vector that is perpendicular to the contact normal. This setting indicates that the user-supplied value in this contact should be used." />
<enumeration value="&quot;FRICTION_COEFFICIENT-2&quot;" appinfo="Apply frictionCoefficients values." />
<enumeration value="&quot;ERROR_REDUCTION&quot;" appinfo="Apply softnessErrorCorrection value." />
<enumeration value="&quot;CONSTANT_FORCE&quot;" appinfo="Apply softnessConstantForceMix value." />
<enumeration value="&quot;SPEED-1&quot;" appinfo="Apply first component of surfaceSpeed array." />
<enumeration value="&quot;SPEED-2&quot;" appinfo="Apply second component of surfaceSpeed array." />
<enumeration value="&quot;SLIP-1&quot;" appinfo="Apply first component of slipFactors array." />
<enumeration value="&quot;SLIP-2&quot;" appinfo="Apply second component of slipFactors array." />
</field>
'

JSON "@appliedParameters": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "BOUNCE",
      "USER_FRICTION",
      "FRICTION_COEFFICIENT-2",
      "ERROR_REDUCTION",
      "CONSTANT_FORCE",
      "SPEED-1",
      "SPEED-2",
      "SLIP-1",
      "SLIP-2"
    ],
    "default": "BOUNCE",
    "type": "string"
  }
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" description="The body1 and body2 fields specify two top-level nodes that should be evaluated in the physics model as a single set of interactions with respect to each other." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" description="The body1 and body2 fields specify two top-level nodes that should be evaluated in the physics model as a single set of interactions with respect to each other." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="bounce indicates bounciness (0 = no bounce at all, 1 = maximum bounce)." />
'

JSON "@bounce": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
contactNormal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="contactNormal" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="contactNormal is unit vector describing normal between two colliding bodies." />
'

JSON "@contactNormal": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
depth
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="depth" type="SFFloat" accessType="inputOutput" default="0" description="depth indicates how deep the current intersection is along normal vector." />
'

JSON "@depth": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
frictionCoefficients
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frictionCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" minInclusive="0" description="frictionCoefficients used for computing surface drag." />
'

JSON "@frictionCoefficients": {
  "minimum": 0,
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
frictionDirection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frictionDirection" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="frictionDirection controls friction vector." />
'

JSON "@frictionDirection": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
geometry1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry1 and geometry2 fields specify collision-related information about body1 and body2." />
'

JSON "-geometry1": {
  "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
}
geometry2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry1 and geometry2 fields specify collision-related information about body1 and body2." />
'

JSON "-geometry2": {
  "$ref": "#/$defs/-X3DNBodyCollidableNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minBounceSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minBounceSpeed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="minBounceSpeed m/s needed to bounce." />
'

JSON "@minBounceSpeed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position (x, y, z in meters) of exact location of collision." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
slipCoefficients
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="slipCoefficients" type="SFVec2f" accessType="inputOutput" default="0 0" description="slipCoefficients used for computing surface drag." />
'

JSON "@slipCoefficients": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
softnessConstantForceMix
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="softnessConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" minInclusive="0" maxInclusive="1" description="softnessConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
'

JSON "@softnessConstantForceMix": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.0001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
softnessErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="softnessErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="softnessErrorCorrection indicates fraction of collision error fixed in a set of evaluations (0 = no error correction, 1 = all errors corrected in single step)." />
'

JSON "@softnessErrorCorrection": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceSpeed" type="SFVec2f" accessType="inputOutput" default="0 0" description="surfaceSpeed defines speed vectors for computing surface drag, if contact surfaces move independently of bodies." />
'

JSON "@surfaceSpeed": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Contour2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Contour2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#Contour2D" appinfo="Contour2D groups a set of curve segments into a composite contour.">
<componentInfo name="NURBS" level="4" />
<Inheritance baseType="X3DNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="NurbsCurve2D|ContourPolyline2D" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="NurbsCurve2D|ContourPolyline2D" description="The children form a closed loop with first point of first child repeated as last point of last child, and the last point of a segment repeated as first point of the consecutive one." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="NurbsCurve2D|ContourPolyline2D" />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="trimmingContour" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NurbsCurve2D" />
<NodeContentModel name="ContourPolyline2D" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Contour2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-children": {
          "$ref": "#/$defs/-NurbsCurve2D-ContourPolyline2DMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="NurbsCurve2D|ContourPolyline2D" description="The children form a closed loop with first point of first child repeated as last point of last child, and the last point of a segment repeated as first point of the consecutive one." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="NurbsCurve2D|ContourPolyline2D" description="The children form a closed loop with first point of first child repeated as last point of last child, and the last point of a segment repeated as first point of the consecutive one." />
'

JSON "-children": {
  "$ref": "#/$defs/-NurbsCurve2D-ContourPolyline2DMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ContourPolyline2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ContourPolyline2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#ContourPolyline2D" appinfo="ContourPolyline2D defines a linear curve segment as part of a trimming contour in the u-v domain of a NURBS surface.">
<componentInfo name="NURBS" level="3" />
<Inheritance baseType="X3DNurbsControlCurveNode" />
<field name="controlPoint" type="MFVec2d" accessType="inputOutput" inheritedFrom="X3DNurbsControlCurveNode" description="controlPoint specifies the end points of each segment of the piecewise linear curve." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ContourPolyline2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@controlPoint": {
          "$comment": "MFVec2d inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="MFVec2d" accessType="inputOutput" inheritedFrom="X3DNurbsControlCurveNode" description="controlPoint specifies the end points of each segment of the piecewise linear curve." />
'

JSON "@controlPoint": {
  "$comment": "MFVec2d inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Convolver
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Convolver">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Convolver" appinfo="Convolver performs a linear convolution on a given AudioBuffer, often used to achieve a reverberation effect.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="buffer" type="MFFloat" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="buffer is a memory-resident audio asset that can contain one or more channels." />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalize" type="SFBool" accessType="inputOutput" default="false" description="normalize controls whether or not the impulse response from the buffer is scaled by an equal-power normalization when the buffer field is set." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Convolver": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@buffer": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 1,
            "minimum": -1,
            "type": "number"
          }
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalize": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
buffer
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="buffer" type="MFFloat" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="buffer is a memory-resident audio asset that can contain one or more channels." />
'

JSON "@buffer": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 1,
    "minimum": -1,
    "type": "number"
  }
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalize" type="SFBool" accessType="inputOutput" default="false" description="normalize controls whether or not the impulse response from the buffer is scaled by an equal-power normalization when the buffer field is set." />
'

JSON "@normalize": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Coordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Coordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#Coordinate" appinfo="Coordinate builds geometry by defining a set of 3D coordinate (triplet) point values.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec3f" accessType="inputOutput" description="point contains a set of 3D coordinate (triplet) point values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="coord" type="containerFieldChoicesX3DCoordinateNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Coordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec3f" accessType="inputOutput" description="point contains a set of 3D coordinate (triplet) point values." />
'

JSON "@point": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CoordinateChaser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CoordinateChaser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#CoordinateChaser" appinfo="CoordinateChaser generates a series of coordinate arrays that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="MFVec3f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="MFVec3f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="MFVec3f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CoordinateChaser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "$comment": "MFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "MFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "MFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "MFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CoordinateDamper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CoordinateDamper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#CoordinateDamper" appinfo="CoordinateDamper generates a series of coordinate arrays that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="MFVec3f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="MFVec3f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="MFVec3f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CoordinateDamper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "$comment": "MFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "MFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "MFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="MFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "MFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CoordinateDouble
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CoordinateDouble">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#CoordinateDouble" appinfo="CoordinateDouble builds geometry by defining a set of 3D coordinate (triplet) point values.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec3d" accessType="inputOutput" description="point contains a set of 3D coordinate (triplet) point values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="coord" type="containerFieldChoicesX3DCoordinateNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CoordinateDouble": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec3d" accessType="inputOutput" description="point contains a set of 3D coordinate (triplet) point values." />
'

JSON "@point": {
  "$comment": "MFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CoordinateInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CoordinateInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#CoordinateInterpolator" appinfo="CoordinateInterpolator linearly interpolates among a list of 3-tuple MFVec3f arrays, producing a single MFVec3f array that is fractional average between two nearest arrays in the list.">
<componentInfo name="Interpolation" level="1" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="MFVec3f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CoordinateInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CoordinateInterpolator2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CoordinateInterpolator2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#CoordinateInterpolator2D" appinfo="CoordinateInterpolator2D generates a series of SFVec2f or MFVec2f 2-tuple float values.">
<componentInfo name="Interpolation" level="3" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="MFVec2f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CoordinateInterpolator2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Cylinder
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Cylinder">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#Cylinder" appinfo="Cylinder is a geometry node.">
<componentInfo name="Geometry3D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="bottom" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw bottom (inside faces are never drawn)." />
<field name="height" type="SFFloat" accessType="initializeOnly" default="2" minExclusive="0" description="Size in meters." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
<field name="side" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw sides (inside faces are never drawn)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="top" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw top (inside faces are never drawn)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Cylinder": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bottom": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@height": {
          "exclusiveMinimum": 0,
          "default": 2,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@radius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@side": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@top": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bottom
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottom" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw bottom (inside faces are never drawn)." />
'

JSON "@bottom": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
height
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="height" type="SFFloat" accessType="initializeOnly" default="2" minExclusive="0" description="Size in meters." />
'

JSON "@height": {
  "exclusiveMinimum": 0,
  "default": 2,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
'

JSON "@radius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
side
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="side" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw sides (inside faces are never drawn)." />
'

JSON "@side": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
top
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="top" type="SFBool" accessType="inputOutput" default="true" description="Whether to draw top (inside faces are never drawn)." />
'

JSON "@top": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
CylinderSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="CylinderSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#CylinderSensor" appinfo="CylinderSensor converts pointer motion (for example, a mouse or wand) into rotation values using an invisible cylinder aligned with local Y-axis.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DDragSensorNode" />
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="determines whether previous offset values are remembered/accumulated." />
<field name="axisRotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="axisRotation determines local sensor coordinate system by rotating the local coordinate system." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="diskAngle" type="SFFloat" accessType="inputOutput" default="0.26179167" minInclusive="0" maxInclusive="1.5708" description="Help decide rotation behavior from initial relative bearing of pointer drag: acute angle whether cylinder sides or end-cap disks of virtual-geometry sensor are used for manipulation." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" description="Hover over geometry by aiming the mouse (or pointing device) to generate isOver events." />
<field name="maxAngle" type="SFFloat" accessType="inputOutput" default="-1" minExclusive="-6.2832" maxExclusive="6.2832" description="clamps rotation_changed events within range of min/max values Hint: if minAngle &gt; maxAngle, rotation is not clamped." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minAngle" type="SFFloat" accessType="inputOutput" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="clamps rotation_changed events within range of min/max values Hint: if minAngle &gt; maxAngle, rotation is not clamped." />
<field name="offset" type="SFFloat" accessType="inputOutput" default="0" description="Sends event and remembers last value sensed." />
<field name="rotation_changed" type="SFRotation" accessType="outputOnly" description="rotation_changed events equal sum of relative bearing changes plus offset value about Y-axis in local coordinate system." />
<field name="trackPoint_changed" type="SFVec3f" accessType="outputOnly" inheritedFrom="X3DDragSensorNode" description="trackPoint_changed events give intersection point of bearing with sensor's virtual geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "CylinderSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoOffset": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@axisRotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@diskAngle": {
          "maximum": 1.5708,
          "minimum": 0,
          "default": 0.26179167,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@maxAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minAngle": {
          "exclusiveMaximum": 6.2832,
          "exclusiveMinimum": -6.2832,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@offset": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoOffset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="determines whether previous offset values are remembered/accumulated." />
'

JSON "@autoOffset": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
axisRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axisRotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="axisRotation determines local sensor coordinate system by rotating the local coordinate system." />
'

JSON "@axisRotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
diskAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diskAngle" type="SFFloat" accessType="inputOutput" default="0.26179167" minInclusive="0" maxInclusive="1.5708" description="Help decide rotation behavior from initial relative bearing of pointer drag: acute angle whether cylinder sides or end-cap disks of virtual-geometry sensor are used for manipulation." />
'

JSON "@diskAngle": {
  "maximum": 1.5708,
  "minimum": 0,
  "default": 0.26179167,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxAngle" type="SFFloat" accessType="inputOutput" default="-1" minExclusive="-6.2832" maxExclusive="6.2832" description="clamps rotation_changed events within range of min/max values Hint: if minAngle &gt; maxAngle, rotation is not clamped." />
'

JSON "@maxAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minAngle" type="SFFloat" accessType="inputOutput" default="0" minExclusive="-6.2832" maxExclusive="6.2832" description="clamps rotation_changed events within range of min/max values Hint: if minAngle &gt; maxAngle, rotation is not clamped." />
'

JSON "@minAngle": {
  "exclusiveMaximum": 6.2832,
  "exclusiveMinimum": -6.2832,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
offset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="offset" type="SFFloat" accessType="inputOutput" default="0" description="Sends event and remembers last value sensed." />
'

JSON "@offset": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Delay
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Delay">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Delay" appinfo="Delay causes a time delay between the arrival of input data and subsequent propagation to the output.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="delayTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="delayTime is duration of delay (in seconds) to apply." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="maxDelayTime" type="SFTime" accessType="inputOutput" default="1" minInclusive="0" description="maxDelayTime is duration of maximum amount of delay (in seconds) that can be applied." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Delay": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@delayTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxDelayTime": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
delayTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="delayTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="delayTime is duration of delay (in seconds) to apply." />
'

JSON "@delayTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxDelayTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxDelayTime" type="SFTime" accessType="inputOutput" default="1" minInclusive="0" description="maxDelayTime is duration of maximum amount of delay (in seconds) that can be applied." />
'

JSON "@maxDelayTime": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DirectionalLight
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="DirectionalLight">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html#DirectionalLight" appinfo="DirectionalLight might not be scoped by parent Group or Transform at levels 1 or 2.">
<componentInfo name="Lighting" level="1" />
<Inheritance baseType="X3DLightNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 -1" description="Orientation vector of light relative to local coordinate system." />
<field name="global" type="SFBool" accessType="inputOutput" default="false" description="Global lights illuminate all objects within their volume of lighting influence." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "DirectionalLight": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@global": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@shadowIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 -1" description="Orientation vector of light relative to local coordinate system." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    }
  ],
  "items": false
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="false" description="Global lights illuminate all objects within their volume of lighting influence." />
'

JSON "@global": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
'

JSON "@intensity": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
shadowIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
'

JSON "@shadowIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DISEntityManager
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="DISEntityManager">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#DISEntityManager" appinfo="DISEntityManager notifies a scene when new DIS ESPDU entities arrive or current entities leave.">
<componentInfo name="DIS" level="2" />
<Inheritance baseType="X3DChildNode" />
<field name="addedEntities" type="MFNode" accessType="outputOnly" acceptableNodeTypes="EspduTransform" description="addedEntities array contains any new entities added during the last frame." />
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
<field name="children" synonym="mapping" type="MFNode" accessType="inputOutput" acceptableNodeTypes="DISEntityTypeMapping" description="mapping field provides a mechanism for automatically creating an X3D model when a new entity arrives over the network." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
<field name="removedEntities" type="MFNode" accessType="outputOnly" acceptableNodeTypes="EspduTransform" description="removedEntities output array provides EspduTransform references to any entities removed during last frame, either due to a timeout or from an explicit RemoveEntityPDU action." />
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesDISEntityTypeMapping" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="DISEntityTypeMapping" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "DISEntityManager": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@address": {
          "default": "localhost",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@applicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-children": {
          "$ref": "#/$defs/-DISEntityTypeMappingMFNode"
        },
        "-mapping": {
          "$ref": "#/$defs/-DISEntityTypeMappingMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@port": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@siteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
address
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
'

JSON "@address": {
  "default": "localhost",
  "$comment": "SFString inputOutput",
  "type": "string"
}
applicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
'

JSON "@applicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" synonym="mapping" type="MFNode" accessType="inputOutput" acceptableNodeTypes="DISEntityTypeMapping" description="mapping field provides a mechanism for automatically creating an X3D model when a new entity arrives over the network." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" synonym="mapping" type="MFNode" accessType="inputOutput" acceptableNodeTypes="DISEntityTypeMapping" description="mapping field provides a mechanism for automatically creating an X3D model when a new entity arrives over the network." />
'

JSON "-children": {
  "$ref": "#/$defs/-DISEntityTypeMappingMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
port
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
'

JSON "@port": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
siteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@siteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DISEntityTypeMapping
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="DISEntityTypeMapping">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#DISEntityTypeMapping" appinfo="DISEntityTypeMapping provides a best-match mapping from DIS ESPDU entity type information to a specific X3D model, thus providing a visual and behavioral representation that best matches the entity type.">
<componentInfo name="DIS" level="2" />
<Inheritance baseType="X3DInfoNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="category" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for main category that describes the entity, semantics of each code varies according to domain." />
<field name="country" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="65535" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="domain" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
<field name="extra" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Any extra information required to describe a particular entity." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="kind" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="specific" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Specific information about an entity based on the subcategory field." />
<field name="subcategory" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for particular subcategory to which an entity belongs based on the category field." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Local and/or online addresses of X3D model of interest, for example: &quot;ExtrusionExampleShip.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesDISEntityTypeMapping" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "DISEntityTypeMapping": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@category": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@country": {
          "maximum": 65535,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@domain": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@extra": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@kind": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@specific": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@subcategory": {
          "maximum": 255,
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
category
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="category" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for main category that describes the entity, semantics of each code varies according to domain." />
'

JSON "@category": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
country
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="country" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="65535" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
'

JSON "@country": {
  "maximum": 65535,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
domain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="domain" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
'

JSON "@domain": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
extra
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="extra" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Any extra information required to describe a particular entity." />
'

JSON "@extra": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
kind
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="kind" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
'

JSON "@kind": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
specific
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specific" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Specific information about an entity based on the subcategory field." />
'

JSON "@specific": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
subcategory
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="subcategory" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" maxInclusive="255" description="Integer enumerations value for particular subcategory to which an entity belongs based on the category field." />
'

JSON "@subcategory": {
  "maximum": 255,
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Local and/or online addresses of X3D model of interest, for example: &quot;ExtrusionExampleShip.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Disk2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Disk2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Disk2D" appinfo="Disk2D is a geometry node that defines a filled (or partially filled) planar circle with center (0,0).">
<componentInfo name="Geometry2D" level="2" />
<Inheritance baseType="X3DGeometryNode" />
<field name="innerRadius" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="Inner circle radius, greater than or equal to 0." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="outerRadius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Outer radius of circle, greater than or equal to inner radius." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Disk2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@innerRadius": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@outerRadius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@solid": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
innerRadius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="innerRadius" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="Inner circle radius, greater than or equal to 0." />
'

JSON "@innerRadius": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
outerRadius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="outerRadius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Outer radius of circle, greater than or equal to inner radius." />
'

JSON "@outerRadius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DoubleAxisHingeJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="DoubleAxisHingeJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#DoubleAxisHingeJoint" appinfo="DoubleAxisHingeJoint has two independent axes located around a common anchor point.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
<field name="axis1" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="axis1 defines axis vector of joint connection to body1." />
<field name="axis2" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis2 defines axis vector of joint connection to body2." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body1AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body1AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body1Axis" type="SFVec3f" accessType="outputOnly" description="body1Axis describes report the current location of the anchor point relative to the corresponding body." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body2AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body2Axis" type="SFVec3f" accessType="outputOnly" description="body1Axis describes report the current location of the anchor point relative to the corresponding body." />
<field name="desiredAngularVelocity1" type="SFFloat" accessType="inputOutput" default="0" description="desiredAngularVelocity1 is goal rotation rate for hinge connection to body1." />
<field name="desiredAngularVelocity2" type="SFFloat" accessType="inputOutput" default="0" description="desiredAngularVelocity2 is goal rotation rate for hinge connection to body2." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="hinge1Angle" type="SFFloat" accessType="outputOnly" />
<field name="hinge1AngleRate" type="SFFloat" accessType="outputOnly" />
<field name="hinge2Angle" type="SFFloat" accessType="outputOnly" />
<field name="hinge2AngleRate" type="SFFloat" accessType="outputOnly" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="maxAngle1" type="SFFloat" accessType="inputOutput" default="3.141592653" description="maxAngle1 is maximum rotation angle for hinge." />
<field name="maxTorque1" type="SFFloat" accessType="inputOutput" default="0" description="maxTorque1 is maximum rotational torque applied by corresponding motor axis to achieve desiredAngularVelocity1." />
<field name="maxTorque2" type="SFFloat" accessType="inputOutput" default="0" description="maxTorque2 is maximum rotational torque applied by corresponding motor axis to achieve desiredAngularVelocity2." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minAngle1" type="SFFloat" accessType="inputOutput" default="-3.141592653" description="minAngle1 is minimum rotation angle for hinge." />
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop1ConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.001" description="stop1ConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="suspensionErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="suspensionErrorCorrection describes how quickly the system resolves intersection errors due to floating-point inaccuracies." />
<field name="suspensionForce" type="SFFloat" accessType="inputOutput" default="0" description="suspensionForce describes how quickly the system resolves intersection errors due to floating-point inaccuracies." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "DoubleAxisHingeJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@anchorPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@axis1": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@axis2": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@desiredAngularVelocity1": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@desiredAngularVelocity2": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "@maxAngle1": {
          "default": 3.141592653,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxTorque1": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxTorque2": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minAngle1": {
          "default": -3.141592653,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop1Bounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop1ConstantForceMix": {
          "default": 0.001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop1ErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@suspensionErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@suspensionForce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
anchorPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
'

JSON "@anchorPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
axis1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis1" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="axis1 defines axis vector of joint connection to body1." />
'

JSON "@axis1": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
axis2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis2" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis2 defines axis vector of joint connection to body2." />
'

JSON "@axis2": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
desiredAngularVelocity1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="desiredAngularVelocity1" type="SFFloat" accessType="inputOutput" default="0" description="desiredAngularVelocity1 is goal rotation rate for hinge connection to body1." />
'

JSON "@desiredAngularVelocity1": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
desiredAngularVelocity2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="desiredAngularVelocity2" type="SFFloat" accessType="inputOutput" default="0" description="desiredAngularVelocity2 is goal rotation rate for hinge connection to body2." />
'

JSON "@desiredAngularVelocity2": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxAngle1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxAngle1" type="SFFloat" accessType="inputOutput" default="3.141592653" description="maxAngle1 is maximum rotation angle for hinge." />
'

JSON "@maxAngle1": {
  "default": 3.141592653,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
maxTorque1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxTorque1" type="SFFloat" accessType="inputOutput" default="0" description="maxTorque1 is maximum rotational torque applied by corresponding motor axis to achieve desiredAngularVelocity1." />
'

JSON "@maxTorque1": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
maxTorque2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxTorque2" type="SFFloat" accessType="inputOutput" default="0" description="maxTorque2 is maximum rotational torque applied by corresponding motor axis to achieve desiredAngularVelocity2." />
'

JSON "@maxTorque2": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minAngle1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minAngle1" type="SFFloat" accessType="inputOutput" default="-3.141592653" description="minAngle1 is minimum rotation angle for hinge." />
'

JSON "@minAngle1": {
  "default": -3.141592653,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop1Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop1Bounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop1ConstantForceMix
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1ConstantForceMix" type="SFFloat" accessType="inputOutput" default="0.001" description="stop1ConstantForceMix value applies a constant force value to make colliding surfaces appear to be somewhat soft." />
'

JSON "@stop1ConstantForceMix": {
  "default": 0.001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop1ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop1ErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
suspensionErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="suspensionErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="suspensionErrorCorrection describes how quickly the system resolves intersection errors due to floating-point inaccuracies." />
'

JSON "@suspensionErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
suspensionForce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="suspensionForce" type="SFFloat" accessType="inputOutput" default="0" description="suspensionForce describes how quickly the system resolves intersection errors due to floating-point inaccuracies." />
'

JSON "@suspensionForce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DynamicsCompressor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="DynamicsCompressor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#DynamicsCompressor" appinfo="DynamicsCompressor node implements a dynamics compression effect, lowering volume of loudest parts of signal and raising volume of softest parts.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="attack" type="SFTime" accessType="inputOutput" default="0.003" minInclusive="0" description="The attack field is the duration of time (in seconds) to reduce the gain by 10dB." />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="knee" type="SFFloat" accessType="inputOutput" default="30" minInclusive="0" description="knee field contains a decibel value representing range above threshold where the curve smoothly transitions to compressed portion." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="ratio" type="SFFloat" accessType="inputOutput" default="12" minInclusive="1" maxInclusive="20" description="ratio field represents amount of input change, in dB, needed for 1 dB change in output." />
<field name="reduction" type="SFFloat" accessType="outputOnly" maxInclusive="0" description="reduction field provides amount of gain reduction in dB currently applied by compressor to signal." />
<field name="release" type="SFTime" accessType="inputOutput" default="0.25" minInclusive="0" description="release field represents amount of time (in seconds) to increase gain by 10dB." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="threshold" type="SFFloat" accessType="inputOutput" default="-24" minInclusive="-100" maxInclusive="0" description="threshold field represents decibel value above which compression starts taking effect." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "DynamicsCompressor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@attack": {
          "minimum": 0,
          "default": 0.003,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@knee": {
          "minimum": 0,
          "default": 30,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@ratio": {
          "maximum": 20,
          "minimum": 1,
          "default": 12,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@release": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@threshold": {
          "maximum": 0,
          "minimum": -100,
          "default": -24,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attack
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attack" type="SFTime" accessType="inputOutput" default="0.003" minInclusive="0" description="The attack field is the duration of time (in seconds) to reduce the gain by 10dB." />
'

JSON "@attack": {
  "minimum": 0,
  "default": 0.003,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
knee
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="knee" type="SFFloat" accessType="inputOutput" default="30" minInclusive="0" description="knee field contains a decibel value representing range above threshold where the curve smoothly transitions to compressed portion." />
'

JSON "@knee": {
  "minimum": 0,
  "default": 30,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
ratio
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ratio" type="SFFloat" accessType="inputOutput" default="12" minInclusive="1" maxInclusive="20" description="ratio field represents amount of input change, in dB, needed for 1 dB change in output." />
'

JSON "@ratio": {
  "maximum": 20,
  "minimum": 1,
  "default": 12,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
release
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="release" type="SFTime" accessType="inputOutput" default="0.25" minInclusive="0" description="release field represents amount of time (in seconds) to increase gain by 10dB." />
'

JSON "@release": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
threshold
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="threshold" type="SFFloat" accessType="inputOutput" default="-24" minInclusive="-100" maxInclusive="0" description="threshold field represents decibel value above which compression starts taking effect." />
'

JSON "@threshold": {
  "maximum": 0,
  "minimum": -100,
  "default": -24,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
EaseInEaseOut
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="EaseInEaseOut">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#EaseInEaseOut" appinfo="EaseInEaseOut enables gradual animation transitions by modifying TimeSensor fraction outputs.">
<componentInfo name="Interpolation" level="4" />
<Inheritance baseType="X3DChildNode" />
<field name="easeInEaseOut" type="MFVec2f" accessType="inputOutput" description="Array of paired values for easeOut fraction and easeIn fraction within each key interval." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to easeInEaseOut array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="modifiedFraction_changed" type="SFFloat" accessType="outputOnly" description="Interpolated output value determined by current key time, corresponding easeInEaseOut smoothing intervals, and corresponding key pair." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" description="set_fraction selects input fraction for computation of corresponding easeInEaseOut output value, modifiedFraction_changed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "EaseInEaseOut": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@easeInEaseOut": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
easeInEaseOut
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="easeInEaseOut" type="MFVec2f" accessType="inputOutput" description="Array of paired values for easeOut fraction and easeIn fraction within each key interval." />
'

JSON "@easeInEaseOut": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to easeInEaseOut array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
EdgeEnhancementVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="EdgeEnhancementVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#EdgeEnhancementVolumeStyle" appinfo="EdgeEnhancementVolumeStyle specifies edge enhancement for the volume rendering style.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="edgeColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 1" minInclusive="0" maxInclusive="1" description="color used to highlight edges." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="gradientThreshold" type="SFFloat" accessType="inputOutput" default="0.4" minInclusive="0" maxInclusive="3.1416" description="minimum angle (in radians) away from view-direction vector for surface normal before applying enhancement." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "EdgeEnhancementVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@edgeColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gradientThreshold": {
          "maximum": 3.1416,
          "minimum": 0,
          "default": 0.4,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-surfaceNormals": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
edgeColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="edgeColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 1" minInclusive="0" maxInclusive="1" description="color used to highlight edges." />
'

JSON "@edgeColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gradientThreshold
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gradientThreshold" type="SFFloat" accessType="inputOutput" default="0.4" minInclusive="0" maxInclusive="3.1416" description="minimum angle (in radians) away from view-direction vector for surface normal before applying enhancement." />
'

JSON "@gradientThreshold": {
  "maximum": 3.1416,
  "minimum": 0,
  "default": 0.4,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
surfaceNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
'

JSON "-surfaceNormals": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ElevationGrid
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ElevationGrid">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#ElevationGrid" appinfo="ElevationGrid is a geometry node defining a rectangular height field, with default values for a 1m by 1m square at height 0.">
<componentInfo name="Geometry3D" level="3" />
<Inheritance baseType="X3DGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR).">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorPerVertex field." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per quadrilateral (false)." />
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="height" type="MFFloat" accessType="initializeOnly" description="Grid array of height vertices with upward direction along +Y axis, with xDimension rows and zDimension columns." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Normal node vector values are applied to each point vertex (true) or per quadrilateral (false)." />
<field name="set_height" type="MFFloat" accessType="inputOnly" description="Grid array of height vertices with upward direction along +Y axis, with xDimension rows and zDimension columns." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="xDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along X direction." />
<field name="xSpacing" type="SFFloat" accessType="initializeOnly" default="1.0" minExclusive="0" description="Meters distance between grid-array vertices along X direction." />
<field name="zDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along Z direction." />
<field name="zSpacing" type="SFFloat" accessType="initializeOnly" default="1.0" minExclusive="0" description="Meters distance between grid-array vertices along Z direction." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="FloatVertexAttribute" />
<NodeContentModel name="Matrix3VertexAttribute" />
<NodeContentModel name="Matrix4VertexAttribute" />
<NodeContentModel name="Color" />
<NodeContentModel name="ColorRGBA" />
<NodeContentModel name="FogCoordinate" />
<NodeContentModel name="Normal" />
<NodeContentModel name="TextureCoordinate" />
<NodeContentModel name="TextureCoordinate3D" />
<NodeContentModel name="TextureCoordinate4D" />
<NodeContentModel name="TextureCoordinateGenerator" />
<NodeContentModel name="MultiTextureCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ElevationGrid": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@creaseAngle": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "@height": {
          "$comment": "MFFloat initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeSFNode"
        },
        "@xDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@xSpacing": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@zDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@zSpacing": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR).">
<componentInfo name="Geometry3D" level="4" />
</field>
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorPerVertex field." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per quadrilateral (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
creaseAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading." />
'

JSON "@creaseAngle": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
height
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="height" type="MFFloat" accessType="initializeOnly" description="Grid array of height vertices with upward direction along +Y axis, with xDimension rows and zDimension columns." />
'

JSON "@height": {
  "$comment": "MFFloat initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Normal node vector values are applied to each point vertex (true) or per quadrilateral (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeSFNode"
}
xDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="xDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along X direction." />
'

JSON "@xDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
xSpacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="xSpacing" type="SFFloat" accessType="initializeOnly" default="1.0" minExclusive="0" description="Meters distance between grid-array vertices along X direction." />
'

JSON "@xSpacing": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
zDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="zDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along Z direction." />
'

JSON "@zDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
zSpacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="zSpacing" type="SFFloat" accessType="initializeOnly" default="1.0" minExclusive="0" description="Meters distance between grid-array vertices along Z direction." />
'

JSON "@zSpacing": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
EspduTransform
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="EspduTransform">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#EspduTransform" appinfo="EspduTransform is a networked Transform node that can contain most nodes.">
<componentInfo name="DIS" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<AdditionalInheritance baseType="X3DNetworkSensorNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'; Example: 224." />
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise applicationID is unique for application at that site." />
<field name="articulationParameterArray" type="MFFloat" accessType="inputOutput" description="Information required for representation of the entity's visual appearance and position of its articulated parts." />
<field name="articulationParameterChangeIndicatorArray" type="MFInt32" accessType="inputOutput" description="Array of change counters, each incremented when an articulated parameter is updated." />
<field name="articulationParameterCount" type="SFInt32" accessType="inputOutput" default="0" description="Number of articulated parameters attached to this entity state PDU." />
<field name="articulationParameterDesignatorArray" type="MFInt32" accessType="inputOutput" description="Array of designators for each articulated parameter." />
<field name="articulationParameterIdPartAttachedToArray" type="MFInt32" accessType="inputOutput" description="Array of ID parts that each articulated parameter is attached to." />
<field name="articulationParameterTypeArray" type="MFInt32" accessType="inputOutput" description="Array of type enumerations for each articulated parameter element." />
<field name="articulationParameterValue0_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue1_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue2_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue3_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue4_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue5_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue6_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="articulationParameterValue7_changed" type="SFFloat" accessType="outputOnly" description="Get element of user-defined payload array." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="collideTime" type="SFTime" accessType="outputOnly" description="When were we collided with? Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="collisionType" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration for type of collision: ELASTIC or INELASTIC." />
<field name="deadReckoning" type="SFInt32" accessType="inputOutput" default="0" description="Dead reckoning algorithm being used to project position/orientation with velocities/accelerations." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
<field name="detonateTime" type="SFTime" accessType="outputOnly" description="When were we detonated?." />
<field name="detonationLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="World coordinates for detonationLocation." />
<field name="detonationRelativeLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Relative coordinates for detonation location." />
<field name="detonationResult" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration for type of detonation and result that occurred." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables the sensor node." />
<field name="entityCategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for main category that describes the entity, semantics of each code varies according to domain." />
<field name="entityCountry" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
<field name="entityDomain" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
<field name="entityExtra" type="SFInt32" accessType="inputOutput" default="0" description="Any extra information required to describe a particular entity." />
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise entityID is a unique ID for a single entity within that application." />
<field name="entityKind" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
<field name="entitySpecific" type="SFInt32" accessType="inputOutput" default="0" description="Specific information about an entity based on the Subcategory field." />
<field name="entitySubcategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for particular subcategory to which an entity belongs based on the category field." />
<field name="eventApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise eventApplicationID is unique for events generated from application at that site." />
<field name="eventEntityID" type="SFInt32" accessType="inputOutput" default="0" description="For a given event, simulation/exercise entityID is a unique ID for a single entity within that application." />
<field name="eventNumber" type="SFInt32" accessType="inputOutput" default="0" description="Sequential number of each event issued by an application." />
<field name="eventSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="fired1" type="SFBool" accessType="inputOutput" default="false" description="Has the primary weapon (Fire PDU) been fired?." />
<field name="fired2" type="SFBool" accessType="inputOutput" default="false" description="Has the secondary weapon (Fire PDU) been fired?." />
<field name="firedTime" type="SFTime" accessType="outputOnly" description="When did we shoot a weapon (Fire PDU)? Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="fireMissionIndex" type="SFInt32" accessType="inputOutput" default="0" description="." />
<field name="firingRange" type="SFFloat" accessType="inputOutput" default="0" description="Range (three dimension, straight-line distance) that the firing entity's fire control system has assumed for computing the fire control solution if a weapon and if the value is known." />
<field name="firingRate" type="SFInt32" accessType="inputOutput" default="0" description="Rate at which munitions are fired." />
<field name="forceID" type="SFInt32" accessType="inputOutput" default="0" description="forceID determines the team membership of the issuing entity, and whether FRIENDLY OPPOSING or NEUTRAL or OTHER." />
<field name="fuse" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for type of fuse on the munition." />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" description="Have we received a network update recently? Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isCollided" type="SFBool" accessType="outputOnly" description="Has a matching CollisionPDU reported a collision? Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isDetonated" type="SFBool" accessType="outputOnly" description="Has a matching DetonationPDU reported a detonation? Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isNetworkReader" type="SFBool" accessType="outputOnly" description="Whether networkMode='remote' (listen to network as copy of remote entity)." />
<field name="isNetworkWriter" type="SFBool" accessType="outputOnly" description="Whether networkMode='master' (output to network as master entity at writeInterval)." />
<field name="isRtpHeaderHeard" type="SFBool" accessType="outputOnly" description="Whether incoming DIS packets have an RTP header prepended." />
<field name="isStandAlone" type="SFBool" accessType="outputOnly" description="Whether networkMode='local' (ignore network but still respond to local events)." />
<field name="linearAcceleration" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Acceleration of the entity relative to the rotating Earth in either world or entity coordinates, depending on the dead reckoning algorithm used." />
<field name="linearVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Velocity of the entity relative to the rotating Earth in either world or entity coordinates, depending on the dead reckoning algorithm used." />
<field name="marking" type="SFString" accessType="inputOutput" description="Maximum of 11 characters for simple entity label." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
<field name="munitionApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="munitionApplicationID, unique for application at that site." />
<field name="munitionEndPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Final point of the munition path from firing weapon to detonation or impact, in exercise coordinates." />
<field name="munitionEntityID" type="SFInt32" accessType="inputOutput" default="0" description="munitionEntityID is unique ID for entity firing munition within that application." />
<field name="munitionQuantity" type="SFInt32" accessType="inputOutput" default="0" description="Quantity of munitions fired." />
<field name="munitionSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Munition siteID of the participating LAN or organization." />
<field name="munitionStartPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Initial point of the munition path from firing weapon to detonation or impact, in exercise coordinates." />
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Network connection port number (EXAMPLE 3000) for sending or receiving DIS messages." />
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system, usually read from (or written to) remote, networked EspduTransform nodes." />
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="set_articulationParameterValue0" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue1" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue2" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue3" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue4" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue5" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue6" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="set_articulationParameterValue7" type="SFFloat" accessType="inputOnly" description="Set element of user-defined payload array." />
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="timestamp" type="SFTime" accessType="outputOnly" minInclusive="0" description="DIS timestamp received from latest PDU update, converted to X3D SFTime units." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system, usually read from (or written to) remote, networked EspduTransform nodes." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="warhead" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for type of warhead on the munition." />
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "EspduTransform": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@address": {
          "default": "localhost",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@applicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@articulationParameterArray": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@articulationParameterChangeIndicatorArray": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@articulationParameterCount": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@articulationParameterDesignatorArray": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@articulationParameterIdPartAttachedToArray": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@articulationParameterTypeArray": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@collisionType": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@deadReckoning": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@detonationLocation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@detonationRelativeLocation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@detonationResult": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@entityCategory": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityCountry": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityDomain": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityExtra": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityKind": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entitySpecific": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entitySubcategory": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@eventApplicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@eventEntityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@eventNumber": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@eventSiteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@fired1": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@fired2": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@fireMissionIndex": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@firingRange": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@firingRate": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@forceID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@fuse": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "@linearAcceleration": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@linearVelocity": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@marking": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@multicastRelayHost": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@multicastRelayPort": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@munitionApplicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@munitionEndPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@munitionEntityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@munitionQuantity": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@munitionSiteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@munitionStartPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@networkMode": {
          "enum": [
            "standAlone",
            "networkReader",
            "networkWriter"
          ],
          "default": "standAlone",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@port": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@readInterval": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@rtpHeaderExpected": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@scale": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@siteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@warhead": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@writeInterval": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
address
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'; Example: 224." />
'

JSON "@address": {
  "default": "localhost",
  "$comment": "SFString inputOutput",
  "type": "string"
}
applicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise applicationID is unique for application at that site." />
'

JSON "@applicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
articulationParameterArray
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterArray" type="MFFloat" accessType="inputOutput" description="Information required for representation of the entity's visual appearance and position of its articulated parts." />
'

JSON "@articulationParameterArray": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
articulationParameterChangeIndicatorArray
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterChangeIndicatorArray" type="MFInt32" accessType="inputOutput" description="Array of change counters, each incremented when an articulated parameter is updated." />
'

JSON "@articulationParameterChangeIndicatorArray": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
articulationParameterCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterCount" type="SFInt32" accessType="inputOutput" default="0" description="Number of articulated parameters attached to this entity state PDU." />
'

JSON "@articulationParameterCount": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
articulationParameterDesignatorArray
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterDesignatorArray" type="MFInt32" accessType="inputOutput" description="Array of designators for each articulated parameter." />
'

JSON "@articulationParameterDesignatorArray": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
articulationParameterIdPartAttachedToArray
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterIdPartAttachedToArray" type="MFInt32" accessType="inputOutput" description="Array of ID parts that each articulated parameter is attached to." />
'

JSON "@articulationParameterIdPartAttachedToArray": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
articulationParameterTypeArray
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="articulationParameterTypeArray" type="MFInt32" accessType="inputOutput" description="Array of type enumerations for each articulated parameter element." />
'

JSON "@articulationParameterTypeArray": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
collisionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collisionType" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration for type of collision: ELASTIC or INELASTIC." />
'

JSON "@collisionType": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
deadReckoning
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="deadReckoning" type="SFInt32" accessType="inputOutput" default="0" description="Dead reckoning algorithm being used to project position/orientation with velocities/accelerations." />
'

JSON "@deadReckoning": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
detonationLocation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detonationLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="World coordinates for detonationLocation." />
'

JSON "@detonationLocation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
detonationRelativeLocation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detonationRelativeLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Relative coordinates for detonation location." />
'

JSON "@detonationRelativeLocation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
detonationResult
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detonationResult" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration for type of detonation and result that occurred." />
'

JSON "@detonationResult": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables the sensor node." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
entityCategory
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityCategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for main category that describes the entity, semantics of each code varies according to domain." />
'

JSON "@entityCategory": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityCountry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityCountry" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
'

JSON "@entityCountry": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityDomain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityDomain" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
'

JSON "@entityDomain": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityExtra
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityExtra" type="SFInt32" accessType="inputOutput" default="0" description="Any extra information required to describe a particular entity." />
'

JSON "@entityExtra": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise entityID is a unique ID for a single entity within that application." />
'

JSON "@entityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityKind
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityKind" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
'

JSON "@entityKind": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entitySpecific
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entitySpecific" type="SFInt32" accessType="inputOutput" default="0" description="Specific information about an entity based on the Subcategory field." />
'

JSON "@entitySpecific": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entitySubcategory
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entitySubcategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for particular subcategory to which an entity belongs based on the category field." />
'

JSON "@entitySubcategory": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
eventApplicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="eventApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise eventApplicationID is unique for events generated from application at that site." />
'

JSON "@eventApplicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
eventEntityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="eventEntityID" type="SFInt32" accessType="inputOutput" default="0" description="For a given event, simulation/exercise entityID is a unique ID for a single entity within that application." />
'

JSON "@eventEntityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
eventNumber
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="eventNumber" type="SFInt32" accessType="inputOutput" default="0" description="Sequential number of each event issued by an application." />
'

JSON "@eventNumber": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
eventSiteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="eventSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@eventSiteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
fired1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fired1" type="SFBool" accessType="inputOutput" default="false" description="Has the primary weapon (Fire PDU) been fired?." />
'

JSON "@fired1": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
fired2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fired2" type="SFBool" accessType="inputOutput" default="false" description="Has the secondary weapon (Fire PDU) been fired?." />
'

JSON "@fired2": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
fireMissionIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fireMissionIndex" type="SFInt32" accessType="inputOutput" default="0" description="." />
'

JSON "@fireMissionIndex": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
firingRange
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="firingRange" type="SFFloat" accessType="inputOutput" default="0" description="Range (three dimension, straight-line distance) that the firing entity's fire control system has assumed for computing the fire control solution if a weapon and if the value is known." />
'

JSON "@firingRange": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
firingRate
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="firingRate" type="SFInt32" accessType="inputOutput" default="0" description="Rate at which munitions are fired." />
'

JSON "@firingRate": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
forceID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceID" type="SFInt32" accessType="inputOutput" default="0" description="forceID determines the team membership of the issuing entity, and whether FRIENDLY OPPOSING or NEUTRAL or OTHER." />
'

JSON "@forceID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
fuse
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fuse" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for type of fuse on the munition." />
'

JSON "@fuse": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
linearAcceleration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linearAcceleration" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Acceleration of the entity relative to the rotating Earth in either world or entity coordinates, depending on the dead reckoning algorithm used." />
'

JSON "@linearAcceleration": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
linearVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linearVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Velocity of the entity relative to the rotating Earth in either world or entity coordinates, depending on the dead reckoning algorithm used." />
'

JSON "@linearVelocity": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
marking
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="marking" type="SFString" accessType="inputOutput" description="Maximum of 11 characters for simple entity label." />
'

JSON "@marking": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
multicastRelayHost
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
'

JSON "@multicastRelayHost": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
multicastRelayPort
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
'

JSON "@multicastRelayPort": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
munitionApplicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="munitionApplicationID, unique for application at that site." />
'

JSON "@munitionApplicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
munitionEndPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionEndPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Final point of the munition path from firing weapon to detonation or impact, in exercise coordinates." />
'

JSON "@munitionEndPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
munitionEntityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionEntityID" type="SFInt32" accessType="inputOutput" default="0" description="munitionEntityID is unique ID for entity firing munition within that application." />
'

JSON "@munitionEntityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
munitionQuantity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionQuantity" type="SFInt32" accessType="inputOutput" default="0" description="Quantity of munitions fired." />
'

JSON "@munitionQuantity": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
munitionSiteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Munition siteID of the participating LAN or organization." />
'

JSON "@munitionSiteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
munitionStartPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="munitionStartPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Initial point of the munition path from firing weapon to detonation or impact, in exercise coordinates." />
'

JSON "@munitionStartPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
networkMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
'

JSON "@networkMode": {
  "enum": [
    "standAlone",
    "networkReader",
    "networkWriter"
  ],
  "default": "standAlone",
  "$comment": "SFString inputOutput",
  "type": "string"
}
port
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Network connection port number (EXAMPLE 3000) for sending or receiving DIS messages." />
'

JSON "@port": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
readInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
'

JSON "@readInterval": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system, usually read from (or written to) remote, networked EspduTransform nodes." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
rtpHeaderExpected
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
'

JSON "@rtpHeaderExpected": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
siteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@siteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system, usually read from (or written to) remote, networked EspduTransform nodes." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
warhead
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="warhead" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for type of warhead on the munition." />
'

JSON "@warhead": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
writeInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
'

JSON "@writeInterval": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ExplosionEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ExplosionEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#ExplosionEmitter" appinfo="ExplosionEmitter generates all particles from a specific point in space at the initial time enabled.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ExplosionEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Extrusion
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Extrusion">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#Extrusion" appinfo="Extrusion is a geometry node that sequentially stretches a 2D cross section along a 3D-spine path in the local coordinate system, creating an outer hull.">
<componentInfo name="Geometry3D" level="4" />
<Inheritance baseType="X3DGeometryNode" />
<field name="beginCap" type="SFBool" accessType="initializeOnly" default="true" description="Whether beginning cap is drawn (similar to Cylinder top cap)." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="The ccw field indicates counterclockwise ordering of vertex-coordinates orientation." />
<field name="convex" type="SFBool" accessType="initializeOnly" default="true" description="The convex field is a hint to renderers whether all polygons in a shape are convex (true), or possibly concave (false)." />
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) where adjacent polygons are drawn with sharp edges or smooth shading." />
<field name="crossSection" type="MFVec2f" accessType="initializeOnly" default="1 1 1 -1 -1 -1 -1 1 1 1" description="The crossSection array defines a silhouette outline of the outer Extrusion surface." />
<field name="endCap" type="SFBool" accessType="initializeOnly" default="true" description="Whether end cap is drawn (similar to Cylinder bottom cap)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation" type="MFRotation" accessType="initializeOnly" default="0 0 1 0" description="The orientation array is a list of axis-angle 4-tuple values applied at each spine-aligned cross-section plane." />
<field name="scale" type="MFVec2f" accessType="initializeOnly" default="1 1" description="scale is a list of 2D-scale parameters applied at each spine-aligned cross-section plane." />
<field name="set_crossSection" type="MFVec2f" accessType="inputOnly" description="The crossSection array defines a silhouette outline of the outer Extrusion surface." />
<field name="set_orientation" type="MFRotation" accessType="inputOnly" description="The orientation array is a list of axis-angle 4-tuple values applied at each spine-aligned cross-section plane." />
<field name="set_scale" type="MFVec2f" accessType="inputOnly" description="scale is a list of 2D-scale parameters applied at each spine-aligned cross-section plane." />
<field name="set_spine" type="MFVec3f" accessType="inputOnly" description="The spine array defines a center-line sequence of 3D points that define a piecewise-linear curve forming a series of connected vertices." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="spine" type="MFVec3f" accessType="initializeOnly" default="0 0 0 0 1 0" description="The spine array defines a center-line sequence of 3D points that define a piecewise-linear curve forming a series of connected vertices." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Extrusion": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@beginCap": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@convex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@creaseAngle": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@crossSection": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": {
            "type": "number"
          }
        },
        "@endCap": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@orientation": {
          "$comment": "MFRotation initializeOnly",
          "type": "array",
          "minItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": {
            "type": "number"
          }
        },
        "@scale": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@spine": {
          "$comment": "MFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
beginCap
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="beginCap" type="SFBool" accessType="initializeOnly" default="true" description="Whether beginning cap is drawn (similar to Cylinder top cap)." />
'

JSON "@beginCap": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="The ccw field indicates counterclockwise ordering of vertex-coordinates orientation." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
convex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="convex" type="SFBool" accessType="initializeOnly" default="true" description="The convex field is a hint to renderers whether all polygons in a shape are convex (true), or possibly concave (false)." />
'

JSON "@convex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
creaseAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) where adjacent polygons are drawn with sharp edges or smooth shading." />
'

JSON "@creaseAngle": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
crossSection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="crossSection" type="MFVec2f" accessType="initializeOnly" default="1 1 1 -1 -1 -1 -1 1 1 1" description="The crossSection array defines a silhouette outline of the outer Extrusion surface." />
'

JSON "@crossSection": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": {
    "type": "number"
  }
}
endCap
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="endCap" type="SFBool" accessType="initializeOnly" default="true" description="Whether end cap is drawn (similar to Cylinder bottom cap)." />
'

JSON "@endCap": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="MFRotation" accessType="initializeOnly" default="0 0 1 0" description="The orientation array is a list of axis-angle 4-tuple values applied at each spine-aligned cross-section plane." />
'

JSON "@orientation": {
  "$comment": "MFRotation initializeOnly",
  "type": "array",
  "minItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": {
    "type": "number"
  }
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="MFVec2f" accessType="initializeOnly" default="1 1" description="scale is a list of 2D-scale parameters applied at each spine-aligned cross-section plane." />
'

JSON "@scale": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "default": 1,
    "type": "number"
  }
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
spine
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="spine" type="MFVec3f" accessType="initializeOnly" default="0 0 0 0 1 0" description="The spine array defines a center-line sequence of 3D points that define a piecewise-linear curve forming a series of connected vertices." />
'

JSON "@spine": {
  "$comment": "MFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
FillProperties
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="FillProperties">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#FillProperties" appinfo="FillProperties indicates whether appearance is filled or hatched for associated geometry nodes inside the same Shape.">
<componentInfo name="Shape" level="3" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="filled" type="SFBool" accessType="inputOutput" default="true" description="Whether or not associated geometry is filled." />
<field name="hatchColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="Color of the hatch pattern." />
<field name="hatched" type="SFBool" accessType="inputOutput" default="true" description="Whether or not associated geometry is hatched." />
<field name="hatchStyle" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" simpleType="hatchStyleValues" baseType="SFInt32" description="hatchStyle selects a hatch pattern from ISO/IEC 9973 International Register of Graphical Items.">
<enumeration value="1" alias="HORIZONTAL" appinfo="Horizontal equally spaced parallel lines." />
<enumeration value="2" alias="VERTICAL" appinfo="Vertical equally spaced parallel lines." />
<enumeration value="3" alias="POSITIVE_SLOPE" appinfo="Positive slope equally spaced parallel lines." />
<enumeration value="4" alias="NEGATIVE_SLOPE" appinfo="Negative slope equally spaced parallel lines." />
<enumeration value="5" alias="HORIZONTAL_VERTICAL_CROSSHATCH" appinfo="Horizontal/vertical crosshatch." />
<enumeration value="6" alias="POSITIVE_NEGATIVE_SLOPE_CROSSHATCH" appinfo="Positive slope/negative slope crosshatch." />
<enumeration value="7" alias="CAST_IRON" appinfo="(cast iron or malleable iron and general use for all materials)." />
<enumeration value="8" alias="STEEL" appinfo="(steel)." />
<enumeration value="9" alias="BRONZE_BRASS_COPPER_COMPOSITIONS" appinfo="(bronze, brass, copper, and compositions)." />
<enumeration value="10" alias="WHITE_METAL_ZINC_LEAD_BABBIT_ALLOYS" appinfo="(white metal, zinc, lead, babbit, and alloys)." />
<enumeration value="11" alias="MAGNESIUM_ALUMINUM_ALLOYS" appinfo="(magnesium, aluminum, and aluminum alloys)." />
<enumeration value="12" alias="RUBBER_PLASTIC_ELECTRICAL_INSULATION" appinfo="(rubber, plastic, and electrical insulation)." />
<enumeration value="13" alias="CORK_FELT_FABRIC_LEATHER_FIBRE" appinfo="(cork, felt, fabric, leather, and fibre/fiber)." />
<enumeration value="14" alias="THERMAL_INSULATION" appinfo="(thermal insulation)." />
<enumeration value="15" alias="TITANIUM" appinfo="(titanium and refi-actory material)." />
<enumeration value="16" alias="MARBLE_SLATE_PORCELAIN_GLASS" appinfo="(marble, slate, porcelain, glass, etc.)." />
<enumeration value="17" alias="EARTH" appinfo="(earth)." />
<enumeration value="18" alias="SAND" appinfo="(sand)." />
<enumeration value="19" alias="REPEATING_DOT" appinfo="(repeating dot)." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="fillProperties" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "FillProperties": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@filled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@hatchColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@hatched": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@hatchStyle": {
          "minimum": 0,
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16,
            17,
            18,
            19
          ],
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
filled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="filled" type="SFBool" accessType="inputOutput" default="true" description="Whether or not associated geometry is filled." />
'

JSON "@filled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
hatchColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="hatchColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="Color of the hatch pattern." />
'

JSON "@hatchColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
hatched
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="hatched" type="SFBool" accessType="inputOutput" default="true" description="Whether or not associated geometry is hatched." />
'

JSON "@hatched": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
hatchStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="hatchStyle" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" simpleType="hatchStyleValues" baseType="SFInt32" description="hatchStyle selects a hatch pattern from ISO/IEC 9973 International Register of Graphical Items.">
<enumeration value="1" alias="HORIZONTAL" appinfo="Horizontal equally spaced parallel lines." />
<enumeration value="2" alias="VERTICAL" appinfo="Vertical equally spaced parallel lines." />
<enumeration value="3" alias="POSITIVE_SLOPE" appinfo="Positive slope equally spaced parallel lines." />
<enumeration value="4" alias="NEGATIVE_SLOPE" appinfo="Negative slope equally spaced parallel lines." />
<enumeration value="5" alias="HORIZONTAL_VERTICAL_CROSSHATCH" appinfo="Horizontal/vertical crosshatch." />
<enumeration value="6" alias="POSITIVE_NEGATIVE_SLOPE_CROSSHATCH" appinfo="Positive slope/negative slope crosshatch." />
<enumeration value="7" alias="CAST_IRON" appinfo="(cast iron or malleable iron and general use for all materials)." />
<enumeration value="8" alias="STEEL" appinfo="(steel)." />
<enumeration value="9" alias="BRONZE_BRASS_COPPER_COMPOSITIONS" appinfo="(bronze, brass, copper, and compositions)." />
<enumeration value="10" alias="WHITE_METAL_ZINC_LEAD_BABBIT_ALLOYS" appinfo="(white metal, zinc, lead, babbit, and alloys)." />
<enumeration value="11" alias="MAGNESIUM_ALUMINUM_ALLOYS" appinfo="(magnesium, aluminum, and aluminum alloys)." />
<enumeration value="12" alias="RUBBER_PLASTIC_ELECTRICAL_INSULATION" appinfo="(rubber, plastic, and electrical insulation)." />
<enumeration value="13" alias="CORK_FELT_FABRIC_LEATHER_FIBRE" appinfo="(cork, felt, fabric, leather, and fibre/fiber)." />
<enumeration value="14" alias="THERMAL_INSULATION" appinfo="(thermal insulation)." />
<enumeration value="15" alias="TITANIUM" appinfo="(titanium and refi-actory material)." />
<enumeration value="16" alias="MARBLE_SLATE_PORCELAIN_GLASS" appinfo="(marble, slate, porcelain, glass, etc.)." />
<enumeration value="17" alias="EARTH" appinfo="(earth)." />
<enumeration value="18" alias="SAND" appinfo="(sand)." />
<enumeration value="19" alias="REPEATING_DOT" appinfo="(repeating dot)." />
</field>
'

JSON "@hatchStyle": {
  "minimum": 0,
  "enum": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15,
    16,
    17,
    18,
    19
  ],
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
FloatVertexAttribute
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="FloatVertexAttribute">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#FloatVertexAttribute" appinfo="FloatVertexAttribute defines a set of per-vertex single-precision floating-point attributes.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DVertexAttributeNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
<field name="numComponents" type="SFInt32" accessType="initializeOnly" default="4" minInclusive="1" maxInclusive="4" description="numComponents specifies how many consecutive floating-point values should be grouped together per vertex." />
<field name="value" type="MFFloat" accessType="inputOutput" description="value specifies an arbitrary collection of floating-point values that will be passed to the shader as per-vertex information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="attrib" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "FloatVertexAttribute": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@numComponents": {
          "maximum": 4,
          "minimum": 1,
          "default": 4,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@value": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
'

JSON "@name": {
  "$comment": "SFString initializeOnly",
  "type": "string"
}
numComponents
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="numComponents" type="SFInt32" accessType="initializeOnly" default="4" minInclusive="1" maxInclusive="4" description="numComponents specifies how many consecutive floating-point values should be grouped together per vertex." />
'

JSON "@numComponents": {
  "maximum": 4,
  "minimum": 1,
  "default": 4,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFFloat" accessType="inputOutput" description="value specifies an arbitrary collection of floating-point values that will be passed to the shader as per-vertex information." />
'

JSON "@value": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Fog
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Fog">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#Fog" appinfo="Fog simulates atmospheric effects by blending distant objects with fog color.">
<componentInfo name="EnvironmentalEffects" level="2" />
<Inheritance baseType="X3DBindableNode" />
<AdditionalInheritance baseType="X3DFogObject" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Event sent reporting timestamp when node becomes active/inactive." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DFogObject" description="Fog color." />
<field name="fogType" type="SFString" accessType="inputOutput" default="LINEAR" inheritedFrom="X3DFogObject" additionalEnumerationValuesAllowed="false" simpleType="fogTypeChoices" baseType="xs:NMTOKEN" description="Specifies algorithm for rate of increasing Fog, either LINEAR or EXPONENTIAL.">
<enumeration value="LINEAR" appinfo="linear blending as a function of distance." />
<enumeration value="EXPONENTIAL" appinfo="exponential blending as a function of distance." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Receiving event set_bind=true activates and binds this node at the top of the binding stack." />
<field name="visibilityRange" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DFogObject" description="Distance in meters where objects are totally obscured by the fog, using local coordinate system." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Fog": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@fogType": {
          "enum": [
            "LINEAR",
            "EXPONENTIAL"
          ],
          "default": "LINEAR",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visibilityRange": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DFogObject" description="Fog color." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
fogType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogType" type="SFString" accessType="inputOutput" default="LINEAR" inheritedFrom="X3DFogObject" additionalEnumerationValuesAllowed="false" simpleType="fogTypeChoices" baseType="xs:NMTOKEN" description="Specifies algorithm for rate of increasing Fog, either LINEAR or EXPONENTIAL.">
<enumeration value="LINEAR" appinfo="linear blending as a function of distance." />
<enumeration value="EXPONENTIAL" appinfo="exponential blending as a function of distance." />
</field>
'

JSON "@fogType": {
  "enum": [
    "LINEAR",
    "EXPONENTIAL"
  ],
  "default": "LINEAR",
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visibilityRange
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visibilityRange" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DFogObject" description="Distance in meters where objects are totally obscured by the fog, using local coordinate system." />
'

JSON "@visibilityRange": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
FogCoordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="FogCoordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#FogCoordinate" appinfo="FogCoordinate defines a set of explicit fog depths on a per-vertex basis, overriding Fog visibilityRange.">
<componentInfo name="EnvironmentalEffects" level="4" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="depth" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="depth contains a set of 3D coordinate (triplet) point values." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="fogCoord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "FogCoordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@depth": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
depth
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="depth" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1" description="depth contains a set of 3D coordinate (triplet) point values." />
'

JSON "@depth": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
FontStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="FontStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#FontStyle" appinfo="FontStyle is an X3DFontStyleNode that defines the size, family, justification, and other styles used by Text nodes.">
<componentInfo name="Text" level="1" />
<Inheritance baseType="X3DFontStyleNode" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="family" type="MFString" accessType="inputOutput" default="&quot;SERIF&quot;" additionalEnumerationValuesAllowed="true" simpleType="fontFamilyValues" baseType="MFString" description="Array of quoted font family names in preference order, browsers use the first supported family.">
<enumeration value="&quot;SANS&quot;" appinfo="default font family for sans-serif font such as Helvetica." />
<enumeration value="&quot;SERIF&quot;" appinfo="default font family for serif font such as Times-Roman." />
<enumeration value="&quot;TYPEWRITER&quot;" appinfo="default font family for a fixed-pitch font such as Courier." />
</field>
<field name="horizontal" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is horizontal (true) or vertical (false)." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="justify" type="MFString" accessType="inputOutput" default="&quot;BEGIN&quot;" additionalEnumerationValuesAllowed="false" simpleType="justifyChoices" baseType="MFString" description="The justify field determines horizontal and vertical alignment of text layout, relative to the origin of the object coordinate system.">
<enumeration value="&quot;MIDDLE&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;END&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;END&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;END&quot; &quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;END&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;END&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;MIDDLE&quot;" />
</field>
<field name="language" type="SFString" accessType="inputOutput" description="Language codes consist of a primary code and a (possibly empty) series of subcodes." />
<field name="leftToRight" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is left-to-right (true) or right-to-left (false)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="size" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Nominal height (in local coordinate system) of text glyphs, also sets default spacing between adjacent lines of text." />
<field name="spacing" type="SFFloat" accessType="inputOutput" default="1.0" minInclusive="0" description="Adjustment factor for line spacing between adjacent lines of text." />
<field name="style" type="SFString" accessType="inputOutput" default="PLAIN" additionalEnumerationValuesAllowed="false" simpleType="fontStyleChoices" baseType="xs:NMTOKEN" description="Pick one of four values for text style (PLAIN|BOLD|ITALIC|BOLDITALIC).">
<enumeration value="PLAIN" appinfo="default plain type." />
<enumeration value="BOLD" appinfo="boldface type." />
<enumeration value="ITALIC" appinfo="italic type." />
<enumeration value="BOLDITALIC" appinfo="bold and italic type." />
</field>
<field name="topToBottom" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is top-to-bottom (true) or bottom-to-top (false)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<containerField default="fontStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "FontStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@family": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "SANS",
                  "SERIF",
                  "TYPEWRITER"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "SERIF",
            "type": "string"
          }
        },
        "@horizontal": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@justify": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "MIDDLE",
              "\"MIDDLE\" \"BEGIN\"",
              "\"MIDDLE\" \"END\"",
              "\"MIDDLE\" \"FIRST\"",
              "\"MIDDLE\" \"MIDDLE\"",
              "BEGIN",
              "\"BEGIN\" \"BEGIN\"",
              "\"BEGIN\" \"END\"",
              "\"BEGIN\" \"FIRST\"",
              "\"BEGIN\" \"MIDDLE\"",
              "END",
              "\"END\" \"BEGIN\"",
              "\"END\" \"END\"",
              "\"END\" \"FIRST\"",
              "\"END\" \"MIDDLE\"",
              "FIRST",
              "\"FIRST\" \"BEGIN\"",
              "\"FIRST\" \"END\"",
              "\"FIRST\" \"FIRST\"",
              "\"FIRST\" \"MIDDLE\""
            ],
            "default": "BEGIN",
            "type": "string"
          }
        },
        "@language": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@leftToRight": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@spacing": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@style": {
          "enum": [
            "PLAIN",
            "BOLD",
            "ITALIC",
            "BOLDITALIC"
          ],
          "default": "PLAIN",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@topToBottom": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
family
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="family" type="MFString" accessType="inputOutput" default="&quot;SERIF&quot;" additionalEnumerationValuesAllowed="true" simpleType="fontFamilyValues" baseType="MFString" description="Array of quoted font family names in preference order, browsers use the first supported family.">
<enumeration value="&quot;SANS&quot;" appinfo="default font family for sans-serif font such as Helvetica." />
<enumeration value="&quot;SERIF&quot;" appinfo="default font family for serif font such as Times-Roman." />
<enumeration value="&quot;TYPEWRITER&quot;" appinfo="default font family for a fixed-pitch font such as Courier." />
</field>
'

JSON "@family": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "SANS",
          "SERIF",
          "TYPEWRITER"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "SERIF",
    "type": "string"
  }
}
horizontal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="horizontal" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is horizontal (true) or vertical (false)." />
'

JSON "@horizontal": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
justify
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="justify" type="MFString" accessType="inputOutput" default="&quot;BEGIN&quot;" additionalEnumerationValuesAllowed="false" simpleType="justifyChoices" baseType="MFString" description="The justify field determines horizontal and vertical alignment of text layout, relative to the origin of the object coordinate system.">
<enumeration value="&quot;MIDDLE&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;END&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;END&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;END&quot; &quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;END&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;END&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;MIDDLE&quot;" />
</field>
'

JSON "@justify": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "MIDDLE",
      "\"MIDDLE\" \"BEGIN\"",
      "\"MIDDLE\" \"END\"",
      "\"MIDDLE\" \"FIRST\"",
      "\"MIDDLE\" \"MIDDLE\"",
      "BEGIN",
      "\"BEGIN\" \"BEGIN\"",
      "\"BEGIN\" \"END\"",
      "\"BEGIN\" \"FIRST\"",
      "\"BEGIN\" \"MIDDLE\"",
      "END",
      "\"END\" \"BEGIN\"",
      "\"END\" \"END\"",
      "\"END\" \"FIRST\"",
      "\"END\" \"MIDDLE\"",
      "FIRST",
      "\"FIRST\" \"BEGIN\"",
      "\"FIRST\" \"END\"",
      "\"FIRST\" \"FIRST\"",
      "\"FIRST\" \"MIDDLE\""
    ],
    "default": "BEGIN",
    "type": "string"
  }
}
language
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="language" type="SFString" accessType="inputOutput" description="Language codes consist of a primary code and a (possibly empty) series of subcodes." />
'

JSON "@language": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
leftToRight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="leftToRight" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is left-to-right (true) or right-to-left (false)." />
'

JSON "@leftToRight": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Nominal height (in local coordinate system) of text glyphs, also sets default spacing between adjacent lines of text." />
'

JSON "@size": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
spacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="spacing" type="SFFloat" accessType="inputOutput" default="1.0" minInclusive="0" description="Adjustment factor for line spacing between adjacent lines of text." />
'

JSON "@spacing": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" default="PLAIN" additionalEnumerationValuesAllowed="false" simpleType="fontStyleChoices" baseType="xs:NMTOKEN" description="Pick one of four values for text style (PLAIN|BOLD|ITALIC|BOLDITALIC).">
<enumeration value="PLAIN" appinfo="default plain type." />
<enumeration value="BOLD" appinfo="boldface type." />
<enumeration value="ITALIC" appinfo="italic type." />
<enumeration value="BOLDITALIC" appinfo="bold and italic type." />
</field>
'

JSON "@style": {
  "enum": [
    "PLAIN",
    "BOLD",
    "ITALIC",
    "BOLDITALIC"
  ],
  "default": "PLAIN",
  "$comment": "SFString inputOutput",
  "type": "string"
}
topToBottom
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="topToBottom" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is top-to-bottom (true) or bottom-to-top (false)." />
'

JSON "@topToBottom": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ForcePhysicsModel
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ForcePhysicsModel">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#ForcePhysicsModel" appinfo="ForcePhysicsModel applies a constant force value to the particles.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticlePhysicsModelNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
<field name="force" type="SFVec3f" accessType="inputOutput" default="0 -9.8 0" description="force field indicates strength and direction of the propelling force on the particles (for example, default is Earth's gravity)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="physics" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ForcePhysicsModel": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@force": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": -9.8,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
force
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="force" type="SFVec3f" accessType="inputOutput" default="0 -9.8 0" description="force field indicates strength and direction of the propelling force on the particles (for example, default is Earth's gravity)." />
'

JSON "@force": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": -9.8,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Gain
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Gain">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Gain" appinfo="The Gain node amplifies or deamplifies the input signal.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Gain": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeneratedCubeMapTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeneratedCubeMapTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing.html#GeneratedCubeMapTexture" appinfo="GeneratedCubeMapTexture is a texture node that defines a cubic environment map that sources its data from internally generated images.">
<componentInfo name="CubeMapTexturing" level="3" />
<Inheritance baseType="X3DEnvironmentTextureNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="size" type="SFInt32" accessType="initializeOnly" default="128" minExclusive="0" description="size indicates the resolution of the generated images in number of pixels per side." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="update" type="SFString" accessType="inputOutput" default="NONE" additionalEnumerationValuesAllowed="false" simpleType="generatedCubeMapTextureUpdateChoices" baseType="xs:NMTOKEN" description="update controls regeneration of the texture.">
<enumeration value="NONE" appinfo="no further texture updates are rendered." />
<enumeration value="NEXT_FRAME_ONLY" appinfo="render texture once at end of frame." />
<enumeration value="ALWAYS" appinfo="texture to be rendered every frame." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeneratedCubeMapTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "exclusiveMinimum": 0,
          "default": 128,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@update": {
          "enum": [
            "NONE",
            "NEXT_FRAME_ONLY",
            "ALWAYS"
          ],
          "default": "NONE",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFInt32" accessType="initializeOnly" default="128" minExclusive="0" description="size indicates the resolution of the generated images in number of pixels per side." />
'

JSON "@size": {
  "exclusiveMinimum": 0,
  "default": 128,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
update
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="update" type="SFString" accessType="inputOutput" default="NONE" additionalEnumerationValuesAllowed="false" simpleType="generatedCubeMapTextureUpdateChoices" baseType="xs:NMTOKEN" description="update controls regeneration of the texture.">
<enumeration value="NONE" appinfo="no further texture updates are rendered." />
<enumeration value="NEXT_FRAME_ONLY" appinfo="render texture once at end of frame." />
<enumeration value="ALWAYS" appinfo="texture to be rendered every frame." />
</field>
'

JSON "@update": {
  "enum": [
    "NONE",
    "NEXT_FRAME_ONLY",
    "ALWAYS"
  ],
  "default": "NONE",
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoCoordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoCoordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoCoordinate" appinfo="GeoCoordinate builds geometry as a set of geographic 3D coordinates.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DCoordinateNode" />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec3d" accessType="inputOutput" description="point contains a set of actual 3D geographic coordinates, provided in geoSystem format can split strings if desired: &quot;x1 y1 z1 x2 y2 z2&quot; or &quot;x1 y1 z1&quot;, &quot;x2 y2 z2&quot;." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="coord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoCoordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec3d" accessType="inputOutput" description="point contains a set of actual 3D geographic coordinates, provided in geoSystem format can split strings if desired: &quot;x1 y1 z1 x2 y2 z2&quot; or &quot;x1 y1 z1&quot;, &quot;x2 y2 z2&quot;." />
'

JSON "@point": {
  "$comment": "MFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoElevationGrid
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoElevationGrid">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoElevationGrid" appinfo="GeoElevationGrid is a geometry node defining a rectangular height field, with default values for a 1m by 1m square at height 0.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorPerVertex field." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per quadrilateral (false)." />
<field name="creaseAngle" type="SFDouble" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading." />
<field name="geoGridOrigin" type="SFVec3d" accessType="initializeOnly" default="0 0 0" description="Geographic coordinate for southwest (lower-left) corner of height dataset." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="height" type="MFDouble" accessType="initializeOnly" default="0 0" description="Contains xDimension rows * zDimension columns floating-point values for elevation above ellipsoid." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Normal node vector values are applied to each point vertex (true) or per quadrilateral (false)." />
<field name="set_height" type="MFDouble" accessType="inputOnly" description="Contains xDimension rows * zDimension columns floating-point values for elevation above ellipsoid." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="xDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along east-west X direction." />
<field name="xSpacing" type="SFDouble" accessType="initializeOnly" default="1.0" minExclusive="0" description="Distance between grid-array vertices along east-west X direction." />
<field name="yScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Vertical exaggeration of displayed data produced from the height array." />
<field name="zDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along north-south Z direction." />
<field name="zSpacing" type="SFDouble" accessType="initializeOnly" default="1.0" minExclusive="0" description="Distance between grid-array vertices along north-south Z direction." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ColorNormalTexCoordContentModel" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoElevationGrid": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@creaseAngle": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFDouble initializeOnly",
          "type": "number"
        },
        "@geoGridOrigin": {
          "$comment": "SFVec3d initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "@height": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeSFNode"
        },
        "@xDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@xSpacing": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFDouble initializeOnly",
          "type": "number"
        },
        "@yScale": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@zDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@zSpacing": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFDouble initializeOnly",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorPerVertex field." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per quadrilateral (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
creaseAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="creaseAngle" type="SFDouble" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading." />
'

JSON "@creaseAngle": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFDouble initializeOnly",
  "type": "number"
}
geoGridOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoGridOrigin" type="SFVec3d" accessType="initializeOnly" default="0 0 0" description="Geographic coordinate for southwest (lower-left) corner of height dataset." />
'

JSON "@geoGridOrigin": {
  "$comment": "SFVec3d initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
height
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="height" type="MFDouble" accessType="initializeOnly" default="0 0" description="Contains xDimension rows * zDimension columns floating-point values for elevation above ellipsoid." />
'

JSON "@height": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Normal node vector values are applied to each point vertex (true) or per quadrilateral (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeSFNode"
}
xDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="xDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along east-west X direction." />
'

JSON "@xDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
xSpacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="xSpacing" type="SFDouble" accessType="initializeOnly" default="1.0" minExclusive="0" description="Distance between grid-array vertices along east-west X direction." />
'

JSON "@xSpacing": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFDouble initializeOnly",
  "type": "number"
}
yScale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="yScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Vertical exaggeration of displayed data produced from the height array." />
'

JSON "@yScale": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
zDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="zDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of elements in the height array along north-south Z direction." />
'

JSON "@zDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
zSpacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="zSpacing" type="SFDouble" accessType="initializeOnly" default="1.0" minExclusive="0" description="Distance between grid-array vertices along north-south Z direction." />
'

JSON "@zSpacing": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFDouble initializeOnly",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoLocation
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoLocation">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoLocation" appinfo="GeoLocation positions a regular X3D model onto earth's surface.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GroupingNodeChildContentModel" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoLocation": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoLOD
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoLOD">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoLOD" appinfo="Note that MFNode rootNode field can contain multiple nodes and has accessType inputOutput. Meanwhile MFNode children field is outputOnly, unlike other X3DGroupingNode exemplars.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3d" accessType="initializeOnly" default="0 0 0" description="Viewer range from geographic-coordinates center triggers quadtree loading/unloading." />
<field name="child1Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
<field name="child2Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
<field name="child3Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
<field name="child4Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
<field name="children" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" description="The outputOnly children field exposes a portion of the scene graph for the currently loaded set of nodes." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="level_changed" type="SFInt32" accessType="outputOnly" minInclusive="0" maxInclusive="1" description="Output event that reports when the new children outputOnly event is generated, with value 0 or 1, where 0 indicates the rootNode field and 1 indicates the nodes specified by the child1Url, child2Url, child3Url, and child4Url fields." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="range" type="SFFloat" accessType="initializeOnly" default="10" minInclusive="0" description="Viewer range from geographic-coordinates center triggers quadtree loading/unloading." />
<field name="rootNode" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DChildNode" description="Geometry for the root tile." />
<field name="rootUrl" type="MFString" accessType="initializeOnly" description="url for scene providing geometry for the root tile.">
<componentInfo name="Networking" level="4" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GroupingNodeChildContentModel" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoLOD": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3d initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@child1Url": {
          "$comment": "MFString initializeOnly",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@child2Url": {
          "$comment": "MFString initializeOnly",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@child3Url": {
          "$comment": "MFString initializeOnly",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@child4Url": {
          "$comment": "MFString initializeOnly",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@range": {
          "minimum": 0,
          "default": 10,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-rootNode": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@rootUrl": {
          "$comment": "MFString initializeOnly",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3d" accessType="initializeOnly" default="0 0 0" description="Viewer range from geographic-coordinates center triggers quadtree loading/unloading." />
'

JSON "@center": {
  "$comment": "SFVec3d initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
child1Url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="child1Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@child1Url": {
  "$comment": "MFString initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
child2Url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="child2Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@child2Url": {
  "$comment": "MFString initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
child3Url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="child3Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@child3Url": {
  "$comment": "MFString initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
child4Url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="child4Url" type="MFString" accessType="initializeOnly" description="quadtree geometry loaded when viewer is within range.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@child4Url": {
  "$comment": "MFString initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" description="The outputOnly children field exposes a portion of the scene graph for the currently loaded set of nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" description="The outputOnly children field exposes a portion of the scene graph for the currently loaded set of nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
range
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="range" type="SFFloat" accessType="initializeOnly" default="10" minInclusive="0" description="Viewer range from geographic-coordinates center triggers quadtree loading/unloading." />
'

JSON "@range": {
  "minimum": 0,
  "default": 10,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
rootNode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rootNode" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DChildNode" description="Geometry for the root tile." />
'

JSON "-rootNode": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
rootUrl
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rootUrl" type="MFString" accessType="initializeOnly" description="url for scene providing geometry for the root tile.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@rootUrl": {
  "$comment": "MFString initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoMetadata
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoMetadata">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoMetadata" appinfo="GeoMetadata includes a generic subset of metadata about the geographic data.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DInfoNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="data" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="DEF list of all nodes that implement this data." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="summary" type="MFString" accessType="inputOutput" description="The summary string array contains a set of keyword/value pairs, with each keyword and its subsequent value contained in separate strings." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Hypertext link to an external, complete metadata description.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesX3DUrlObject" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="GeoElevationGrid" />
<NodeContentModel name="GeoLocation" />
<NodeContentModel name="GeoLOD" />
<NodeContentModel name="GeoPositionInterpolator" />
<NodeContentModel name="GeoProximitySensor" />
<NodeContentModel name="GeoTouchSensor" />
<NodeContentModel name="GeoTransform" />
<NodeContentModel name="GeoViewpoint" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoMetadata": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "-data": {
          "$ref": "#/$defs/-X3DNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@summary": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
data
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="data" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="DEF list of all nodes that implement this data." />
'

JSON "-data": {
  "$ref": "#/$defs/-X3DNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
summary
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="summary" type="MFString" accessType="inputOutput" description="The summary string array contains a set of keyword/value pairs, with each keyword and its subsequent value contained in separate strings." />
'

JSON "@summary": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Hypertext link to an external, complete metadata description.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoOrigin
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoOrigin">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoOrigin" appinfo="GeoOrigin is deprecated and discouraged (but nevertheless allowed) in X3D version 3.3. GeoOrigin is restored in X3D version 4.0 for special use on devices with limited floating-point resolution.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DNode" />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Defines absolute geographic location (and implicit local coordinate frame)." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rotateYUp" type="SFBool" accessType="initializeOnly" default="false" description="Whether to rotate coordinates of nodes using this GeoOrigin so that local-up direction aligns with VRML Y axis rotateYUp false means local up-direction is relative to planet surface rotateYUp true allows proper operation of NavigationInfo modes FLY, WALK." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geoOrigin" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoOrigin": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotateYUp": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Defines absolute geographic location (and implicit local coordinate frame)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotateYUp
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotateYUp" type="SFBool" accessType="initializeOnly" default="false" description="Whether to rotate coordinates of nodes using this GeoOrigin so that local-up direction aligns with VRML Y axis rotateYUp false means local up-direction is relative to planet surface rotateYUp true allows proper operation of NavigationInfo modes FLY, WALK." />
'

JSON "@rotateYUp": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoPositionInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoPositionInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoPositionInterpolator" appinfo="GeoPositionInterpolator animates objects within a geographic coordinate system.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="geovalue_changed" type="SFVec3d" accessType="outputOnly" description="interpolated coordinate in the geographic coordinate system specified by geoSystem Hint: X3D for Advanced Modeling (X3D4AM) slideset https://x3dgraphics." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec3d" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoPositionInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec3d" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoProximitySensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoProximitySensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoProximitySensor" appinfo="GeoProximitySensor generates events when the viewer enters, exits and moves within a region of space (defined by a box).">
<componentInfo name="Geospatial" level="2" />
<Inheritance baseType="X3DEnvironmentalSensorNode" />
<field name="center" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
<field name="centerOfRotation_changed" type="SFVec3f" accessType="outputOnly" description="Sends changed centerOfRotation values, likely caused by user interaction." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="enterTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera enters the box." />
<field name="exitTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera exits the box." />
<field name="geoCenter" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
<field name="geoCoord_changed" type="SFVec3d" accessType="outputOnly" description="Sends geospatial coordinates of viewer's position corresponding to world position returned by position_changed." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent as viewer enters/exits Proximity box." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation_changed" type="SFRotation" accessType="outputOnly" description="Sends rotation event relative to center." />
<field name="position_changed" type="SFVec3f" accessType="outputOnly" description="Sends translation event relative to center." />
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of Proximity box around center location, oriented within local transformation frame." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoProximitySensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@geoCenter": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
geoCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCenter" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
'

JSON "@geoCenter": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of Proximity box around center location, oriented within local transformation frame." />
'

JSON "@size": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoTouchSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoTouchSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoTouchSensor" appinfo="GeoTouchSensor returns geographic coordinates for the object being selected.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DTouchSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (G D), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="hitGeoCoord_changed" type="SFVec3d" accessType="outputOnly" description="Output event containing 3D point on surface of underlying geometry, given in GeoTouchSensor's local coordinate system." />
<field name="hitNormal_changed" type="SFVec3f" accessType="outputOnly" description="Output event containing surface normal vector at the hitGeoCoordinate." />
<field name="hitPoint_changed" type="SFVec3f" accessType="outputOnly" description="Output event containing 3D point on surface of underlying geometry, given in geometry coordinates (not geographic coordinates)." />
<field name="hitTexCoord_changed" type="SFVec2f" accessType="outputOnly" description="Output event containing texture coordinates of surface at the hitGeoCoordinate." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" description="Is pointing device over sensor's geometry?." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="touchTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DTouchSensorNode" description="Time event generated when touched." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoTouchSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (G D), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoTransform
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoTransform">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoTransform" appinfo="GeoTransform is a Grouping node that can contain most nodes.">
<componentInfo name="Geospatial" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="geoCenter" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate sys tem before scaling (to allow scaling around arbitrary orientations)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GroupingNodeChildContentModel" />
<NodeContentModel name="GeoOrigin" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoTransform": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@geoCenter": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
geoCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCenter" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
'

JSON "@geoCenter": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate sys tem before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
GeoViewpoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="GeoViewpoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html#GeoViewpoint" appinfo="GeoViewpoint specifies viewpoints using geographic coordinates.">
<componentInfo name="Geospatial" level="1" />
<Inheritance baseType="X3DViewpointNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Event sent reporting timestamp when node becomes active/inactive." />
<field name="centerOfRotation" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Author-provided prose that describes intended purpose of this node.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minExclusive="0" maxExclusive="3.1416" description="Preferred minimum viewing angle from this viewpoint in radians, providing minimum height or minimum width (whichever is smaller)." />
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated." />
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Whether to transition instantly by jumping, or else smoothly animate to this Viewpoint." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation of Viewpoint, relative to default -Z axis direction in local coordinate system." />
<field name="position" type="SFVec3d" accessType="inputOutput" default="0 0 100000" description="position relative to local georeferenced coordinate system, in proper format." />
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="set_bind true makes this node active, set_bind false makes this node inactive." />
<field name="speedFactor" type="SFFloat" accessType="initializeOnly" default="1.0" minInclusive="0" description="speedFactor is a multiplier to modify the original elevation-based speed that is set automatically by the browser." />
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="GeoOrigin" />
<NodeContentModel name="NavigationInfo" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "GeoViewpoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@centerOfRotation": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@farDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@fieldOfView": {
          "exclusiveMaximum": 3.1416,
          "exclusiveMinimum": 0,
          "default": 0.7854,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-geoOrigin": {
          "$ref": "#/$defs/-GeoOriginSFNode"
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "@jump": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-navigationInfo": {
          "$ref": "#/$defs/-NavigationInfoSFNode"
        },
        "@nearDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@orientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@position": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 100000,
              "type": "number"
            }
          ],
          "items": false
        },
        "@retainUserOffsets": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@speedFactor": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@viewAll": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
centerOfRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="centerOfRotation" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
'

JSON "@centerOfRotation": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Author-provided prose that describes intended purpose of this node.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
farDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
'

JSON "@farDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
fieldOfView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minExclusive="0" maxExclusive="3.1416" description="Preferred minimum viewing angle from this viewpoint in radians, providing minimum height or minimum width (whichever is smaller)." />
'

JSON "@fieldOfView": {
  "exclusiveMaximum": 3.1416,
  "exclusiveMinimum": 0,
  "default": 0.7854,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
geoOrigin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoOrigin" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="GeoOrigin" description="Single contained GeoOrigin node that can specify a local coordinate frame for extended precision." />
'

JSON "-geoOrigin": {
  "$ref": "#/$defs/-GeoOriginSFNode"
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
jump
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Whether to transition instantly by jumping, or else smoothly animate to this Viewpoint." />
'

JSON "@jump": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
navigationInfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
'

JSON "-navigationInfo": {
  "$ref": "#/$defs/-NavigationInfoSFNode"
}
nearDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
'

JSON "@nearDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation of Viewpoint, relative to default -Z axis direction in local coordinate system." />
'

JSON "@orientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3d" accessType="inputOutput" default="0 0 100000" description="position relative to local georeferenced coordinate system, in proper format." />
'

JSON "@position": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 100000,
      "type": "number"
    }
  ],
  "items": false
}
retainUserOffsets
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@retainUserOffsets": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
speedFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speedFactor" type="SFFloat" accessType="initializeOnly" default="1.0" minInclusive="0" description="speedFactor is a multiplier to modify the original elevation-based speed that is set automatically by the browser." />
'

JSON "@speedFactor": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
viewAll
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
'

JSON "@viewAll": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Group
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Group">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#Group" appinfo="Group is a Grouping node that can contain most nodes.">
<componentInfo name="Grouping" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesGroupLODShapeTransformSwitch" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Group": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimDisplacer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimDisplacer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimDisplacer" appinfo="HAnimDisplacer nodes alter the shape of coordinate-based geometry within parent HAnimJoint or HAnimSegment nodes.">
<componentInfo name="HAnim" level="1" />
<Inheritance baseType="X3DGeometricPropertyNode" />
<field name="coordIndex" type="MFInt32" accessType="inputOutput" description="Defines index values into the parent HAnimSegment or HAnimBody/HAnimHumanoid coordinate array for the mesh of vertices affected by this HAnimDisplacer." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="displacements" type="MFVec3f" accessType="inputOutput" description="displacements are a set of SFVec3f values added to neutral/resting position of each of the corresponding HAnimSegment vertices (or HAnimJoint/HAnimHumanoid vertices) referenced by coordIndex field." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimFeaturePointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimDisplacer node can be identified at run time for animation purposes.">
<enumeration value="skull_vertex" index="0" alias="skull_tip,vertex" loa="1" default="0.0050 1.7504 0.0055" parent="skull" appinfo="CAESAR 2003 skull_vertex matches ISO 7250-1 part 5.22 Vertex (top of head). No corresponding landmark provided in CAESAR 2018." documentation="https://en.wikipedia.org/wiki/Vertex_(anatomy)" />
<enumeration value="glabella" index="1" loa="1" parent="skull" appinfo="glabella is between the eyebrows and above the nose." documentation="https://en.wikipedia.org/wiki/Glabella" />
<enumeration value="sellion" index="2" loa="1" default="0.0058 1.6316 0.0852" parent="skull" appinfo="osseocartilaginous junction of the nasal dorsum." documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="l_infraorbitale" index="3" loa="1" default="0.0341 1.6171 0.0752" parent="skull" appinfo="Left Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="l_tragion" index="4" loa="1" default="0.0739 1.6348 0.0282" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="l_gonion" index="5" loa="1" default="0.0631 1.5530 0.0330" parent="skull" appinfo="Left Gonion is midpoint of mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="r_infraorbitale" index="6" loa="1" default="-0.0237 1.6171 0.0752" parent="skull" appinfo="Right Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="r_tragion" index="7" loa="1" default="-0.0646 1.6347 0.0302" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="r_gonion" index="8" loa="1" default="-0.0520 1.5529 0.0347" parent="skull" appinfo="Right Gonion is midpoint of the mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="supramenton" index="9" loa="3" default="0.0061 1.5410 0.0805" parent="jaw" appinfo="center point above tip of chin." documentation="https://www.cs.uu.nl/groups/MG/multimedia/publications/art/rsfp05.pdf" />
<enumeration value="cervicale" index="10" loa="2" default="0.0064 1.520 -0.0815" parent="t1" documentation="https://www.merriam-webster.com/dictionary/cervicale" />
<enumeration value="adams_apple" index="11" loa="2" parent="c2" documentation="https://en.wikipedia.org/wiki/Adam_s_apple" />
<enumeration value="suprasternale" index="12" loa="2" default="0.0084 1.4714 0.0551" parent="t1" appinfo="Suprasternale." documentation="https://medical-dictionary.thefreedictionary.com/spatium+suprasternale" />
<enumeration value="substernale" index="13" loa="2" default="0.0085 1.2995 0.1147" parent="t10" documentation="https://medical-dictionary.thefreedictionary.com/spatium+substernale" />
<enumeration value="l_clavicle" index="14" alias="l_clavicale" loa="2" default="0.0271 1.4943 0.0394" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_acromion" index="15" loa="2" default="0.2032 1.4760 -0.0490" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="l_axilla_proximal" index="16" alias="l_axilla_ant" loa="2" default="0.1777 1.4065 -0.0075" parent="l_clavicle" appinfo="Left Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_distal" index="17" alias="l_axilla_post" loa="2" default="0.1706 1.4072 -0.0875" parent="l_clavicle" appinfo="Left Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_posterior_folds" index="18" loa="2" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_clavicle" index="19" alias="r_clavicale" loa="2" default="-0.0115 1.4943 0.0400" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_acromion" index="20" loa="2" default="-0.1905 1.4791 -0.0431" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="r_axilla_proximal" index="21" alias="r_axilla_ant" loa="2" default="-0.1626 1.4072 -0.0031" parent="r_clavicle" appinfo="Right Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_distal" index="22" alias="r_axilla_post" loa="2" default="-0.1603 1.4098 -0.0826" parent="r_clavicle" appinfo="Right Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_posterior_folds" index="23" loa="2" parent="r_clavicle" appinfo="Right Posterior Axillary Folds." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="spine_1_middle_back" index="24" alias="middle back" loa="3" parent="t5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="spine_2_lower_back" index="25" alias="lower back" loa="3" default="0.0049 1.1908 -0.1113" parent="l2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="waist_preferred_anterior" index="26" alias="waist_preferred_ant" loa="3" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="waist_preferred_posterior" index="27" alias="waist_preferred_post" loa="3" default="0.2900 1.0915 -0.1091" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="l_rib10" index="28" alias="l_rib10_midspine" loa="3" default="0.0871 1.1925 0.0992" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="l_thelion" index="29" alias="Left Bustpoint" loa="3" default="0.0918 1.3382 0.1192" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="r_rib10" index="30" alias="r_rib10_midspine" loa="3" default="-0.0711 1.1941 0.1016" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="r_thelion" index="31" alias="Right Bustpoint" loa="3" default="-0.0736 1.3385 0.1217" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="l_asis" index="32" alias="Left Anterior Superior Iliac Spine" loa="1" default="0.0925 0.9983 0.1052" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="l_iliocristale" index="33" loa="1" default="0.1612 1.0537 0.0008" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="l_psis" index="34" alias="Left Posterior Superior Iliac Spine" loa="1" default="0.0774 1.0190 -0.1151" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="r_asis" index="35" alias="Right Anterior Superior Iliac Spine" loa="1" default="-0.0887 1.0021 0.1112" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="r_iliocristale" index="36" loa="1" default="-0.1525 1.0628 0.0035" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="r_psis" index="37" alias="Right Posterior Superior Iliac Spine" loa="1" default="-0.0716 1.0190 -0.1138" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="crotch" index="38" loa="1" default="0.0034 0.8266 0.0257" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Crotch" />
<enumeration value="l_femoral_lateral_epicondyle" index="39" alias="l_femoral_lateral_epicn,l_femoral_lateral_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="l_femoral_medial_epicondyle" index="40" alias="l_femoral_medial_epicn,l_femoral_medial_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="l_suprapatella" index="41" alias="l_kneecap" loa="1" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="l_trochanterion" index="42" alias="l_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="r_femoral_lateral_epicondyle" index="43" alias="r_femoral_lateral_epicn,r_femoral_lateral_epicondyles" loa="1" default="-0.1421 0.4992 0.0310" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="r_femoral_medial_epicondyle" index="44" alias="r_femoral_medial_epicn,r_femoral_medial_epicondyles" loa="1" default="-0.0221 0.5014 0.0289" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="r_suprapatella" index="45" alias="r_kneecap" loa="1" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="r_trochanterion" index="46" alias="r_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="l_tibiale" index="47" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="l_medial_malleolus" index="48" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_lateral_malleolus" index="49" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_sphyrion" index="50" loa="1" parent="l_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="r_tibiale" index="51" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="r_medial_malleolus" index="52" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_lateral_malleolus" index="53" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_sphyrion" index="54" loa="1" parent="r_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="l_metatarsal_phalanx_1" index="55" alias="l_metatarsal_pha1" loa="4" parent="l_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_metatarsal_phalanx_5" index="56" alias="l_metatarsal_pha5" loa="4" parent="l_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_dactylion" index="57" loa="2" default="0.2056 0.6743 -0.0482" parent="l_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="l_calcaneus_posterior" index="58" alias="l_calcaneous_post" loa="1" parent="l_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_metatarsal_phalanx_1" index="59" alias="r_metatarsal_pha1" loa="4" parent="r_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_metatarsal_phalanx_5" index="60" alias="r_metatarsal_pha5" loa="4" parent="r_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_dactylion" index="61" loa="2" default="-0.1941 0.6772 -0.0423" parent="r_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="r_calcaneus_posterior" index="62" alias="r_calcaneous_post" loa="1" parent="r_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_humeral_lateral_epicondyle" index="63" alias="l_humeral_lateral_epicn,l_humeral_lateral_epicondyles" loa="1" default="0.2280 1.1482 -0.1100" parent="l_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="l_humeral_medial_epicondyle" index="64" alias="l_humeral_medial_epicn,l_humeral_medial_epicondyles" loa="1" default="0.1735 1.1272 -0.1113" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="l_olecranon" index="65" loa="1" default="0.1962 1.1375 -0.1123" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="r_humeral_lateral_epicondyle" index="66" alias="r_humeral_lateral_epicn,r_humeral_lateral_epicondyles" loa="1" default="-0.2224 1.1517 -0.1033" parent="r_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="r_humeral_medial_epicondyle" index="67" alias="r_humeral_medial_epicn,r_humeral_medial_epicondyles" loa="1" default="-0.1680 1.1298 -0.1062" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="r_olecranon" index="68" loa="1" default="-0.1907 1.1405 -0.1065" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="l_radiale" index="69" loa="1" default="0.2182 1.1212 -0.1167" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_ulnar_styloid" index="70" loa="1" default="0.2142 0.8529 -0.0648" parent="l_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="l_radial_styloid" index="71" loa="1" default="0.1901 0.8645 -0.0415" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="r_radiale" index="72" loa="1" default="-0.2130 1.1305 -0.1091" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_ulnar_styloid" index="73" loa="1" default="-0.2117 0.8562 -0.0584" parent="r_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="r_radial_styloid" index="74" loa="1" default="-0.1884 0.8676 -0.0360" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="l_metacarpal_phalanx_2" index="75" alias="l_metacarpal_pha2,l_metacarpal_phalanx" loa="2" parent="l_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_3" index="76" loa="2" parent="l_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_5" index="77" alias="l_metacarpal_pha5" loa="2" parent="l_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_2" index="78" alias="r_metacarpal_pha2,r_metacarpal_phalanx" loa="2" parent="r_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_3" index="79" loa="2" parent="r_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_5" index="80" alias="r_metacarpal_pha5" loa="2" parent="r_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="nuchale" index="81" alias="nuchal" loa="1" default="0.0039 1.5972 -0.0796" parent="skull" documentation="https://en.wikipedia.org/wiki/Squamous_part_of_occipital_bone" />
<enumeration value="l_neck_base" index="82" loa="3" default="0.0646 1.5141 -0.0380" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="r_neck_base" index="83" loa="3" default="-0.0419 1.5149 -0.0220" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="navel" index="84" alias="belly button" loa="1" default="0.0069 1.0966 0.1017" parent="l5" documentation="https://en.wikipedia.org/wiki/Navel" />
<enumeration value="l_ectocanthus" index="85" alias="l_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="r_ectocanthus" index="86" alias="r_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="menton" index="87" alias="chin" loa="3" parent="jaw" documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="mesosternale" index="88" alias="mesosternum" loa="2" parent="t6" documentation="https://en.wiktionary.org/wiki/mesosternum" />
<enumeration value="opisthocranion" index="89" loa="1" parent="skull" documentation="https://www.columbia.edu/itc/hs/medical/humanAnatomy/yuan/craniologyISlides.pdf" />
<enumeration value="l_knee_crease" index="90" loa="1" default="0.0993 0.4881 -0.0309" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="r_knee_crease" index="91" loa="1" default="-0.0825 0.4932 -0.0326" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="rear_center_midsagittal_plane" index="92" alias="median plane" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Median_plane" />
<enumeration value="buttocks_standing_wall_contact_point" index="93" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Buttocks" />
<enumeration value="l_chest_midsagittal_plane" index="94" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="r_chest_midsagittal_plane" index="95" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="l_bideltoid" index="96" loa="1" parent="l_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="r_bideltoid" index="97" loa="1" parent="r_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="l_carpal_distal_phalanx_1" index="101" alias="l_thumb_distal" loa="2" default="0.1982 0.8061 0.0759" parent="l_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="102" alias="l_index_distal" loa="2" default="0.2089 0.6858 -0.0245" parent="l_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="103" alias="l_middle_distal" loa="2" default="0.2080 0.6731 -0.0491" parent="l_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="104" alias="l_ring_distal" loa="2" default="0.2035 0.6750 -0.0756" parent="l_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="105" alias="l_pinky_distal" loa="2" default="0.2014 0.7009 -0.1012" parent="l_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="106" alias="r_thumb_distal" loa="2" default="-0.1869 0.8090 0.0820" parent="r_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="107" alias="r_index_distal" loa="2" default="-0.1980 0.6883 -0.0180" parent="r_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="108" alias="r_middle_distal" loa="2" default="-0.1969 0.6758 -0.0427" parent="r_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="109" alias="r_ring_distal" loa="2" default="-0.1934 0.6778 -0.0693" parent="r_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="110" alias="r_pinky_distal" loa="2" default="-0.1938 0.7035 -0.0949" parent="r_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="111" loa="4" default="0.090 0.012 0.188" parent="l_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="112" alias="l_digit2" loa="2" default="0.110 0.011 0.19" parent="l_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="113" loa="4" default="0.128 0.011 0.185" parent="l_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="114" loa="4" default="0.142 0.011 0.178" parent="l_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="115" alias="l_tarsal_distal_pha5" loa="4" default="0.154 0.010 0.168" parent="l_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="116" loa="4" default="-0.090 0.012 0.188" parent="r_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="117" alias="r_digit2" loa="2" default="-0.110 0.011 0.19" parent="r_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="118" loa="4" default="-0.128 0.011 0.185" parent="r_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="119" loa="4" default="-0.142 0.011 0.178" parent="r_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="120" alias="r_tarsal_distal_pha5" loa="4" default="-0.154 0.010 0.168" parent="r_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
<field name="weight" type="SFFloat" accessType="inputOutput" default="0.0" description="The weigh factor has typical range [0,1] and defines the scale factor applied to displacement values before adding them to neutral vertex positions." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="displacers" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimDisplacer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@coordIndex": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@displacements": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "anyOf": [
            {
              "enum": [
                "skull_vertex",
                "glabella",
                "sellion",
                "l_infraorbitale",
                "l_tragion",
                "l_gonion",
                "r_infraorbitale",
                "r_tragion",
                "r_gonion",
                "supramenton",
                "cervicale",
                "adams_apple",
                "suprasternale",
                "substernale",
                "l_clavicle",
                "l_acromion",
                "l_axilla_proximal",
                "l_axilla_distal",
                "l_axilla_posterior_folds",
                "r_clavicle",
                "r_acromion",
                "r_axilla_proximal",
                "r_axilla_distal",
                "r_axilla_posterior_folds",
                "spine_1_middle_back",
                "spine_2_lower_back",
                "waist_preferred_anterior",
                "waist_preferred_posterior",
                "l_rib10",
                "l_thelion",
                "r_rib10",
                "r_thelion",
                "l_asis",
                "l_iliocristale",
                "l_psis",
                "r_asis",
                "r_iliocristale",
                "r_psis",
                "crotch",
                "l_femoral_lateral_epicondyle",
                "l_femoral_medial_epicondyle",
                "l_suprapatella",
                "l_trochanterion",
                "r_femoral_lateral_epicondyle",
                "r_femoral_medial_epicondyle",
                "r_suprapatella",
                "r_trochanterion",
                "l_tibiale",
                "l_medial_malleolus",
                "l_lateral_malleolus",
                "l_sphyrion",
                "r_tibiale",
                "r_medial_malleolus",
                "r_lateral_malleolus",
                "r_sphyrion",
                "l_metatarsal_phalanx_1",
                "l_metatarsal_phalanx_5",
                "l_dactylion",
                "l_calcaneus_posterior",
                "r_metatarsal_phalanx_1",
                "r_metatarsal_phalanx_5",
                "r_dactylion",
                "r_calcaneus_posterior",
                "l_humeral_lateral_epicondyle",
                "l_humeral_medial_epicondyle",
                "l_olecranon",
                "r_humeral_lateral_epicondyle",
                "r_humeral_medial_epicondyle",
                "r_olecranon",
                "l_radiale",
                "l_ulnar_styloid",
                "l_radial_styloid",
                "r_radiale",
                "r_ulnar_styloid",
                "r_radial_styloid",
                "l_metacarpal_phalanx_2",
                "l_metacarpal_phalanx_3",
                "l_metacarpal_phalanx_5",
                "r_metacarpal_phalanx_2",
                "r_metacarpal_phalanx_3",
                "r_metacarpal_phalanx_5",
                "nuchale",
                "l_neck_base",
                "r_neck_base",
                "navel",
                "l_ectocanthus",
                "r_ectocanthus",
                "menton",
                "mesosternale",
                "opisthocranion",
                "l_knee_crease",
                "r_knee_crease",
                "rear_center_midsagittal_plane",
                "buttocks_standing_wall_contact_point",
                "l_chest_midsagittal_plane",
                "r_chest_midsagittal_plane",
                "l_bideltoid",
                "r_bideltoid",
                "l_carpal_distal_phalanx_1",
                "l_carpal_distal_phalanx_2",
                "l_carpal_distal_phalanx_3",
                "l_carpal_distal_phalanx_4",
                "l_carpal_distal_phalanx_5",
                "r_carpal_distal_phalanx_1",
                "r_carpal_distal_phalanx_2",
                "r_carpal_distal_phalanx_3",
                "r_carpal_distal_phalanx_4",
                "r_carpal_distal_phalanx_5",
                "l_tarsal_distal_phalanx_1",
                "l_tarsal_distal_phalanx_2",
                "l_tarsal_distal_phalanx_3",
                "l_tarsal_distal_phalanx_4",
                "l_tarsal_distal_phalanx_5",
                "r_tarsal_distal_phalanx_1",
                "r_tarsal_distal_phalanx_2",
                "r_tarsal_distal_phalanx_3",
                "r_tarsal_distal_phalanx_4",
                "r_tarsal_distal_phalanx_5"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@weight": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
coordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coordIndex" type="MFInt32" accessType="inputOutput" description="Defines index values into the parent HAnimSegment or HAnimBody/HAnimHumanoid coordinate array for the mesh of vertices affected by this HAnimDisplacer." />
'

JSON "@coordIndex": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
displacements
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="displacements" type="MFVec3f" accessType="inputOutput" description="displacements are a set of SFVec3f values added to neutral/resting position of each of the corresponding HAnimSegment vertices (or HAnimJoint/HAnimHumanoid vertices) referenced by coordIndex field." />
'

JSON "@displacements": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimFeaturePointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimDisplacer node can be identified at run time for animation purposes.">
<enumeration value="skull_vertex" index="0" alias="skull_tip,vertex" loa="1" default="0.0050 1.7504 0.0055" parent="skull" appinfo="CAESAR 2003 skull_vertex matches ISO 7250-1 part 5.22 Vertex (top of head). No corresponding landmark provided in CAESAR 2018." documentation="https://en.wikipedia.org/wiki/Vertex_(anatomy)" />
<enumeration value="glabella" index="1" loa="1" parent="skull" appinfo="glabella is between the eyebrows and above the nose." documentation="https://en.wikipedia.org/wiki/Glabella" />
<enumeration value="sellion" index="2" loa="1" default="0.0058 1.6316 0.0852" parent="skull" appinfo="osseocartilaginous junction of the nasal dorsum." documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="l_infraorbitale" index="3" loa="1" default="0.0341 1.6171 0.0752" parent="skull" appinfo="Left Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="l_tragion" index="4" loa="1" default="0.0739 1.6348 0.0282" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="l_gonion" index="5" loa="1" default="0.0631 1.5530 0.0330" parent="skull" appinfo="Left Gonion is midpoint of mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="r_infraorbitale" index="6" loa="1" default="-0.0237 1.6171 0.0752" parent="skull" appinfo="Right Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="r_tragion" index="7" loa="1" default="-0.0646 1.6347 0.0302" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="r_gonion" index="8" loa="1" default="-0.0520 1.5529 0.0347" parent="skull" appinfo="Right Gonion is midpoint of the mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="supramenton" index="9" loa="3" default="0.0061 1.5410 0.0805" parent="jaw" appinfo="center point above tip of chin." documentation="https://www.cs.uu.nl/groups/MG/multimedia/publications/art/rsfp05.pdf" />
<enumeration value="cervicale" index="10" loa="2" default="0.0064 1.520 -0.0815" parent="t1" documentation="https://www.merriam-webster.com/dictionary/cervicale" />
<enumeration value="adams_apple" index="11" loa="2" parent="c2" documentation="https://en.wikipedia.org/wiki/Adam_s_apple" />
<enumeration value="suprasternale" index="12" loa="2" default="0.0084 1.4714 0.0551" parent="t1" appinfo="Suprasternale." documentation="https://medical-dictionary.thefreedictionary.com/spatium+suprasternale" />
<enumeration value="substernale" index="13" loa="2" default="0.0085 1.2995 0.1147" parent="t10" documentation="https://medical-dictionary.thefreedictionary.com/spatium+substernale" />
<enumeration value="l_clavicle" index="14" alias="l_clavicale" loa="2" default="0.0271 1.4943 0.0394" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_acromion" index="15" loa="2" default="0.2032 1.4760 -0.0490" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="l_axilla_proximal" index="16" alias="l_axilla_ant" loa="2" default="0.1777 1.4065 -0.0075" parent="l_clavicle" appinfo="Left Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_distal" index="17" alias="l_axilla_post" loa="2" default="0.1706 1.4072 -0.0875" parent="l_clavicle" appinfo="Left Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_posterior_folds" index="18" loa="2" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_clavicle" index="19" alias="r_clavicale" loa="2" default="-0.0115 1.4943 0.0400" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_acromion" index="20" loa="2" default="-0.1905 1.4791 -0.0431" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="r_axilla_proximal" index="21" alias="r_axilla_ant" loa="2" default="-0.1626 1.4072 -0.0031" parent="r_clavicle" appinfo="Right Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_distal" index="22" alias="r_axilla_post" loa="2" default="-0.1603 1.4098 -0.0826" parent="r_clavicle" appinfo="Right Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_posterior_folds" index="23" loa="2" parent="r_clavicle" appinfo="Right Posterior Axillary Folds." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="spine_1_middle_back" index="24" alias="middle back" loa="3" parent="t5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="spine_2_lower_back" index="25" alias="lower back" loa="3" default="0.0049 1.1908 -0.1113" parent="l2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="waist_preferred_anterior" index="26" alias="waist_preferred_ant" loa="3" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="waist_preferred_posterior" index="27" alias="waist_preferred_post" loa="3" default="0.2900 1.0915 -0.1091" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="l_rib10" index="28" alias="l_rib10_midspine" loa="3" default="0.0871 1.1925 0.0992" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="l_thelion" index="29" alias="Left Bustpoint" loa="3" default="0.0918 1.3382 0.1192" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="r_rib10" index="30" alias="r_rib10_midspine" loa="3" default="-0.0711 1.1941 0.1016" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="r_thelion" index="31" alias="Right Bustpoint" loa="3" default="-0.0736 1.3385 0.1217" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="l_asis" index="32" alias="Left Anterior Superior Iliac Spine" loa="1" default="0.0925 0.9983 0.1052" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="l_iliocristale" index="33" loa="1" default="0.1612 1.0537 0.0008" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="l_psis" index="34" alias="Left Posterior Superior Iliac Spine" loa="1" default="0.0774 1.0190 -0.1151" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="r_asis" index="35" alias="Right Anterior Superior Iliac Spine" loa="1" default="-0.0887 1.0021 0.1112" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="r_iliocristale" index="36" loa="1" default="-0.1525 1.0628 0.0035" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="r_psis" index="37" alias="Right Posterior Superior Iliac Spine" loa="1" default="-0.0716 1.0190 -0.1138" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="crotch" index="38" loa="1" default="0.0034 0.8266 0.0257" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Crotch" />
<enumeration value="l_femoral_lateral_epicondyle" index="39" alias="l_femoral_lateral_epicn,l_femoral_lateral_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="l_femoral_medial_epicondyle" index="40" alias="l_femoral_medial_epicn,l_femoral_medial_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="l_suprapatella" index="41" alias="l_kneecap" loa="1" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="l_trochanterion" index="42" alias="l_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="r_femoral_lateral_epicondyle" index="43" alias="r_femoral_lateral_epicn,r_femoral_lateral_epicondyles" loa="1" default="-0.1421 0.4992 0.0310" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="r_femoral_medial_epicondyle" index="44" alias="r_femoral_medial_epicn,r_femoral_medial_epicondyles" loa="1" default="-0.0221 0.5014 0.0289" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="r_suprapatella" index="45" alias="r_kneecap" loa="1" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="r_trochanterion" index="46" alias="r_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="l_tibiale" index="47" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="l_medial_malleolus" index="48" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_lateral_malleolus" index="49" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_sphyrion" index="50" loa="1" parent="l_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="r_tibiale" index="51" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="r_medial_malleolus" index="52" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_lateral_malleolus" index="53" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_sphyrion" index="54" loa="1" parent="r_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="l_metatarsal_phalanx_1" index="55" alias="l_metatarsal_pha1" loa="4" parent="l_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_metatarsal_phalanx_5" index="56" alias="l_metatarsal_pha5" loa="4" parent="l_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_dactylion" index="57" loa="2" default="0.2056 0.6743 -0.0482" parent="l_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="l_calcaneus_posterior" index="58" alias="l_calcaneous_post" loa="1" parent="l_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_metatarsal_phalanx_1" index="59" alias="r_metatarsal_pha1" loa="4" parent="r_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_metatarsal_phalanx_5" index="60" alias="r_metatarsal_pha5" loa="4" parent="r_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_dactylion" index="61" loa="2" default="-0.1941 0.6772 -0.0423" parent="r_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="r_calcaneus_posterior" index="62" alias="r_calcaneous_post" loa="1" parent="r_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_humeral_lateral_epicondyle" index="63" alias="l_humeral_lateral_epicn,l_humeral_lateral_epicondyles" loa="1" default="0.2280 1.1482 -0.1100" parent="l_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="l_humeral_medial_epicondyle" index="64" alias="l_humeral_medial_epicn,l_humeral_medial_epicondyles" loa="1" default="0.1735 1.1272 -0.1113" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="l_olecranon" index="65" loa="1" default="0.1962 1.1375 -0.1123" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="r_humeral_lateral_epicondyle" index="66" alias="r_humeral_lateral_epicn,r_humeral_lateral_epicondyles" loa="1" default="-0.2224 1.1517 -0.1033" parent="r_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="r_humeral_medial_epicondyle" index="67" alias="r_humeral_medial_epicn,r_humeral_medial_epicondyles" loa="1" default="-0.1680 1.1298 -0.1062" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="r_olecranon" index="68" loa="1" default="-0.1907 1.1405 -0.1065" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="l_radiale" index="69" loa="1" default="0.2182 1.1212 -0.1167" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_ulnar_styloid" index="70" loa="1" default="0.2142 0.8529 -0.0648" parent="l_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="l_radial_styloid" index="71" loa="1" default="0.1901 0.8645 -0.0415" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="r_radiale" index="72" loa="1" default="-0.2130 1.1305 -0.1091" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_ulnar_styloid" index="73" loa="1" default="-0.2117 0.8562 -0.0584" parent="r_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="r_radial_styloid" index="74" loa="1" default="-0.1884 0.8676 -0.0360" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="l_metacarpal_phalanx_2" index="75" alias="l_metacarpal_pha2,l_metacarpal_phalanx" loa="2" parent="l_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_3" index="76" loa="2" parent="l_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_5" index="77" alias="l_metacarpal_pha5" loa="2" parent="l_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_2" index="78" alias="r_metacarpal_pha2,r_metacarpal_phalanx" loa="2" parent="r_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_3" index="79" loa="2" parent="r_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_5" index="80" alias="r_metacarpal_pha5" loa="2" parent="r_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="nuchale" index="81" alias="nuchal" loa="1" default="0.0039 1.5972 -0.0796" parent="skull" documentation="https://en.wikipedia.org/wiki/Squamous_part_of_occipital_bone" />
<enumeration value="l_neck_base" index="82" loa="3" default="0.0646 1.5141 -0.0380" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="r_neck_base" index="83" loa="3" default="-0.0419 1.5149 -0.0220" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="navel" index="84" alias="belly button" loa="1" default="0.0069 1.0966 0.1017" parent="l5" documentation="https://en.wikipedia.org/wiki/Navel" />
<enumeration value="l_ectocanthus" index="85" alias="l_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="r_ectocanthus" index="86" alias="r_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="menton" index="87" alias="chin" loa="3" parent="jaw" documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="mesosternale" index="88" alias="mesosternum" loa="2" parent="t6" documentation="https://en.wiktionary.org/wiki/mesosternum" />
<enumeration value="opisthocranion" index="89" loa="1" parent="skull" documentation="https://www.columbia.edu/itc/hs/medical/humanAnatomy/yuan/craniologyISlides.pdf" />
<enumeration value="l_knee_crease" index="90" loa="1" default="0.0993 0.4881 -0.0309" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="r_knee_crease" index="91" loa="1" default="-0.0825 0.4932 -0.0326" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="rear_center_midsagittal_plane" index="92" alias="median plane" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Median_plane" />
<enumeration value="buttocks_standing_wall_contact_point" index="93" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Buttocks" />
<enumeration value="l_chest_midsagittal_plane" index="94" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="r_chest_midsagittal_plane" index="95" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="l_bideltoid" index="96" loa="1" parent="l_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="r_bideltoid" index="97" loa="1" parent="r_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="l_carpal_distal_phalanx_1" index="101" alias="l_thumb_distal" loa="2" default="0.1982 0.8061 0.0759" parent="l_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="102" alias="l_index_distal" loa="2" default="0.2089 0.6858 -0.0245" parent="l_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="103" alias="l_middle_distal" loa="2" default="0.2080 0.6731 -0.0491" parent="l_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="104" alias="l_ring_distal" loa="2" default="0.2035 0.6750 -0.0756" parent="l_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="105" alias="l_pinky_distal" loa="2" default="0.2014 0.7009 -0.1012" parent="l_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="106" alias="r_thumb_distal" loa="2" default="-0.1869 0.8090 0.0820" parent="r_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="107" alias="r_index_distal" loa="2" default="-0.1980 0.6883 -0.0180" parent="r_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="108" alias="r_middle_distal" loa="2" default="-0.1969 0.6758 -0.0427" parent="r_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="109" alias="r_ring_distal" loa="2" default="-0.1934 0.6778 -0.0693" parent="r_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="110" alias="r_pinky_distal" loa="2" default="-0.1938 0.7035 -0.0949" parent="r_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="111" loa="4" default="0.090 0.012 0.188" parent="l_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="112" alias="l_digit2" loa="2" default="0.110 0.011 0.19" parent="l_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="113" loa="4" default="0.128 0.011 0.185" parent="l_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="114" loa="4" default="0.142 0.011 0.178" parent="l_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="115" alias="l_tarsal_distal_pha5" loa="4" default="0.154 0.010 0.168" parent="l_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="116" loa="4" default="-0.090 0.012 0.188" parent="r_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="117" alias="r_digit2" loa="2" default="-0.110 0.011 0.19" parent="r_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="118" loa="4" default="-0.128 0.011 0.185" parent="r_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="119" loa="4" default="-0.142 0.011 0.178" parent="r_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="120" alias="r_tarsal_distal_pha5" loa="4" default="-0.154 0.010 0.168" parent="r_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
'

JSON "@name": {
  "anyOf": [
    {
      "enum": [
        "skull_vertex",
        "glabella",
        "sellion",
        "l_infraorbitale",
        "l_tragion",
        "l_gonion",
        "r_infraorbitale",
        "r_tragion",
        "r_gonion",
        "supramenton",
        "cervicale",
        "adams_apple",
        "suprasternale",
        "substernale",
        "l_clavicle",
        "l_acromion",
        "l_axilla_proximal",
        "l_axilla_distal",
        "l_axilla_posterior_folds",
        "r_clavicle",
        "r_acromion",
        "r_axilla_proximal",
        "r_axilla_distal",
        "r_axilla_posterior_folds",
        "spine_1_middle_back",
        "spine_2_lower_back",
        "waist_preferred_anterior",
        "waist_preferred_posterior",
        "l_rib10",
        "l_thelion",
        "r_rib10",
        "r_thelion",
        "l_asis",
        "l_iliocristale",
        "l_psis",
        "r_asis",
        "r_iliocristale",
        "r_psis",
        "crotch",
        "l_femoral_lateral_epicondyle",
        "l_femoral_medial_epicondyle",
        "l_suprapatella",
        "l_trochanterion",
        "r_femoral_lateral_epicondyle",
        "r_femoral_medial_epicondyle",
        "r_suprapatella",
        "r_trochanterion",
        "l_tibiale",
        "l_medial_malleolus",
        "l_lateral_malleolus",
        "l_sphyrion",
        "r_tibiale",
        "r_medial_malleolus",
        "r_lateral_malleolus",
        "r_sphyrion",
        "l_metatarsal_phalanx_1",
        "l_metatarsal_phalanx_5",
        "l_dactylion",
        "l_calcaneus_posterior",
        "r_metatarsal_phalanx_1",
        "r_metatarsal_phalanx_5",
        "r_dactylion",
        "r_calcaneus_posterior",
        "l_humeral_lateral_epicondyle",
        "l_humeral_medial_epicondyle",
        "l_olecranon",
        "r_humeral_lateral_epicondyle",
        "r_humeral_medial_epicondyle",
        "r_olecranon",
        "l_radiale",
        "l_ulnar_styloid",
        "l_radial_styloid",
        "r_radiale",
        "r_ulnar_styloid",
        "r_radial_styloid",
        "l_metacarpal_phalanx_2",
        "l_metacarpal_phalanx_3",
        "l_metacarpal_phalanx_5",
        "r_metacarpal_phalanx_2",
        "r_metacarpal_phalanx_3",
        "r_metacarpal_phalanx_5",
        "nuchale",
        "l_neck_base",
        "r_neck_base",
        "navel",
        "l_ectocanthus",
        "r_ectocanthus",
        "menton",
        "mesosternale",
        "opisthocranion",
        "l_knee_crease",
        "r_knee_crease",
        "rear_center_midsagittal_plane",
        "buttocks_standing_wall_contact_point",
        "l_chest_midsagittal_plane",
        "r_chest_midsagittal_plane",
        "l_bideltoid",
        "r_bideltoid",
        "l_carpal_distal_phalanx_1",
        "l_carpal_distal_phalanx_2",
        "l_carpal_distal_phalanx_3",
        "l_carpal_distal_phalanx_4",
        "l_carpal_distal_phalanx_5",
        "r_carpal_distal_phalanx_1",
        "r_carpal_distal_phalanx_2",
        "r_carpal_distal_phalanx_3",
        "r_carpal_distal_phalanx_4",
        "r_carpal_distal_phalanx_5",
        "l_tarsal_distal_phalanx_1",
        "l_tarsal_distal_phalanx_2",
        "l_tarsal_distal_phalanx_3",
        "l_tarsal_distal_phalanx_4",
        "l_tarsal_distal_phalanx_5",
        "r_tarsal_distal_phalanx_1",
        "r_tarsal_distal_phalanx_2",
        "r_tarsal_distal_phalanx_3",
        "r_tarsal_distal_phalanx_4",
        "r_tarsal_distal_phalanx_5"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="SFFloat" accessType="inputOutput" default="0.0" description="The weigh factor has typical range [0,1] and defines the scale factor applied to displacement values before adding them to neutral vertex positions." />
'

JSON "@weight": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimHumanoid
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimHumanoid">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimHumanoid" appinfo="The HAnimHumanoid node is used to: (a) store references to the joints, segments, sites, skeleton, optional skin, and fixed viewpoints, (b) serve as a container for the entire humanoid, (c) provide a convenient way of moving the humanoid through its environment, and (d) store human-readable metadata such as name, version, author, copyright, age, gender and other information.">
<componentInfo name="HAnim" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="info" type="MFString" accessType="inputOutput" description="Contains metadata keyword=value pairs, where approved keyword terms are humanoidVersion authorName authorEmail copyright creationDate usageRestrictions age gender height and weight." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="jointBindingPositions" type="MFVec3f" accessType="inputOutput" description="Specifies an array of position values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
<field name="jointBindingRotations" type="MFRotation" accessType="inputOutput" description="Specifies an array of rotation values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
<field name="jointBindingScales" type="MFVec3f" accessType="inputOutput" description="Specifies an array of scale values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
<field name="joints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint" description="The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy." />
<field name="loa" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" maxInclusive="4" baseType="loaType" description="Level Of Articulation 0." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="motions" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimMotion" description="Contains any HAnimMotion nodes that can animate the HAnimHumanoid." />
<field name="motionsEnabled" type="MFBool" accessType="inputOutput" description="Array of boolean values corresponding to HAnimMotion nodes indicating which can animate the HAnimHumanoid." />
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that each HAnimHumanoid node in a scene can be identified at run time for animation purposes." />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="segments" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSegment" description="The segments field contains a list of USE references for all HAnimSegment node instances found within the preceding skeleton hierarchy." />
<field name="sites" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSite" description="sites field contains a list of USE references for all HAnimSite node instances found within the preceding skeleton hierarchy." />
<field name="skeletalConfiguration" type="SFString" accessType="inputOutput" default="BASIC" description="Models sharing a common skeletal configuration can share animations and binding poses." />
<field name="skeleton" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint|HAnimSite" description="List of top-level HAnimJoint and HAnimSite nodes that create the skeleton model." />
<field name="skin" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Group|Transform|Shape|IndexedFaceSet" description="List of one or more indexed mesh definitions (such as IndexedFaceSet) that utilize skinCoord point and skinNormal normal data." />
<field name="skinBindingCoords" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Array of Coordinate nodes to handle non-default source pose so that both skin and skeleton can be in same binding pose." />
<field name="skinBindingNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Array of Normal nodes to handle non-default source pose so that both skin and skeleton can be in same binding pose." />
<field name="skinCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Coordinate node utilized by indexed mesh definitions for skin." />
<field name="skinNormal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single Normal node utilized by indexed mesh definitions for skin." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
<field name="version" type="SFString" accessType="inputOutput" default="2.0" additionalEnumerationValuesAllowed="false" simpleType="hanimVersionChoices" baseType="xs:NMTOKEN" description="HAnimHumanoid version, where allowed value is 2.">
<enumeration value="2.0" appinfo="Revised standard HAnim 19774 version 2 (parts 1 and 2) were approved by ISO in November 2019, published by Web3D Consortium May 2020." documentation="https://www.web3d.org/documents/specifications/19774/V2.0" />
</field>
<field name="viewpoints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSite" description="List of HAnimSite nodes containing Viewpoint nodes that appear in the skeleton model, usually as USE node references." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="HAnimJoint" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="HAnimSegment" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="HAnimSite" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="HAnimMotion" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="Shape" />
<NodeContentModel name="Group" />
<NodeContentModel name="LOD" />
<NodeContentModel name="Switch" />
<NodeContentModel name="Transform" />
<NodeContentModel name="IndexedFaceSet" />
<NodeContentModel name="IndexedLineSet" />
<NodeContentModel name="IndexedQuadSet" />
<NodeContentModel name="IndexedTriangleFanSet" />
<NodeContentModel name="IndexedTriangleSet" />
<NodeContentModel name="IndexedTriangleStripSet" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="Normal" minOccurs="0" maxOccurs="2" />
<NodeContentModel name="ProtoInstance" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimHumanoid": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@info": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "@jointBindingPositions": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@jointBindingRotations": {
          "$comment": "MFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          }
        },
        "@jointBindingScales": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-joints": {
          "$ref": "#/$defs/-HAnimJointMFNode"
        },
        "@loa": {
          "maximum": 4,
          "minimum": -1,
          "default": -1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-motions": {
          "$ref": "#/$defs/-HAnimMotionMFNode"
        },
        "@motionsEnabled": {
          "$comment": "MFBool inputOutput",
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-segments": {
          "$ref": "#/$defs/-HAnimSegmentMFNode"
        },
        "-sites": {
          "$ref": "#/$defs/-HAnimSiteMFNode"
        },
        "@skeletalConfiguration": {
          "default": "BASIC",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-skeleton": {
          "$ref": "#/$defs/-HAnimJoint-HAnimSiteMFNode"
        },
        "-skin": {
          "$ref": "#/$defs/-Group-Transform-Shape-IndexedFaceSetMFNode"
        },
        "-skinBindingCoords": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "-skinBindingNormals": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "-skinCoord": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "-skinNormal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@version": {
          "enum": [
            "2.0"
          ],
          "default": "2.0",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-viewpoints": {
          "$ref": "#/$defs/-HAnimSiteMFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
info
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="info" type="MFString" accessType="inputOutput" description="Contains metadata keyword=value pairs, where approved keyword terms are humanoidVersion authorName authorEmail copyright creationDate usageRestrictions age gender height and weight." />
'

JSON "@info": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
jointBindingPositions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jointBindingPositions" type="MFVec3f" accessType="inputOutput" description="Specifies an array of position values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
'

JSON "@jointBindingPositions": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
jointBindingRotations
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jointBindingRotations" type="MFRotation" accessType="inputOutput" description="Specifies an array of rotation values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
'

JSON "@jointBindingRotations": {
  "$comment": "MFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "items": {
    "type": "number"
  }
}
jointBindingScales
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jointBindingScales" type="MFVec3f" accessType="inputOutput" description="Specifies an array of scale values for each HAnimJoint node in the joints field, in order, corresponding to each binding pose." />
'

JSON "@jointBindingScales": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
joints
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="joints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint" description="The joints field contains a list of USE references for all HAnimJoint node instances found within the preceding skeleton hierarchy." />
'

JSON "-joints": {
  "$ref": "#/$defs/-HAnimJointMFNode"
}
loa
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loa" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" maxInclusive="4" baseType="loaType" description="Level Of Articulation 0." />
'

JSON "@loa": {
  "maximum": 4,
  "minimum": -1,
  "default": -1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
motions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="motions" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimMotion" description="Contains any HAnimMotion nodes that can animate the HAnimHumanoid." />
'

JSON "-motions": {
  "$ref": "#/$defs/-HAnimMotionMFNode"
}
motionsEnabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="motionsEnabled" type="MFBool" accessType="inputOutput" description="Array of boolean values corresponding to HAnimMotion nodes indicating which can animate the HAnimHumanoid." />
'

JSON "@motionsEnabled": {
  "$comment": "MFBool inputOutput",
  "type": "array",
  "items": {
    "type": "boolean"
  }
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that each HAnimHumanoid node in a scene can be identified at run time for animation purposes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
segments
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="segments" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSegment" description="The segments field contains a list of USE references for all HAnimSegment node instances found within the preceding skeleton hierarchy." />
'

JSON "-segments": {
  "$ref": "#/$defs/-HAnimSegmentMFNode"
}
sites
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sites" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSite" description="sites field contains a list of USE references for all HAnimSite node instances found within the preceding skeleton hierarchy." />
'

JSON "-sites": {
  "$ref": "#/$defs/-HAnimSiteMFNode"
}
skeletalConfiguration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skeletalConfiguration" type="SFString" accessType="inputOutput" default="BASIC" description="Models sharing a common skeletal configuration can share animations and binding poses." />
'

JSON "@skeletalConfiguration": {
  "default": "BASIC",
  "$comment": "SFString inputOutput",
  "type": "string"
}
skeleton
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skeleton" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint|HAnimSite" description="List of top-level HAnimJoint and HAnimSite nodes that create the skeleton model." />
'

JSON "-skeleton": {
  "$ref": "#/$defs/-HAnimJoint-HAnimSiteMFNode"
}
skin
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skin" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Group|Transform|Shape|IndexedFaceSet" description="List of one or more indexed mesh definitions (such as IndexedFaceSet) that utilize skinCoord point and skinNormal normal data." />
'

JSON "-skin": {
  "$ref": "#/$defs/-Group-Transform-Shape-IndexedFaceSetMFNode"
}
skinBindingCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinBindingCoords" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Array of Coordinate nodes to handle non-default source pose so that both skin and skeleton can be in same binding pose." />
'

JSON "-skinBindingCoords": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
skinBindingNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinBindingNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Array of Normal nodes to handle non-default source pose so that both skin and skeleton can be in same binding pose." />
'

JSON "-skinBindingNormals": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
skinCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Coordinate node utilized by indexed mesh definitions for skin." />
'

JSON "-skinCoord": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
skinNormal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinNormal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single Normal node utilized by indexed mesh definitions for skin." />
'

JSON "-skinNormal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
version
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="version" type="SFString" accessType="inputOutput" default="2.0" additionalEnumerationValuesAllowed="false" simpleType="hanimVersionChoices" baseType="xs:NMTOKEN" description="HAnimHumanoid version, where allowed value is 2.">
<enumeration value="2.0" appinfo="Revised standard HAnim 19774 version 2 (parts 1 and 2) were approved by ISO in November 2019, published by Web3D Consortium May 2020." documentation="https://www.web3d.org/documents/specifications/19774/V2.0" />
</field>
'

JSON "@version": {
  "enum": [
    "2.0"
  ],
  "default": "2.0",
  "$comment": "SFString inputOutput",
  "type": "string"
}
viewpoints
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewpoints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimSite" description="List of HAnimSite nodes containing Viewpoint nodes that appear in the skeleton model, usually as USE node references." />
'

JSON "-viewpoints": {
  "$ref": "#/$defs/-HAnimSiteMFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimJoint" appinfo="HAnimJoint node can represent each joint in a body.">
<componentInfo name="HAnim" level="1" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="HAnimJoint|HAnimSegment" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint|HAnimSegment" description="Grouping nodes contain an ordered list of children nodes." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="displacers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimDisplacer" description="the displacers field stores HAnimDisplacer objects for a particular HAnimJoint object." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="limitOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of upper/lower rotation limits, relative to HAnimJoint center." />
<field name="llimit" type="MFFloat" accessType="inputOutput" default="0 0 0" description="Lower limit for minimum joint rotation in radians." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimJointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimJoint node can be identified at run time for animation purposes.">
<enumeration value="humanoid_root" index="1" loa="0" default="0 0.8240 0.0277" documentation="https://en.wikipedia.org/wiki/Outline_of_human_anatomy#Joints" />
<enumeration value="sacroiliac" index="2" alias="SIJ,SI joint" default="0 0.9149 0.0016" parent="humanoid_root" loa="1" documentation="https://en.wikipedia.org/wiki/Sacroiliac_joint" />
<enumeration value="l_hip" index="3" default="0.0961 0.9124 -0.0001" parent="sacroiliac" loa="1" documentation="https://en.wikipedia.org/wiki/Hip" />
<enumeration value="l_knee" index="4" default="0.1040 0.4867 0.0308" parent="l_hip" loa="1" documentation="https://en.wikipedia.org/wiki/Knee" />
<enumeration value="l_talocrural" index="5" alias="l_ankle" default="0.1101 0.0656 -0.0736" parent="l_knee" loa="1" documentation="https://en.wikipedia.org/wiki/Ankle" />
<enumeration value="l_talocalcaneonavicular" index="6" alias="l_talocalcaneal" parent="l_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Subtalar_joint" />
<enumeration value="l_cuneonavicular_1" index="7" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_1" index="8" parent="l_cuneonavicular_1" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_1" index="9" parent="l_tarsometatarsal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_interphalangeal_1" index="10" parent="l_metatarsophalangeal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_cuneonavicular_2" index="11" alias="l_cuneonavicular" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_2" index="12" alias="l_subtalar,l_tarsometatarsal" default="0.1086 0.0001 -0.0368" parent="l_cuneonavicular_2" loa="2" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_2" index="13" alias="l_midtarsal,l_metatarsophalangeal" default="0.1086 0.0001 0.0368" parent="l_tarsometatarsal_2" loa="1" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_2" index="14" alias="l_tarsal_proximal_interphalangeal" parent="l_metatarsophalangeal_2" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_2" index="15" alias="l_tarsal_distal_interphalangeal" default="0.1086 0.0000 0.0762" parent="l_tarsal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_cuneonavicular_3" index="16" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_3" index="17" parent="l_cuneonavicular_3" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_3" index="18" parent="l_tarsometatarsal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_3" index="19" parent="l_metatarsophalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_3" index="20" parent="l_tarsal_proximal_interphalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_calcaneocuboid" index="21" alias="l_calcaneuscuboid" parent="l_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Calcaneocuboid_joint" />
<enumeration value="l_transversetarsal" index="22" parent="l_calcaneocuboid" loa="4" documentation="https://en.wikipedia.org/wiki/Transverse_tarsal_joint" />
<enumeration value="l_tarsometatarsal_4" index="23" parent="l_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_4" index="24" parent="l_tarsometatarsal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_4" index="25" parent="l_metatarsophalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_4" index="26" parent="l_tarsal_proximal_interphalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsometatarsal_5" index="27" parent="l_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_5" index="28" parent="l_tarsometatarsal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_5" index="29" parent="l_metatarsophalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_5" index="30" parent="l_tarsal_proximal_interphalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_hip" index="31" default="-0.0950 0.9171 0.0029" parent="sacroiliac" loa="1" documentation="https://en.wikipedia.org/wiki/Hip" />
<enumeration value="r_knee" index="32" default="-0.0867 0.4913 0.0318" parent="r_hip" loa="1" documentation="https://en.wikipedia.org/wiki/Knee" />
<enumeration value="r_talocrural" index="33" alias="r_ankle" default="-0.0801 0.0712 -0.0766" parent="r_knee" loa="1" documentation="https://en.wikipedia.org/wiki/Ankle" />
<enumeration value="r_talocalcaneonavicular" index="34" alias="r_talocalcaneal" parent="r_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Subtalar_joint" />
<enumeration value="r_cuneonavicular_1" index="35" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_1" index="36" parent="r_cuneonavicular_1" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_1" index="37" parent="r_tarsometatarsal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_interphalangeal_1" index="38" parent="r_metatarsophalangeal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_cuneonavicular_2" index="39" alias="r_cuneonavicular" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_2" index="40" alias="r_subtalar,r_tarsometatarsal" default="-0.0801 0.0000 -0.0368" parent="r_cuneonavicular_2" loa="2" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_2" index="41" alias="r_midtarsal,r_metatarsophalangeal" default="-0.0801 0.0000 0.0368" parent="r_tarsometatarsal_2" loa="1" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_2" index="42" alias="r_tarsal_proximal_interphalangeal" parent="r_metatarsophalangeal_2" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_2" index="43" alias="r_metatarsal,r_tarsal_distal_interphalangeal" default="-0.0801 0.0039 0.0732" parent="r_tarsal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_cuneonavicular_3" index="44" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_3" index="45" parent="r_cuneonavicular_3" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_3" index="46" parent="r_tarsometatarsal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_3" index="47" parent="r_metatarsophalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_3" index="48" parent="r_tarsal_proximal_interphalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_calcaneocuboid" index="49" alias="r_calcaneuscuboid" parent="r_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Calcaneocuboid_joint" />
<enumeration value="r_transversetarsal" index="50" parent="r_calcaneocuboid" loa="4" documentation="https://en.wikipedia.org/wiki/Transverse_tarsal_joint" />
<enumeration value="r_tarsometatarsal_4" index="51" parent="r_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_4" index="52" parent="r_tarsometatarsal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_4" index="53" parent="r_metatarsophalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_4" index="54" parent="r_tarsal_proximal_interphalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsometatarsal_5" index="55" parent="r_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_5" index="56" parent="r_tarsometatarsal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_5" index="57" parent="r_metatarsophalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_5" index="58" parent="r_tarsal_proximal_interphalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="vl5" index="59" default="0.0028 1.0568 -0.0776" parent="humanoid_root" loa="1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl4" index="60" default="0.0035 1.0925 -0.0787" parent="vl5" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl3" index="61" default="0.0041 1.1276 -0.0796" parent="vl4" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl2" index="62" default="0.0045 1.1546 -0.0800" parent="vl3" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl1" index="63" default="0.0048 1.1912 -0.0805" parent="vl2" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt12" index="64" default="0.0051 1.2278 -0.0808" parent="vl1" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt11" index="65" default="0.0053 1.2679 -0.0810" parent="vt12" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt10" index="66" default="0.0056 1.2848 -0.0822" parent="vt11" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt9" index="67" default="0.0057 1.3126 -0.0838" parent="vt10" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt8" index="68" default="0.0057 1.3382 -0.0845" parent="vt9" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt7" index="69" default="0.0058 1.3625 -0.0833" parent="vt8" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt6" index="70" default="0.0059 1.3866 -0.0800" parent="vt7" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt5" index="71" default="0.0060 1.4102 -0.0745" parent="vt6" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt4" index="72" default="0.0061 1.4320 -0.0675" parent="vt5" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt3" index="73" default="0.0062 1.4583 -0.0570" parent="vt4" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt2" index="74" default="0.0063 1.4761 -0.0484" parent="vt3" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt1" index="75" default="0.0065 1.4951 -0.0387" parent="vt2" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc7" index="76" default="0.0066 1.5132 -0.0301" parent="vt1" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc6" index="77" default="0.0066 1.5357 -0.0143" parent="vc7" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc5" index="78" default="0.0066 1.5520 -0.0082" parent="vc6" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc4" index="79" default="0.0066 1.5662 -0.0084" parent="vc5" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc3" index="80" default="0.0066 1.5800 -0.0103" parent="vc4" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc2" index="81" default="0.0066 1.5928 -0.0103" parent="vc3" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc1" index="82" default="0.0066 1.6144 -0.0034" parent="vc2" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="skullbase" index="83" default="0.0044 1.6209 0.0236" parent="vc1" loa="1" documentation="https://en.wikipedia.org/wiki/Skull" />
<enumeration value="l_eyelid_joint" index="84" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="r_eyelid_joint" index="85" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="l_eyeball_joint" index="86" default="0.0336 1.6332 0.0502" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="r_eyeball_joint" index="87" default="-0.0236 1.6331 0.0510" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="l_eyebrow_joint" index="88" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="r_eyebrow_joint" index="89" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="temporomandibular" index="90" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Temporomandibular_joint" />
<enumeration value="l_sternoclavicular" index="91" default="0.0820 1.4488 -0.0353" parent="vt1" loa="2" documentation="https://en.wikipedia.org/wiki/Sternoclavicular_joint" />
<enumeration value="l_acromioclavicular" index="92" default="0.0962 1.4269 -0.0424" parent="l_sternoclavicular" loa="2" documentation="https://en.wikipedia.org/wiki/Acromioclavicular_joint" />
<enumeration value="l_shoulder" index="93" default="0.2029 1.4376 -0.0387" parent="l_acromioclavicular" loa="1" documentation="https://en.wikipedia.org/wiki/Shoulder" />
<enumeration value="l_elbow" index="94" default="0.2014 1.1357 -0.0682" parent="l_shoulder" loa="1" documentation="https://en.wikipedia.org/wiki/Elbow" />
<enumeration value="l_radiocarpal" index="95" alias="l_wrist" default="0.1984 0.8663 -0.0583" parent="l_elbow" loa="1" documentation="https://en.wikipedia.org/wiki/Wrist" />
<enumeration value="l_midcarpal_1" index="96" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_1" index="97" alias="l_thumb1" default="0.1924 0.8472 -0.0534" parent="l_midcarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_1" index="98" alias="l_thumb2" default="0.1951 0.8226 0.0246" parent="l_carpometacarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_interphalangeal_1" index="99" alias="l_thumb3" default="0.1955 0.8159 0.0464" parent="l_metacarpophalangeal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_2" index="100" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_2" index="101" alias="l_index0,l_carpometacarpal" default="0.1983 0.8024 -0.0280" parent="l_midcarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_2" index="102" alias="l_index1,l_metacarpophalangeal" default="0.1983 0.7815 -0.0280" parent="l_carpometacarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_2" index="103" alias="l_index2,l_carpal_proximal_interphalangeal" default="0.2017 0.7363 -0.0248" parent="l_metacarpophalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_2" index="104" alias="l_index3,l_carpal_distal_interphalangeal" default="0.2028 0.7139 -0.0236" parent="l_carpal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_3" index="105" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_3" index="106" alias="l_middle0" default="0.1987 0.8029 -0.0530" parent="l_midcarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_3" index="107" alias="l_middle1" default="0.1987 0.7818 -0.0530" parent="l_carpometacarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_3" index="108" alias="l_middle2" default="0.2013 0.7273 -0.0503" parent="l_metacarpophalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_3" index="109" alias="l_middle3" default="0.2026 0.7011 -0.0494" parent="l_carpal_proximal_interphalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_4_5" index="110" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_4" index="111" alias="l_ring0" default="0.1956 0.8019 -0.0794" parent="l_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_4" index="112" alias="l_ring1" default="0.1956 0.7815 -0.0794" parent="l_carpometacarpal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_4" index="113" alias="l_ring2" default="0.1973 0.7287 -0.0777" parent="l_metacarpophalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_4" index="114" alias="l_ring3" parent="l_carpal_proximal_interphalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpometacarpal_5" index="115" alias="l_pinky0" default="0.1925 0.8066 -0.1036" parent="l_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_5" index="116" alias="l_pinky1" default="0.1925 0.7866 -0.1036" parent="l_carpometacarpal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_5" index="117" alias="l_pinky2" default="0.1938 0.7452 -0.1024" parent="l_metacarpophalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_5" index="118" alias="l_pinky3" default="0.1948 0.7277 -0.1017" parent="l_carpal_proximal_interphalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_sternoclavicular" index="119" default="-0.0694 1.4600 -0.0330" parent="vt1" loa="2" documentation="https://en.wikipedia.org/wiki/Sternoclavicular_joint" />
<enumeration value="r_acromioclavicular" index="120" default="-0.0836 1.4281 -0.0401" parent="r_sternoclavicular" loa="2" documentation="https://en.wikipedia.org/wiki/Acromioclavicular_joint" />
<enumeration value="r_shoulder" index="121" default="-0.1907 1.4407 -0.0325" parent="r_acromioclavicular" loa="1" documentation="https://en.wikipedia.org/wiki/Shoulder" />
<enumeration value="r_elbow" index="122" default="-0.1949 1.1388 -0.0620" parent="r_shoulder" loa="1" documentation="https://en.wikipedia.org/wiki/Elbow" />
<enumeration value="r_radiocarpal" index="123" alias="r_wrist" default="-0.1959 0.8694 -0.0521" parent="r_elbow" loa="1" documentation="https://en.wikipedia.org/wiki/Wrist" />
<enumeration value="r_midcarpal_1" index="124" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_1" index="125" alias="r_thumb1" default="-0.1899 0.8502 -0.0473" parent="r_midcarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_1" index="126" alias="r_thumb2" default="-0.1874 0.8256 0.0306" parent="r_carpometacarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_interphalangeal_1" index="127" alias="r_thumb3" default="-0.1864 0.8190 0.0506" parent="r_metacarpophalangeal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_2" index="128" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_2" index="129" alias="r_index0,r_carpometacarpal" parent="r_midcarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_2" index="130" alias="r_index1,r_metacarpophalangeal" default="-0.1961 0.8055 -0.0218" parent="r_carpometacarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_2" index="131" alias="r_index2,r_carpal_proximal_interphalangeal" default="-0.1954 0.7393 -0.0185" parent="r_metacarpophalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_2" index="132" alias="r_index3,r_carpal_distal_interphalangeal" default="-0.1945 0.7169 -0.0173" parent="r_carpal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_3" index="133" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_3" index="134" alias="r_middle0" default="-0.1972 0.8060 -0.0468" parent="r_midcarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_3" index="135" alias="r_middle1" default="-0.1972 0.7849 -0.0468" parent="r_carpometacarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_3" index="136" alias="r_middle2" default="-0.1950 0.7304 -0.0441" parent="r_metacarpophalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_3" index="137" alias="r_middle3" default="-0.1939 0.7042 -0.0432" parent="r_carpal_proximal_interphalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_4_5" index="138" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_4" index="139" alias="r_ring0" default="-0.1951 0.8049 -0.0732" parent="r_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_4" index="140" alias="r_ring1" default="-0.1951 0.7845 -0.0732" parent="r_carpometacarpal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_4" index="141" alias="r_ring2" default="-0.1920 0.7318 -0.0716" parent="r_metacarpophalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_4" index="142" alias="r_ring3" default="-0.1908 0.7077 -0.0706" parent="r_carpal_proximal_interphalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpometacarpal_5" index="143" alias="r_pinky0" default="-0.1926 0.8096 -0.0975" parent="r_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_5" index="144" alias="r_pinky1" default="-0.1926 0.7896 -0.0975" parent="r_carpometacarpal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_5" index="145" alias="r_pinky2" default="-0.1902 0.7483 -0.0963" parent="r_metacarpophalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_5" index="146" alias="r_pinky3" default="-0.1908 0.7540 -0.0960" parent="r_carpal_proximal_interphalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
</field>
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="HAnimJoint|HAnimSegment" />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="skinCoordIndex" type="MFInt32" accessType="inputOutput" minInclusive="0" description="Coordinate index values referencing which vertices are influenced by the HAnimJoint." />
<field name="skinCoordWeight" type="MFFloat" accessType="inputOutput" description="Weight deformation values for the corresponding values in the skinCoordIndex field." />
<field name="stiffness" type="MFFloat" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="A scale factor of (1 - stiffness) is applied around the corresponding axis (X, Y, or Z for entries 0, 1 and 2 of the stiffness field)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
<field name="ulimit" type="MFFloat" accessType="inputOutput" default="0 0 0" description="Upper limit for maximum joint rotation in radians." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesHAnimJoint" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="HAnimDisplacer" />
<NodeContentModel name="HAnimJoint" />
<NodeContentModel name="HAnimSegment" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-HAnimJoint-HAnimSegmentMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-displacers": {
          "$ref": "#/$defs/-HAnimDisplacerMFNode"
        },
        "@limitOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@llimit": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "anyOf": [
            {
              "enum": [
                "humanoid_root",
                "sacroiliac",
                "l_hip",
                "l_knee",
                "l_talocrural",
                "l_talocalcaneonavicular",
                "l_cuneonavicular_1",
                "l_tarsometatarsal_1",
                "l_metatarsophalangeal_1",
                "l_tarsal_interphalangeal_1",
                "l_cuneonavicular_2",
                "l_tarsometatarsal_2",
                "l_metatarsophalangeal_2",
                "l_tarsal_proximal_interphalangeal_2",
                "l_tarsal_distal_interphalangeal_2",
                "l_cuneonavicular_3",
                "l_tarsometatarsal_3",
                "l_metatarsophalangeal_3",
                "l_tarsal_proximal_interphalangeal_3",
                "l_tarsal_distal_interphalangeal_3",
                "l_calcaneocuboid",
                "l_transversetarsal",
                "l_tarsometatarsal_4",
                "l_metatarsophalangeal_4",
                "l_tarsal_proximal_interphalangeal_4",
                "l_tarsal_distal_interphalangeal_4",
                "l_tarsometatarsal_5",
                "l_metatarsophalangeal_5",
                "l_tarsal_proximal_interphalangeal_5",
                "l_tarsal_distal_interphalangeal_5",
                "r_hip",
                "r_knee",
                "r_talocrural",
                "r_talocalcaneonavicular",
                "r_cuneonavicular_1",
                "r_tarsometatarsal_1",
                "r_metatarsophalangeal_1",
                "r_tarsal_interphalangeal_1",
                "r_cuneonavicular_2",
                "r_tarsometatarsal_2",
                "r_metatarsophalangeal_2",
                "r_tarsal_proximal_interphalangeal_2",
                "r_tarsal_distal_interphalangeal_2",
                "r_cuneonavicular_3",
                "r_tarsometatarsal_3",
                "r_metatarsophalangeal_3",
                "r_tarsal_proximal_interphalangeal_3",
                "r_tarsal_distal_interphalangeal_3",
                "r_calcaneocuboid",
                "r_transversetarsal",
                "r_tarsometatarsal_4",
                "r_metatarsophalangeal_4",
                "r_tarsal_proximal_interphalangeal_4",
                "r_tarsal_distal_interphalangeal_4",
                "r_tarsometatarsal_5",
                "r_metatarsophalangeal_5",
                "r_tarsal_proximal_interphalangeal_5",
                "r_tarsal_distal_interphalangeal_5",
                "vl5",
                "vl4",
                "vl3",
                "vl2",
                "vl1",
                "vt12",
                "vt11",
                "vt10",
                "vt9",
                "vt8",
                "vt7",
                "vt6",
                "vt5",
                "vt4",
                "vt3",
                "vt2",
                "vt1",
                "vc7",
                "vc6",
                "vc5",
                "vc4",
                "vc3",
                "vc2",
                "vc1",
                "skullbase",
                "l_eyelid_joint",
                "r_eyelid_joint",
                "l_eyeball_joint",
                "r_eyeball_joint",
                "l_eyebrow_joint",
                "r_eyebrow_joint",
                "temporomandibular",
                "l_sternoclavicular",
                "l_acromioclavicular",
                "l_shoulder",
                "l_elbow",
                "l_radiocarpal",
                "l_midcarpal_1",
                "l_carpometacarpal_1",
                "l_metacarpophalangeal_1",
                "l_carpal_interphalangeal_1",
                "l_midcarpal_2",
                "l_carpometacarpal_2",
                "l_metacarpophalangeal_2",
                "l_carpal_proximal_interphalangeal_2",
                "l_carpal_distal_interphalangeal_2",
                "l_midcarpal_3",
                "l_carpometacarpal_3",
                "l_metacarpophalangeal_3",
                "l_carpal_proximal_interphalangeal_3",
                "l_carpal_distal_interphalangeal_3",
                "l_midcarpal_4_5",
                "l_carpometacarpal_4",
                "l_metacarpophalangeal_4",
                "l_carpal_proximal_interphalangeal_4",
                "l_carpal_distal_interphalangeal_4",
                "l_carpometacarpal_5",
                "l_metacarpophalangeal_5",
                "l_carpal_proximal_interphalangeal_5",
                "l_carpal_distal_interphalangeal_5",
                "r_sternoclavicular",
                "r_acromioclavicular",
                "r_shoulder",
                "r_elbow",
                "r_radiocarpal",
                "r_midcarpal_1",
                "r_carpometacarpal_1",
                "r_metacarpophalangeal_1",
                "r_carpal_interphalangeal_1",
                "r_midcarpal_2",
                "r_carpometacarpal_2",
                "r_metacarpophalangeal_2",
                "r_carpal_proximal_interphalangeal_2",
                "r_carpal_distal_interphalangeal_2",
                "r_midcarpal_3",
                "r_carpometacarpal_3",
                "r_metacarpophalangeal_3",
                "r_carpal_proximal_interphalangeal_3",
                "r_carpal_distal_interphalangeal_3",
                "r_midcarpal_4_5",
                "r_carpometacarpal_4",
                "r_metacarpophalangeal_4",
                "r_carpal_proximal_interphalangeal_4",
                "r_carpal_distal_interphalangeal_4",
                "r_carpometacarpal_5",
                "r_metacarpophalangeal_5",
                "r_carpal_proximal_interphalangeal_5",
                "r_carpal_distal_interphalangeal_5"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@skinCoordIndex": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "@skinCoordWeight": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@stiffness": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@ulimit": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint|HAnimSegment" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimJoint|HAnimSegment" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-HAnimJoint-HAnimSegmentMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
displacers
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="displacers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimDisplacer" description="the displacers field stores HAnimDisplacer objects for a particular HAnimJoint object." />
'

JSON "-displacers": {
  "$ref": "#/$defs/-HAnimDisplacerMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
limitOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="limitOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of upper/lower rotation limits, relative to HAnimJoint center." />
'

JSON "@limitOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
llimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="llimit" type="MFFloat" accessType="inputOutput" default="0 0 0" description="Lower limit for minimum joint rotation in radians." />
'

JSON "@llimit": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimJointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimJoint node can be identified at run time for animation purposes.">
<enumeration value="humanoid_root" index="1" loa="0" default="0 0.8240 0.0277" documentation="https://en.wikipedia.org/wiki/Outline_of_human_anatomy#Joints" />
<enumeration value="sacroiliac" index="2" alias="SIJ,SI joint" default="0 0.9149 0.0016" parent="humanoid_root" loa="1" documentation="https://en.wikipedia.org/wiki/Sacroiliac_joint" />
<enumeration value="l_hip" index="3" default="0.0961 0.9124 -0.0001" parent="sacroiliac" loa="1" documentation="https://en.wikipedia.org/wiki/Hip" />
<enumeration value="l_knee" index="4" default="0.1040 0.4867 0.0308" parent="l_hip" loa="1" documentation="https://en.wikipedia.org/wiki/Knee" />
<enumeration value="l_talocrural" index="5" alias="l_ankle" default="0.1101 0.0656 -0.0736" parent="l_knee" loa="1" documentation="https://en.wikipedia.org/wiki/Ankle" />
<enumeration value="l_talocalcaneonavicular" index="6" alias="l_talocalcaneal" parent="l_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Subtalar_joint" />
<enumeration value="l_cuneonavicular_1" index="7" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_1" index="8" parent="l_cuneonavicular_1" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_1" index="9" parent="l_tarsometatarsal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_interphalangeal_1" index="10" parent="l_metatarsophalangeal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_cuneonavicular_2" index="11" alias="l_cuneonavicular" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_2" index="12" alias="l_subtalar,l_tarsometatarsal" default="0.1086 0.0001 -0.0368" parent="l_cuneonavicular_2" loa="2" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_2" index="13" alias="l_midtarsal,l_metatarsophalangeal" default="0.1086 0.0001 0.0368" parent="l_tarsometatarsal_2" loa="1" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_2" index="14" alias="l_tarsal_proximal_interphalangeal" parent="l_metatarsophalangeal_2" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_2" index="15" alias="l_tarsal_distal_interphalangeal" default="0.1086 0.0000 0.0762" parent="l_tarsal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_cuneonavicular_3" index="16" parent="l_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="l_tarsometatarsal_3" index="17" parent="l_cuneonavicular_3" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_3" index="18" parent="l_tarsometatarsal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_3" index="19" parent="l_metatarsophalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_3" index="20" parent="l_tarsal_proximal_interphalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_calcaneocuboid" index="21" alias="l_calcaneuscuboid" parent="l_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Calcaneocuboid_joint" />
<enumeration value="l_transversetarsal" index="22" parent="l_calcaneocuboid" loa="4" documentation="https://en.wikipedia.org/wiki/Transverse_tarsal_joint" />
<enumeration value="l_tarsometatarsal_4" index="23" parent="l_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_4" index="24" parent="l_tarsometatarsal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_4" index="25" parent="l_metatarsophalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_4" index="26" parent="l_tarsal_proximal_interphalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsometatarsal_5" index="27" parent="l_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="l_metatarsophalangeal_5" index="28" parent="l_tarsometatarsal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="l_tarsal_proximal_interphalangeal_5" index="29" parent="l_metatarsophalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="l_tarsal_distal_interphalangeal_5" index="30" parent="l_tarsal_proximal_interphalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_hip" index="31" default="-0.0950 0.9171 0.0029" parent="sacroiliac" loa="1" documentation="https://en.wikipedia.org/wiki/Hip" />
<enumeration value="r_knee" index="32" default="-0.0867 0.4913 0.0318" parent="r_hip" loa="1" documentation="https://en.wikipedia.org/wiki/Knee" />
<enumeration value="r_talocrural" index="33" alias="r_ankle" default="-0.0801 0.0712 -0.0766" parent="r_knee" loa="1" documentation="https://en.wikipedia.org/wiki/Ankle" />
<enumeration value="r_talocalcaneonavicular" index="34" alias="r_talocalcaneal" parent="r_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Subtalar_joint" />
<enumeration value="r_cuneonavicular_1" index="35" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_1" index="36" parent="r_cuneonavicular_1" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_1" index="37" parent="r_tarsometatarsal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_interphalangeal_1" index="38" parent="r_metatarsophalangeal_1" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_cuneonavicular_2" index="39" alias="r_cuneonavicular" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_2" index="40" alias="r_subtalar,r_tarsometatarsal" default="-0.0801 0.0000 -0.0368" parent="r_cuneonavicular_2" loa="2" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_2" index="41" alias="r_midtarsal,r_metatarsophalangeal" default="-0.0801 0.0000 0.0368" parent="r_tarsometatarsal_2" loa="1" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_2" index="42" alias="r_tarsal_proximal_interphalangeal" parent="r_metatarsophalangeal_2" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_2" index="43" alias="r_metatarsal,r_tarsal_distal_interphalangeal" default="-0.0801 0.0039 0.0732" parent="r_tarsal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_cuneonavicular_3" index="44" parent="r_talocalcaneonavicular" loa="4" documentation="https://en.wikipedia.org/wiki/Cuneonavicular_joint" />
<enumeration value="r_tarsometatarsal_3" index="45" parent="r_cuneonavicular_3" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_3" index="46" parent="r_tarsometatarsal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_3" index="47" parent="r_metatarsophalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_3" index="48" parent="r_tarsal_proximal_interphalangeal_3" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_calcaneocuboid" index="49" alias="r_calcaneuscuboid" parent="r_talocrural" loa="4" documentation="https://en.wikipedia.org/wiki/Calcaneocuboid_joint" />
<enumeration value="r_transversetarsal" index="50" parent="r_calcaneocuboid" loa="4" documentation="https://en.wikipedia.org/wiki/Transverse_tarsal_joint" />
<enumeration value="r_tarsometatarsal_4" index="51" parent="r_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_4" index="52" parent="r_tarsometatarsal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_4" index="53" parent="r_metatarsophalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_4" index="54" parent="r_tarsal_proximal_interphalangeal_4" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsometatarsal_5" index="55" parent="r_transversetarsal" loa="4" documentation="https://en.wikipedia.org/wiki/Tarsometatarsal_joints" />
<enumeration value="r_metatarsophalangeal_5" index="56" parent="r_tarsometatarsal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Metatarsophalangeal_joints" />
<enumeration value="r_tarsal_proximal_interphalangeal_5" index="57" parent="r_metatarsophalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="r_tarsal_distal_interphalangeal_5" index="58" parent="r_tarsal_proximal_interphalangeal_5" loa="4" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_foot" />
<enumeration value="vl5" index="59" default="0.0028 1.0568 -0.0776" parent="humanoid_root" loa="1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl4" index="60" default="0.0035 1.0925 -0.0787" parent="vl5" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl3" index="61" default="0.0041 1.1276 -0.0796" parent="vl4" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl2" index="62" default="0.0045 1.1546 -0.0800" parent="vl3" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vl1" index="63" default="0.0048 1.1912 -0.0805" parent="vl2" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt12" index="64" default="0.0051 1.2278 -0.0808" parent="vl1" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt11" index="65" default="0.0053 1.2679 -0.0810" parent="vt12" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt10" index="66" default="0.0056 1.2848 -0.0822" parent="vt11" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt9" index="67" default="0.0057 1.3126 -0.0838" parent="vt10" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt8" index="68" default="0.0057 1.3382 -0.0845" parent="vt9" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt7" index="69" default="0.0058 1.3625 -0.0833" parent="vt8" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt6" index="70" default="0.0059 1.3866 -0.0800" parent="vt7" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt5" index="71" default="0.0060 1.4102 -0.0745" parent="vt6" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt4" index="72" default="0.0061 1.4320 -0.0675" parent="vt5" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt3" index="73" default="0.0062 1.4583 -0.0570" parent="vt4" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt2" index="74" default="0.0063 1.4761 -0.0484" parent="vt3" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vt1" index="75" default="0.0065 1.4951 -0.0387" parent="vt2" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc7" index="76" default="0.0066 1.5132 -0.0301" parent="vt1" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc6" index="77" default="0.0066 1.5357 -0.0143" parent="vc7" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc5" index="78" default="0.0066 1.5520 -0.0082" parent="vc6" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc4" index="79" default="0.0066 1.5662 -0.0084" parent="vc5" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc3" index="80" default="0.0066 1.5800 -0.0103" parent="vc4" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc2" index="81" default="0.0066 1.5928 -0.0103" parent="vc3" loa="2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="vc1" index="82" default="0.0066 1.6144 -0.0034" parent="vc2" loa="3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="skullbase" index="83" default="0.0044 1.6209 0.0236" parent="vc1" loa="1" documentation="https://en.wikipedia.org/wiki/Skull" />
<enumeration value="l_eyelid_joint" index="84" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="r_eyelid_joint" index="85" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="l_eyeball_joint" index="86" default="0.0336 1.6332 0.0502" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="r_eyeball_joint" index="87" default="-0.0236 1.6331 0.0510" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="l_eyebrow_joint" index="88" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="r_eyebrow_joint" index="89" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="temporomandibular" index="90" parent="skullbase" loa="3" documentation="https://en.wikipedia.org/wiki/Temporomandibular_joint" />
<enumeration value="l_sternoclavicular" index="91" default="0.0820 1.4488 -0.0353" parent="vt1" loa="2" documentation="https://en.wikipedia.org/wiki/Sternoclavicular_joint" />
<enumeration value="l_acromioclavicular" index="92" default="0.0962 1.4269 -0.0424" parent="l_sternoclavicular" loa="2" documentation="https://en.wikipedia.org/wiki/Acromioclavicular_joint" />
<enumeration value="l_shoulder" index="93" default="0.2029 1.4376 -0.0387" parent="l_acromioclavicular" loa="1" documentation="https://en.wikipedia.org/wiki/Shoulder" />
<enumeration value="l_elbow" index="94" default="0.2014 1.1357 -0.0682" parent="l_shoulder" loa="1" documentation="https://en.wikipedia.org/wiki/Elbow" />
<enumeration value="l_radiocarpal" index="95" alias="l_wrist" default="0.1984 0.8663 -0.0583" parent="l_elbow" loa="1" documentation="https://en.wikipedia.org/wiki/Wrist" />
<enumeration value="l_midcarpal_1" index="96" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_1" index="97" alias="l_thumb1" default="0.1924 0.8472 -0.0534" parent="l_midcarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_1" index="98" alias="l_thumb2" default="0.1951 0.8226 0.0246" parent="l_carpometacarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_interphalangeal_1" index="99" alias="l_thumb3" default="0.1955 0.8159 0.0464" parent="l_metacarpophalangeal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_2" index="100" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_2" index="101" alias="l_index0,l_carpometacarpal" default="0.1983 0.8024 -0.0280" parent="l_midcarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_2" index="102" alias="l_index1,l_metacarpophalangeal" default="0.1983 0.7815 -0.0280" parent="l_carpometacarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_2" index="103" alias="l_index2,l_carpal_proximal_interphalangeal" default="0.2017 0.7363 -0.0248" parent="l_metacarpophalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_2" index="104" alias="l_index3,l_carpal_distal_interphalangeal" default="0.2028 0.7139 -0.0236" parent="l_carpal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_3" index="105" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_3" index="106" alias="l_middle0" default="0.1987 0.8029 -0.0530" parent="l_midcarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_3" index="107" alias="l_middle1" default="0.1987 0.7818 -0.0530" parent="l_carpometacarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_3" index="108" alias="l_middle2" default="0.2013 0.7273 -0.0503" parent="l_metacarpophalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_3" index="109" alias="l_middle3" default="0.2026 0.7011 -0.0494" parent="l_carpal_proximal_interphalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_midcarpal_4_5" index="110" parent="l_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="l_carpometacarpal_4" index="111" alias="l_ring0" default="0.1956 0.8019 -0.0794" parent="l_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_4" index="112" alias="l_ring1" default="0.1956 0.7815 -0.0794" parent="l_carpometacarpal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_4" index="113" alias="l_ring2" default="0.1973 0.7287 -0.0777" parent="l_metacarpophalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_4" index="114" alias="l_ring3" parent="l_carpal_proximal_interphalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpometacarpal_5" index="115" alias="l_pinky0" default="0.1925 0.8066 -0.1036" parent="l_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="l_metacarpophalangeal_5" index="116" alias="l_pinky1" default="0.1925 0.7866 -0.1036" parent="l_carpometacarpal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="l_carpal_proximal_interphalangeal_5" index="117" alias="l_pinky2" default="0.1938 0.7452 -0.1024" parent="l_metacarpophalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="l_carpal_distal_interphalangeal_5" index="118" alias="l_pinky3" default="0.1948 0.7277 -0.1017" parent="l_carpal_proximal_interphalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_sternoclavicular" index="119" default="-0.0694 1.4600 -0.0330" parent="vt1" loa="2" documentation="https://en.wikipedia.org/wiki/Sternoclavicular_joint" />
<enumeration value="r_acromioclavicular" index="120" default="-0.0836 1.4281 -0.0401" parent="r_sternoclavicular" loa="2" documentation="https://en.wikipedia.org/wiki/Acromioclavicular_joint" />
<enumeration value="r_shoulder" index="121" default="-0.1907 1.4407 -0.0325" parent="r_acromioclavicular" loa="1" documentation="https://en.wikipedia.org/wiki/Shoulder" />
<enumeration value="r_elbow" index="122" default="-0.1949 1.1388 -0.0620" parent="r_shoulder" loa="1" documentation="https://en.wikipedia.org/wiki/Elbow" />
<enumeration value="r_radiocarpal" index="123" alias="r_wrist" default="-0.1959 0.8694 -0.0521" parent="r_elbow" loa="1" documentation="https://en.wikipedia.org/wiki/Wrist" />
<enumeration value="r_midcarpal_1" index="124" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_1" index="125" alias="r_thumb1" default="-0.1899 0.8502 -0.0473" parent="r_midcarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_1" index="126" alias="r_thumb2" default="-0.1874 0.8256 0.0306" parent="r_carpometacarpal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_interphalangeal_1" index="127" alias="r_thumb3" default="-0.1864 0.8190 0.0506" parent="r_metacarpophalangeal_1" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_2" index="128" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_2" index="129" alias="r_index0,r_carpometacarpal" parent="r_midcarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_2" index="130" alias="r_index1,r_metacarpophalangeal" default="-0.1961 0.8055 -0.0218" parent="r_carpometacarpal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_2" index="131" alias="r_index2,r_carpal_proximal_interphalangeal" default="-0.1954 0.7393 -0.0185" parent="r_metacarpophalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_2" index="132" alias="r_index3,r_carpal_distal_interphalangeal" default="-0.1945 0.7169 -0.0173" parent="r_carpal_proximal_interphalangeal_2" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_3" index="133" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_3" index="134" alias="r_middle0" default="-0.1972 0.8060 -0.0468" parent="r_midcarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_3" index="135" alias="r_middle1" default="-0.1972 0.7849 -0.0468" parent="r_carpometacarpal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_3" index="136" alias="r_middle2" default="-0.1950 0.7304 -0.0441" parent="r_metacarpophalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_3" index="137" alias="r_middle3" default="-0.1939 0.7042 -0.0432" parent="r_carpal_proximal_interphalangeal_3" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_midcarpal_4_5" index="138" parent="r_radiocarpal" loa="4" documentation="https://en.wikipedia.org/wiki/Midcarpal_joint" />
<enumeration value="r_carpometacarpal_4" index="139" alias="r_ring0" default="-0.1951 0.8049 -0.0732" parent="r_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_4" index="140" alias="r_ring1" default="-0.1951 0.7845 -0.0732" parent="r_carpometacarpal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_4" index="141" alias="r_ring2" default="-0.1920 0.7318 -0.0716" parent="r_metacarpophalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_4" index="142" alias="r_ring3" default="-0.1908 0.7077 -0.0706" parent="r_carpal_proximal_interphalangeal_4" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpometacarpal_5" index="143" alias="r_pinky0" default="-0.1926 0.8096 -0.0975" parent="r_midcarpal_4_5" loa="2" documentation="https://en.wikipedia.org/wiki/Carpometacarpal_joint" />
<enumeration value="r_metacarpophalangeal_5" index="144" alias="r_pinky1" default="-0.1926 0.7896 -0.0975" parent="r_carpometacarpal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Metacarpophalangeal_joint" />
<enumeration value="r_carpal_proximal_interphalangeal_5" index="145" alias="r_pinky2" default="-0.1902 0.7483 -0.0963" parent="r_metacarpophalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
<enumeration value="r_carpal_distal_interphalangeal_5" index="146" alias="r_pinky3" default="-0.1908 0.7540 -0.0960" parent="r_carpal_proximal_interphalangeal_5" loa="2" documentation="https://en.wikipedia.org/wiki/Interphalangeal_joints_of_the_hand" />
</field>
'

JSON "@name": {
  "anyOf": [
    {
      "enum": [
        "humanoid_root",
        "sacroiliac",
        "l_hip",
        "l_knee",
        "l_talocrural",
        "l_talocalcaneonavicular",
        "l_cuneonavicular_1",
        "l_tarsometatarsal_1",
        "l_metatarsophalangeal_1",
        "l_tarsal_interphalangeal_1",
        "l_cuneonavicular_2",
        "l_tarsometatarsal_2",
        "l_metatarsophalangeal_2",
        "l_tarsal_proximal_interphalangeal_2",
        "l_tarsal_distal_interphalangeal_2",
        "l_cuneonavicular_3",
        "l_tarsometatarsal_3",
        "l_metatarsophalangeal_3",
        "l_tarsal_proximal_interphalangeal_3",
        "l_tarsal_distal_interphalangeal_3",
        "l_calcaneocuboid",
        "l_transversetarsal",
        "l_tarsometatarsal_4",
        "l_metatarsophalangeal_4",
        "l_tarsal_proximal_interphalangeal_4",
        "l_tarsal_distal_interphalangeal_4",
        "l_tarsometatarsal_5",
        "l_metatarsophalangeal_5",
        "l_tarsal_proximal_interphalangeal_5",
        "l_tarsal_distal_interphalangeal_5",
        "r_hip",
        "r_knee",
        "r_talocrural",
        "r_talocalcaneonavicular",
        "r_cuneonavicular_1",
        "r_tarsometatarsal_1",
        "r_metatarsophalangeal_1",
        "r_tarsal_interphalangeal_1",
        "r_cuneonavicular_2",
        "r_tarsometatarsal_2",
        "r_metatarsophalangeal_2",
        "r_tarsal_proximal_interphalangeal_2",
        "r_tarsal_distal_interphalangeal_2",
        "r_cuneonavicular_3",
        "r_tarsometatarsal_3",
        "r_metatarsophalangeal_3",
        "r_tarsal_proximal_interphalangeal_3",
        "r_tarsal_distal_interphalangeal_3",
        "r_calcaneocuboid",
        "r_transversetarsal",
        "r_tarsometatarsal_4",
        "r_metatarsophalangeal_4",
        "r_tarsal_proximal_interphalangeal_4",
        "r_tarsal_distal_interphalangeal_4",
        "r_tarsometatarsal_5",
        "r_metatarsophalangeal_5",
        "r_tarsal_proximal_interphalangeal_5",
        "r_tarsal_distal_interphalangeal_5",
        "vl5",
        "vl4",
        "vl3",
        "vl2",
        "vl1",
        "vt12",
        "vt11",
        "vt10",
        "vt9",
        "vt8",
        "vt7",
        "vt6",
        "vt5",
        "vt4",
        "vt3",
        "vt2",
        "vt1",
        "vc7",
        "vc6",
        "vc5",
        "vc4",
        "vc3",
        "vc2",
        "vc1",
        "skullbase",
        "l_eyelid_joint",
        "r_eyelid_joint",
        "l_eyeball_joint",
        "r_eyeball_joint",
        "l_eyebrow_joint",
        "r_eyebrow_joint",
        "temporomandibular",
        "l_sternoclavicular",
        "l_acromioclavicular",
        "l_shoulder",
        "l_elbow",
        "l_radiocarpal",
        "l_midcarpal_1",
        "l_carpometacarpal_1",
        "l_metacarpophalangeal_1",
        "l_carpal_interphalangeal_1",
        "l_midcarpal_2",
        "l_carpometacarpal_2",
        "l_metacarpophalangeal_2",
        "l_carpal_proximal_interphalangeal_2",
        "l_carpal_distal_interphalangeal_2",
        "l_midcarpal_3",
        "l_carpometacarpal_3",
        "l_metacarpophalangeal_3",
        "l_carpal_proximal_interphalangeal_3",
        "l_carpal_distal_interphalangeal_3",
        "l_midcarpal_4_5",
        "l_carpometacarpal_4",
        "l_metacarpophalangeal_4",
        "l_carpal_proximal_interphalangeal_4",
        "l_carpal_distal_interphalangeal_4",
        "l_carpometacarpal_5",
        "l_metacarpophalangeal_5",
        "l_carpal_proximal_interphalangeal_5",
        "l_carpal_distal_interphalangeal_5",
        "r_sternoclavicular",
        "r_acromioclavicular",
        "r_shoulder",
        "r_elbow",
        "r_radiocarpal",
        "r_midcarpal_1",
        "r_carpometacarpal_1",
        "r_metacarpophalangeal_1",
        "r_carpal_interphalangeal_1",
        "r_midcarpal_2",
        "r_carpometacarpal_2",
        "r_metacarpophalangeal_2",
        "r_carpal_proximal_interphalangeal_2",
        "r_carpal_distal_interphalangeal_2",
        "r_midcarpal_3",
        "r_carpometacarpal_3",
        "r_metacarpophalangeal_3",
        "r_carpal_proximal_interphalangeal_3",
        "r_carpal_distal_interphalangeal_3",
        "r_midcarpal_4_5",
        "r_carpometacarpal_4",
        "r_metacarpophalangeal_4",
        "r_carpal_proximal_interphalangeal_4",
        "r_carpal_distal_interphalangeal_4",
        "r_carpometacarpal_5",
        "r_metacarpophalangeal_5",
        "r_carpal_proximal_interphalangeal_5",
        "r_carpal_distal_interphalangeal_5"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
skinCoordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinCoordIndex" type="MFInt32" accessType="inputOutput" minInclusive="0" description="Coordinate index values referencing which vertices are influenced by the HAnimJoint." />
'

JSON "@skinCoordIndex": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "integer"
  }
}
skinCoordWeight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skinCoordWeight" type="MFFloat" accessType="inputOutput" description="Weight deformation values for the corresponding values in the skinCoordIndex field." />
'

JSON "@skinCoordWeight": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
stiffness
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stiffness" type="MFFloat" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="A scale factor of (1 - stiffness) is applied around the corresponding axis (X, Y, or Z for entries 0, 1 and 2 of the stiffness field)." />
'

JSON "@stiffness": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
ulimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ulimit" type="MFFloat" accessType="inputOutput" default="0 0 0" description="Upper limit for maximum joint rotation in radians." />
'

JSON "@ulimit": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimMotion
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimMotion">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimMotion" appinfo="An HAnimMotion node supports discrete frame-by-frame playback for HAnim motion data animation.">
<componentInfo name="HAnim" level="2" />
<Inheritance baseType="X3DChildNode" />
<field name="channels" type="SFString" accessType="inputOutput" description="list of number of channels for transformation, followed by transformation type of each channel of data." />
<field name="channelsEnabled" type="MFBool" accessType="inputOutput" description="boolean values for each channel indicating whether enabled." />
<field name="cycleTime" type="SFTime" accessType="outputOnly" minInclusive="0" description="cycleTime sends a time event at initial starting time and at beginning of each new cycle." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" description="elapsedTime is computed elapsed time since the Motion object was activated and running, counting all traversed frames (as if frameIndex equaled 1) and multiplied by frameDuration, cumulative in seconds." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="endFrame" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="endFrame indicates final index of animated frame." />
<field name="frameCount" type="SFInt32" accessType="outputOnly" minInclusive="0" description="frameCount is computed at run time and indicates the total number of frames present in the animation, equaling the number of sets of channel data rows present in the values array." />
<field name="frameDuration" type="SFTime" accessType="inputOutput" default="0.1" minExclusive="0" description="frameDuration specifies the duration of each frame in seconds." />
<field name="frameIncrement" type="SFInt32" accessType="inputOutput" default="1" description="frameIncrement field controls whether playback direction is forwards or backwards, and also whether frames are skipped (for example, subsampled replay)." />
<field name="frameIndex" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="frameIndex indicates index of current frame." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="joints" type="SFString" accessType="inputOutput" description="joints field lists names of joints that raw motion data is to be applied to." />
<field name="loa" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" maxInclusive="4" baseType="loaType" description="Level Of Articulation 0." />
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimMotion node can be identified at run time for animation purposes." />
<field name="next" type="SFBool" accessType="inputOnly" description="Send next output value in values array, using/updating various frame values as appropriate." />
<field name="previous" type="SFBool" accessType="inputOnly" description="Send previous output value in values array, using/updating various frame values as appropriate." />
<field name="startFrame" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="startFrame indicates initial index of animated frame." />
<field name="values" type="MFFloat" accessType="inputOutput" description="values field contains all transformation values, ordered first by frame, then by joint, and then by transformation Sets of floats in the values array matching the order listed in joints and channels fields." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="motions" type="containerFieldChoicesHAnimMotion" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimMotion": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channels": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelsEnabled": {
          "$comment": "MFBool inputOutput",
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@endFrame": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@frameDuration": {
          "exclusiveMinimum": 0,
          "default": 0.1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@frameIncrement": {
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@frameIndex": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@joints": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@loa": {
          "maximum": 4,
          "minimum": -1,
          "default": -1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@loop": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@startFrame": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@values": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channels" type="SFString" accessType="inputOutput" description="list of number of channels for transformation, followed by transformation type of each channel of data." />
'

JSON "@channels": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelsEnabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelsEnabled" type="MFBool" accessType="inputOutput" description="boolean values for each channel indicating whether enabled." />
'

JSON "@channelsEnabled": {
  "$comment": "MFBool inputOutput",
  "type": "array",
  "items": {
    "type": "boolean"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
endFrame
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="endFrame" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="endFrame indicates final index of animated frame." />
'

JSON "@endFrame": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
frameDuration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frameDuration" type="SFTime" accessType="inputOutput" default="0.1" minExclusive="0" description="frameDuration specifies the duration of each frame in seconds." />
'

JSON "@frameDuration": {
  "exclusiveMinimum": 0,
  "default": 0.1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
frameIncrement
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frameIncrement" type="SFInt32" accessType="inputOutput" default="1" description="frameIncrement field controls whether playback direction is forwards or backwards, and also whether frames are skipped (for example, subsampled replay)." />
'

JSON "@frameIncrement": {
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
frameIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frameIndex" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="frameIndex indicates index of current frame." />
'

JSON "@frameIndex": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
joints
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="joints" type="SFString" accessType="inputOutput" description="joints field lists names of joints that raw motion data is to be applied to." />
'

JSON "@joints": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
loa
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loa" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" maxInclusive="4" baseType="loaType" description="Level Of Articulation 0." />
'

JSON "@loa": {
  "maximum": 4,
  "minimum": -1,
  "default": -1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
loop
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
'

JSON "@loop": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimMotion node can be identified at run time for animation purposes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
startFrame
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startFrame" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="startFrame indicates initial index of animated frame." />
'

JSON "@startFrame": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
values
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="values" type="MFFloat" accessType="inputOutput" description="values field contains all transformation values, ordered first by frame, then by joint, and then by transformation Sets of floats in the values array matching the order listed in joints and channels fields." />
'

JSON "@values": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimSegment
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimSegment">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSegment" appinfo="HAnimSegment node contains Shape geometry for each body segment, providing a visual representation of the skeleton segment.">
<componentInfo name="HAnim" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="centerOfMass" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Location within segment of center of mass." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="the coord field is used for HAnimSegment objects that have deformable meshes and shall contain coordinates referenced from the IndexedFaceSet for the paarent HAnimSegment object." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="displacers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimDisplacer" description="the displacers field stores HAnimDisplacer objects for a particular HAnimSegment object." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Total mass of the segment, 0 if not available, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="momentsOfInertia" type="MFFloat" accessType="inputOutput" default="0 0 0 0 0 0 0 0 0" minInclusive="0" description="3x3 moments of inertia matrix." />
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimSegmentNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimSegment node can be identified at run time for animation purposes.">
<enumeration value="sacrum" index="1" loa="1" parent="humanoid_root" documentation="https://en.wikipedia.org/wiki/Sacrum" />
<enumeration value="pelvis" index="2" loa="1" parent="sacroiliac" documentation="https://en.wikipedia.org/wiki/Pelvis" />
<enumeration value="l_thigh" index="3" loa="1" parent="l_hip" documentation="https://en.wikipedia.org/wiki/Thigh" />
<enumeration value="l_calf" index="4" loa="1" parent="l_knee" documentation="https://en.wikipedia.org/wiki/Calf_(leg)" />
<enumeration value="l_talus" index="5" alias="l_hindfoot" loa="1" parent="l_talocrural" documentation="https://en.wikipedia.org/wiki/Talus_bone" />
<enumeration value="l_navicular" index="6" loa="4" parent="l_talocalcaneonavicular" documentation="https://en.wikipedia.org/wiki/Navicular_bone" />
<enumeration value="l_cuneiform_1" index="7" loa="4" parent="l_cuneonavicular_1" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_1" index="8" loa="4" parent="l_tarsometatarsal_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_1" index="9" loa="4" parent="l_metatarsophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="10" loa="4" parent="l_tarsal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_cuneiform_2" index="11" alias="l_cuneiform" loa="4" parent="l_cuneonavicular_2" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_2" index="12" alias="l_midproximal,l_metatarsal" loa="2" parent="l_tarsometatarsal_2" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_2" index="13" alias="l_middistal,l_tarsal_proximal_phalanx" loa="1" parent="l_metatarsophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_2" index="14" alias="l_tarsal_middle_phalanx" loa="4" parent="l_tarsal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="15" alias="l_forefoot,l_tarsal_distal_phalanx" loa="2" parent="l_tarsal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_cuneiform_3" index="16" loa="4" parent="l_cuneonavicular_3" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_3" index="17" loa="4" parent="l_tarsometatarsal_3" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_3" index="18" loa="4" parent="l_metatarsophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_3" index="19" loa="4" parent="l_tarsal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="20" loa="4" parent="l_tarsal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_calcaneus" index="21" alias="l_calcaneum" loa="4" parent="l_calcaneocuboid" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_cuboid" index="22" loa="4" parent="l_transversetarsal" documentation="https://en.wikipedia.org/wiki/Cuboid" />
<enumeration value="l_metatarsal_4" index="23" loa="4" parent="l_tarsometatarsal_4" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_4" index="24" loa="4" parent="l_metatarsophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_4" index="25" loa="4" parent="l_tarsal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="26" loa="4" parent="l_tarsal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_metatarsal_5" index="27" loa="4" parent="l_tarsometatarsal_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_5" index="28" loa="4" parent="l_metatarsophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_5" index="29" loa="4" parent="l_tarsal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="30" loa="4" parent="l_tarsal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_thigh" index="31" loa="1" parent="r_hip" documentation="https://en.wikipedia.org/wiki/Thigh" />
<enumeration value="r_calf" index="32" loa="1" parent="r_knee" documentation="https://en.wikipedia.org/wiki/Calf_(leg)" />
<enumeration value="r_talus" index="33" alias="r_hindfoot" loa="1" parent="r_talocrural" documentation="https://en.wikipedia.org/wiki/Talus_bone" />
<enumeration value="r_navicular" index="34" loa="4" parent="r_talocalcaneonavicular" documentation="https://en.wikipedia.org/wiki/Navicular_bone" />
<enumeration value="r_cuneiform_1" index="35" loa="4" parent="r_cuneonavicular_1" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_1" index="36" loa="4" parent="r_tarsometatarsal_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_1" index="37" loa="4" parent="r_metatarsophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="38" loa="4" parent="r_tarsal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_cuneiform_2" index="39" alias="r_cuneiform" loa="4" parent="r_cuneonavicular_2" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_2" index="40" alias="r_midproximal" loa="2" parent="r_tarsometatarsal_2" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_2" index="41" alias="r_middistal,r_tarsal_proximal_phalanx" loa="1" parent="r_metatarsophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_2" index="42" alias="r_tarsal_middle_phalanx" loa="4" parent="r_tarsal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="43" alias="r_forefoot,r_tarsal_distal_phalanx" loa="2" parent="r_tarsal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_cuneiform_3" index="44" loa="4" parent="r_cuneonavicular_3" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_3" index="45" loa="4" parent="r_tarsometatarsal_3" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_3" index="46" loa="4" parent="r_metatarsophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_3" index="47" loa="4" parent="r_tarsal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="48" loa="4" parent="r_tarsal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_calcaneus" index="49" alias="r_calcaneum" loa="4" parent="r_calcaneocuboid" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_cuboid" index="50" loa="4" parent="r_transversetarsal" documentation="https://en.wikipedia.org/wiki/Cuboid" />
<enumeration value="r_metatarsal_4" index="51" loa="4" parent="r_tarsometatarsal_4" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_4" index="52" loa="4" parent="r_metatarsophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_4" index="53" loa="4" parent="r_tarsal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="54" loa="4" parent="r_tarsal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_metatarsal_5" index="55" loa="4" parent="r_tarsometatarsal_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_5" index="56" loa="4" parent="r_metatarsophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_5" index="57" loa="4" parent="r_tarsal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="58" loa="4" parent="r_tarsal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l5" index="59" loa="1" parent="vl5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l4" index="60" loa="3" parent="vl4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l3" index="61" loa="2" parent="vl3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l2" index="62" loa="3" parent="vl2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l1" index="63" loa="2" parent="vl1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t12" index="64" loa="3" parent="vt12" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t11" index="65" loa="3" parent="vt11" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t10" index="66" loa="2" parent="vt10" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t9" index="67" loa="3" parent="vt9" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t8" index="68" loa="3" parent="vt8" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t7" index="69" loa="3" parent="vt7" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t6" index="70" loa="2" parent="vt6" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t5" index="71" loa="3" parent="vt5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t4" index="72" loa="3" parent="vt4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t3" index="73" loa="3" parent="vt3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t2" index="74" loa="3" parent="vt2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t1" index="75" loa="2" parent="vt1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c7" index="76" loa="3" parent="vc7" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c6" index="77" loa="3" parent="vc6" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c5" index="78" loa="3" parent="vc5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c4" index="79" loa="2" parent="vc4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c3" index="80" loa="3" parent="vc3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c2" index="81" loa="2" parent="vc2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c1" index="82" loa="3" parent="vc1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="skull" index="83" alias="head" loa="1" parent="skullbase" documentation="https://en.wikipedia.org/wiki/Skull" />
<enumeration value="l_eyelid" index="84" loa="3" parent="l_eyelid_joint" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="r_eyelid" index="85" loa="3" parent="r_eyelid_joint" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="l_eyeball" index="86" loa="3" parent="l_eyeball_joint" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="r_eyeball" index="87" loa="3" parent="r_eyeball_joint" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="l_eyebrow" index="88" loa="3" parent="l_eyebrow_joint" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="r_eyebrow" index="89" loa="3" parent="r_eyebrow_joint" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="jaw" index="90" loa="3" parent="temporomandibular" documentation="https://en.wikipedia.org/wiki/Jaw" />
<enumeration value="l_clavicle" index="91" loa="2" parent="l_sternoclavicular" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_scapula" index="92" loa="2" parent="l_acromioclavicular" documentation="https://en.wikipedia.org/wiki/Scapula" />
<enumeration value="l_upperarm" index="93" loa="1" parent="l_shoulder" documentation="https://en.wikipedia.org/wiki/Arm" />
<enumeration value="l_forearm" index="94" loa="1" parent="l_elbow" documentation="https://en.wikipedia.org/wiki/Forearm" />
<enumeration value="l_carpal" index="95" alias="l_hand" loa="1" parent="l_radiocarpal" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_trapezium" index="96" loa="4" parent="l_midcarpal_1" documentation="https://en.wikipedia.org/wiki/Trapezium_(bone)" />
<enumeration value="l_metacarpal_1" index="97" alias="l_thumb_metacarpal" loa="2" parent="l_carpometacarpal_1" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_1" index="98" alias="l_thumb_proximal" loa="2" parent="l_metacarpophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_1" index="99" alias="l_thumb_distal" loa="2" parent="l_carpal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_trapezoid" index="100" loa="4" parent="l_midcarpal_2" documentation="https://en.wikipedia.org/wiki/Trapezoid_bone" />
<enumeration value="l_metacarpal_2" index="101" alias="l_index_metacarpal" loa="2" parent="l_carpometacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_2" index="102" alias="l_index_proximal,l_carpal_proximal_phalanx" loa="2" parent="l_metacarpophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_2" index="103" alias="l_index_middle,l_carpal_middle_phalanx" loa="2" parent="l_carpal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="104" alias="l_index_distal,l_carpal_distal_phalanx" loa="2" parent="l_carpal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_capitate" index="105" loa="4" parent="l_midcarpal_3" documentation="https://en.wikipedia.org/wiki/Capitate_bone" />
<enumeration value="l_metacarpal_3" index="106" alias="l_middle_metacarpal" loa="2" parent="l_carpometacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_3" index="107" alias="l_middle_proximal" loa="2" parent="l_metacarpophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_3" index="108" alias="l_middle_middle" loa="2" parent="l_carpal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="109" alias="l_middle_distal" loa="2" parent="l_carpal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_hamate" index="110" loa="4" parent="l_midcarpal_4_5" documentation="https://en.wikipedia.org/wiki/Hamate_bone" />
<enumeration value="l_metacarpal_4" index="111" alias="l_ring_metacarpal" loa="2" parent="l_carpometacarpal_4" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_4" index="112" alias="l_ring_proximal" loa="2" parent="l_metacarpophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_4" index="113" alias="l_ring_middle" loa="2" parent="l_carpal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="114" alias="l_ring_distal" loa="2" parent="l_carpal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_metacarpal_5" index="115" alias="l_pinky_metacarpal" loa="2" parent="l_carpometacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_5" index="116" alias="l_pinky_proximal" loa="2" parent="l_metacarpophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_5" index="117" alias="l_pinky_middle" loa="2" parent="l_carpal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="118" alias="l_pinky_distal" loa="2" parent="l_carpal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_clavicle" index="119" loa="2" parent="r_sternoclavicular" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_scapula" index="120" loa="2" parent="r_acromioclavicular" documentation="https://en.wikipedia.org/wiki/Scapula" />
<enumeration value="r_upperarm" index="121" loa="1" parent="r_shoulder" documentation="https://en.wikipedia.org/wiki/Arm" />
<enumeration value="r_forearm" index="122" loa="1" parent="r_elbow" documentation="https://en.wikipedia.org/wiki/Forearm" />
<enumeration value="r_carpal" index="123" alias="r_hand" loa="1" parent="r_radiocarpal" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_trapezium" index="124" loa="4" parent="r_midcarpal_1" documentation="https://en.wikipedia.org/wiki/Trapezium_(bone)" />
<enumeration value="r_metacarpal_1" index="125" alias="r_thumb_metacarpal" loa="2" parent="r_carpometacarpal_1" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_1" index="126" alias="r_thumb_proximal" loa="2" parent="r_metacarpophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="127" alias="r_thumb_distal" loa="2" parent="r_carpal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_trapezoid" index="128" loa="4" parent="r_midcarpal_2" documentation="https://en.wikipedia.org/wiki/Trapezoid_bone" />
<enumeration value="r_metacarpal_2" index="129" alias="r_index_metacarpal" loa="2" parent="r_carpometacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_2" index="130" alias="r_index_proximal,r_carpal_proximal_phalanx" loa="2" parent="r_metacarpophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_2" index="131" alias="r_index_middle,r_carpal_middle_phalanx" loa="2" parent="r_carpal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="132" alias="r_index_distal,r_carpal_distal_phalanx" loa="2" parent="r_carpal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_capitate" index="133" loa="4" parent="r_midcarpal_3" documentation="https://en.wikipedia.org/wiki/Capitate_bone" />
<enumeration value="r_metacarpal_3" index="134" alias="r_middle_metacarpal" loa="2" parent="r_carpometacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_3" index="135" alias="r_middle_proximal" loa="2" parent="r_metacarpophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_3" index="136" alias="r_middle_middle" loa="2" parent="r_carpal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="137" alias="r_middle_distal" loa="2" parent="r_carpal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_hamate" index="138" loa="4" parent="r_midcarpal_4_5" documentation="https://en.wikipedia.org/wiki/Hamate_bone" />
<enumeration value="r_metacarpal_4" index="139" alias="r_ring_metacarpal" loa="2" parent="r_carpometacarpal_4" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_4" index="140" alias="r_ring_proximal" loa="2" parent="r_metacarpophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_4" index="141" alias="r_ring_middle" loa="2" parent="r_carpal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="142" alias="r_ring_distal" loa="2" parent="r_carpal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_metacarpal_5" index="143" alias="r_pinky_metacarpal" loa="2" parent="r_carpometacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_5" index="144" alias="r_pinky_proximal" loa="2" parent="r_metacarpophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_5" index="145" alias="r_pinky_middle" loa="2" parent="r_carpal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="146" alias="r_pinky_distal" loa="2" parent="r_carpal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesHAnimSegment" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="HAnimDisplacer" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimSegment": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@centerOfMass": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-coord": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-displacers": {
          "$ref": "#/$defs/-HAnimDisplacerMFNode"
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@momentsOfInertia": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "@name": {
          "anyOf": [
            {
              "enum": [
                "sacrum",
                "pelvis",
                "l_thigh",
                "l_calf",
                "l_talus",
                "l_navicular",
                "l_cuneiform_1",
                "l_metatarsal_1",
                "l_tarsal_proximal_phalanx_1",
                "l_tarsal_distal_phalanx_1",
                "l_cuneiform_2",
                "l_metatarsal_2",
                "l_tarsal_proximal_phalanx_2",
                "l_tarsal_middle_phalanx_2",
                "l_tarsal_distal_phalanx_2",
                "l_cuneiform_3",
                "l_metatarsal_3",
                "l_tarsal_proximal_phalanx_3",
                "l_tarsal_middle_phalanx_3",
                "l_tarsal_distal_phalanx_3",
                "l_calcaneus",
                "l_cuboid",
                "l_metatarsal_4",
                "l_tarsal_proximal_phalanx_4",
                "l_tarsal_middle_phalanx_4",
                "l_tarsal_distal_phalanx_4",
                "l_metatarsal_5",
                "l_tarsal_proximal_phalanx_5",
                "l_tarsal_middle_phalanx_5",
                "l_tarsal_distal_phalanx_5",
                "r_thigh",
                "r_calf",
                "r_talus",
                "r_navicular",
                "r_cuneiform_1",
                "r_metatarsal_1",
                "r_tarsal_proximal_phalanx_1",
                "r_tarsal_distal_phalanx_1",
                "r_cuneiform_2",
                "r_metatarsal_2",
                "r_tarsal_proximal_phalanx_2",
                "r_tarsal_middle_phalanx_2",
                "r_tarsal_distal_phalanx_2",
                "r_cuneiform_3",
                "r_metatarsal_3",
                "r_tarsal_proximal_phalanx_3",
                "r_tarsal_middle_phalanx_3",
                "r_tarsal_distal_phalanx_3",
                "r_calcaneus",
                "r_cuboid",
                "r_metatarsal_4",
                "r_tarsal_proximal_phalanx_4",
                "r_tarsal_middle_phalanx_4",
                "r_tarsal_distal_phalanx_4",
                "r_metatarsal_5",
                "r_tarsal_proximal_phalanx_5",
                "r_tarsal_middle_phalanx_5",
                "r_tarsal_distal_phalanx_5",
                "l5",
                "l4",
                "l3",
                "l2",
                "l1",
                "t12",
                "t11",
                "t10",
                "t9",
                "t8",
                "t7",
                "t6",
                "t5",
                "t4",
                "t3",
                "t2",
                "t1",
                "c7",
                "c6",
                "c5",
                "c4",
                "c3",
                "c2",
                "c1",
                "skull",
                "l_eyelid",
                "r_eyelid",
                "l_eyeball",
                "r_eyeball",
                "l_eyebrow",
                "r_eyebrow",
                "jaw",
                "l_clavicle",
                "l_scapula",
                "l_upperarm",
                "l_forearm",
                "l_carpal",
                "l_trapezium",
                "l_metacarpal_1",
                "l_carpal_proximal_phalanx_1",
                "l_carpal_distal_phalanx_1",
                "l_trapezoid",
                "l_metacarpal_2",
                "l_carpal_proximal_phalanx_2",
                "l_carpal_middle_phalanx_2",
                "l_carpal_distal_phalanx_2",
                "l_capitate",
                "l_metacarpal_3",
                "l_carpal_proximal_phalanx_3",
                "l_carpal_middle_phalanx_3",
                "l_carpal_distal_phalanx_3",
                "l_hamate",
                "l_metacarpal_4",
                "l_carpal_proximal_phalanx_4",
                "l_carpal_middle_phalanx_4",
                "l_carpal_distal_phalanx_4",
                "l_metacarpal_5",
                "l_carpal_proximal_phalanx_5",
                "l_carpal_middle_phalanx_5",
                "l_carpal_distal_phalanx_5",
                "r_clavicle",
                "r_scapula",
                "r_upperarm",
                "r_forearm",
                "r_carpal",
                "r_trapezium",
                "r_metacarpal_1",
                "r_carpal_proximal_phalanx_1",
                "r_carpal_distal_phalanx_1",
                "r_trapezoid",
                "r_metacarpal_2",
                "r_carpal_proximal_phalanx_2",
                "r_carpal_middle_phalanx_2",
                "r_carpal_distal_phalanx_2",
                "r_capitate",
                "r_metacarpal_3",
                "r_carpal_proximal_phalanx_3",
                "r_carpal_middle_phalanx_3",
                "r_carpal_distal_phalanx_3",
                "r_hamate",
                "r_metacarpal_4",
                "r_carpal_proximal_phalanx_4",
                "r_carpal_middle_phalanx_4",
                "r_carpal_distal_phalanx_4",
                "r_metacarpal_5",
                "r_carpal_proximal_phalanx_5",
                "r_carpal_middle_phalanx_5",
                "r_carpal_distal_phalanx_5"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
centerOfMass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="centerOfMass" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Location within segment of center of mass." />
'

JSON "@centerOfMass": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="the coord field is used for HAnimSegment objects that have deformable meshes and shall contain coordinates referenced from the IndexedFaceSet for the paarent HAnimSegment object." />
'

JSON "-coord": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
displacers
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="displacers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="HAnimDisplacer" description="the displacers field stores HAnimDisplacer objects for a particular HAnimSegment object." />
'

JSON "-displacers": {
  "$ref": "#/$defs/-HAnimDisplacerMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Total mass of the segment, 0 if not available, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
momentsOfInertia
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="momentsOfInertia" type="MFFloat" accessType="inputOutput" default="0 0 0 0 0 0 0 0 0" minInclusive="0" description="3x3 moments of inertia matrix." />
'

JSON "@momentsOfInertia": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimSegmentNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimSegment node can be identified at run time for animation purposes.">
<enumeration value="sacrum" index="1" loa="1" parent="humanoid_root" documentation="https://en.wikipedia.org/wiki/Sacrum" />
<enumeration value="pelvis" index="2" loa="1" parent="sacroiliac" documentation="https://en.wikipedia.org/wiki/Pelvis" />
<enumeration value="l_thigh" index="3" loa="1" parent="l_hip" documentation="https://en.wikipedia.org/wiki/Thigh" />
<enumeration value="l_calf" index="4" loa="1" parent="l_knee" documentation="https://en.wikipedia.org/wiki/Calf_(leg)" />
<enumeration value="l_talus" index="5" alias="l_hindfoot" loa="1" parent="l_talocrural" documentation="https://en.wikipedia.org/wiki/Talus_bone" />
<enumeration value="l_navicular" index="6" loa="4" parent="l_talocalcaneonavicular" documentation="https://en.wikipedia.org/wiki/Navicular_bone" />
<enumeration value="l_cuneiform_1" index="7" loa="4" parent="l_cuneonavicular_1" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_1" index="8" loa="4" parent="l_tarsometatarsal_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_1" index="9" loa="4" parent="l_metatarsophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="10" loa="4" parent="l_tarsal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_cuneiform_2" index="11" alias="l_cuneiform" loa="4" parent="l_cuneonavicular_2" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_2" index="12" alias="l_midproximal,l_metatarsal" loa="2" parent="l_tarsometatarsal_2" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_2" index="13" alias="l_middistal,l_tarsal_proximal_phalanx" loa="1" parent="l_metatarsophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_2" index="14" alias="l_tarsal_middle_phalanx" loa="4" parent="l_tarsal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="15" alias="l_forefoot,l_tarsal_distal_phalanx" loa="2" parent="l_tarsal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_cuneiform_3" index="16" loa="4" parent="l_cuneonavicular_3" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="l_metatarsal_3" index="17" loa="4" parent="l_tarsometatarsal_3" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_3" index="18" loa="4" parent="l_metatarsophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_3" index="19" loa="4" parent="l_tarsal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="20" loa="4" parent="l_tarsal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_calcaneus" index="21" alias="l_calcaneum" loa="4" parent="l_calcaneocuboid" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_cuboid" index="22" loa="4" parent="l_transversetarsal" documentation="https://en.wikipedia.org/wiki/Cuboid" />
<enumeration value="l_metatarsal_4" index="23" loa="4" parent="l_tarsometatarsal_4" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_4" index="24" loa="4" parent="l_metatarsophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_4" index="25" loa="4" parent="l_tarsal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="26" loa="4" parent="l_tarsal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_metatarsal_5" index="27" loa="4" parent="l_tarsometatarsal_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_tarsal_proximal_phalanx_5" index="28" loa="4" parent="l_metatarsophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_middle_phalanx_5" index="29" loa="4" parent="l_tarsal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="30" loa="4" parent="l_tarsal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_thigh" index="31" loa="1" parent="r_hip" documentation="https://en.wikipedia.org/wiki/Thigh" />
<enumeration value="r_calf" index="32" loa="1" parent="r_knee" documentation="https://en.wikipedia.org/wiki/Calf_(leg)" />
<enumeration value="r_talus" index="33" alias="r_hindfoot" loa="1" parent="r_talocrural" documentation="https://en.wikipedia.org/wiki/Talus_bone" />
<enumeration value="r_navicular" index="34" loa="4" parent="r_talocalcaneonavicular" documentation="https://en.wikipedia.org/wiki/Navicular_bone" />
<enumeration value="r_cuneiform_1" index="35" loa="4" parent="r_cuneonavicular_1" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_1" index="36" loa="4" parent="r_tarsometatarsal_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_1" index="37" loa="4" parent="r_metatarsophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="38" loa="4" parent="r_tarsal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_cuneiform_2" index="39" alias="r_cuneiform" loa="4" parent="r_cuneonavicular_2" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_2" index="40" alias="r_midproximal" loa="2" parent="r_tarsometatarsal_2" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_2" index="41" alias="r_middistal,r_tarsal_proximal_phalanx" loa="1" parent="r_metatarsophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_2" index="42" alias="r_tarsal_middle_phalanx" loa="4" parent="r_tarsal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="43" alias="r_forefoot,r_tarsal_distal_phalanx" loa="2" parent="r_tarsal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_cuneiform_3" index="44" loa="4" parent="r_cuneonavicular_3" documentation="https://en.wikipedia.org/wiki/Cuneiform_bones" />
<enumeration value="r_metatarsal_3" index="45" loa="4" parent="r_tarsometatarsal_3" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_3" index="46" loa="4" parent="r_metatarsophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_3" index="47" loa="4" parent="r_tarsal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="48" loa="4" parent="r_tarsal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_calcaneus" index="49" alias="r_calcaneum" loa="4" parent="r_calcaneocuboid" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_cuboid" index="50" loa="4" parent="r_transversetarsal" documentation="https://en.wikipedia.org/wiki/Cuboid" />
<enumeration value="r_metatarsal_4" index="51" loa="4" parent="r_tarsometatarsal_4" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_4" index="52" loa="4" parent="r_metatarsophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_4" index="53" loa="4" parent="r_tarsal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="54" loa="4" parent="r_tarsal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_metatarsal_5" index="55" loa="4" parent="r_tarsometatarsal_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_tarsal_proximal_phalanx_5" index="56" loa="4" parent="r_metatarsophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_middle_phalanx_5" index="57" loa="4" parent="r_tarsal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="58" loa="4" parent="r_tarsal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l5" index="59" loa="1" parent="vl5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l4" index="60" loa="3" parent="vl4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l3" index="61" loa="2" parent="vl3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l2" index="62" loa="3" parent="vl2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="l1" index="63" loa="2" parent="vl1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t12" index="64" loa="3" parent="vt12" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t11" index="65" loa="3" parent="vt11" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t10" index="66" loa="2" parent="vt10" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t9" index="67" loa="3" parent="vt9" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t8" index="68" loa="3" parent="vt8" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t7" index="69" loa="3" parent="vt7" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t6" index="70" loa="2" parent="vt6" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t5" index="71" loa="3" parent="vt5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t4" index="72" loa="3" parent="vt4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t3" index="73" loa="3" parent="vt3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t2" index="74" loa="3" parent="vt2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="t1" index="75" loa="2" parent="vt1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c7" index="76" loa="3" parent="vc7" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c6" index="77" loa="3" parent="vc6" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c5" index="78" loa="3" parent="vc5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c4" index="79" loa="2" parent="vc4" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c3" index="80" loa="3" parent="vc3" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c2" index="81" loa="2" parent="vc2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="c1" index="82" loa="3" parent="vc1" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="skull" index="83" alias="head" loa="1" parent="skullbase" documentation="https://en.wikipedia.org/wiki/Skull" />
<enumeration value="l_eyelid" index="84" loa="3" parent="l_eyelid_joint" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="r_eyelid" index="85" loa="3" parent="r_eyelid_joint" documentation="https://en.wikipedia.org/wiki/Eyelid" />
<enumeration value="l_eyeball" index="86" loa="3" parent="l_eyeball_joint" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="r_eyeball" index="87" loa="3" parent="r_eyeball_joint" documentation="https://en.wikipedia.org/wiki/Eye" />
<enumeration value="l_eyebrow" index="88" loa="3" parent="l_eyebrow_joint" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="r_eyebrow" index="89" loa="3" parent="r_eyebrow_joint" documentation="https://en.wikipedia.org/wiki/Eyebrow" />
<enumeration value="jaw" index="90" loa="3" parent="temporomandibular" documentation="https://en.wikipedia.org/wiki/Jaw" />
<enumeration value="l_clavicle" index="91" loa="2" parent="l_sternoclavicular" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_scapula" index="92" loa="2" parent="l_acromioclavicular" documentation="https://en.wikipedia.org/wiki/Scapula" />
<enumeration value="l_upperarm" index="93" loa="1" parent="l_shoulder" documentation="https://en.wikipedia.org/wiki/Arm" />
<enumeration value="l_forearm" index="94" loa="1" parent="l_elbow" documentation="https://en.wikipedia.org/wiki/Forearm" />
<enumeration value="l_carpal" index="95" alias="l_hand" loa="1" parent="l_radiocarpal" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_trapezium" index="96" loa="4" parent="l_midcarpal_1" documentation="https://en.wikipedia.org/wiki/Trapezium_(bone)" />
<enumeration value="l_metacarpal_1" index="97" alias="l_thumb_metacarpal" loa="2" parent="l_carpometacarpal_1" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_1" index="98" alias="l_thumb_proximal" loa="2" parent="l_metacarpophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_1" index="99" alias="l_thumb_distal" loa="2" parent="l_carpal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_trapezoid" index="100" loa="4" parent="l_midcarpal_2" documentation="https://en.wikipedia.org/wiki/Trapezoid_bone" />
<enumeration value="l_metacarpal_2" index="101" alias="l_index_metacarpal" loa="2" parent="l_carpometacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_2" index="102" alias="l_index_proximal,l_carpal_proximal_phalanx" loa="2" parent="l_metacarpophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_2" index="103" alias="l_index_middle,l_carpal_middle_phalanx" loa="2" parent="l_carpal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="104" alias="l_index_distal,l_carpal_distal_phalanx" loa="2" parent="l_carpal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_capitate" index="105" loa="4" parent="l_midcarpal_3" documentation="https://en.wikipedia.org/wiki/Capitate_bone" />
<enumeration value="l_metacarpal_3" index="106" alias="l_middle_metacarpal" loa="2" parent="l_carpometacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_3" index="107" alias="l_middle_proximal" loa="2" parent="l_metacarpophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_3" index="108" alias="l_middle_middle" loa="2" parent="l_carpal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="109" alias="l_middle_distal" loa="2" parent="l_carpal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_hamate" index="110" loa="4" parent="l_midcarpal_4_5" documentation="https://en.wikipedia.org/wiki/Hamate_bone" />
<enumeration value="l_metacarpal_4" index="111" alias="l_ring_metacarpal" loa="2" parent="l_carpometacarpal_4" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_4" index="112" alias="l_ring_proximal" loa="2" parent="l_metacarpophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_4" index="113" alias="l_ring_middle" loa="2" parent="l_carpal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="114" alias="l_ring_distal" loa="2" parent="l_carpal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_metacarpal_5" index="115" alias="l_pinky_metacarpal" loa="2" parent="l_carpometacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_carpal_proximal_phalanx_5" index="116" alias="l_pinky_proximal" loa="2" parent="l_metacarpophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_middle_phalanx_5" index="117" alias="l_pinky_middle" loa="2" parent="l_carpal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="118" alias="l_pinky_distal" loa="2" parent="l_carpal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_clavicle" index="119" loa="2" parent="r_sternoclavicular" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_scapula" index="120" loa="2" parent="r_acromioclavicular" documentation="https://en.wikipedia.org/wiki/Scapula" />
<enumeration value="r_upperarm" index="121" loa="1" parent="r_shoulder" documentation="https://en.wikipedia.org/wiki/Arm" />
<enumeration value="r_forearm" index="122" loa="1" parent="r_elbow" documentation="https://en.wikipedia.org/wiki/Forearm" />
<enumeration value="r_carpal" index="123" alias="r_hand" loa="1" parent="r_radiocarpal" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_trapezium" index="124" loa="4" parent="r_midcarpal_1" documentation="https://en.wikipedia.org/wiki/Trapezium_(bone)" />
<enumeration value="r_metacarpal_1" index="125" alias="r_thumb_metacarpal" loa="2" parent="r_carpometacarpal_1" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_1" index="126" alias="r_thumb_proximal" loa="2" parent="r_metacarpophalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="127" alias="r_thumb_distal" loa="2" parent="r_carpal_interphalangeal_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_trapezoid" index="128" loa="4" parent="r_midcarpal_2" documentation="https://en.wikipedia.org/wiki/Trapezoid_bone" />
<enumeration value="r_metacarpal_2" index="129" alias="r_index_metacarpal" loa="2" parent="r_carpometacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_2" index="130" alias="r_index_proximal,r_carpal_proximal_phalanx" loa="2" parent="r_metacarpophalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_2" index="131" alias="r_index_middle,r_carpal_middle_phalanx" loa="2" parent="r_carpal_proximal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="132" alias="r_index_distal,r_carpal_distal_phalanx" loa="2" parent="r_carpal_distal_interphalangeal_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_capitate" index="133" loa="4" parent="r_midcarpal_3" documentation="https://en.wikipedia.org/wiki/Capitate_bone" />
<enumeration value="r_metacarpal_3" index="134" alias="r_middle_metacarpal" loa="2" parent="r_carpometacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_3" index="135" alias="r_middle_proximal" loa="2" parent="r_metacarpophalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_3" index="136" alias="r_middle_middle" loa="2" parent="r_carpal_proximal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="137" alias="r_middle_distal" loa="2" parent="r_carpal_distal_interphalangeal_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_hamate" index="138" loa="4" parent="r_midcarpal_4_5" documentation="https://en.wikipedia.org/wiki/Hamate_bone" />
<enumeration value="r_metacarpal_4" index="139" alias="r_ring_metacarpal" loa="2" parent="r_carpometacarpal_4" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_4" index="140" alias="r_ring_proximal" loa="2" parent="r_metacarpophalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_4" index="141" alias="r_ring_middle" loa="2" parent="r_carpal_proximal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="142" alias="r_ring_distal" loa="2" parent="r_carpal_distal_interphalangeal_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_metacarpal_5" index="143" alias="r_pinky_metacarpal" loa="2" parent="r_carpometacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_carpal_proximal_phalanx_5" index="144" alias="r_pinky_proximal" loa="2" parent="r_metacarpophalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_middle_phalanx_5" index="145" alias="r_pinky_middle" loa="2" parent="r_carpal_proximal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="146" alias="r_pinky_distal" loa="2" parent="r_carpal_distal_interphalangeal_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
'

JSON "@name": {
  "anyOf": [
    {
      "enum": [
        "sacrum",
        "pelvis",
        "l_thigh",
        "l_calf",
        "l_talus",
        "l_navicular",
        "l_cuneiform_1",
        "l_metatarsal_1",
        "l_tarsal_proximal_phalanx_1",
        "l_tarsal_distal_phalanx_1",
        "l_cuneiform_2",
        "l_metatarsal_2",
        "l_tarsal_proximal_phalanx_2",
        "l_tarsal_middle_phalanx_2",
        "l_tarsal_distal_phalanx_2",
        "l_cuneiform_3",
        "l_metatarsal_3",
        "l_tarsal_proximal_phalanx_3",
        "l_tarsal_middle_phalanx_3",
        "l_tarsal_distal_phalanx_3",
        "l_calcaneus",
        "l_cuboid",
        "l_metatarsal_4",
        "l_tarsal_proximal_phalanx_4",
        "l_tarsal_middle_phalanx_4",
        "l_tarsal_distal_phalanx_4",
        "l_metatarsal_5",
        "l_tarsal_proximal_phalanx_5",
        "l_tarsal_middle_phalanx_5",
        "l_tarsal_distal_phalanx_5",
        "r_thigh",
        "r_calf",
        "r_talus",
        "r_navicular",
        "r_cuneiform_1",
        "r_metatarsal_1",
        "r_tarsal_proximal_phalanx_1",
        "r_tarsal_distal_phalanx_1",
        "r_cuneiform_2",
        "r_metatarsal_2",
        "r_tarsal_proximal_phalanx_2",
        "r_tarsal_middle_phalanx_2",
        "r_tarsal_distal_phalanx_2",
        "r_cuneiform_3",
        "r_metatarsal_3",
        "r_tarsal_proximal_phalanx_3",
        "r_tarsal_middle_phalanx_3",
        "r_tarsal_distal_phalanx_3",
        "r_calcaneus",
        "r_cuboid",
        "r_metatarsal_4",
        "r_tarsal_proximal_phalanx_4",
        "r_tarsal_middle_phalanx_4",
        "r_tarsal_distal_phalanx_4",
        "r_metatarsal_5",
        "r_tarsal_proximal_phalanx_5",
        "r_tarsal_middle_phalanx_5",
        "r_tarsal_distal_phalanx_5",
        "l5",
        "l4",
        "l3",
        "l2",
        "l1",
        "t12",
        "t11",
        "t10",
        "t9",
        "t8",
        "t7",
        "t6",
        "t5",
        "t4",
        "t3",
        "t2",
        "t1",
        "c7",
        "c6",
        "c5",
        "c4",
        "c3",
        "c2",
        "c1",
        "skull",
        "l_eyelid",
        "r_eyelid",
        "l_eyeball",
        "r_eyeball",
        "l_eyebrow",
        "r_eyebrow",
        "jaw",
        "l_clavicle",
        "l_scapula",
        "l_upperarm",
        "l_forearm",
        "l_carpal",
        "l_trapezium",
        "l_metacarpal_1",
        "l_carpal_proximal_phalanx_1",
        "l_carpal_distal_phalanx_1",
        "l_trapezoid",
        "l_metacarpal_2",
        "l_carpal_proximal_phalanx_2",
        "l_carpal_middle_phalanx_2",
        "l_carpal_distal_phalanx_2",
        "l_capitate",
        "l_metacarpal_3",
        "l_carpal_proximal_phalanx_3",
        "l_carpal_middle_phalanx_3",
        "l_carpal_distal_phalanx_3",
        "l_hamate",
        "l_metacarpal_4",
        "l_carpal_proximal_phalanx_4",
        "l_carpal_middle_phalanx_4",
        "l_carpal_distal_phalanx_4",
        "l_metacarpal_5",
        "l_carpal_proximal_phalanx_5",
        "l_carpal_middle_phalanx_5",
        "l_carpal_distal_phalanx_5",
        "r_clavicle",
        "r_scapula",
        "r_upperarm",
        "r_forearm",
        "r_carpal",
        "r_trapezium",
        "r_metacarpal_1",
        "r_carpal_proximal_phalanx_1",
        "r_carpal_distal_phalanx_1",
        "r_trapezoid",
        "r_metacarpal_2",
        "r_carpal_proximal_phalanx_2",
        "r_carpal_middle_phalanx_2",
        "r_carpal_distal_phalanx_2",
        "r_capitate",
        "r_metacarpal_3",
        "r_carpal_proximal_phalanx_3",
        "r_carpal_middle_phalanx_3",
        "r_carpal_distal_phalanx_3",
        "r_hamate",
        "r_metacarpal_4",
        "r_carpal_proximal_phalanx_4",
        "r_carpal_middle_phalanx_4",
        "r_carpal_distal_phalanx_4",
        "r_metacarpal_5",
        "r_carpal_proximal_phalanx_5",
        "r_carpal_middle_phalanx_5",
        "r_carpal_distal_phalanx_5"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
HAnimSite
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="HAnimSite">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html#HAnimSite" appinfo="An HAnimSite node serves three purposes: (a) define an &quot;end effector&quot; location which can be used by an inverse kinematics system, (b) define an attachment point for accessories such as jewelry and clothing, and (c) define a location for a Viewpoint virtual camera in the reference frame of an HAnimSegment (such as a view &quot;through the eyes&quot; of the humanoid for use in multi-user worlds).">
<componentInfo name="HAnim" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Default location of this HAnimSite, i." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimFeaturePointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimSite node can be identified at run time for animation purposes.">
<enumeration value="skull_vertex" index="0" alias="skull_tip,vertex" loa="1" default="0.0050 1.7504 0.0055" parent="skull" appinfo="CAESAR 2003 skull_vertex matches ISO 7250-1 part 5.22 Vertex (top of head). No corresponding landmark provided in CAESAR 2018." documentation="https://en.wikipedia.org/wiki/Vertex_(anatomy)" />
<enumeration value="glabella" index="1" loa="1" parent="skull" appinfo="glabella is between the eyebrows and above the nose." documentation="https://en.wikipedia.org/wiki/Glabella" />
<enumeration value="sellion" index="2" loa="1" default="0.0058 1.6316 0.0852" parent="skull" appinfo="osseocartilaginous junction of the nasal dorsum." documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="l_infraorbitale" index="3" loa="1" default="0.0341 1.6171 0.0752" parent="skull" appinfo="Left Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="l_tragion" index="4" loa="1" default="0.0739 1.6348 0.0282" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="l_gonion" index="5" loa="1" default="0.0631 1.5530 0.0330" parent="skull" appinfo="Left Gonion is midpoint of mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="r_infraorbitale" index="6" loa="1" default="-0.0237 1.6171 0.0752" parent="skull" appinfo="Right Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="r_tragion" index="7" loa="1" default="-0.0646 1.6347 0.0302" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="r_gonion" index="8" loa="1" default="-0.0520 1.5529 0.0347" parent="skull" appinfo="Right Gonion is midpoint of the mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="supramenton" index="9" loa="3" default="0.0061 1.5410 0.0805" parent="jaw" appinfo="center point above tip of chin." documentation="https://www.cs.uu.nl/groups/MG/multimedia/publications/art/rsfp05.pdf" />
<enumeration value="cervicale" index="10" loa="2" default="0.0064 1.520 -0.0815" parent="t1" documentation="https://www.merriam-webster.com/dictionary/cervicale" />
<enumeration value="adams_apple" index="11" loa="2" parent="c2" documentation="https://en.wikipedia.org/wiki/Adam_s_apple" />
<enumeration value="suprasternale" index="12" loa="2" default="0.0084 1.4714 0.0551" parent="t1" appinfo="Suprasternale." documentation="https://medical-dictionary.thefreedictionary.com/spatium+suprasternale" />
<enumeration value="substernale" index="13" loa="2" default="0.0085 1.2995 0.1147" parent="t10" documentation="https://medical-dictionary.thefreedictionary.com/spatium+substernale" />
<enumeration value="l_clavicle" index="14" alias="l_clavicale" loa="2" default="0.0271 1.4943 0.0394" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_acromion" index="15" loa="2" default="0.2032 1.4760 -0.0490" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="l_axilla_proximal" index="16" alias="l_axilla_ant" loa="2" default="0.1777 1.4065 -0.0075" parent="l_clavicle" appinfo="Left Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_distal" index="17" alias="l_axilla_post" loa="2" default="0.1706 1.4072 -0.0875" parent="l_clavicle" appinfo="Left Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_posterior_folds" index="18" loa="2" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_clavicle" index="19" alias="r_clavicale" loa="2" default="-0.0115 1.4943 0.0400" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_acromion" index="20" loa="2" default="-0.1905 1.4791 -0.0431" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="r_axilla_proximal" index="21" alias="r_axilla_ant" loa="2" default="-0.1626 1.4072 -0.0031" parent="r_clavicle" appinfo="Right Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_distal" index="22" alias="r_axilla_post" loa="2" default="-0.1603 1.4098 -0.0826" parent="r_clavicle" appinfo="Right Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_posterior_folds" index="23" loa="2" parent="r_clavicle" appinfo="Right Posterior Axillary Folds." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="spine_1_middle_back" index="24" alias="middle back" loa="3" parent="t5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="spine_2_lower_back" index="25" alias="lower back" loa="3" default="0.0049 1.1908 -0.1113" parent="l2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="waist_preferred_anterior" index="26" alias="waist_preferred_ant" loa="3" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="waist_preferred_posterior" index="27" alias="waist_preferred_post" loa="3" default="0.2900 1.0915 -0.1091" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="l_rib10" index="28" alias="l_rib10_midspine" loa="3" default="0.0871 1.1925 0.0992" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="l_thelion" index="29" alias="Left Bustpoint" loa="3" default="0.0918 1.3382 0.1192" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="r_rib10" index="30" alias="r_rib10_midspine" loa="3" default="-0.0711 1.1941 0.1016" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="r_thelion" index="31" alias="Right Bustpoint" loa="3" default="-0.0736 1.3385 0.1217" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="l_asis" index="32" alias="Left Anterior Superior Iliac Spine" loa="1" default="0.0925 0.9983 0.1052" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="l_iliocristale" index="33" loa="1" default="0.1612 1.0537 0.0008" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="l_psis" index="34" alias="Left Posterior Superior Iliac Spine" loa="1" default="0.0774 1.0190 -0.1151" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="r_asis" index="35" alias="Right Anterior Superior Iliac Spine" loa="1" default="-0.0887 1.0021 0.1112" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="r_iliocristale" index="36" loa="1" default="-0.1525 1.0628 0.0035" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="r_psis" index="37" alias="Right Posterior Superior Iliac Spine" loa="1" default="-0.0716 1.0190 -0.1138" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="crotch" index="38" loa="1" default="0.0034 0.8266 0.0257" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Crotch" />
<enumeration value="l_femoral_lateral_epicondyle" index="39" alias="l_femoral_lateral_epicn,l_femoral_lateral_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="l_femoral_medial_epicondyle" index="40" alias="l_femoral_medial_epicn,l_femoral_medial_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="l_suprapatella" index="41" alias="l_kneecap" loa="1" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="l_trochanterion" index="42" alias="l_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="r_femoral_lateral_epicondyle" index="43" alias="r_femoral_lateral_epicn,r_femoral_lateral_epicondyles" loa="1" default="-0.1421 0.4992 0.0310" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="r_femoral_medial_epicondyle" index="44" alias="r_femoral_medial_epicn,r_femoral_medial_epicondyles" loa="1" default="-0.0221 0.5014 0.0289" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="r_suprapatella" index="45" alias="r_kneecap" loa="1" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="r_trochanterion" index="46" alias="r_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="l_tibiale" index="47" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="l_medial_malleolus" index="48" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_lateral_malleolus" index="49" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_sphyrion" index="50" loa="1" parent="l_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="r_tibiale" index="51" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="r_medial_malleolus" index="52" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_lateral_malleolus" index="53" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_sphyrion" index="54" loa="1" parent="r_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="l_metatarsal_phalanx_1" index="55" alias="l_metatarsal_pha1" loa="4" parent="l_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_metatarsal_phalanx_5" index="56" alias="l_metatarsal_pha5" loa="4" parent="l_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_dactylion" index="57" loa="2" default="0.2056 0.6743 -0.0482" parent="l_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="l_calcaneus_posterior" index="58" alias="l_calcaneous_post" loa="1" parent="l_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_metatarsal_phalanx_1" index="59" alias="r_metatarsal_pha1" loa="4" parent="r_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_metatarsal_phalanx_5" index="60" alias="r_metatarsal_pha5" loa="4" parent="r_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_dactylion" index="61" loa="2" default="-0.1941 0.6772 -0.0423" parent="r_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="r_calcaneus_posterior" index="62" alias="r_calcaneous_post" loa="1" parent="r_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_humeral_lateral_epicondyle" index="63" alias="l_humeral_lateral_epicn,l_humeral_lateral_epicondyles" loa="1" default="0.2280 1.1482 -0.1100" parent="l_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="l_humeral_medial_epicondyle" index="64" alias="l_humeral_medial_epicn,l_humeral_medial_epicondyles" loa="1" default="0.1735 1.1272 -0.1113" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="l_olecranon" index="65" loa="1" default="0.1962 1.1375 -0.1123" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="r_humeral_lateral_epicondyle" index="66" alias="r_humeral_lateral_epicn,r_humeral_lateral_epicondyles" loa="1" default="-0.2224 1.1517 -0.1033" parent="r_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="r_humeral_medial_epicondyle" index="67" alias="r_humeral_medial_epicn,r_humeral_medial_epicondyles" loa="1" default="-0.1680 1.1298 -0.1062" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="r_olecranon" index="68" loa="1" default="-0.1907 1.1405 -0.1065" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="l_radiale" index="69" loa="1" default="0.2182 1.1212 -0.1167" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_ulnar_styloid" index="70" loa="1" default="0.2142 0.8529 -0.0648" parent="l_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="l_radial_styloid" index="71" loa="1" default="0.1901 0.8645 -0.0415" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="r_radiale" index="72" loa="1" default="-0.2130 1.1305 -0.1091" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_ulnar_styloid" index="73" loa="1" default="-0.2117 0.8562 -0.0584" parent="r_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="r_radial_styloid" index="74" loa="1" default="-0.1884 0.8676 -0.0360" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="l_metacarpal_phalanx_2" index="75" alias="l_metacarpal_pha2,l_metacarpal_phalanx" loa="2" parent="l_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_3" index="76" loa="2" parent="l_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_5" index="77" alias="l_metacarpal_pha5" loa="2" parent="l_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_2" index="78" alias="r_metacarpal_pha2,r_metacarpal_phalanx" loa="2" parent="r_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_3" index="79" loa="2" parent="r_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_5" index="80" alias="r_metacarpal_pha5" loa="2" parent="r_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="nuchale" index="81" alias="nuchal" loa="1" default="0.0039 1.5972 -0.0796" parent="skull" documentation="https://en.wikipedia.org/wiki/Squamous_part_of_occipital_bone" />
<enumeration value="l_neck_base" index="82" loa="3" default="0.0646 1.5141 -0.0380" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="r_neck_base" index="83" loa="3" default="-0.0419 1.5149 -0.0220" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="navel" index="84" alias="belly button" loa="1" default="0.0069 1.0966 0.1017" parent="l5" documentation="https://en.wikipedia.org/wiki/Navel" />
<enumeration value="l_ectocanthus" index="85" alias="l_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="r_ectocanthus" index="86" alias="r_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="menton" index="87" alias="chin" loa="3" parent="jaw" documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="mesosternale" index="88" alias="mesosternum" loa="2" parent="t6" documentation="https://en.wiktionary.org/wiki/mesosternum" />
<enumeration value="opisthocranion" index="89" loa="1" parent="skull" documentation="https://www.columbia.edu/itc/hs/medical/humanAnatomy/yuan/craniologyISlides.pdf" />
<enumeration value="l_knee_crease" index="90" loa="1" default="0.0993 0.4881 -0.0309" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="r_knee_crease" index="91" loa="1" default="-0.0825 0.4932 -0.0326" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="rear_center_midsagittal_plane" index="92" alias="median plane" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Median_plane" />
<enumeration value="buttocks_standing_wall_contact_point" index="93" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Buttocks" />
<enumeration value="l_chest_midsagittal_plane" index="94" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="r_chest_midsagittal_plane" index="95" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="l_bideltoid" index="96" loa="1" parent="l_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="r_bideltoid" index="97" loa="1" parent="r_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="l_carpal_distal_phalanx_1" index="101" alias="l_thumb_distal" loa="2" default="0.1982 0.8061 0.0759" parent="l_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="102" alias="l_index_distal" loa="2" default="0.2089 0.6858 -0.0245" parent="l_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="103" alias="l_middle_distal" loa="2" default="0.2080 0.6731 -0.0491" parent="l_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="104" alias="l_ring_distal" loa="2" default="0.2035 0.6750 -0.0756" parent="l_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="105" alias="l_pinky_distal" loa="2" default="0.2014 0.7009 -0.1012" parent="l_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="106" alias="r_thumb_distal" loa="2" default="-0.1869 0.8090 0.0820" parent="r_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="107" alias="r_index_distal" loa="2" default="-0.1980 0.6883 -0.0180" parent="r_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="108" alias="r_middle_distal" loa="2" default="-0.1969 0.6758 -0.0427" parent="r_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="109" alias="r_ring_distal" loa="2" default="-0.1934 0.6778 -0.0693" parent="r_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="110" alias="r_pinky_distal" loa="2" default="-0.1938 0.7035 -0.0949" parent="r_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="111" loa="4" default="0.090 0.012 0.188" parent="l_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="112" alias="l_digit2" loa="2" default="0.110 0.011 0.19" parent="l_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="113" loa="4" default="0.128 0.011 0.185" parent="l_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="114" loa="4" default="0.142 0.011 0.178" parent="l_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="115" alias="l_tarsal_distal_pha5" loa="4" default="0.154 0.010 0.168" parent="l_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="116" loa="4" default="-0.090 0.012 0.188" parent="r_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="117" alias="r_digit2" loa="2" default="-0.110 0.011 0.19" parent="r_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="118" loa="4" default="-0.128 0.011 0.185" parent="r_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="119" loa="4" default="-0.142 0.011 0.178" parent="r_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="120" alias="r_tarsal_distal_pha5" loa="4" default="-0.154 0.010 0.168" parent="r_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesHAnimSite" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "HAnimSite": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "anyOf": [
            {
              "enum": [
                "skull_vertex",
                "glabella",
                "sellion",
                "l_infraorbitale",
                "l_tragion",
                "l_gonion",
                "r_infraorbitale",
                "r_tragion",
                "r_gonion",
                "supramenton",
                "cervicale",
                "adams_apple",
                "suprasternale",
                "substernale",
                "l_clavicle",
                "l_acromion",
                "l_axilla_proximal",
                "l_axilla_distal",
                "l_axilla_posterior_folds",
                "r_clavicle",
                "r_acromion",
                "r_axilla_proximal",
                "r_axilla_distal",
                "r_axilla_posterior_folds",
                "spine_1_middle_back",
                "spine_2_lower_back",
                "waist_preferred_anterior",
                "waist_preferred_posterior",
                "l_rib10",
                "l_thelion",
                "r_rib10",
                "r_thelion",
                "l_asis",
                "l_iliocristale",
                "l_psis",
                "r_asis",
                "r_iliocristale",
                "r_psis",
                "crotch",
                "l_femoral_lateral_epicondyle",
                "l_femoral_medial_epicondyle",
                "l_suprapatella",
                "l_trochanterion",
                "r_femoral_lateral_epicondyle",
                "r_femoral_medial_epicondyle",
                "r_suprapatella",
                "r_trochanterion",
                "l_tibiale",
                "l_medial_malleolus",
                "l_lateral_malleolus",
                "l_sphyrion",
                "r_tibiale",
                "r_medial_malleolus",
                "r_lateral_malleolus",
                "r_sphyrion",
                "l_metatarsal_phalanx_1",
                "l_metatarsal_phalanx_5",
                "l_dactylion",
                "l_calcaneus_posterior",
                "r_metatarsal_phalanx_1",
                "r_metatarsal_phalanx_5",
                "r_dactylion",
                "r_calcaneus_posterior",
                "l_humeral_lateral_epicondyle",
                "l_humeral_medial_epicondyle",
                "l_olecranon",
                "r_humeral_lateral_epicondyle",
                "r_humeral_medial_epicondyle",
                "r_olecranon",
                "l_radiale",
                "l_ulnar_styloid",
                "l_radial_styloid",
                "r_radiale",
                "r_ulnar_styloid",
                "r_radial_styloid",
                "l_metacarpal_phalanx_2",
                "l_metacarpal_phalanx_3",
                "l_metacarpal_phalanx_5",
                "r_metacarpal_phalanx_2",
                "r_metacarpal_phalanx_3",
                "r_metacarpal_phalanx_5",
                "nuchale",
                "l_neck_base",
                "r_neck_base",
                "navel",
                "l_ectocanthus",
                "r_ectocanthus",
                "menton",
                "mesosternale",
                "opisthocranion",
                "l_knee_crease",
                "r_knee_crease",
                "rear_center_midsagittal_plane",
                "buttocks_standing_wall_contact_point",
                "l_chest_midsagittal_plane",
                "r_chest_midsagittal_plane",
                "l_bideltoid",
                "r_bideltoid",
                "l_carpal_distal_phalanx_1",
                "l_carpal_distal_phalanx_2",
                "l_carpal_distal_phalanx_3",
                "l_carpal_distal_phalanx_4",
                "l_carpal_distal_phalanx_5",
                "r_carpal_distal_phalanx_1",
                "r_carpal_distal_phalanx_2",
                "r_carpal_distal_phalanx_3",
                "r_carpal_distal_phalanx_4",
                "r_carpal_distal_phalanx_5",
                "l_tarsal_distal_phalanx_1",
                "l_tarsal_distal_phalanx_2",
                "l_tarsal_distal_phalanx_3",
                "l_tarsal_distal_phalanx_4",
                "l_tarsal_distal_phalanx_5",
                "r_tarsal_distal_phalanx_1",
                "r_tarsal_distal_phalanx_2",
                "r_tarsal_distal_phalanx_3",
                "r_tarsal_distal_phalanx_4",
                "r_tarsal_distal_phalanx_5"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Default location of this HAnimSite, i." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="hanimFeaturePointNameValues" baseType="xs:NMTOKEN" description="Unique name attribute must be defined so that HAnimSite node can be identified at run time for animation purposes.">
<enumeration value="skull_vertex" index="0" alias="skull_tip,vertex" loa="1" default="0.0050 1.7504 0.0055" parent="skull" appinfo="CAESAR 2003 skull_vertex matches ISO 7250-1 part 5.22 Vertex (top of head). No corresponding landmark provided in CAESAR 2018." documentation="https://en.wikipedia.org/wiki/Vertex_(anatomy)" />
<enumeration value="glabella" index="1" loa="1" parent="skull" appinfo="glabella is between the eyebrows and above the nose." documentation="https://en.wikipedia.org/wiki/Glabella" />
<enumeration value="sellion" index="2" loa="1" default="0.0058 1.6316 0.0852" parent="skull" appinfo="osseocartilaginous junction of the nasal dorsum." documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="l_infraorbitale" index="3" loa="1" default="0.0341 1.6171 0.0752" parent="skull" appinfo="Left Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="l_tragion" index="4" loa="1" default="0.0739 1.6348 0.0282" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="l_gonion" index="5" loa="1" default="0.0631 1.5530 0.0330" parent="skull" appinfo="Left Gonion is midpoint of mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="r_infraorbitale" index="6" loa="1" default="-0.0237 1.6171 0.0752" parent="skull" appinfo="Right Infraorbitale foramen is opening in maxillary bone of skull located below the infraorbital margin of the orbit." documentation="https://en.wikipedia.org/wiki/Infraorbital_foramen" />
<enumeration value="r_tragion" index="7" loa="1" default="-0.0646 1.6347 0.0302" parent="skull" appinfo="notch just above the tragus of the ear." documentation="https://en.wiktionary.org/wiki/tragion" />
<enumeration value="r_gonion" index="8" loa="1" default="-0.0520 1.5529 0.0347" parent="skull" appinfo="Right Gonion is midpoint of the mandibular angle of the jaw." documentation="https://en.wikipedia.org/wiki/Angle_of_the_mandible" />
<enumeration value="supramenton" index="9" loa="3" default="0.0061 1.5410 0.0805" parent="jaw" appinfo="center point above tip of chin." documentation="https://www.cs.uu.nl/groups/MG/multimedia/publications/art/rsfp05.pdf" />
<enumeration value="cervicale" index="10" loa="2" default="0.0064 1.520 -0.0815" parent="t1" documentation="https://www.merriam-webster.com/dictionary/cervicale" />
<enumeration value="adams_apple" index="11" loa="2" parent="c2" documentation="https://en.wikipedia.org/wiki/Adam_s_apple" />
<enumeration value="suprasternale" index="12" loa="2" default="0.0084 1.4714 0.0551" parent="t1" appinfo="Suprasternale." documentation="https://medical-dictionary.thefreedictionary.com/spatium+suprasternale" />
<enumeration value="substernale" index="13" loa="2" default="0.0085 1.2995 0.1147" parent="t10" documentation="https://medical-dictionary.thefreedictionary.com/spatium+substernale" />
<enumeration value="l_clavicle" index="14" alias="l_clavicale" loa="2" default="0.0271 1.4943 0.0394" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="l_acromion" index="15" loa="2" default="0.2032 1.4760 -0.0490" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="l_axilla_proximal" index="16" alias="l_axilla_ant" loa="2" default="0.1777 1.4065 -0.0075" parent="l_clavicle" appinfo="Left Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_distal" index="17" alias="l_axilla_post" loa="2" default="0.1706 1.4072 -0.0875" parent="l_clavicle" appinfo="Left Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="l_axilla_posterior_folds" index="18" loa="2" parent="l_clavicle" documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_clavicle" index="19" alias="r_clavicale" loa="2" default="-0.0115 1.4943 0.0400" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Clavicle" />
<enumeration value="r_acromion" index="20" loa="2" default="-0.1905 1.4791 -0.0431" parent="r_clavicle" documentation="https://en.wikipedia.org/wiki/Acromion" />
<enumeration value="r_axilla_proximal" index="21" alias="r_axilla_ant" loa="2" default="-0.1626 1.4072 -0.0031" parent="r_clavicle" appinfo="Right Axilla Proximal (Anterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_distal" index="22" alias="r_axilla_post" loa="2" default="-0.1603 1.4098 -0.0826" parent="r_clavicle" appinfo="Right Axilla Distal (Posterior)." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="r_axilla_posterior_folds" index="23" loa="2" parent="r_clavicle" appinfo="Right Posterior Axillary Folds." documentation="https://en.wikipedia.org/wiki/Axilla" />
<enumeration value="spine_1_middle_back" index="24" alias="middle back" loa="3" parent="t5" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="spine_2_lower_back" index="25" alias="lower back" loa="3" default="0.0049 1.1908 -0.1113" parent="l2" documentation="https://en.wikipedia.org/wiki/Vertebral_column" />
<enumeration value="waist_preferred_anterior" index="26" alias="waist_preferred_ant" loa="3" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="waist_preferred_posterior" index="27" alias="waist_preferred_post" loa="3" default="0.2900 1.0915 -0.1091" parent="l2" documentation="https://en.wikipedia.org/wiki/Waist" />
<enumeration value="l_rib10" index="28" alias="l_rib10_midspine" loa="3" default="0.0871 1.1925 0.0992" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="l_thelion" index="29" alias="Left Bustpoint" loa="3" default="0.0918 1.3382 0.1192" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="r_rib10" index="30" alias="r_rib10_midspine" loa="3" default="-0.0711 1.1941 0.1016" parent="l2" documentation="https://en.wikipedia.org/wiki/Rib" />
<enumeration value="r_thelion" index="31" alias="Right Bustpoint" loa="3" default="-0.0736 1.3385 0.1217" parent="t9" documentation="https://www.cdc.gov/niosh/data/datasets/rd-1008-2016-0/pdfs/EMT-Data-Dictionary-508.pdf" />
<enumeration value="l_asis" index="32" alias="Left Anterior Superior Iliac Spine" loa="1" default="0.0925 0.9983 0.1052" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="l_iliocristale" index="33" loa="1" default="0.1612 1.0537 0.0008" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="l_psis" index="34" alias="Left Posterior Superior Iliac Spine" loa="1" default="0.0774 1.0190 -0.1151" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="r_asis" index="35" alias="Right Anterior Superior Iliac Spine" loa="1" default="-0.0887 1.0021 0.1112" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Anterior_superior_iliac_spine" />
<enumeration value="r_iliocristale" index="36" loa="1" default="-0.1525 1.0628 0.0035" parent="pelvis" documentation="https://www.topendsports.com/testing/skinfold-iliac-crest.htm" />
<enumeration value="r_psis" index="37" alias="Right Posterior Superior Iliac Spine" loa="1" default="-0.0716 1.0190 -0.1138" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Posterior_superior_iliac_spine" />
<enumeration value="crotch" index="38" loa="1" default="0.0034 0.8266 0.0257" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Crotch" />
<enumeration value="l_femoral_lateral_epicondyle" index="39" alias="l_femoral_lateral_epicn,l_femoral_lateral_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="l_femoral_medial_epicondyle" index="40" alias="l_femoral_medial_epicn,l_femoral_medial_epicondyles" loa="1" default="0.1598 0.4967 0.0297" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="l_suprapatella" index="41" alias="l_kneecap" loa="1" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="l_trochanterion" index="42" alias="l_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="r_femoral_lateral_epicondyle" index="43" alias="r_femoral_lateral_epicn,r_femoral_lateral_epicondyles" loa="1" default="-0.1421 0.4992 0.0310" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_femur" />
<enumeration value="r_femoral_medial_epicondyle" index="44" alias="r_femoral_medial_epicn,r_femoral_medial_epicondyles" loa="1" default="-0.0221 0.5014 0.0289" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_femur" />
<enumeration value="r_suprapatella" index="45" alias="r_kneecap" loa="1" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Patella" />
<enumeration value="r_trochanterion" index="46" alias="r_trochanter" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Trochanter" />
<enumeration value="l_tibiale" index="47" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="l_medial_malleolus" index="48" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_lateral_malleolus" index="49" loa="1" parent="l_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="l_sphyrion" index="50" loa="1" parent="l_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="r_tibiale" index="51" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Accessory_navicular_bone" />
<enumeration value="r_medial_malleolus" index="52" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_lateral_malleolus" index="53" loa="1" parent="r_calf" documentation="https://en.wikipedia.org/wiki/Malleolus" />
<enumeration value="r_sphyrion" index="54" loa="1" parent="r_talus" documentation="https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100523385" />
<enumeration value="l_metatarsal_phalanx_1" index="55" alias="l_metatarsal_pha1" loa="4" parent="l_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_metatarsal_phalanx_5" index="56" alias="l_metatarsal_pha5" loa="4" parent="l_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="l_dactylion" index="57" loa="2" default="0.2056 0.6743 -0.0482" parent="l_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="l_calcaneus_posterior" index="58" alias="l_calcaneous_post" loa="1" parent="l_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="r_metatarsal_phalanx_1" index="59" alias="r_metatarsal_pha1" loa="4" parent="r_tarsal_proximal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_metatarsal_phalanx_5" index="60" alias="r_metatarsal_pha5" loa="4" parent="r_tarsal_proximal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Metatarsal_bones" />
<enumeration value="r_dactylion" index="61" loa="2" default="-0.1941 0.6772 -0.0423" parent="r_carpal_distal_phalanx_2" documentation="https://en.wiktionary.org/wiki/dactylion" />
<enumeration value="r_calcaneus_posterior" index="62" alias="r_calcaneous_post" loa="1" parent="r_talus" documentation="https://en.wikipedia.org/wiki/Calcaneus" />
<enumeration value="l_humeral_lateral_epicondyle" index="63" alias="l_humeral_lateral_epicn,l_humeral_lateral_epicondyles" loa="1" default="0.2280 1.1482 -0.1100" parent="l_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="l_humeral_medial_epicondyle" index="64" alias="l_humeral_medial_epicn,l_humeral_medial_epicondyles" loa="1" default="0.1735 1.1272 -0.1113" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="l_olecranon" index="65" loa="1" default="0.1962 1.1375 -0.1123" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="r_humeral_lateral_epicondyle" index="66" alias="r_humeral_lateral_epicn,r_humeral_lateral_epicondyles" loa="1" default="-0.2224 1.1517 -0.1033" parent="r_upperarm" documentation="https://en.wikipedia.org/wiki/Lateral_epicondyle_of_the_humerus" />
<enumeration value="r_humeral_medial_epicondyle" index="67" alias="r_humeral_medial_epicn,r_humeral_medial_epicondyles" loa="1" default="-0.1680 1.1298 -0.1062" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Medial_epicondyle_of_the_humerus" />
<enumeration value="r_olecranon" index="68" loa="1" default="-0.1907 1.1405 -0.1065" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Olecranon" />
<enumeration value="l_radiale" index="69" loa="1" default="0.2182 1.1212 -0.1167" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="l_ulnar_styloid" index="70" loa="1" default="0.2142 0.8529 -0.0648" parent="l_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="l_radial_styloid" index="71" loa="1" default="0.1901 0.8645 -0.0415" parent="l_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="r_radiale" index="72" loa="1" default="-0.2130 1.1305 -0.1091" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Carpal_bones" />
<enumeration value="r_ulnar_styloid" index="73" loa="1" default="-0.2117 0.8562 -0.0584" parent="r_carpal" documentation="https://en.wikipedia.org/wiki/Ulnar_styloid_process" />
<enumeration value="r_radial_styloid" index="74" loa="1" default="-0.1884 0.8676 -0.0360" parent="r_forearm" documentation="https://en.wikipedia.org/wiki/Radial_styloid_process" />
<enumeration value="l_metacarpal_phalanx_2" index="75" alias="l_metacarpal_pha2,l_metacarpal_phalanx" loa="2" parent="l_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_3" index="76" loa="2" parent="l_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="l_metacarpal_phalanx_5" index="77" alias="l_metacarpal_pha5" loa="2" parent="l_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_2" index="78" alias="r_metacarpal_pha2,r_metacarpal_phalanx" loa="2" parent="r_metacarpal_2" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_3" index="79" loa="2" parent="r_metacarpal_3" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="r_metacarpal_phalanx_5" index="80" alias="r_metacarpal_pha5" loa="2" parent="r_metacarpal_5" documentation="https://en.wikipedia.org/wiki/Metacarpal_bones" />
<enumeration value="nuchale" index="81" alias="nuchal" loa="1" default="0.0039 1.5972 -0.0796" parent="skull" documentation="https://en.wikipedia.org/wiki/Squamous_part_of_occipital_bone" />
<enumeration value="l_neck_base" index="82" loa="3" default="0.0646 1.5141 -0.0380" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="r_neck_base" index="83" loa="3" default="-0.0419 1.5149 -0.0220" parent="c7" documentation="https://en.wikipedia.org/wiki/Neck" />
<enumeration value="navel" index="84" alias="belly button" loa="1" default="0.0069 1.0966 0.1017" parent="l5" documentation="https://en.wikipedia.org/wiki/Navel" />
<enumeration value="l_ectocanthus" index="85" alias="l_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="r_ectocanthus" index="86" alias="r_canthus" loa="1" parent="skull" documentation="https://en.wikipedia.org/wiki/Canthus" />
<enumeration value="menton" index="87" alias="chin" loa="3" parent="jaw" documentation="https://en.wikipedia.org/wiki/Human_head" />
<enumeration value="mesosternale" index="88" alias="mesosternum" loa="2" parent="t6" documentation="https://en.wiktionary.org/wiki/mesosternum" />
<enumeration value="opisthocranion" index="89" loa="1" parent="skull" documentation="https://www.columbia.edu/itc/hs/medical/humanAnatomy/yuan/craniologyISlides.pdf" />
<enumeration value="l_knee_crease" index="90" loa="1" default="0.0993 0.4881 -0.0309" parent="l_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="r_knee_crease" index="91" loa="1" default="-0.0825 0.4932 -0.0326" parent="r_thigh" documentation="https://en.wikipedia.org/wiki/Popliteal_fossa" />
<enumeration value="rear_center_midsagittal_plane" index="92" alias="median plane" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Median_plane" />
<enumeration value="buttocks_standing_wall_contact_point" index="93" loa="1" parent="pelvis" documentation="https://en.wikipedia.org/wiki/Buttocks" />
<enumeration value="l_chest_midsagittal_plane" index="94" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="r_chest_midsagittal_plane" index="95" loa="2" parent="t6" documentation="https://en.wikipedia.org/wiki/Sagittal_plane" />
<enumeration value="l_bideltoid" index="96" loa="1" parent="l_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="r_bideltoid" index="97" loa="1" parent="r_upperarm" documentation="https://en.wiktionary.org/wiki/bideltoid" />
<enumeration value="l_carpal_distal_phalanx_1" index="101" alias="l_thumb_distal" loa="2" default="0.1982 0.8061 0.0759" parent="l_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_2" index="102" alias="l_index_distal" loa="2" default="0.2089 0.6858 -0.0245" parent="l_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_3" index="103" alias="l_middle_distal" loa="2" default="0.2080 0.6731 -0.0491" parent="l_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_4" index="104" alias="l_ring_distal" loa="2" default="0.2035 0.6750 -0.0756" parent="l_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_carpal_distal_phalanx_5" index="105" alias="l_pinky_distal" loa="2" default="0.2014 0.7009 -0.1012" parent="l_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_1" index="106" alias="r_thumb_distal" loa="2" default="-0.1869 0.8090 0.0820" parent="r_carpal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_2" index="107" alias="r_index_distal" loa="2" default="-0.1980 0.6883 -0.0180" parent="r_carpal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_3" index="108" alias="r_middle_distal" loa="2" default="-0.1969 0.6758 -0.0427" parent="r_carpal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_4" index="109" alias="r_ring_distal" loa="2" default="-0.1934 0.6778 -0.0693" parent="r_carpal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_carpal_distal_phalanx_5" index="110" alias="r_pinky_distal" loa="2" default="-0.1938 0.7035 -0.0949" parent="r_carpal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_1" index="111" loa="4" default="0.090 0.012 0.188" parent="l_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_2" index="112" alias="l_digit2" loa="2" default="0.110 0.011 0.19" parent="l_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_3" index="113" loa="4" default="0.128 0.011 0.185" parent="l_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_4" index="114" loa="4" default="0.142 0.011 0.178" parent="l_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="l_tarsal_distal_phalanx_5" index="115" alias="l_tarsal_distal_pha5" loa="4" default="0.154 0.010 0.168" parent="l_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_1" index="116" loa="4" default="-0.090 0.012 0.188" parent="r_tarsal_distal_phalanx_1" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_2" index="117" alias="r_digit2" loa="2" default="-0.110 0.011 0.19" parent="r_tarsal_distal_phalanx_2" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_3" index="118" loa="4" default="-0.128 0.011 0.185" parent="r_tarsal_distal_phalanx_3" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_4" index="119" loa="4" default="-0.142 0.011 0.178" parent="r_tarsal_distal_phalanx_4" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
<enumeration value="r_tarsal_distal_phalanx_5" index="120" alias="r_tarsal_distal_pha5" loa="4" default="-0.154 0.010 0.168" parent="r_tarsal_distal_phalanx_5" documentation="https://en.wikipedia.org/wiki/Phalanx_bone" />
</field>
'

JSON "@name": {
  "anyOf": [
    {
      "enum": [
        "skull_vertex",
        "glabella",
        "sellion",
        "l_infraorbitale",
        "l_tragion",
        "l_gonion",
        "r_infraorbitale",
        "r_tragion",
        "r_gonion",
        "supramenton",
        "cervicale",
        "adams_apple",
        "suprasternale",
        "substernale",
        "l_clavicle",
        "l_acromion",
        "l_axilla_proximal",
        "l_axilla_distal",
        "l_axilla_posterior_folds",
        "r_clavicle",
        "r_acromion",
        "r_axilla_proximal",
        "r_axilla_distal",
        "r_axilla_posterior_folds",
        "spine_1_middle_back",
        "spine_2_lower_back",
        "waist_preferred_anterior",
        "waist_preferred_posterior",
        "l_rib10",
        "l_thelion",
        "r_rib10",
        "r_thelion",
        "l_asis",
        "l_iliocristale",
        "l_psis",
        "r_asis",
        "r_iliocristale",
        "r_psis",
        "crotch",
        "l_femoral_lateral_epicondyle",
        "l_femoral_medial_epicondyle",
        "l_suprapatella",
        "l_trochanterion",
        "r_femoral_lateral_epicondyle",
        "r_femoral_medial_epicondyle",
        "r_suprapatella",
        "r_trochanterion",
        "l_tibiale",
        "l_medial_malleolus",
        "l_lateral_malleolus",
        "l_sphyrion",
        "r_tibiale",
        "r_medial_malleolus",
        "r_lateral_malleolus",
        "r_sphyrion",
        "l_metatarsal_phalanx_1",
        "l_metatarsal_phalanx_5",
        "l_dactylion",
        "l_calcaneus_posterior",
        "r_metatarsal_phalanx_1",
        "r_metatarsal_phalanx_5",
        "r_dactylion",
        "r_calcaneus_posterior",
        "l_humeral_lateral_epicondyle",
        "l_humeral_medial_epicondyle",
        "l_olecranon",
        "r_humeral_lateral_epicondyle",
        "r_humeral_medial_epicondyle",
        "r_olecranon",
        "l_radiale",
        "l_ulnar_styloid",
        "l_radial_styloid",
        "r_radiale",
        "r_ulnar_styloid",
        "r_radial_styloid",
        "l_metacarpal_phalanx_2",
        "l_metacarpal_phalanx_3",
        "l_metacarpal_phalanx_5",
        "r_metacarpal_phalanx_2",
        "r_metacarpal_phalanx_3",
        "r_metacarpal_phalanx_5",
        "nuchale",
        "l_neck_base",
        "r_neck_base",
        "navel",
        "l_ectocanthus",
        "r_ectocanthus",
        "menton",
        "mesosternale",
        "opisthocranion",
        "l_knee_crease",
        "r_knee_crease",
        "rear_center_midsagittal_plane",
        "buttocks_standing_wall_contact_point",
        "l_chest_midsagittal_plane",
        "r_chest_midsagittal_plane",
        "l_bideltoid",
        "r_bideltoid",
        "l_carpal_distal_phalanx_1",
        "l_carpal_distal_phalanx_2",
        "l_carpal_distal_phalanx_3",
        "l_carpal_distal_phalanx_4",
        "l_carpal_distal_phalanx_5",
        "r_carpal_distal_phalanx_1",
        "r_carpal_distal_phalanx_2",
        "r_carpal_distal_phalanx_3",
        "r_carpal_distal_phalanx_4",
        "r_carpal_distal_phalanx_5",
        "l_tarsal_distal_phalanx_1",
        "l_tarsal_distal_phalanx_2",
        "l_tarsal_distal_phalanx_3",
        "l_tarsal_distal_phalanx_4",
        "l_tarsal_distal_phalanx_5",
        "r_tarsal_distal_phalanx_1",
        "r_tarsal_distal_phalanx_2",
        "r_tarsal_distal_phalanx_3",
        "r_tarsal_distal_phalanx_4",
        "r_tarsal_distal_phalanx_5"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ImageCubeMapTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ImageCubeMapTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing.html#ImageCubeMapTexture" appinfo="ImageCubeMapTexture is a texture node that defines a cubic environment map source as a single file format that contains multiple images, one for each side.">
<componentInfo name="CubeMapTexturing" level="2" />
<Inheritance baseType="X3DEnvironmentTextureNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture2DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ImageCubeMapTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ImageTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ImageTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#ImageTexture" appinfo="ImageTexture maps a 2D-image file onto a geometric shape.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTexture2DNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture2DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3dUrlObjectTexture" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ImageTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@repeatS": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture2DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ImageTexture3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ImageTexture3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#ImageTexture3D" appinfo="ImageTexture3D defines a 3D image-based texture map by specifying a single image file that contains complete 3D data.">
<componentInfo name="Texturing3D" level="2" />
<Inheritance baseType="X3DTexture3DNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture3DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ImageTexture3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@repeatR": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatS": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
repeatR
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
'

JSON "@repeatR": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of image.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedFaceSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedFaceSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#IndexedFaceSet" appinfo="IndexedFaceSet defines polygons using index lists corresponding to vertex coordinates.">
<componentInfo name="Geometry3D" level="2" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices)." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="convex" type="SFBool" accessType="initializeOnly" default="true" description="The convex field is a hint to renderers whether all polygons in a shape are convex (true), or possibly concave (false).">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polygon face." />
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading.">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="normalIndex values define the order in which normal vectors are applied to polygons (or vertices).">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="set_colorIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices).">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="set_coordIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polygon face." />
<field name="set_normalIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="normalIndex values define the order in which normal vectors are applied to polygons (or vertices).">
<componentInfo name="Geometry3D" level="4" />
</field>
<field name="set_texCoordIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="List of texture-coordinate indices mapping attached texture to corresponding coordinates." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="texCoordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="List of texture-coordinate indices mapping attached texture to corresponding coordinates." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedFaceSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@convex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "@coordIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "@creaseAngle": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@texCoordIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices)." />
'

JSON "@colorIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
convex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="convex" type="SFBool" accessType="initializeOnly" default="true" description="The convex field is a hint to renderers whether all polygons in a shape are convex (true), or possibly concave (false).">
<componentInfo name="Geometry3D" level="4" />
</field>
'

JSON "@convex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
coordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polygon face." />
'

JSON "@coordIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
creaseAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="creaseAngle" type="SFFloat" accessType="initializeOnly" default="0" minInclusive="0" description="creaseAngle defines angle (in radians) for determining whether adjacent polygons are drawn with sharp edges or smooth shading.">
<componentInfo name="Geometry3D" level="4" />
</field>
'

JSON "@creaseAngle": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="normalIndex values define the order in which normal vectors are applied to polygons (or vertices).">
<componentInfo name="Geometry3D" level="4" />
</field>
'

JSON "@normalIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
texCoordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="List of texture-coordinate indices mapping attached texture to corresponding coordinates." />
'

JSON "@texCoordIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedLineSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedLineSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#IndexedLineSet" appinfo="IndexedLineSet defines polyline segments using index lists corresponding to vertex coordinates.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices)." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per polyline (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polygon face." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="set_colorIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices).">
<componentInfo name="Rendering" level="3" />
</field>
<field name="set_coordIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polyline.">
<componentInfo name="Rendering" level="3" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ColorCoordinateContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedLineSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "@coordIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="colorIndex values define the order in which Color|ColorRGBA values are applied to polygons (or vertices)." />
'

JSON "@colorIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" description="Whether Color node color values are applied to each point vertex (true) or per polyline (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
coordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="coordIndex indices provide the order in which coordinates are applied to construct each polygon face." />
'

JSON "@coordIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedQuadSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedQuadSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#IndexedQuadSet" appinfo="IndexedQuadSet is a geometry node that defines quadrilaterals.">
<componentInfo name="CADGeometry" level="1" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="0" description="index values provide order in which coordinates are applied." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="set_index" type="MFInt32" accessType="inputOnly" minInclusive="0" description="index values provide order in which coordinates are applied." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedQuadSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "@index": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
index
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="0" description="index values provide order in which coordinates are applied." />
'

JSON "@index": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "integer"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedTriangleFanSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedTriangleFanSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#IndexedTriangleFanSet" appinfo="IndexedTriangleFanSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices, each individual fan separated by -1 sentinel value." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="set_index" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices, each individual fan separated by -1 sentinel value." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedTriangleFanSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "@index": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
index
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices, each individual fan separated by -1 sentinel value." />
'

JSON "@index": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedTriangleSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedTriangleSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#IndexedTriangleSet" appinfo="IndexedTriangleSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="0" description="index list specifies triangles by connecting Coordinate vertices." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="set_index" type="MFInt32" accessType="inputOnly" minInclusive="0" description="index list specifies triangles by connecting Coordinate vertices." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedTriangleSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "@index": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
index
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="0" description="index list specifies triangles by connecting Coordinate vertices." />
'

JSON "@index": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "integer"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IndexedTriangleStripSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IndexedTriangleStripSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#IndexedTriangleStripSet" appinfo="IndexedTriangleStripSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices for each individual strip, separated by -1 sentinel values." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="set_index" type="MFInt32" accessType="inputOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices for each individual strip, separated by -1 sentinel values." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IndexedTriangleStripSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "@index": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "minimum": -1,
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
index
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="index" type="MFInt32" accessType="initializeOnly" minInclusive="-1" description="index list specifies triangles by connecting Coordinate vertices for each individual strip, separated by -1 sentinel values." />
'

JSON "@index": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "minimum": -1,
    "type": "integer"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Inline
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Inline">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#Inline" appinfo="Inline can load another X3D or VRML model into the current scene via url.">
<componentInfo name="Networking" level="2" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="global" type="SFBool" accessType="inputOutput" default="false" description="The global field controls potential external scoping effects of lights found within an Inline scene." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Address of X3D world to load Inline with current scene, retrieved either from local system or an online address.">
<componentInfo name="Networking" level="4" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesX3DUrlObject" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Inline": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@global": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="false" description="The global field controls potential external scoping effects of lights found within an Inline scene." />
'

JSON "@global": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Address of X3D world to load Inline with current scene, retrieved either from local system or an online address.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IntegerSequencer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IntegerSequencer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#IntegerSequencer" appinfo="IntegerSequencer generates periodic discrete integer values.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DSequencerNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DSequencerNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFInt32" accessType="inputOutput" description="Output values for linear sequencing, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="next" type="SFBool" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="Send next output value in keyValue array, and reset internal fraction field to match corresponding value in key array." />
<field name="previous" type="SFBool" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="Send previous output value in keyValue array, and reset internal fraction field to match corresponding value in key array." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DSequencerNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFInt32" accessType="outputOnly" description="Single intermittent output value determined by current key time and corresponding keyValue entry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IntegerSequencer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DSequencerNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFInt32" accessType="inputOutput" description="Output values for linear sequencing, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IntegerTrigger
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IntegerTrigger">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#IntegerTrigger" appinfo="IntegerTrigger converts set_boolean true input events to an integer value (for example, useful when animating whichChoice in a Switch node).">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DTriggerNode" />
<field name="integerKey" type="SFInt32" accessType="inputOutput" default="-1" description="integerKey is value for output when triggered." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_boolean" type="SFBool" accessType="inputOnly" description="If input event set_boolean is true, trigger output of integer value." />
<field name="triggerValue" type="SFInt32" accessType="outputOnly" description="triggerValue provides integer event output matching integerKey when true set_boolean received." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IntegerTrigger": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@integerKey": {
          "default": -1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
integerKey
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="integerKey" type="SFInt32" accessType="inputOutput" default="-1" description="integerKey is value for output when triggered." />
'

JSON "@integerKey": {
  "default": -1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IsoSurfaceVolumeData
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="IsoSurfaceVolumeData">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#IsoSurfaceVolumeData" appinfo="IsoSurfaceVolumeData displays one or more surfaces extracted from a voxel dataset.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DVolumeDataNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="contourStepSize" type="SFFloat" accessType="inputOutput" default="0" description="If contourStepSize is non-zero, also render all isosurfaces that are multiples of that step size from initial surface value." />
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
<field name="gradients" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides explicit per-voxel gradient direction information for determining surface boundaries, rather than having it implicitly calculated by the implementation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Multiple contained X3DVolumeRenderStyleNode nodes corresponding to each isosurface that define specific rendering technique for this volumetric object." />
<field name="surfaceTolerance" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Threshold for gradient magnitude for voxel inolusion in isosurface." />
<field name="surfaceValues" type="MFFloat" accessType="inputOutput" description="If surfaceValues has one value defined, render corresponding isosurface plus any isosurfaces based on contourStepSize." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" minOccurs="0" />
<GroupContentModel name="VolumeRenderStyleContentModel" minOccurs="0" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "IsoSurfaceVolumeData": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@contourStepSize": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@dimensions": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "-gradients": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-renderStyle": {
          "$ref": "#/$defs/-X3DVolumeRenderStyleNodeMFNode"
        },
        "@surfaceTolerance": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceValues": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-voxels": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
contourStepSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="contourStepSize" type="SFFloat" accessType="inputOutput" default="0" description="If contourStepSize is non-zero, also render all isosurfaces that are multiples of that step size from initial surface value." />
'

JSON "@contourStepSize": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
dimensions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
'

JSON "@dimensions": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
gradients
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gradients" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides explicit per-voxel gradient direction information for determining surface boundaries, rather than having it implicitly calculated by the implementation." />
'

JSON "-gradients": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
renderStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Multiple contained X3DVolumeRenderStyleNode nodes corresponding to each isosurface that define specific rendering technique for this volumetric object." />
'

JSON "-renderStyle": {
  "$ref": "#/$defs/-X3DVolumeRenderStyleNodeMFNode"
}
surfaceTolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceTolerance" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Threshold for gradient magnitude for voxel inolusion in isosurface." />
'

JSON "@surfaceTolerance": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceValues
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceValues" type="MFFloat" accessType="inputOutput" description="If surfaceValues has one value defined, render corresponding isosurface plus any isosurfaces based on contourStepSize." />
'

JSON "@surfaceValues": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
voxels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
'

JSON "-voxels": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
KeySensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="KeySensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/keyDeviceSensor.html#KeySensor" appinfo="KeySensor generates events as the user presses keys on the keyboard.">
<componentInfo name="KeyDeviceSensor" level="1" />
<Inheritance baseType="X3DKeyDeviceSensorNode" />
<field name="actionKeyPress" type="SFInt32" accessType="outputOnly" description="action key press gives following values: HOME=000 END=1001 PGUP=1002 PGDN=1003 UP=1004 DOWN=1005 LEFT=1006 RIGHT=1007 F1." />
<field name="actionKeyRelease" type="SFInt32" accessType="outputOnly" description="action key release gives following values: HOME=000 END=1001 PGUP=1002 PGDN=1003 UP=1004 DOWN=1005 LEFT=1006 RIGHT=1007 F1." />
<field name="altKey" type="SFBool" accessType="outputOnly" description="altKey generates true event when pressed, false event when released." />
<field name="controlKey" type="SFBool" accessType="outputOnly" description="controlKey generates true event when pressed, false event when released." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="keyPress" type="SFString" accessType="outputOnly" description="Events generated when user presses character-producing keys on keyboard produces integer UTF-8 character values." />
<field name="keyRelease" type="SFString" accessType="outputOnly" description="Events generated when user releases character-producing keys on keyboard produces integer UTF-8 character values." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="shiftKey" type="SFBool" accessType="outputOnly" description="shiftKey generates true event when pressed, false event when released." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "KeySensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Layer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Layer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#Layer" appinfo="Layer contains a list of children nodes that define the contents of the layer.">
<componentInfo name="Layering" level="1" />
<Inheritance baseType="X3DLayerNode" />
<AdditionalInheritance baseType="X3DGroupingNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Nodes making up this layer." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DLayerNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="pickable determines whether pick traversal is performed for this layer." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" inheritedFrom="X3DLayerNode" description="The viewport field is a single Viewport node that constrains layer output to a sub-region of the render surface." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="layers" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="Viewport" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Layer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "@pickable": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-viewport": {
          "$ref": "#/$defs/-X3DViewportNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Nodes making up this layer." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Nodes making up this layer." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DLayerNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="pickable determines whether pick traversal is performed for this layer." />
'

JSON "@pickable": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
viewport
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" inheritedFrom="X3DLayerNode" description="The viewport field is a single Viewport node that constrains layer output to a sub-region of the render surface." />
'

JSON "-viewport": {
  "$ref": "#/$defs/-X3DViewportNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LayerSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LayerSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#LayerSet" appinfo="LayerSet defines a list of layers and a rendering order.">
<componentInfo name="Layering" level="1" />
<Inheritance baseType="X3DNode" />
<field name="activeLayer" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="activeLayer field specifies the layer in which navigation takes place." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="layers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DLayerNode" description="The layers list defines a list of Layer nodes that contain the constituent parts of the scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="MFInt32" accessType="inputOutput" default="0" minInclusive="0" description="The order list defines the order in which layers are rendered." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Layer" />
<NodeContentModel name="LayoutLayer" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LayerSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@activeLayer": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-layers": {
          "$ref": "#/$defs/-X3DLayerNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "integer"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
activeLayer
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="activeLayer" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="activeLayer field specifies the layer in which navigation takes place." />
'

JSON "@activeLayer": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
layers
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="layers" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DLayerNode" description="The layers list defines a list of Layer nodes that contain the constituent parts of the scene." />
'

JSON "-layers": {
  "$ref": "#/$defs/-X3DLayerNodeMFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="MFInt32" accessType="inputOutput" default="0" minInclusive="0" description="The order list defines the order in which layers are rendered." />
'

JSON "@order": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "integer"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Layout
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Layout">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#Layout" appinfo="Layout node is used as layout field of LayoutLayer and LayoutGroup nodes.">
<componentInfo name="Layout" level="1" />
<Inheritance baseType="X3DLayoutNode" />
<field name="align" type="MFString" accessType="inputOutput" default="&quot;CENTER&quot; &quot;CENTER&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutAlignChoices" baseType="MFString" description="The align field values align the sized rectangle to an edge or center of the parent rectangle.">
<enumeration value="&quot;LEFT&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;LEFT&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;LEFT&quot; &quot;TOP&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;TOP&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;TOP&quot;" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="offset" type="MFFloat" accessType="inputOutput" default="0 0" description="The values of the offset field are used to translate the location of this rectangle after the initial alignment." />
<field name="offsetUnits" type="MFString" accessType="inputOutput" default="&quot;WORLD&quot; &quot;WORLD&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutUnitsChoices" baseType="MFString" description="The offsetUnits field values are used to interprete the offset values.">
<enumeration value="&quot;WORLD&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
<field name="scaleMode" type="MFString" accessType="inputOutput" default="&quot;NONE&quot; &quot;NONE&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutScaleModeChoices" baseType="MFString" description="The scaleMode field specifies how the scale of the parent is modified.">
<enumeration value="&quot;NONE&quot; &quot;NONE&quot;" />
<enumeration value="&quot;NONE&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;NONE&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;NONE&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;NONE&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;NONE&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;NONE&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
<field name="size" type="MFFloat" accessType="inputOutput" default="1 1" description="The two values in the size field define the width and height of the layout rectangle." />
<field name="sizeUnits" type="MFString" accessType="inputOutput" default="&quot;WORLD&quot; &quot;WORLD&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutUnitsChoices" baseType="MFString" description="The sizeUnits field values are used to interprete the offset values.">
<enumeration value="&quot;WORLD&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="layout" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Layout": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@align": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "\"LEFT\" \"BOTTOM\"",
              "\"LEFT\" \"CENTER\"",
              "\"LEFT\" \"TOP\"",
              "\"CENTER\" \"BOTTOM\"",
              "\"CENTER\" \"CENTER\"",
              "\"CENTER\" \"TOP\"",
              "\"RIGHT\" \"BOTTOM\"",
              "\"RIGHT\" \"CENTER\"",
              "\"RIGHT\" \"TOP\""
            ],
            "default": "CENTER",
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@offset": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@offsetUnits": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "\"WORLD\" \"WORLD\"",
              "\"WORLD\" \"FRACTION\"",
              "\"WORLD\" \"PIXEL\"",
              "\"FRACTION\" \"WORLD\"",
              "\"FRACTION\" \"FRACTION\"",
              "\"FRACTION\" \"PIXEL\"",
              "\"PIXEL\" \"WORLD\"",
              "\"PIXEL\" \"FRACTION\"",
              "\"PIXEL\" \"PIXEL\""
            ],
            "default": "WORLD",
            "type": "string"
          }
        },
        "@scaleMode": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "\"NONE\" \"NONE\"",
              "\"NONE\" \"FRACTION\"",
              "\"NONE\" \"STRETCH\"",
              "\"NONE\" \"PIXEL\"",
              "\"FRACTION\" \"NONE\"",
              "\"FRACTION\" \"FRACTION\"",
              "\"FRACTION\" \"STRETCH\"",
              "\"FRACTION\" \"PIXEL\"",
              "\"STRETCH\" \"NONE\"",
              "\"STRETCH\" \"FRACTION\"",
              "\"STRETCH\" \"STRETCH\"",
              "\"STRETCH\" \"PIXEL\"",
              "\"PIXEL\" \"NONE\"",
              "\"PIXEL\" \"FRACTION\"",
              "\"PIXEL\" \"STRETCH\"",
              "\"PIXEL\" \"PIXEL\""
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "@size": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@sizeUnits": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "\"WORLD\" \"WORLD\"",
              "\"WORLD\" \"FRACTION\"",
              "\"WORLD\" \"PIXEL\"",
              "\"FRACTION\" \"WORLD\"",
              "\"FRACTION\" \"FRACTION\"",
              "\"FRACTION\" \"PIXEL\"",
              "\"PIXEL\" \"WORLD\"",
              "\"PIXEL\" \"FRACTION\"",
              "\"PIXEL\" \"PIXEL\""
            ],
            "default": "WORLD",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
align
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="align" type="MFString" accessType="inputOutput" default="&quot;CENTER&quot; &quot;CENTER&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutAlignChoices" baseType="MFString" description="The align field values align the sized rectangle to an edge or center of the parent rectangle.">
<enumeration value="&quot;LEFT&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;LEFT&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;LEFT&quot; &quot;TOP&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;CENTER&quot; &quot;TOP&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;BOTTOM&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;CENTER&quot;" />
<enumeration value="&quot;RIGHT&quot; &quot;TOP&quot;" />
</field>
'

JSON "@align": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "\"LEFT\" \"BOTTOM\"",
      "\"LEFT\" \"CENTER\"",
      "\"LEFT\" \"TOP\"",
      "\"CENTER\" \"BOTTOM\"",
      "\"CENTER\" \"CENTER\"",
      "\"CENTER\" \"TOP\"",
      "\"RIGHT\" \"BOTTOM\"",
      "\"RIGHT\" \"CENTER\"",
      "\"RIGHT\" \"TOP\""
    ],
    "default": "CENTER",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
offset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="offset" type="MFFloat" accessType="inputOutput" default="0 0" description="The values of the offset field are used to translate the location of this rectangle after the initial alignment." />
'

JSON "@offset": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "type": "number"
  }
}
offsetUnits
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="offsetUnits" type="MFString" accessType="inputOutput" default="&quot;WORLD&quot; &quot;WORLD&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutUnitsChoices" baseType="MFString" description="The offsetUnits field values are used to interprete the offset values.">
<enumeration value="&quot;WORLD&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
'

JSON "@offsetUnits": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "\"WORLD\" \"WORLD\"",
      "\"WORLD\" \"FRACTION\"",
      "\"WORLD\" \"PIXEL\"",
      "\"FRACTION\" \"WORLD\"",
      "\"FRACTION\" \"FRACTION\"",
      "\"FRACTION\" \"PIXEL\"",
      "\"PIXEL\" \"WORLD\"",
      "\"PIXEL\" \"FRACTION\"",
      "\"PIXEL\" \"PIXEL\""
    ],
    "default": "WORLD",
    "type": "string"
  }
}
scaleMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleMode" type="MFString" accessType="inputOutput" default="&quot;NONE&quot; &quot;NONE&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutScaleModeChoices" baseType="MFString" description="The scaleMode field specifies how the scale of the parent is modified.">
<enumeration value="&quot;NONE&quot; &quot;NONE&quot;" />
<enumeration value="&quot;NONE&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;NONE&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;NONE&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;NONE&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;NONE&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;STRETCH&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;NONE&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;STRETCH&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
'

JSON "@scaleMode": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "\"NONE\" \"NONE\"",
      "\"NONE\" \"FRACTION\"",
      "\"NONE\" \"STRETCH\"",
      "\"NONE\" \"PIXEL\"",
      "\"FRACTION\" \"NONE\"",
      "\"FRACTION\" \"FRACTION\"",
      "\"FRACTION\" \"STRETCH\"",
      "\"FRACTION\" \"PIXEL\"",
      "\"STRETCH\" \"NONE\"",
      "\"STRETCH\" \"FRACTION\"",
      "\"STRETCH\" \"STRETCH\"",
      "\"STRETCH\" \"PIXEL\"",
      "\"PIXEL\" \"NONE\"",
      "\"PIXEL\" \"FRACTION\"",
      "\"PIXEL\" \"STRETCH\"",
      "\"PIXEL\" \"PIXEL\""
    ],
    "default": "NONE",
    "type": "string"
  }
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="MFFloat" accessType="inputOutput" default="1 1" description="The two values in the size field define the width and height of the layout rectangle." />
'

JSON "@size": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "default": 1,
    "type": "number"
  }
}
sizeUnits
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sizeUnits" type="MFString" accessType="inputOutput" default="&quot;WORLD&quot; &quot;WORLD&quot;" additionalEnumerationValuesAllowed="false" simpleType="layoutUnitsChoices" baseType="MFString" description="The sizeUnits field values are used to interprete the offset values.">
<enumeration value="&quot;WORLD&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;WORLD&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;FRACTION&quot; &quot;PIXEL&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;WORLD&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;FRACTION&quot;" />
<enumeration value="&quot;PIXEL&quot; &quot;PIXEL&quot;" />
<componentInfo name="Layout" level="2" />
</field>
'

JSON "@sizeUnits": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "\"WORLD\" \"WORLD\"",
      "\"WORLD\" \"FRACTION\"",
      "\"WORLD\" \"PIXEL\"",
      "\"FRACTION\" \"WORLD\"",
      "\"FRACTION\" \"FRACTION\"",
      "\"FRACTION\" \"PIXEL\"",
      "\"PIXEL\" \"WORLD\"",
      "\"PIXEL\" \"FRACTION\"",
      "\"PIXEL\" \"PIXEL\""
    ],
    "default": "WORLD",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LayoutGroup
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LayoutGroup">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#LayoutGroup" appinfo="LayoutGroup is a Grouping node that can contain most nodes, whose children are related by a common layout within a parent layout.">
<componentInfo name="Layout" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="layout" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DLayoutNode" description="The layout field contains an X3DLayoutNode node that provides the information required to locate and size the layout region of the LayoutGroup node relative to its parent\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s layout region, and also to scale the contents of the LayoutGroup." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" description="The content of the LayoutGroup is clipped by the specified viewport." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="LayoutGroupContentModel" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LayoutGroup": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-layout": {
          "$ref": "#/$defs/-X3DLayoutNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-viewport": {
          "$ref": "#/$defs/-X3DViewportNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
layout
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="layout" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DLayoutNode" description="The layout field contains an X3DLayoutNode node that provides the information required to locate and size the layout region of the LayoutGroup node relative to its parent\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s layout region, and also to scale the contents of the LayoutGroup." />
'

JSON "-layout": {
  "$ref": "#/$defs/-X3DLayoutNodeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
viewport
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" description="The content of the LayoutGroup is clipped by the specified viewport." />
'

JSON "-viewport": {
  "$ref": "#/$defs/-X3DViewportNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LayoutLayer
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LayoutLayer">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#LayoutLayer" appinfo="LayoutLayer is a Grouping node that can contain most nodes.">
<componentInfo name="Layout" level="1" />
<Inheritance baseType="X3DLayerNode" />
<AdditionalInheritance baseType="X3DGroupingNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="layout" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DLayoutNode" description="The layout field contains an X3DLayoutNode node that provides the information required to locate and size the layout region of the LayoutGroup node relative to its parent\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s layout region, and also to scale the contents of the LayoutGroup." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DLayerNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="pickable determines whether pick traversal is performed for this layer." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" />
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" inheritedFrom="X3DLayerNode" description="The content of the LayoutGroup is clipped by the specified viewport." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="layers" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="LayoutGroupContentModel" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LayoutLayer": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-layout": {
          "$ref": "#/$defs/-X3DLayoutNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "@pickable": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-viewport": {
          "$ref": "#/$defs/-X3DViewportNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
layout
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="layout" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DLayoutNode" description="The layout field contains an X3DLayoutNode node that provides the information required to locate and size the layout region of the LayoutGroup node relative to its parent\xc3\xa2\xe2\x82\xac\xe2\x84\xa2s layout region, and also to scale the contents of the LayoutGroup." />
'

JSON "-layout": {
  "$ref": "#/$defs/-X3DLayoutNodeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DLayerNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="pickable determines whether pick traversal is performed for this layer." />
'

JSON "@pickable": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
viewport
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewport" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DViewportNode" inheritedFrom="X3DLayerNode" description="The content of the LayoutGroup is clipped by the specified viewport." />
'

JSON "-viewport": {
  "$ref": "#/$defs/-X3DViewportNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLayerNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LinePickSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LinePickSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#LinePickSensor" appinfo="LinePickSensor uses one or more pickingGeometry line segments to compute intersections with pickTarget shapes.">
<componentInfo name="Picking" level="1" />
<Inheritance baseType="X3DPickSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive indicates when the intersecting object is picked by the picking geometry." />
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
<field name="pickedNormal" type="MFVec3f" accessType="outputOnly" description="Output event containing surface normal vectors computed by the picking intersection computations." />
<field name="pickedPoint" type="MFVec3f" accessType="outputOnly" description="Output event containing 3D points on surface of underlying pickingGeometry computed by the picking intersection computations, given in the local coordinate system." />
<field name="pickedTextureCoordinate" type="MFVec3f" accessType="outputOnly" description="Output event containing 3D texture coordinates of surfaces computed by the picking intersection computations." />
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="PickSensorGroupingNodeContentModel" />
<NodeContentModel name="LineSet" />
<NodeContentModel name="IndexedLineSet" />
<NodeContentModel name="Shape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LinePickSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intersectionType": {
          "anyOf": [
            {
              "enum": [
                "BOUNDS",
                "GEOMETRY"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "BOUNDS",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@matchCriterion": {
          "enum": [
            "MATCH_ANY",
            "MATCH_EVERY",
            "MATCH_ONLY_ONE"
          ],
          "default": "MATCH_ANY",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "-pickedGeometry": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-pickingGeometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-pickTarget": {
          "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
        },
        "@sortOrder": {
          "anyOf": [
            {
              "enum": [
                "ANY",
                "CLOSEST",
                "ALL",
                "ALL_SORTED"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "CLOSEST",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intersectionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
'

JSON "@intersectionType": {
  "anyOf": [
    {
      "enum": [
        "BOUNDS",
        "GEOMETRY"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "BOUNDS",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
matchCriterion
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
'

JSON "@matchCriterion": {
  "enum": [
    "MATCH_ANY",
    "MATCH_EVERY",
    "MATCH_ONLY_ONE"
  ],
  "default": "MATCH_ANY",
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickedGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
'

JSON "-pickedGeometry": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
pickingGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
'

JSON "-pickingGeometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
pickTarget
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
'

JSON "-pickTarget": {
  "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
}
sortOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
'

JSON "@sortOrder": {
  "anyOf": [
    {
      "enum": [
        "ANY",
        "CLOSEST",
        "ALL",
        "ALL_SORTED"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "CLOSEST",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LineProperties
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LineProperties">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#LineProperties" appinfo="LineProperties allows precise fine-grained control over the rendering style of lines and edges for associated geometry nodes inside the same Shape.">
<componentInfo name="Shape" level="2" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="applied" type="SFBool" accessType="inputOutput" default="true" description="Whether or not LineProperties are applied to associated geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="linetype" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" simpleType="lineTypeValues" baseType="SFInt32" description="linetype selects a line pattern, with solid default if defined value isn't supported.">
<enumeration value="1" alias="SOLID" appinfo="Solid." />
<enumeration value="2" alias="DASHED" appinfo="Dashed." />
<enumeration value="3" alias="DOTTED" appinfo="Dotted." />
<enumeration value="4" alias="DASHED_DOTTED" appinfo="Dashed-dotted." />
<enumeration value="5" alias="DASHED_DOT_DOT" appinfo="Dash-dot-dot." />
<enumeration value="6" alias="SINGLE_ARROW" appinfo="(single arrow)." />
<enumeration value="7" alias="SINGLE_DOT" appinfo="(single dot)." />
<enumeration value="8" alias="DOUBLE_ARROW" appinfo="(double arrow)." />
<enumeration value="9" alias="STITCH_LINE" appinfo="(stitch line)." />
<enumeration value="10" alias="CHAIN_LINE" appinfo="(chain line)." />
<enumeration value="11" alias="CENTER_LINE" appinfo="(center line)." />
<enumeration value="12" alias="HIDDEN_LINE" appinfo="(hidden line)." />
<enumeration value="13" alias="PHANTOM_LINE" appinfo="(phantom line)." />
<enumeration value="14" alias="BREAK_LINE_STYLE_1" appinfo="(break line - style 1)." />
<enumeration value="15" alias="BREAK_LINE_STYLE_2" appinfo="(break line - style 2)." />
<enumeration value="16" alias="USER_SPECIFIED_DASH_PATTERN" appinfo="User-specified dash pattern." />
</field>
<field name="linewidthScaleFactor" type="SFFloat" accessType="inputOutput" default="0" description="linewidthScaleFactor is a scale factor multiplied by browser-dependent nominal linewidth, mapped to nearest available line width." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="lineProperties" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LineProperties": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@applied": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@linetype": {
          "minimum": 0,
          "enum": [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            16
          ],
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@linewidthScaleFactor": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
applied
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applied" type="SFBool" accessType="inputOutput" default="true" description="Whether or not LineProperties are applied to associated geometry." />
'

JSON "@applied": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
linetype
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linetype" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" simpleType="lineTypeValues" baseType="SFInt32" description="linetype selects a line pattern, with solid default if defined value isn't supported.">
<enumeration value="1" alias="SOLID" appinfo="Solid." />
<enumeration value="2" alias="DASHED" appinfo="Dashed." />
<enumeration value="3" alias="DOTTED" appinfo="Dotted." />
<enumeration value="4" alias="DASHED_DOTTED" appinfo="Dashed-dotted." />
<enumeration value="5" alias="DASHED_DOT_DOT" appinfo="Dash-dot-dot." />
<enumeration value="6" alias="SINGLE_ARROW" appinfo="(single arrow)." />
<enumeration value="7" alias="SINGLE_DOT" appinfo="(single dot)." />
<enumeration value="8" alias="DOUBLE_ARROW" appinfo="(double arrow)." />
<enumeration value="9" alias="STITCH_LINE" appinfo="(stitch line)." />
<enumeration value="10" alias="CHAIN_LINE" appinfo="(chain line)." />
<enumeration value="11" alias="CENTER_LINE" appinfo="(center line)." />
<enumeration value="12" alias="HIDDEN_LINE" appinfo="(hidden line)." />
<enumeration value="13" alias="PHANTOM_LINE" appinfo="(phantom line)." />
<enumeration value="14" alias="BREAK_LINE_STYLE_1" appinfo="(break line - style 1)." />
<enumeration value="15" alias="BREAK_LINE_STYLE_2" appinfo="(break line - style 2)." />
<enumeration value="16" alias="USER_SPECIFIED_DASH_PATTERN" appinfo="User-specified dash pattern." />
</field>
'

JSON "@linetype": {
  "minimum": 0,
  "enum": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15,
    16
  ],
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
linewidthScaleFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linewidthScaleFactor" type="SFFloat" accessType="inputOutput" default="0" description="linewidthScaleFactor is a scale factor multiplied by browser-dependent nominal linewidth, mapped to nearest available line width." />
'

JSON "@linewidthScaleFactor": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LineSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LineSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#LineSet" appinfo="LineSet is a geometry node that can contain a Coordinate|CoordinateDouble node and optionally a Color|ColorRGBA node.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="vertexCount" type="MFInt32" accessType="inputOutput" minInclusive="2" description="vertexCount describes how many vertices are used in each individual polyline segment from the Coordinate point values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ColorCoordinateContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LineSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@vertexCount": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "minimum": 2,
            "type": "integer"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
vertexCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vertexCount" type="MFInt32" accessType="inputOutput" minInclusive="2" description="vertexCount describes how many vertices are used in each individual polyline segment from the Coordinate point values." />
'

JSON "@vertexCount": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "minimum": 2,
    "type": "integer"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ListenerPointSource
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ListenerPointSource">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#ListenerPointSource" appinfo="ListenerPointSource node represents position and orientation of a person listening to virtual sound in the audio scene, and provides single or multiple sound channels as output.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundSourceNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="dopplerEnabled" type="SFBool" accessType="inputOutput" default="false" description="dopplerEnabled enables/disables whether real-time Doppler effects (due to relation motion between sources and listeners) are computed by browser between virtual sound sources and active listening locations, then applied to received frequency at active listening locations." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="interauralDistance" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The interauralDistance field is." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Rotation (axis, angle in radians) of listening point direction relative to default -Z axis direction in local coordinate system." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position (x, y, z in meters) relative to local coordinate system." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="trackCurrentView" type="SFBool" accessType="inputOutput" default="false" description="If trackCurrentView field is true then position and orientation match avatar's (user's) current view." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesSoundSource" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ListenerPointSource": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@dopplerEnabled": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@interauralDistance": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@orientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@trackCurrentView": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
dopplerEnabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dopplerEnabled" type="SFBool" accessType="inputOutput" default="false" description="dopplerEnabled enables/disables whether real-time Doppler effects (due to relation motion between sources and listeners) are computed by browser between virtual sound sources and active listening locations, then applied to received frequency at active listening locations." />
'

JSON "@dopplerEnabled": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
interauralDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="interauralDistance" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The interauralDistance field is." />
'

JSON "@interauralDistance": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Rotation (axis, angle in radians) of listening point direction relative to default -Z axis direction in local coordinate system." />
'

JSON "@orientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position (x, y, z in meters) relative to local coordinate system." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
trackCurrentView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="trackCurrentView" type="SFBool" accessType="inputOutput" default="false" description="If trackCurrentView field is true then position and orientation match avatar's (user's) current view." />
'

JSON "@trackCurrentView": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LoadSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LoadSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#LoadSensor" appinfo="LoadSensor generates events as watchList child nodes are either loaded or fail to load.">
<componentInfo name="Networking" level="3" />
<Inheritance baseType="X3DNetworkSensorNode" />
<field name="children" synonym="watchList" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DUrlObject" description="The children field monitors one or more USE nodes that contain a valid url field." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent when sensing starts/stops." />
<field name="isLoaded" type="SFBool" accessType="outputOnly" description="Notify when all watchList child nodes are loaded, or at least one has failed." />
<field name="loadTime" type="SFTime" accessType="outputOnly" description="Time of successful load complete, not sent on failure." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="progress" type="SFFloat" accessType="outputOnly" description="Sends 0." />
<field name="timeOut" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="Time in seconds of maximum load duration prior to declaring failure." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="LoadSensorChildContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LoadSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-children": {
          "$ref": "#/$defs/-X3DUrlObjectMFNode"
        },
        "-watchList": {
          "$ref": "#/$defs/-X3DUrlObjectMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@timeOut": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" synonym="watchList" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DUrlObject" description="The children field monitors one or more USE nodes that contain a valid url field." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" synonym="watchList" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DUrlObject" description="The children field monitors one or more USE nodes that contain a valid url field." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DUrlObjectMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
timeOut
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="timeOut" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="Time in seconds of maximum load duration prior to declaring failure." />
'

JSON "@timeOut": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LocalFog
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LocalFog">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#LocalFog" appinfo="LocalFog simulates atmospheric effects by blending distant objects with fog color.">
<componentInfo name="EnvironmentalEffects" level="4" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DFogObject" />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DFogObject" description="Fog color." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="fogType" type="SFString" accessType="inputOutput" default="LINEAR" inheritedFrom="X3DFogObject" additionalEnumerationValuesAllowed="false" simpleType="fogTypeChoices" baseType="xs:NMTOKEN" description="Specifies algorithm for rate of increasing Fog, either LINEAR or EXPONENTIAL.">
<enumeration value="LINEAR" appinfo="linear blending as a function of distance." />
<enumeration value="EXPONENTIAL" appinfo="exponential blending as a function of distance." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="visibilityRange" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DFogObject" description="Distance in meters where objects are totally obscured by the fog, using local coordinate system." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LocalFog": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@fogType": {
          "enum": [
            "LINEAR",
            "EXPONENTIAL"
          ],
          "default": "LINEAR",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visibilityRange": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DFogObject" description="Fog color." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
fogType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogType" type="SFString" accessType="inputOutput" default="LINEAR" inheritedFrom="X3DFogObject" additionalEnumerationValuesAllowed="false" simpleType="fogTypeChoices" baseType="xs:NMTOKEN" description="Specifies algorithm for rate of increasing Fog, either LINEAR or EXPONENTIAL.">
<enumeration value="LINEAR" appinfo="linear blending as a function of distance." />
<enumeration value="EXPONENTIAL" appinfo="exponential blending as a function of distance." />
</field>
'

JSON "@fogType": {
  "enum": [
    "LINEAR",
    "EXPONENTIAL"
  ],
  "default": "LINEAR",
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visibilityRange
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visibilityRange" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DFogObject" description="Distance in meters where objects are totally obscured by the fog, using local coordinate system." />
'

JSON "@visibilityRange": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
LOD
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="LOD">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#LOD" appinfo="LOD (Level Of Detail) uses camera-to-object distance to switch among contained child levels.">
<componentInfo name="Navigation" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Viewpoint distance-measurement offset from origin of local coordinate system, used for LOD node distance calculations." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="forceTransitions" type="SFBool" accessType="initializeOnly" default="false" description="Whether to perform every range-based transition, regardless of browser optimizations that might otherwise occur." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="level_changed" type="SFInt32" accessType="outputOnly" minInclusive="0" description="Output event that reports current level of LOD children whenever switching occurs." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="range" type="MFFloat" accessType="initializeOnly" description="Specifies ideal distances at which to switch between levels." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesGroupLODShapeTransformSwitch" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "LOD": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@forceTransitions": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@range": {
          "$comment": "MFFloat initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Viewpoint distance-measurement offset from origin of local coordinate system, used for LOD node distance calculations." />
'

JSON "@center": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
forceTransitions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceTransitions" type="SFBool" accessType="initializeOnly" default="false" description="Whether to perform every range-based transition, regardless of browser optimizations that might otherwise occur." />
'

JSON "@forceTransitions": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
range
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="range" type="MFFloat" accessType="initializeOnly" description="Specifies ideal distances at which to switch between levels." />
'

JSON "@range": {
  "$comment": "MFFloat initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Material
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Material">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Material" appinfo="Material specifies surface rendering properties for associated geometry nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DOneSidedMaterialNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources.">
<componentInfo name="Shape" level="2" />
</field>
<field name="ambientTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying ambientIntensity for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="ambientTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="diffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
<field name="diffuseTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying diffuseColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="diffuseTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="occlusionStrength" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="occlusionStrength indicates areas of indirect lighting, typically called ambient occlusion." />
<field name="occlusionTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying occlusionStrength for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="occlusionTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="shininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights.">
<componentInfo name="Shape" level="2" />
</field>
<field name="shininessTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying shininess for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="shininessTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="specularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple).">
<componentInfo name="Shape" level="2" />
</field>
<field name="specularTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying specularColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="specularTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1.">
<componentInfo name="Shape" level="2" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="material" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Material": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-ambientTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@ambientTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@diffuseColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-diffuseTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@diffuseTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@emissiveColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-emissiveTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@emissiveTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalScale": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-normalTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@normalTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@occlusionStrength": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-occlusionTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@occlusionTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@shininess": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-shininessTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@shininessTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@specularColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-specularTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@specularTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
ambientTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying ambientIntensity for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-ambientTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
ambientTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@ambientTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
diffuseColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
'

JSON "@diffuseColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
diffuseTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diffuseTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying diffuseColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-diffuseTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
diffuseTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diffuseTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@diffuseTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
emissiveColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
'

JSON "@emissiveColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
emissiveTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-emissiveTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
emissiveTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@emissiveTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalScale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@normalScale": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
normalTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
'

JSON "-normalTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
normalTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@normalTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
occlusionStrength
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionStrength" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="occlusionStrength indicates areas of indirect lighting, typically called ambient occlusion." />
'

JSON "@occlusionStrength": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
occlusionTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying occlusionStrength for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-occlusionTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
occlusionTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@occlusionTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
shininess
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@shininess": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shininessTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shininessTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying shininess for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-shininessTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
shininessTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shininessTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@shininessTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
specularColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple).">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@specularColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
specularTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specularTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying specularColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-specularTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
specularTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specularTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@specularTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Matrix3VertexAttribute
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Matrix3VertexAttribute">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#Matrix3VertexAttribute" appinfo="Matrix3VertexAttribute defines a set of per-vertex 3x3 matrix attributes.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DVertexAttributeNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
<field name="value" type="MFMatrix3f" accessType="inputOutput" description="value specifies an arbitrary collection of matrix values that will be passed to the shader as per-vertex information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="attrib" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Matrix3VertexAttribute": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@value": {
          "$comment": "MFMatrix3f inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
'

JSON "@name": {
  "$comment": "SFString initializeOnly",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFMatrix3f" accessType="inputOutput" description="value specifies an arbitrary collection of matrix values that will be passed to the shader as per-vertex information." />
'

JSON "@value": {
  "$comment": "MFMatrix3f inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Matrix4VertexAttribute
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Matrix4VertexAttribute">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#Matrix4VertexAttribute" appinfo="Matrix4VertexAttribute defines a set of per-vertex 4x4 matrix attributes.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DVertexAttributeNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
<field name="value" type="MFMatrix4f" accessType="inputOutput" description="value specifies an arbitrary collection of matrix values that will be passed to the shader as per-vertex information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="attrib" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Matrix4VertexAttribute": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@value": {
          "$comment": "MFMatrix4f inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="initializeOnly" inheritedFrom="X3DVertexAttributeNode" baseType="xs:NMTOKEN" description="Required name for this particular VertexAttribute instance." />
'

JSON "@name": {
  "$comment": "SFString initializeOnly",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFMatrix4f" accessType="inputOutput" description="value specifies an arbitrary collection of matrix values that will be passed to the shader as per-vertex information." />
'

JSON "@value": {
  "$comment": "MFMatrix4f inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataBoolean
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataBoolean">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataBoolean" appinfo="The metadata provided by this node is contained in the Boolean values of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFBool" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataBoolean": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@value": {
          "$comment": "MFBool inputOutput",
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFBool" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
'

JSON "@value": {
  "$comment": "MFBool inputOutput",
  "type": "array",
  "items": {
    "type": "boolean"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataDouble
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataDouble">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataDouble" appinfo="The metadata provided by this node is contained in the double-precision floating point numbers of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFDouble" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataDouble": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@value": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFDouble" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
'

JSON "@value": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataFloat
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataFloat">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataFloat" appinfo="The metadata provided by this node is contained in the single-precision floating point numbers of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFFloat" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataFloat": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@value": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFFloat" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
'

JSON "@value": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataInteger
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataInteger">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataInteger" appinfo="The metadata provided by this node is contained in the integer numbers of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFInt32" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataInteger": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@value": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFInt32" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
'

JSON "@value": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataSet" appinfo="The metadata provided by this node is contained in the metadata nodes of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DMetadataObject" description="The value field provides a list of X3DMetadataObject nodes whose meaning is determined by the name field." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" maxOccurs="unbounded" />
<NodeContentModel name="ProtoInstance" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-value": {
          "$ref": "#/$defs/-X3DMetadataObjectMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DMetadataObject" description="The value field provides a list of X3DMetadataObject nodes whose meaning is determined by the name field." />
'

JSON "-value": {
  "$ref": "#/$defs/-X3DMetadataObjectMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MetadataString
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MetadataString">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#MetadataString" appinfo="The metadata provided by this node is contained in the strings of the value field.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DMetadataObject" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
<field name="value" type="MFString" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="value" type="containerFieldChoicesMetadata" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MetadataString": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@reference": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@value": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Depending on the metadata vocabulary, the attribute name is usually required for metadata nodes." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
reference
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="reference" type="SFString" accessType="inputOutput" inheritedFrom="X3DMetadataObject" description="Reference to the metadata standard or definition defining this particular metadata value." />
'

JSON "@reference": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="MFString" accessType="inputOutput" description="The value attribute is a strictly typed data array providing relevant metadata information." />
'

JSON "@value": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MicrophoneSource
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MicrophoneSource">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#MicrophoneSource" appinfo="MicrophoneSource captures input from a physical microphone in the real world.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundSourceNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" description="mediaDeviceID field provides ID parameter functionality." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesSoundSource" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MicrophoneSource": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@mediaDeviceID": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mediaDeviceID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" description="mediaDeviceID field provides ID parameter functionality." />
'

JSON "@mediaDeviceID": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MotorJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MotorJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#MotorJoint" appinfo="MotorJoint drives relative angular velocities between body1 and body2 within a common reference frame.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="autoCalc" type="SFBool" accessType="initializeOnly" default="false" description="autoCalc controls whether user manually provides individual angle rotations each frame (false) or if angle values are automatically calculated by motor implementations (true)." />
<field name="axis1Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis1Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
<field name="axis1Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis1Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
<field name="axis2Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis2Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
<field name="axis2Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis2Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
<field name="axis3Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis3Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
<field name="axis3Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis3Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="enabledAxes" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="3" description="enabledAxes indicates which motor axes are active." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="motor1Angle" type="SFFloat" accessType="outputOnly" description="motor1Angle provides calculated angle of rotation (radians) for this motor joint from last frame." />
<field name="motor1AngleRate" type="SFFloat" accessType="outputOnly" description="motor1AngleRate provides calculated anglular rotation rate (radians/second) for this motor joint from last frame." />
<field name="motor1Axis" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="motor1Axis defines axis vector of corresponding motor axis." />
<field name="motor2Angle" type="SFFloat" accessType="outputOnly" description="motor2Angle provides calculated angle of rotation (radians) for this motor joint from last frame." />
<field name="motor2AngleRate" type="SFFloat" accessType="outputOnly" description="motor2AngleRate provides calculated anglular rotation rate (radians/second) for this motor joint from last frame." />
<field name="motor2Axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="motor2Axis defines axis vector of corresponding motor axis." />
<field name="motor3Angle" type="SFFloat" accessType="outputOnly" description="motor3Angle provides calculated angle of rotation (radians) for this motor joint from last frame." />
<field name="motor3AngleRate" type="SFFloat" accessType="outputOnly" description="motor3AngleRate provides calculated anglular rotation rate (radians/second) for this motor joint from last frame." />
<field name="motor3Axis" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="motor3Axis defines axis vector of corresponding motor axis." />
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="stop2Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop2Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop2ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop2ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="stop3Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop3Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop3ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop3ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MotorJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoCalc": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@axis1Angle": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@axis1Torque": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@axis2Angle": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@axis2Torque": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@axis3Angle": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@axis3Torque": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@enabledAxes": {
          "maximum": 3,
          "minimum": 0,
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@motor1Axis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@motor2Axis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@motor3Axis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@stop1Bounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop1ErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop2Bounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop2ErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop3Bounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop3ErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoCalc
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoCalc" type="SFBool" accessType="initializeOnly" default="false" description="autoCalc controls whether user manually provides individual angle rotations each frame (false) or if angle values are automatically calculated by motor implementations (true)." />
'

JSON "@autoCalc": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
axis1Angle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis1Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis1Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
'

JSON "@axis1Angle": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
axis1Torque
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis1Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis1Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
'

JSON "@axis1Torque": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
axis2Angle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis2Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis2Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
'

JSON "@axis2Angle": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
axis2Torque
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis2Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis2Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
'

JSON "@axis2Torque": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
axis3Angle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis3Angle" type="SFFloat" accessType="inputOutput" default="0" description="axis3Angle (radians) is rotation angle for corresponding motor axis when in user-calculated mode." />
'

JSON "@axis3Angle": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
axis3Torque
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis3Torque" type="SFFloat" accessType="inputOutput" default="0" description="axis3Torque is rotational torque applied by corresponding motor axis when in user-calculated mode." />
'

JSON "@axis3Torque": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
enabledAxes
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabledAxes" type="SFInt32" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="3" description="enabledAxes indicates which motor axes are active." />
'

JSON "@enabledAxes": {
  "maximum": 3,
  "minimum": 0,
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
motor1Axis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="motor1Axis" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="motor1Axis defines axis vector of corresponding motor axis." />
'

JSON "@motor1Axis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
motor2Axis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="motor2Axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="motor2Axis defines axis vector of corresponding motor axis." />
'

JSON "@motor2Axis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
motor3Axis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="motor3Axis" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="motor3Axis defines axis vector of corresponding motor axis." />
'

JSON "@motor3Axis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
stop1Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop1Bounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop1ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop1ErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop2Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop2Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop2Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop2Bounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop2ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop2ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop2ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop2ErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop3Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop3Bounce" type="SFFloat" accessType="inputOutput" default="0" description="stop3Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop3Bounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop3ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop3ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stop3ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop3ErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MovieTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MovieTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#MovieTexture" appinfo="MovieTexture applies a 2D movie image to surface geometry, or provides audio for a Sound node.">
<componentInfo name="Texturing" level="3" />
<Inheritance baseType="X3DSoundSourceNode" />
<AdditionalInheritance baseType="X3DTexture2DNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="duration_changed" type="SFTime" accessType="outputOnly" minInclusive="-1" description="or -1." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since MovieTexture activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when MovieTexture is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and MovieTexture becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="pitch" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Multiplier for the rate at which sampled sound is played." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and MovieTexture becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="speed" type="SFFloat" accessType="inputOutput" default="1.0" description="Factor for how fast the movie (or soundtrack) is played." />
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of movie file or stream.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3dUrlObjectTexture" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MovieTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@loop": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@pitch": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@repeatS": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@speed": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
loop
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
'

JSON "@loop": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and MovieTexture becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
pitch
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pitch" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="Multiplier for the rate at which sampled sound is played." />
'

JSON "@pitch": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and MovieTexture becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="1.0" description="Factor for how fast the movie (or soundtrack) is played." />
'

JSON "@speed": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of movie file or stream.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MultiTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MultiTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#MultiTexture" appinfo="MultiTexture applies several individual textures to a single geometry node, enabling a variety of visual effects that include light mapping and environment mapping.">
<componentInfo name="Texturing" level="2" />
<Inheritance baseType="X3DTextureNode" />
<field name="alpha" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" description="The alpha field defines the alpha (1-transparency) base value for mode operations." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="The color field defines the RGB base values for mode operations." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="function" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureFunctionValues" baseType="MFString" description="function operators COMPLEMENT or ALPHAREPLICATE can be applied after the mode blending operation.">
<enumeration value="&quot;COMPLEMENT&quot;" appinfo="Invert argument x as (1 - x)." />
<enumeration value="&quot;ALPHAREPLICATE&quot;" appinfo="Replicate alpha information to all color channels before operation completes." />
<enumeration value="&quot;&quot;" appinfo="No function is applied - empty SFString is allowed value within MFString array." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="mode" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureModeValues" baseType="MFString" description="mode field indicates the type of blending operation, both for color and for alpha channel.">
<enumeration value="&quot;ADD&quot;" />
<enumeration value="&quot;ADDSIGNED&quot;" />
<enumeration value="&quot;ADDSIGNED2X&quot;" />
<enumeration value="&quot;ADDSMOOTH&quot;" />
<enumeration value="&quot;BLENDCURRENTALPHA&quot;" />
<enumeration value="&quot;BLENDDIFFUSEALPHA&quot;" />
<enumeration value="&quot;BLENDFACTORALPHA&quot;" />
<enumeration value="&quot;BLENDTEXTUREALPHA&quot;" />
<enumeration value="&quot;DOTPRODUCT3&quot;" />
<enumeration value="&quot;MODULATE&quot;" />
<enumeration value="&quot;MODULATE2X&quot;" />
<enumeration value="&quot;MODULATE4X&quot;" />
<enumeration value="&quot;MODULATEALPHA_ADDCOLOR&quot;" />
<enumeration value="&quot;MODULATEINVALPHA_ADDCOLOR&quot;" />
<enumeration value="&quot;MODULATEINVCOLOR_ADDALPHA&quot;" />
<enumeration value="&quot;OFF&quot;" />
<enumeration value="&quot;REPLACE&quot;" />
<enumeration value="&quot;SELECTARG1&quot;" />
<enumeration value="&quot;SELECTARG2&quot;" />
<enumeration value="&quot;SUBTRACT&quot;" />
</field>
<field name="source" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureSourceValues" baseType="MFString" description="source field determines whether each image source is treated as DIFFUSE, SPECULAR or a multiplicative FACTOR.">
<enumeration value="&quot;DIFFUSE&quot;" />
<enumeration value="&quot;FACTOR&quot;" />
<enumeration value="&quot;SPECULAR&quot;" />
<enumeration value="&quot;&quot;" />
</field>
<field name="texture" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureNode" description="Contained texture nodes (ImageTexture, MovieTexture, PixelTexture) that map image(s) to surface geometry, defining each of the different texture channels." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture2DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ComposedCubeMapTexture" />
<NodeContentModel name="GeneratedCubeMapTexture" />
<NodeContentModel name="ImageCubeMapTexture" />
<NodeContentModel name="ComposedTexture3D" />
<NodeContentModel name="ImageTexture3D" />
<NodeContentModel name="PixelTexture3D" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MultiTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@alpha": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@function": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "COMPLEMENT",
                  "ALPHAREPLICATE",
                  ""
                ]
              },
              {
                "type": "string"
              }
            ],
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@mode": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ADD",
                  "ADDSIGNED",
                  "ADDSIGNED2X",
                  "ADDSMOOTH",
                  "BLENDCURRENTALPHA",
                  "BLENDDIFFUSEALPHA",
                  "BLENDFACTORALPHA",
                  "BLENDTEXTUREALPHA",
                  "DOTPRODUCT3",
                  "MODULATE",
                  "MODULATE2X",
                  "MODULATE4X",
                  "MODULATEALPHA_ADDCOLOR",
                  "MODULATEINVALPHA_ADDCOLOR",
                  "MODULATEINVCOLOR_ADDALPHA",
                  "OFF",
                  "REPLACE",
                  "SELECTARG1",
                  "SELECTARG2",
                  "SUBTRACT"
                ]
              },
              {
                "type": "string"
              }
            ],
            "type": "string"
          }
        },
        "@source": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "DIFFUSE",
                  "FACTOR",
                  "SPECULAR",
                  ""
                ]
              },
              {
                "type": "string"
              }
            ],
            "type": "string"
          }
        },
        "-texture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
alpha
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="alpha" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" description="The alpha field defines the alpha (1-transparency) base value for mode operations." />
'

JSON "@alpha": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="The color field defines the RGB base values for mode operations." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
function
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="function" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureFunctionValues" baseType="MFString" description="function operators COMPLEMENT or ALPHAREPLICATE can be applied after the mode blending operation.">
<enumeration value="&quot;COMPLEMENT&quot;" appinfo="Invert argument x as (1 - x)." />
<enumeration value="&quot;ALPHAREPLICATE&quot;" appinfo="Replicate alpha information to all color channels before operation completes." />
<enumeration value="&quot;&quot;" appinfo="No function is applied - empty SFString is allowed value within MFString array." />
</field>
'

JSON "@function": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "COMPLEMENT",
          "ALPHAREPLICATE",
          ""
        ]
      },
      {
        "type": "string"
      }
    ],
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
mode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mode" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureModeValues" baseType="MFString" description="mode field indicates the type of blending operation, both for color and for alpha channel.">
<enumeration value="&quot;ADD&quot;" />
<enumeration value="&quot;ADDSIGNED&quot;" />
<enumeration value="&quot;ADDSIGNED2X&quot;" />
<enumeration value="&quot;ADDSMOOTH&quot;" />
<enumeration value="&quot;BLENDCURRENTALPHA&quot;" />
<enumeration value="&quot;BLENDDIFFUSEALPHA&quot;" />
<enumeration value="&quot;BLENDFACTORALPHA&quot;" />
<enumeration value="&quot;BLENDTEXTUREALPHA&quot;" />
<enumeration value="&quot;DOTPRODUCT3&quot;" />
<enumeration value="&quot;MODULATE&quot;" />
<enumeration value="&quot;MODULATE2X&quot;" />
<enumeration value="&quot;MODULATE4X&quot;" />
<enumeration value="&quot;MODULATEALPHA_ADDCOLOR&quot;" />
<enumeration value="&quot;MODULATEINVALPHA_ADDCOLOR&quot;" />
<enumeration value="&quot;MODULATEINVCOLOR_ADDALPHA&quot;" />
<enumeration value="&quot;OFF&quot;" />
<enumeration value="&quot;REPLACE&quot;" />
<enumeration value="&quot;SELECTARG1&quot;" />
<enumeration value="&quot;SELECTARG2&quot;" />
<enumeration value="&quot;SUBTRACT&quot;" />
</field>
'

JSON "@mode": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ADD",
          "ADDSIGNED",
          "ADDSIGNED2X",
          "ADDSMOOTH",
          "BLENDCURRENTALPHA",
          "BLENDDIFFUSEALPHA",
          "BLENDFACTORALPHA",
          "BLENDTEXTUREALPHA",
          "DOTPRODUCT3",
          "MODULATE",
          "MODULATE2X",
          "MODULATE4X",
          "MODULATEALPHA_ADDCOLOR",
          "MODULATEINVALPHA_ADDCOLOR",
          "MODULATEINVCOLOR_ADDALPHA",
          "OFF",
          "REPLACE",
          "SELECTARG1",
          "SELECTARG2",
          "SUBTRACT"
        ]
      },
      {
        "type": "string"
      }
    ],
    "type": "string"
  }
}
source
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="source" type="MFString" accessType="inputOutput" additionalEnumerationValuesAllowed="true" simpleType="multiTextureSourceValues" baseType="MFString" description="source field determines whether each image source is treated as DIFFUSE, SPECULAR or a multiplicative FACTOR.">
<enumeration value="&quot;DIFFUSE&quot;" />
<enumeration value="&quot;FACTOR&quot;" />
<enumeration value="&quot;SPECULAR&quot;" />
<enumeration value="&quot;&quot;" />
</field>
'

JSON "@source": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "DIFFUSE",
          "FACTOR",
          "SPECULAR",
          ""
        ]
      },
      {
        "type": "string"
      }
    ],
    "type": "string"
  }
}
texture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texture" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureNode" description="Contained texture nodes (ImageTexture, MovieTexture, PixelTexture) that map image(s) to surface geometry, defining each of the different texture channels." />
'

JSON "-texture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MultiTextureCoordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MultiTextureCoordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#MultiTextureCoordinate" appinfo="MultiTextureCoordinate contains multiple TextureCoordinate or TextureCoordinateGenerator nodes, for use by a parent polygonal geometry node such as IndexedFaceSet or a Triangle* node.">
<componentInfo name="Texturing" level="2" />
<Inheritance baseType="X3DTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="texCoord" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Zero or more contained TextureCoordinate or TextureCoordinateGenerator nodes that specify texture coordinates for the different texture channels, used for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureCoordinate" />
<NodeContentModel name="TextureCoordinateGenerator" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MultiTextureCoordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureCoordinateNode" description="Zero or more contained TextureCoordinate or TextureCoordinateGenerator nodes that specify texture coordinates for the different texture channels, used for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNodeMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
MultiTextureTransform
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="MultiTextureTransform">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#MultiTextureTransform" appinfo="MultiTextureTransform contains multiple TextureTransform nodes, each provided for use by corresponding ImageTexture MovieTexture or PixelTexture nodes within a sibling MultiTexture node.">
<componentInfo name="Texturing" level="2" />
<Inheritance baseType="X3DTextureTransformNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="textureTransform" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureTransformNode" description="Zero or more contained TextureTransform nodes, for each of the different texture channels, that define 2D transformation applied to texture coordinates." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="textureTransform" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureTransform" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "MultiTextureTransform": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-textureTransform": {
          "$ref": "#/$defs/-X3DSingleTextureTransformNodeMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
textureTransform
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureTransform" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DSingleTextureTransformNode" description="Zero or more contained TextureTransform nodes, for each of the different texture channels, that define 2D transformation applied to texture coordinates." />
'

JSON "-textureTransform": {
  "$ref": "#/$defs/-X3DSingleTextureTransformNodeMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NavigationInfo
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NavigationInfo">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#NavigationInfo" appinfo="NavigationInfo describes the user's viewing model, user navigation-interaction modalities, and also dimensional characteristics of the user's (typically invisible) avatar.">
<componentInfo name="Navigation" level="1" />
<Inheritance baseType="X3DBindableNode" />
<field name="avatarSize" type="MFFloat" accessType="inputOutput" default="0.25 1.6 0.75" minInclusive="0" description="avatarSize triplet values define three separate parameters: (a) collisionDistance between user and geometry, i.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Event sent reporting timestamp when node becomes active/inactive." />
<field name="headlight" type="SFBool" accessType="inputOutput" default="true" description="Enable/disable directional light that always points in the direction the user is looking." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Receiving event set_bind=true activates and binds this node at the top of the binding stack." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Default rate at which viewer travels through scene, meters/second.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="transitionComplete" type="SFBool" accessType="outputOnly" description="Event signaling viewpoint transition complete." />
<field name="transitionTime" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="transitionTime defines the expected duration of viewpoint transition in seconds." />
<field name="transitionType" type="MFString" accessType="inputOutput" default="&quot;LINEAR&quot;" additionalEnumerationValuesAllowed="true" simpleType="navigationTransitionTypeValues" baseType="MFString" description="Camera transition between viewpoints.">
<enumeration value="&quot;TELEPORT&quot;" appinfo="immediate transition." />
<enumeration value="&quot;LINEAR&quot;" appinfo="transition may proceed directly through intervening objects." />
<enumeration value="&quot;ANIMATE&quot;" appinfo="rowser-specific transition." />
</field>
<field name="type" type="MFString" accessType="inputOutput" default="&quot;EXAMINE&quot; &quot;ANY&quot;" additionalEnumerationValuesAllowed="true" simpleType="navigationTypeValues" baseType="MFString" description="Enter one or more quoted SFString values: &quot;EXAMINE&quot; &quot;WALK&quot; &quot;FLY&quot; &quot;LOOKAT&quot; &quot;EXPLORE&quot; &quot;ANY&quot; &quot;NONE&quot;.">
<enumeration value="&quot;ANY&quot;" appinfo="browser can offer any type for user to choose." />
<enumeration value="&quot;WALK&quot;" appinfo="free navigation, avatar remains on ground, collision detection." />
<enumeration value="&quot;EXAMINE&quot;" appinfo="view an individual object by rotating view about center." />
<enumeration value="&quot;FLY&quot;" appinfo="free navigation, collision detection." />
<enumeration value="&quot;LOOKAT&quot;" appinfo="navigate to particular object." />
<enumeration value="&quot;NONE&quot;" appinfo="disables all navigation interfaces." />
<enumeration value="&quot;EXPLORE&quot;" appinfo="consistent keystroke navigation for both geospatial and Cartesian modes." />
</field>
<field name="visibilityLimit" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Geometry beyond the visibilityLimit may not be rendered (far clipping plane of the view frustrum).">
<componentInfo name="Navigation" level="2" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NavigationInfo": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@avatarSize": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "default": 0.25,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1.6,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0.75,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": {
            "minimum": 0,
            "type": "number"
          }
        },
        "@headlight": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@speed": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@transitionTime": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@transitionType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "TELEPORT",
                  "LINEAR",
                  "ANIMATE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "LINEAR",
            "type": "string"
          }
        },
        "@type": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "enum": [
                "ANY",
                "WALK",
                "EXAMINE",
                "FLY",
                "LOOKAT",
                "NONE",
                "EXPLORE"
              ],
              "default": "EXAMINE",
              "type": "string"
            },
            {
              "enum": [
                "ANY",
                "WALK",
                "EXAMINE",
                "FLY",
                "LOOKAT",
                "NONE",
                "EXPLORE"
              ],
              "default": "ANY",
              "type": "string"
            }
          ],
          "items": {
            "type": "string"
          }
        },
        "@visibilityLimit": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
avatarSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="avatarSize" type="MFFloat" accessType="inputOutput" default="0.25 1.6 0.75" minInclusive="0" description="avatarSize triplet values define three separate parameters: (a) collisionDistance between user and geometry, i.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@avatarSize": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "default": 0.25,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1.6,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0.75,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": {
    "minimum": 0,
    "type": "number"
  }
}
headlight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="headlight" type="SFBool" accessType="inputOutput" default="true" description="Enable/disable directional light that always points in the direction the user is looking." />
'

JSON "@headlight": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Default rate at which viewer travels through scene, meters/second.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@speed": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
transitionTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transitionTime" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="transitionTime defines the expected duration of viewpoint transition in seconds." />
'

JSON "@transitionTime": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
transitionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transitionType" type="MFString" accessType="inputOutput" default="&quot;LINEAR&quot;" additionalEnumerationValuesAllowed="true" simpleType="navigationTransitionTypeValues" baseType="MFString" description="Camera transition between viewpoints.">
<enumeration value="&quot;TELEPORT&quot;" appinfo="immediate transition." />
<enumeration value="&quot;LINEAR&quot;" appinfo="transition may proceed directly through intervening objects." />
<enumeration value="&quot;ANIMATE&quot;" appinfo="rowser-specific transition." />
</field>
'

JSON "@transitionType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "TELEPORT",
          "LINEAR",
          "ANIMATE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "LINEAR",
    "type": "string"
  }
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="MFString" accessType="inputOutput" default="&quot;EXAMINE&quot; &quot;ANY&quot;" additionalEnumerationValuesAllowed="true" simpleType="navigationTypeValues" baseType="MFString" description="Enter one or more quoted SFString values: &quot;EXAMINE&quot; &quot;WALK&quot; &quot;FLY&quot; &quot;LOOKAT&quot; &quot;EXPLORE&quot; &quot;ANY&quot; &quot;NONE&quot;.">
<enumeration value="&quot;ANY&quot;" appinfo="browser can offer any type for user to choose." />
<enumeration value="&quot;WALK&quot;" appinfo="free navigation, avatar remains on ground, collision detection." />
<enumeration value="&quot;EXAMINE&quot;" appinfo="view an individual object by rotating view about center." />
<enumeration value="&quot;FLY&quot;" appinfo="free navigation, collision detection." />
<enumeration value="&quot;LOOKAT&quot;" appinfo="navigate to particular object." />
<enumeration value="&quot;NONE&quot;" appinfo="disables all navigation interfaces." />
<enumeration value="&quot;EXPLORE&quot;" appinfo="consistent keystroke navigation for both geospatial and Cartesian modes." />
</field>
'

JSON "@type": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "enum": [
        "ANY",
        "WALK",
        "EXAMINE",
        "FLY",
        "LOOKAT",
        "NONE",
        "EXPLORE"
      ],
      "default": "EXAMINE",
      "type": "string"
    },
    {
      "enum": [
        "ANY",
        "WALK",
        "EXAMINE",
        "FLY",
        "LOOKAT",
        "NONE",
        "EXPLORE"
      ],
      "default": "ANY",
      "type": "string"
    }
  ],
  "items": {
    "type": "string"
  }
}
visibilityLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visibilityLimit" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="Geometry beyond the visibilityLimit may not be rendered (far clipping plane of the view frustrum).">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@visibilityLimit": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Normal
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Normal">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#Normal" appinfo="Normal defines a set of 3D surface-normal vectors that apply either to a sibling Coordinate|CoordinateDouble node, or else to a parent ElevationGrid node.">
<componentInfo name="Rendering" level="2" />
<Inheritance baseType="X3DNormalNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="vector" type="MFVec3f" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="set of unit-length normal vectors, corresponding to indexed polygons or vertices." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="normal" type="containerFieldChoicesX3DNormalNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Normal": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@vector": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "maximum": 1,
            "minimum": -1,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
vector
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vector" type="MFVec3f" accessType="inputOutput" minInclusive="-1" maxInclusive="1" description="set of unit-length normal vectors, corresponding to indexed polygons or vertices." />
'

JSON "@vector": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "maximum": 1,
    "minimum": -1,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NormalInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NormalInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#NormalInterpolator" appinfo="NormalInterpolator generates a series of normal (perpendicular) 3-tuple SFVec3f values.">
<componentInfo name="Interpolation" level="2" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="MFVec3f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NormalInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsCurve
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsCurve">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsCurve" appinfo="NurbsCurve is a 3D curve analogous to NurbsPatchSurface.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DParametricGeometryNode" />
<field name="closed" type="SFBool" accessType="initializeOnly" default="false" description="Whether or not the curve is closed (i." />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="knot" type="MFDouble" accessType="initializeOnly" description="knot vector, where size = number of control points + order of curve." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
<field name="tessellation" type="SFInt32" accessType="inputOutput" default="0" description="hint for surface tessellation." />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Vector assigning relative weight value to each control point." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsCurve": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "@knot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closed" type="SFBool" accessType="initializeOnly" default="false" description="Whether or not the curve is closed (i." />
'

JSON "@closed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
knot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="knot" type="MFDouble" accessType="initializeOnly" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@knot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@order": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tessellation" type="SFInt32" accessType="inputOutput" default="0" description="hint for surface tessellation." />
'

JSON "@tessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Vector assigning relative weight value to each control point." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsCurve2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsCurve2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsCurve2D" appinfo="NurbsCurve2D defines a trimming segment that is part of a trimming contour in the u-v domain of a surface.">
<componentInfo name="NURBS" level="3" />
<Inheritance baseType="X3DNurbsControlCurveNode" />
<field name="closed" type="SFBool" accessType="initializeOnly" default="false" description="Whether or not the curve is closed (i." />
<field name="controlPoint" type="MFVec2d" accessType="inputOutput" inheritedFrom="X3DNurbsControlCurveNode" description="controlPoint defines a set of control points of dimension uDimension by vDimension, and defines a mesh where the points do not have uniform spacing." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="knot" type="MFDouble" accessType="initializeOnly" description="knot vector, where size = number of control points + order of curve." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
<field name="tessellation" type="SFInt32" accessType="inputOutput" default="0" description="hint for surface tessellation." />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Vector assigning relative weight value to each control point." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsCurve2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@controlPoint": {
          "$comment": "MFVec2d inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@knot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closed" type="SFBool" accessType="initializeOnly" default="false" description="Whether or not the curve is closed (i." />
'

JSON "@closed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="MFVec2d" accessType="inputOutput" inheritedFrom="X3DNurbsControlCurveNode" description="controlPoint defines a set of control points of dimension uDimension by vDimension, and defines a mesh where the points do not have uniform spacing." />
'

JSON "@controlPoint": {
  "$comment": "MFVec2d inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
knot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="knot" type="MFDouble" accessType="initializeOnly" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@knot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@order": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tessellation" type="SFInt32" accessType="inputOutput" default="0" description="hint for surface tessellation." />
'

JSON "@tessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Vector assigning relative weight value to each control point." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsOrientationInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsOrientationInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsOrientationInterpolator" appinfo="NurbsOrientationInterpolator describes a 3D NURBS curve and outputs interpolated orientation values.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="knot" type="MFDouble" accessType="inputOutput" description="knot vector, where size = number of control points + order of curve." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="inputOutput" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" description="setting fraction in range [0,1] selects input key for corresponding keyValue output, computing a 3D position on the curve." />
<field name="value_changed" type="SFRotation" accessType="outputOnly" description="Computationaly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for computational interpolation, each corresponding to knots." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsOrientationInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "@knot": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
knot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="knot" type="MFDouble" accessType="inputOutput" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@knot": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="inputOutput" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@order": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for computational interpolation, each corresponding to knots." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsPatchSurface
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsPatchSurface">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsPatchSurface" appinfo="NurbsPatchSurface defines a contiguous 3D Non-Uniform Rational B-Spline (NURBS) surface.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DNurbsSurfaceGeometryNode" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|NurbsTextureCoordinate" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained NurbsTextureCoordinate, TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="uClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in u dimension." />
<field name="uKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="knot vector, where size = number of control points + order of curve." />
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="define order of surface by polynomials of degree = order-1." />
<field name="uTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
<field name="vClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in v dimension." />
<field name="vKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="knot vector, where size = number of control points + order of curve." />
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="define order of surface by polynomials of degree = order-1." />
<field name="vTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Vector assigning relative weight value to each control point." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="TextureCoordinate" />
<NodeContentModel name="TextureCoordinateGenerator" />
<NodeContentModel name="NurbsTextureCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsPatchSurface": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-NurbsTextureCoordinateSFNode"
        },
        "@uClosed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@uDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@uOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uTessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@vClosed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@vDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@vOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vTessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|NurbsTextureCoordinate" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained NurbsTextureCoordinate, TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-NurbsTextureCoordinateSFNode"
}
uClosed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
'

JSON "@uClosed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
uDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in u dimension." />
'

JSON "@uDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@uKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
uOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@uOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uTessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
'

JSON "@uTessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
vClosed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
'

JSON "@vClosed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
vDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in v dimension." />
'

JSON "@vDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@vKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
vOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@vOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vTessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
'

JSON "@vTessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Vector assigning relative weight value to each control point." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsPositionInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsPositionInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsPositionInterpolator" appinfo="NurbsPositionInterpolator describes a 3D NURBS curve and outputs interpolated position values.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="knot" type="MFDouble" accessType="inputOutput" description="knot vector, where size = number of control points + order of curve." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="inputOutput" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" description="setting fraction in range [0,1] selects input key for corresponding keyValue output, computing a 3D position on the curve." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Computationaly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to knots." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsPositionInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "@knot": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
knot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="knot" type="MFDouble" accessType="inputOutput" description="knot vector, where size = number of control points + order of curve." />
'

JSON "@knot": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="inputOutput" default="3" minInclusive="2" description="define order of surface by polynomials of degree = order-1." />
'

JSON "@order": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to knots." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsSet" appinfo="NurbsSet collects a set of NurbsSurface nodes into a common group and treats NurbsSurface set as a unit during tessellation, thereby enforcing tessellation continuity along borders.">
<componentInfo name="NURBS" level="2" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="addGeometry" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DParametricGeometryNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="geometry" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DParametricGeometryNode" description="The children form a closed loop with first point of first child repeated as last point of last child, and the last point of a segment repeated as first point of the consecutive one." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeGeometry" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DParametricGeometryNode" />
<field name="tessellationScale" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="scale for surface tessellation in children NurbsSurface nodes." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NurbsPatchSurface" />
<NodeContentModel name="NurbsSweptSurface" />
<NodeContentModel name="NurbsSwungSurface" />
<NodeContentModel name="NurbsTrimmedSurface" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-geometry": {
          "$ref": "#/$defs/-X3DParametricGeometryNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@tessellationScale": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
geometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DParametricGeometryNode" description="The children form a closed loop with first point of first child repeated as last point of last child, and the last point of a segment repeated as first point of the consecutive one." />
'

JSON "-geometry": {
  "$ref": "#/$defs/-X3DParametricGeometryNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
tessellationScale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tessellationScale" type="SFFloat" accessType="inputOutput" default="1.0" minExclusive="0" description="scale for surface tessellation in children NurbsSurface nodes." />
'

JSON "@tessellationScale": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsSurfaceInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsSurfaceInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsSurfaceInterpolator" appinfo="NurbsSurfaceInterpolator describes a 3D NURBS curve and outputs interpolated position and normal values.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DChildNode" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal_changed" type="SFVec3f" accessType="outputOnly" description="Computationaly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="position_changed" type="SFVec3f" accessType="outputOnly" description="Computationaly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="set_fraction" type="SFVec2f" accessType="inputOnly" description="setting fraction in range [0,1] selects input key for corresponding keyValue output, computing a 3D position on the curve." />
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in u dimension." />
<field name="uKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in v dimension." />
<field name="vKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to knots." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsSurfaceInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@uDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@uOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@vOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
uDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in u dimension." />
'

JSON "@uDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@uKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
uOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@uOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in v dimension." />
'

JSON "@vDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@vKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
vOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@vOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to knots." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsSweptSurface
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsSweptSurface">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsSweptSurface" appinfo="NurbsSweptSurface uses a trajectoryCurve path to describe a generalized surface that is swept by a crossSectionCurve.">
<componentInfo name="NURBS" level="3" />
<Inheritance baseType="X3DParametricGeometryNode" />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="crossSectionCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="defines cross-section of the surface traced about the trajectoryCurve axis." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="trajectoryCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NurbsCurve" description="describes the center-line path using a NurbsCurve node, oriented so that it is defined counterclockwise when looking down the \xc3\xa2\xcb\x86\xe2\x80\x99Y axis, thus defining a concept of inside and outside." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ContourPolyline2D" />
<NodeContentModel name="NurbsCurve2D" />
<NodeContentModel name="NurbsCurve" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsSweptSurface": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-crossSectionCurve": {
          "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-trajectoryCurve": {
          "$ref": "#/$defs/-NurbsCurveSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
crossSectionCurve
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="crossSectionCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="defines cross-section of the surface traced about the trajectoryCurve axis." />
'

JSON "-crossSectionCurve": {
  "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
trajectoryCurve
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="trajectoryCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NurbsCurve" description="describes the center-line path using a NurbsCurve node, oriented so that it is defined counterclockwise when looking down the \xc3\xa2\xcb\x86\xe2\x80\x99Y axis, thus defining a concept of inside and outside." />
'

JSON "-trajectoryCurve": {
  "$ref": "#/$defs/-NurbsCurveSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsSwungSurface
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsSwungSurface">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsSwungSurface" appinfo="NurbsSwungSurface contains a profileCurve and a trajectoryCurve [X3DNurbsControlCurveNode].">
<componentInfo name="NURBS" level="3" />
<Inheritance baseType="X3DParametricGeometryNode" />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="profileCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="2D curve in the yz-plane that describes the cross-sectional shape of the object." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="trajectoryCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="2D curve in the xz-plane that describes path over which to trace the cross-section." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ContourPolyline2D" />
<NodeContentModel name="NurbsCurve2D" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsSwungSurface": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-profileCurve": {
          "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-trajectoryCurve": {
          "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
profileCurve
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="profileCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="2D curve in the yz-plane that describes the cross-sectional shape of the object." />
'

JSON "-profileCurve": {
  "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
trajectoryCurve
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="trajectoryCurve" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNurbsControlCurveNode" description="2D curve in the xz-plane that describes path over which to trace the cross-section." />
'

JSON "-trajectoryCurve": {
  "$ref": "#/$defs/-X3DNurbsControlCurveNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsTextureCoordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsTextureCoordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsTextureCoordinate" appinfo="NurbsTextureCoordinate describes a 3D NURBS surface in the parametric domain of its surface host, specifying mapping of texture onto the surface.">
<componentInfo name="NURBS" level="1" />
<Inheritance baseType="X3DNode" />
<field name="controlPoint" type="MFVec2f" accessType="inputOutput" description="controlPoint defines a set of control points of dimension uDimension by vDimension, and defines a mesh where the points do not have uniform spacing." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in u dimension." />
<field name="uKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in v dimension." />
<field name="vKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Output values for linear interpolation, each corresponding to knots." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsTextureCoordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@controlPoint": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@uDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@uOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@vOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="MFVec2f" accessType="inputOutput" description="controlPoint defines a set of control points of dimension uDimension by vDimension, and defines a mesh where the points do not have uniform spacing." />
'

JSON "@controlPoint": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
uDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in u dimension." />
'

JSON "@uDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@uKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
uOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@uOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" description="Number of control points in v dimension." />
'

JSON "@vDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vKnot" type="MFDouble" accessType="initializeOnly" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@vKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
vOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@vOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" description="Output values for linear interpolation, each corresponding to knots." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
NurbsTrimmedSurface
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="NurbsTrimmedSurface">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html#NurbsTrimmedSurface" appinfo="NurbsTrimmedSurface generates texture coordinates from a Non-Uniform Rational B-Spline (NURBS) surface.">
<componentInfo name="NURBS" level="4" />
<Inheritance baseType="X3DNurbsSurfaceGeometryNode" />
<field name="addTrimmingContour" type="MFNode" accessType="inputOnly" acceptableNodeTypes="Contour2D" />
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeTrimmingContour" type="MFNode" accessType="inputOnly" acceptableNodeTypes="Contour2D" />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|NurbsTextureCoordinate" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained NurbsTextureCoordinate, TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="trimmingContour" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Contour2D" description="A set of Contour2D nodes are used as trimming loops." />
<field name="uClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in u dimension." />
<field name="uKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Knot vector, where size = number of control points + order of curve." />
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Define order of surface by polynomials of degree = order-1." />
<field name="uTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
<field name="vClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in v dimension." />
<field name="vKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Knot vector, where size = number of control points + order of curve." />
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Define order of surface by polynomials of degree = order-1." />
<field name="vTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Vector assigning relative weight value to each control point." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Contour2D" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="TextureCoordinate" />
<NodeContentModel name="TextureCoordinateGenerator" />
<NodeContentModel name="NurbsTextureCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "NurbsTrimmedSurface": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-controlPoint": {
          "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-NurbsTextureCoordinateSFNode"
        },
        "-trimmingContour": {
          "$ref": "#/$defs/-Contour2DMFNode"
        },
        "@uClosed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@uDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@uOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@uTessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@vClosed": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@vDimension": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vKnot": {
          "$comment": "MFDouble initializeOnly",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@vOrder": {
          "minimum": 2,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@vTessellation": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@weight": {
          "$comment": "MFDouble inputOutput",
          "type": "array",
          "items": {
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
controlPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="controlPoint" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Coordinate|CoordinateDouble" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify control points for NURBS geometry definitions." />
'

JSON "-controlPoint": {
  "$ref": "#/$defs/-Coordinate-CoordinateDoubleSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|NurbsTextureCoordinate" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Single contained NurbsTextureCoordinate, TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-NurbsTextureCoordinateSFNode"
}
trimmingContour
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="trimmingContour" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Contour2D" description="A set of Contour2D nodes are used as trimming loops." />
'

JSON "-trimmingContour": {
  "$ref": "#/$defs/-Contour2DMFNode"
}
uClosed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
'

JSON "@uClosed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
uDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in u dimension." />
'

JSON "@uDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@uKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
uOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@uOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
uTessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="uTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
'

JSON "@uTessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
vClosed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vClosed" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Whether opposite surface sides are closed (seamless) across u dimension." />
'

JSON "@vClosed": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
vDimension
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vDimension" type="SFInt32" accessType="initializeOnly" default="0" minInclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Number of control points in v dimension." />
'

JSON "@vDimension": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vKnot
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vKnot" type="MFDouble" accessType="initializeOnly" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Knot vector, where size = number of control points + order of curve." />
'

JSON "@vKnot": {
  "$comment": "MFDouble initializeOnly",
  "type": "array",
  "items": {
    "type": "number"
  }
}
vOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vOrder" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="2" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Define order of surface by polynomials of degree = order-1." />
'

JSON "@vOrder": {
  "minimum": 2,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
vTessellation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vTessellation" type="SFInt32" accessType="inputOutput" default="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="hint for surface tessellation." />
'

JSON "@vTessellation": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
weight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="weight" type="MFDouble" accessType="inputOutput" minExclusive="0" inheritedFrom="X3DNurbsSurfaceGeometryNode" description="Vector assigning relative weight value to each control point." />
'

JSON "@weight": {
  "$comment": "MFDouble inputOutput",
  "type": "array",
  "items": {
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OpacityMapVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OpacityMapVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#OpacityMapVolumeStyle" appinfo="OpacityMapVolumeStyle specifies that volumetric data is rendered using opacity mapped to a transfer function texture.">
<componentInfo name="VolumeRendering" level="1" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="transferFunction" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|X3DTexture3DNode" description="The transferFunction field holds a single texture representation in either two or three dimensions that maps the voxel data values to a specific colour output.">
<componentInfo name="VolumeRendering" level="2" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="TextureContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OpacityMapVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-transferFunction": {
          "$ref": "#/$defs/-X3DTexture2DNode-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
transferFunction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transferFunction" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|X3DTexture3DNode" description="The transferFunction field holds a single texture representation in either two or three dimensions that maps the voxel data values to a specific colour output.">
<componentInfo name="VolumeRendering" level="2" />
</field>
'

JSON "-transferFunction": {
  "$ref": "#/$defs/-X3DTexture2DNode-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OrientationChaser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OrientationChaser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#OrientationChaser" appinfo="OrientationChaser generates a series of 4-tuple axis-angle SFRotation values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="SFRotation" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFRotation" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="SFRotation" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OrientationChaser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "$comment": "SFRotation initializeOnly",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@initialValue": {
          "$comment": "SFRotation initializeOnly",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFRotation initializeOnly",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFRotation initializeOnly",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OrientationDamper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OrientationDamper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#OrientationDamper" appinfo="OrientationDamper generates a series of 4-tuple axis-angle SFRotation values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="SFRotation" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFRotation" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="SFRotation" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OrientationDamper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "$comment": "SFRotation initializeOnly",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@initialValue": {
          "$comment": "SFRotation initializeOnly",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFRotation initializeOnly",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFRotation" accessType="initializeOnly" default="0 1 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFRotation initializeOnly",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OrientationInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OrientationInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#OrientationInterpolator" appinfo="OrientationInterpolator generates a series of 4-tuple axis-angle SFRotation values.">
<componentInfo name="Interpolation" level="1" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFRotation" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFRotation" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OrientationInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFRotation" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OrthoViewpoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OrthoViewpoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#OrthoViewpoint" appinfo="OrthoViewpoint provides an orthographic perspective-free view of a scene from a specific location and direction.">
<componentInfo name="Navigation" level="3" />
<Inheritance baseType="X3DViewpointNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Event sent reporting timestamp when node becomes active/inactive." />
<field name="centerOfRotation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Text description or navigation hint to describe the significance of this model Viewpoint.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
<field name="fieldOfView" type="MFFloat" accessType="inputOutput" default="-1 -1 1 1" description="Minimum and maximum extents of view in units of local coordinate system." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated." />
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Transition instantly by jumping, otherwise smoothly adjust offsets in place when changing to this Viewpoint." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation (axis, angle in radians) of Viewpoint, relative to default -Z axis direction in local coordinate system." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 10" description="position (x, y, z in meters) relative to local coordinate system." />
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Sending event set_bind=true makes this node active." />
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NavigationInfo" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OrthoViewpoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@centerOfRotation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@farDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@fieldOfView": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": {
            "type": "number"
          }
        },
        "@jump": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-navigationInfo": {
          "$ref": "#/$defs/-NavigationInfoSFNode"
        },
        "@nearDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@orientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 10,
              "type": "number"
            }
          ],
          "items": false
        },
        "@retainUserOffsets": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@viewAll": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
centerOfRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="centerOfRotation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
'

JSON "@centerOfRotation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Text description or navigation hint to describe the significance of this model Viewpoint.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
farDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
'

JSON "@farDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
fieldOfView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldOfView" type="MFFloat" accessType="inputOutput" default="-1 -1 1 1" description="Minimum and maximum extents of view in units of local coordinate system." />
'

JSON "@fieldOfView": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
jump
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Transition instantly by jumping, otherwise smoothly adjust offsets in place when changing to this Viewpoint." />
'

JSON "@jump": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
navigationInfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
'

JSON "-navigationInfo": {
  "$ref": "#/$defs/-NavigationInfoSFNode"
}
nearDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
'

JSON "@nearDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation (axis, angle in radians) of Viewpoint, relative to default -Z axis direction in local coordinate system." />
'

JSON "@orientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 10" description="position (x, y, z in meters) relative to local coordinate system." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 10,
      "type": "number"
    }
  ],
  "items": false
}
retainUserOffsets
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@retainUserOffsets": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
viewAll
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
'

JSON "@viewAll": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
OscillatorSource
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="OscillatorSource">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#OscillatorSource" appinfo="OscillatorSource node represents an audio source generating a periodic waveform, providing a constant tone.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundSourceNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune ffield is an a-rate AudioParam representing detuning of oscillation in cents (though the AudioParam returned is read-only, the value it represents is not)." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="frequency" type="SFFloat" accessType="inputOutput" default="440" minInclusive="0" description="The frequency of oscillation in hertz." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesSoundSource" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="PeriodicWave" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "OscillatorSource": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@detune": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@frequency": {
          "minimum": 0,
          "default": 440,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
detune
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="detune" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" description="The detune ffield is an a-rate AudioParam representing detuning of oscillation in cents (though the AudioParam returned is read-only, the value it represents is not)." />
'

JSON "@detune": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
frequency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frequency" type="SFFloat" accessType="inputOutput" default="440" minInclusive="0" description="The frequency of oscillation in hertz." />
'

JSON "@frequency": {
  "minimum": 0,
  "default": 440,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PackagedShader
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PackagedShader">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#PackagedShader" appinfo="PackagedShader can contain field declarations, but no CDATA section of plain-text source code.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DShaderNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<AdditionalInheritance baseType="X3DProgrammableShaderObject" />
<field name="activate" type="SFBool" accessType="inputOnly" inheritedFrom="X3DShaderNode" description="activate forces the shader to activate the contained objects." />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the PackagedShader node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
<field name="isSelected" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isValid" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isValid indicates whether current shader objects can be run as a shader program." />
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="url points to a shader source-code file that may contain a number of shaders and combined effects.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="shaders" type="containerFieldChoicesPackagedShader" />
<ContentModel>
<FieldDeclaration minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PackagedShader": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "field": {
          "$ref": "#/$defs/field"
        },
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@language": {
          "anyOf": [
            {
              "enum": [
                "Cg",
                "GLSL",
                "HLSL"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the PackagedShader node." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
language
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
'

JSON "@language": {
  "anyOf": [
    {
      "enum": [
        "Cg",
        "GLSL",
        "HLSL"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString initializeOnly",
  "type": "string"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="url points to a shader source-code file that may contain a number of shaders and combined effects.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ParticleSystem
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ParticleSystem">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#ParticleSystem" appinfo="ParticleSystem specifies a complete particle system.">
<componentInfo name="ParticleSystems" level="2" />
<Inheritance baseType="X3DShapeNode" />
<field name="appearance" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DAppearanceNode" inheritedFrom="X3DShapeNode" description="The appearance field holds an Appearance node that is used for the geometry." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DShapeNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DShapeNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DShapeNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="castShadow" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="The castShadow field defines whether this Shape casts shadows as produced by lighting nodes." />
<field name="color" synonym="colorRamp" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DColorNode" description="The color field contains Color|ColorRGBA nodes as a series of color values to be used at the given colorKey points in time." />
<field name="colorKey" type="MFFloat" accessType="initializeOnly" minInclusive="0" description="Array of time intervals in seconds, corresponding to particle lifetime, that are used to interpolate color array values." />
<field name="createParticles" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables creation of new particles, while any existing particles remain in existence and continue to animate until the end of their lifetimes." />
<field name="emitter" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DParticleEmitterNode" description="The emitter field specifies the type of emitter geometry and properties that the particles are given for their initial positions." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="Single contained geometry node provides geometry used for each particle when geometryType=GEOMETRY.">
<componentInfo name="ParticleSystems" level="3" />
</field>
<field name="geometryType" type="SFString" accessType="initializeOnly" default="QUAD" additionalEnumerationValuesAllowed="true" simpleType="particleSystemGeometryTypeValues" baseType="xs:NMTOKEN" description="specifies type of geometry used to represent individual particles.">
<enumeration value="LINE" appinfo="line is drawn along current velocity vector of particle." />
<enumeration value="POINT" appinfo="point geometry is rendered at particle position." />
<enumeration value="QUAD" appinfo="quad geometry is rendered at particle position facing direction traveled." />
<enumeration value="SPRITE" appinfo="quad geometry is rendered at particle position facing screen." />
<enumeration value="TRIANGLE" appinfo="pair of triangles creating quad geometry is rendered at particle position facing direction traveled." />
<enumeration value="GEOMETRY" appinfo="geometry field is used for rendering each particle." />
<componentInfo name="ParticleSystems" level="3" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" description="isActive true/false events are sent when playback starts/stops." />
<field name="lifetimeVariation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" maxInclusive="1" description="TODO not properly defined in X3D spedification." />
<field name="maxParticles" type="SFInt32" accessType="inputOutput" default="200" minInclusive="0" description="Maximum number of particles to be generated at one time (subject to player limitations)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="particleLifetime" type="SFFloat" accessType="inputOutput" default="5" minInclusive="0" description="TODO not properly defined in X3D spedification." />
<field name="particleSize" type="SFVec2f" accessType="inputOutput" default="0.02 0.02" minInclusive="0" description="particleSize describes width and height dimensions for each particle in length base units (default is meters)." />
<field name="physics" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DParticlePhysicsModelNode" description="After being created, the individual particles are then manipulated according to the physics model(s) specified in the physics field." />
<field name="texCoord" synonym="texCoordRamp" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureCoordinate|TextureCoordinateGenerator" description="texture coordinates of the provided texture(s) in the Appearance node, over time." />
<field name="texCoordKey" type="MFFloat" accessType="initializeOnly" minInclusive="0" description="Array of time intervals in seconds, corresponding to particle lifetime, that are used to sequence texCoord array values." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ShapeChildContentModel" minOccurs="0" />
<NodeContentModel name="Color" />
<NodeContentModel name="ColorRGBA" />
<NodeContentModel name="ConeEmitter" />
<NodeContentModel name="ExplosionEmitter" />
<NodeContentModel name="PointEmitter" />
<NodeContentModel name="PolylineEmitter" />
<NodeContentModel name="SurfaceEmitter" />
<NodeContentModel name="VolumeEmitter" />
<NodeContentModel name="BoundedPhysicsModel" />
<NodeContentModel name="ForcePhysicsModel" />
<NodeContentModel name="WindPhysicsModel" />
<NodeContentModel name="ProtoInstance" />
<NodeContentModel name="TextureCoordinate" minOccurs="0" />
<NodeContentModel name="TextureCoordinateGenerator" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ParticleSystem": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-appearance": {
          "$ref": "#/$defs/-X3DAppearanceNodeSFNode"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@castShadow": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "-colorRamp": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorKey": {
          "$comment": "MFFloat initializeOnly",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "number"
          }
        },
        "@createParticles": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-emitter": {
          "$ref": "#/$defs/-X3DParticleEmitterNodeSFNode"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-geometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "@geometryType": {
          "anyOf": [
            {
              "enum": [
                "LINE",
                "POINT",
                "QUAD",
                "SPRITE",
                "TRIANGLE",
                "GEOMETRY"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "QUAD",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@lifetimeVariation": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxParticles": {
          "minimum": 0,
          "default": 200,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@particleLifetime": {
          "minimum": 0,
          "default": 5,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@particleSize": {
          "minimum": 0,
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0.02,
            "minimum": 0,
            "type": "number"
          }
        },
        "-physics": {
          "$ref": "#/$defs/-X3DParticlePhysicsModelNodeMFNode"
        },
        "-texCoord": {
          "$ref": "#/$defs/-TextureCoordinate-TextureCoordinateGeneratorSFNode"
        },
        "-texCoordRamp": {
          "$ref": "#/$defs/-TextureCoordinate-TextureCoordinateGeneratorSFNode"
        },
        "@texCoordKey": {
          "$comment": "MFFloat initializeOnly",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
appearance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appearance" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DAppearanceNode" inheritedFrom="X3DShapeNode" description="The appearance field holds an Appearance node that is used for the geometry." />
'

JSON "-appearance": {
  "$ref": "#/$defs/-X3DAppearanceNodeSFNode"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DShapeNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DShapeNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DShapeNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
castShadow
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="castShadow" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="The castShadow field defines whether this Shape casts shadows as produced by lighting nodes." />
'

JSON "@castShadow": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" synonym="colorRamp" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DColorNode" description="The color field contains Color|ColorRGBA nodes as a series of color values to be used at the given colorKey points in time." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorKey
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorKey" type="MFFloat" accessType="initializeOnly" minInclusive="0" description="Array of time intervals in seconds, corresponding to particle lifetime, that are used to interpolate color array values." />
'

JSON "@colorKey": {
  "$comment": "MFFloat initializeOnly",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "number"
  }
}
createParticles
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="createParticles" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables creation of new particles, while any existing particles remain in existence and continue to animate until the end of their lifetimes." />
'

JSON "@createParticles": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
emitter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emitter" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DParticleEmitterNode" description="The emitter field specifies the type of emitter geometry and properties that the particles are given for their initial positions." />
'

JSON "-emitter": {
  "$ref": "#/$defs/-X3DParticleEmitterNodeSFNode"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
geometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="Single contained geometry node provides geometry used for each particle when geometryType=GEOMETRY.">
<componentInfo name="ParticleSystems" level="3" />
</field>
'

JSON "-geometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
geometryType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometryType" type="SFString" accessType="initializeOnly" default="QUAD" additionalEnumerationValuesAllowed="true" simpleType="particleSystemGeometryTypeValues" baseType="xs:NMTOKEN" description="specifies type of geometry used to represent individual particles.">
<enumeration value="LINE" appinfo="line is drawn along current velocity vector of particle." />
<enumeration value="POINT" appinfo="point geometry is rendered at particle position." />
<enumeration value="QUAD" appinfo="quad geometry is rendered at particle position facing direction traveled." />
<enumeration value="SPRITE" appinfo="quad geometry is rendered at particle position facing screen." />
<enumeration value="TRIANGLE" appinfo="pair of triangles creating quad geometry is rendered at particle position facing direction traveled." />
<enumeration value="GEOMETRY" appinfo="geometry field is used for rendering each particle." />
<componentInfo name="ParticleSystems" level="3" />
</field>
'

JSON "@geometryType": {
  "anyOf": [
    {
      "enum": [
        "LINE",
        "POINT",
        "QUAD",
        "SPRITE",
        "TRIANGLE",
        "GEOMETRY"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "QUAD",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
lifetimeVariation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lifetimeVariation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" maxInclusive="1" description="TODO not properly defined in X3D spedification." />
'

JSON "@lifetimeVariation": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
maxParticles
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxParticles" type="SFInt32" accessType="inputOutput" default="200" minInclusive="0" description="Maximum number of particles to be generated at one time (subject to player limitations)." />
'

JSON "@maxParticles": {
  "minimum": 0,
  "default": 200,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
particleLifetime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="particleLifetime" type="SFFloat" accessType="inputOutput" default="5" minInclusive="0" description="TODO not properly defined in X3D spedification." />
'

JSON "@particleLifetime": {
  "minimum": 0,
  "default": 5,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
particleSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="particleSize" type="SFVec2f" accessType="inputOutput" default="0.02 0.02" minInclusive="0" description="particleSize describes width and height dimensions for each particle in length base units (default is meters)." />
'

JSON "@particleSize": {
  "minimum": 0,
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0.02,
    "minimum": 0,
    "type": "number"
  }
}
physics
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="physics" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DParticlePhysicsModelNode" description="After being created, the individual particles are then manipulated according to the physics model(s) specified in the physics field." />
'

JSON "-physics": {
  "$ref": "#/$defs/-X3DParticlePhysicsModelNodeMFNode"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" synonym="texCoordRamp" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureCoordinate|TextureCoordinateGenerator" description="texture coordinates of the provided texture(s) in the Appearance node, over time." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-TextureCoordinate-TextureCoordinateGeneratorSFNode"
}
texCoordKey
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoordKey" type="MFFloat" accessType="initializeOnly" minInclusive="0" description="Array of time intervals in seconds, corresponding to particle lifetime, that are used to sequence texCoord array values." />
'

JSON "@texCoordKey": {
  "$comment": "MFFloat initializeOnly",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PeriodicWave
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PeriodicWave">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#PeriodicWave" appinfo="PeriodicWave defines a periodic waveform that can be used to shape the output of an Oscillator.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="optionsImag" type="MFFloat" accessType="inputOutput" description="imaginary coefficients for defining a waveform." />
<field name="optionsReal" type="MFFloat" accessType="inputOutput" description="real coefficients for defining a waveform." />
<field name="type" type="SFString" accessType="inputOutput" default="SQUARE" additionalEnumerationValuesAllowed="false" simpleType="periodicWaveTypeChoices" baseType="SFString" description="The type field specifies shape of waveform to play, which can be one of several provided values or else 'custom' to indicate that real and imaginary coefficient arrays define a custom waveform.">
<enumeration value="SINE" alias="sine" appinfo="X3D version of &quot;sine&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="SQUARE" alias="square" appinfo="X3D version of &quot;square&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="SAWTOOTH" alias="sawtooth" appinfo="X3D version of &quot;sawtooth&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="TRIANGLE" alias="triangle" appinfo="X3D version of &quot;triangle&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="CUSTOM" alias="custom" appinfo="X3D version of &quot;custom&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="periodicWave" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PeriodicWave": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@optionsImag": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@optionsReal": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@type": {
          "enum": [
            "SINE",
            "SQUARE",
            "SAWTOOTH",
            "TRIANGLE",
            "CUSTOM"
          ],
          "default": "SQUARE",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
optionsImag
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="optionsImag" type="MFFloat" accessType="inputOutput" description="imaginary coefficients for defining a waveform." />
'

JSON "@optionsImag": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
optionsReal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="optionsReal" type="MFFloat" accessType="inputOutput" description="real coefficients for defining a waveform." />
'

JSON "@optionsReal": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="inputOutput" default="SQUARE" additionalEnumerationValuesAllowed="false" simpleType="periodicWaveTypeChoices" baseType="SFString" description="The type field specifies shape of waveform to play, which can be one of several provided values or else 'custom' to indicate that real and imaginary coefficient arrays define a custom waveform.">
<enumeration value="SINE" alias="sine" appinfo="X3D version of &quot;sine&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="SQUARE" alias="square" appinfo="X3D version of &quot;square&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="SAWTOOTH" alias="sawtooth" appinfo="X3D version of &quot;sawtooth&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="TRIANGLE" alias="triangle" appinfo="X3D version of &quot;triangle&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
<enumeration value="CUSTOM" alias="custom" appinfo="X3D version of &quot;custom&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oscillatortype" />
</field>
'

JSON "@type": {
  "enum": [
    "SINE",
    "SQUARE",
    "SAWTOOTH",
    "TRIANGLE",
    "CUSTOM"
  ],
  "default": "SQUARE",
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PhysicalMaterial
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PhysicalMaterial">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#PhysicalMaterial" appinfo="PhysicalMaterial specifies surface rendering properties for associated geometry nodes.">
<componentInfo name="Shape" level="2" />
<Inheritance baseType="X3DOneSidedMaterialNode" />
<field name="baseColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="similar to diffuseColor, TODO define more precisely." />
<field name="baseTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying baseColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="baseTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="metallic" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="metallic is a PBR parameter (TODO elaborate)." />
<field name="metallicRoughnessTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying metallic for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="metallicRoughnessTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="occlusionStrength" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="occlusionStrength indicates areas of indirect lighting, typically called ambient occlusion." />
<field name="occlusionTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying occlusionStrength for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="occlusionTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="roughness" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="roughness is a PBR parameter (TODO elaborate)." />
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="material" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PhysicalMaterial": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@baseColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-baseTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@baseTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@emissiveColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-emissiveTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@emissiveTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@metallic": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metallicRoughnessTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@metallicRoughnessTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@normalScale": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-normalTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@normalTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@occlusionStrength": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-occlusionTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@occlusionTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@roughness": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
baseColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="baseColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="similar to diffuseColor, TODO define more precisely." />
'

JSON "@baseColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
baseTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="baseTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying baseColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-baseTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
baseTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="baseTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@baseTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
emissiveColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
'

JSON "@emissiveColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
emissiveTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-emissiveTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
emissiveTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@emissiveTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
metallic
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metallic" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="metallic is a PBR parameter (TODO elaborate)." />
'

JSON "@metallic": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metallicRoughnessTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metallicRoughnessTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying metallic for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-metallicRoughnessTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
metallicRoughnessTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metallicRoughnessTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@metallicRoughnessTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
normalScale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@normalScale": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
normalTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
'

JSON "-normalTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
normalTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@normalTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
occlusionStrength
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionStrength" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="occlusionStrength indicates areas of indirect lighting, typically called ambient occlusion." />
'

JSON "@occlusionStrength": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
occlusionTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying occlusionStrength for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-occlusionTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
occlusionTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="occlusionTextureMapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@occlusionTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
roughness
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="roughness" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="roughness is a PBR parameter (TODO elaborate)." />
'

JSON "@roughness": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PickableGroup
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PickableGroup">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#PickableGroup" appinfo="PickableGroup is a Grouping node that can contain most nodes.">
<componentInfo name="Picking" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<AdditionalInheritance baseType="X3DPickableObject" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickableObject" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DPickableObject" description="The pickable field determines whether pick traversal is performed on this node or its children." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NurbsPatchSurface" />
<NodeContentModel name="NurbsSweptSurface" />
<NodeContentModel name="NurbsSwungSurface" />
<NodeContentModel name="NurbsTrimmedSurface" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PickableGroup": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "@pickable": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickableObject" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickable" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DPickableObject" description="The pickable field determines whether pick traversal is performed on this node or its children." />
'

JSON "@pickable": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PixelTexture
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PixelTexture">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#PixelTexture" appinfo="PixelTexture creates a 2D-image texture map using a numeric array of pixel values.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTexture2DNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="image" type="SFImage" accessType="inputOutput" default="0 0 0" description="Defines image: width, height, number_of_components per each pixel value, and list of pixel_values." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture2DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture2DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PixelTexture": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@image": {
          "$comment": "SFImage inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@repeatS": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
image
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="image" type="SFImage" accessType="inputOutput" default="0 0 0" description="Defines image: width, height, number_of_components per each pixel value, and list of pixel_values." />
'

JSON "@image": {
  "$comment": "SFImage inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DTexture2DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture2DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PixelTexture3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PixelTexture3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#PixelTexture3D" appinfo="PixelTexture3D defines a 3D image-based texture map as an explicit array of pixel values (image field).">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DTexture3DNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="image" type="MFInt32" accessType="inputOutput" default="0 0 0 0" description="image describes raw data for this 3D texture: number of components to the image [0,4], width, height and depth of the texture, followed by (width x height x depth) pixel values." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texture" type="containerFieldChoicesX3DTexture3DNode" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="TextureProperties" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PixelTexture3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@image": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "default": 0,
            "type": "integer"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@repeatR": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatS": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@repeatT": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-textureProperties": {
          "$ref": "#/$defs/-TexturePropertiesSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
image
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="image" type="MFInt32" accessType="inputOutput" default="0 0 0 0" description="image describes raw data for this 3D texture: number of components to the image [0,4], width, height and depth of the texture, followed by (width x height x depth) pixel values." />
'

JSON "@image": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "default": 0,
    "type": "integer"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
repeatR
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatR" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along R axis from front to back." />
'

JSON "@repeatR": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatS" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along S axis horizontally from left to right." />
'

JSON "@repeatS": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
repeatT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="repeatT" type="SFBool" accessType="initializeOnly" default="false" inheritedFrom="X3DTexture3DNode" description="Whether to repeat texture along T axis vertically from top to bottom." />
'

JSON "@repeatT": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
textureProperties
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureProperties" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="TextureProperties" inheritedFrom="X3DTexture3DNode" description="Single contained TextureProperties node that can specify additional visual attributes applied to corresponding texture images." />
'

JSON "-textureProperties": {
  "$ref": "#/$defs/-TexturePropertiesSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PlaneSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PlaneSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#PlaneSensor" appinfo="PlaneSensor converts pointing device motion into 2D translation parallel to the local Z=0 plane.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DDragSensorNode" />
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="Determines whether previous offset values are remembered/accumulated." />
<field name="axisRotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="axisRotation determines local sensor coordinate system by rotating the local coordinate system." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" description="Hover over geometry by aiming the mouse (or pointing device) to generate isOver events." />
<field name="maxPosition" type="SFVec2f" accessType="inputOutput" default="-1 -1" description="minPosition and maxPosition clamp translations to a range of values measured from origin of Z=0 plane default maxPosition &lt; minPosition means no clamping." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minPosition" type="SFVec2f" accessType="inputOutput" default="0 0" description="minPosition and maxPosition clamp translations to a range of values measured from origin of Z=0 plane default maxPosition &lt; minPosition means no clamping." />
<field name="offset" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Sends event and remembers last value sensed." />
<field name="trackPoint_changed" type="SFVec3f" accessType="outputOnly" inheritedFrom="X3DDragSensorNode" description="trackPoint_changed events give intersection point of bearing with sensor's virtual geometry." />
<field name="translation_changed" type="SFVec3f" accessType="outputOnly" description="translation_changed events equal sum of relative translation change plus offset value." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PlaneSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoOffset": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@axisRotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@maxPosition": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minPosition": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@offset": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoOffset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="Determines whether previous offset values are remembered/accumulated." />
'

JSON "@autoOffset": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
axisRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axisRotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="axisRotation determines local sensor coordinate system by rotating the local coordinate system." />
'

JSON "@axisRotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxPosition
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxPosition" type="SFVec2f" accessType="inputOutput" default="-1 -1" description="minPosition and maxPosition clamp translations to a range of values measured from origin of Z=0 plane default maxPosition &lt; minPosition means no clamping." />
'

JSON "@maxPosition": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": -1,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minPosition
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minPosition" type="SFVec2f" accessType="inputOutput" default="0 0" description="minPosition and maxPosition clamp translations to a range of values measured from origin of Z=0 plane default maxPosition &lt; minPosition means no clamping." />
'

JSON "@minPosition": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
offset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="offset" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Sends event and remembers last value sensed." />
'

JSON "@offset": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PointEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PointEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#PointEmitter" appinfo="PointEmitter generates particles from a specific point in space using the specified direction and speed.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="Initial direction from which particles emanate." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PointEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="Initial direction from which particles emanate." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Point from which particles emanate." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PointLight
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PointLight">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html#PointLight" appinfo="Linear attenuation may occur at level 2, full support at level 3.">
<componentInfo name="Lighting" level="2" />
<Inheritance baseType="X3DLightNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" minInclusive="0" description="Constant, linear-distance and squared-distance dropoff factors as radial distance increases from the source." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
<field name="global" type="SFBool" accessType="inputOutput" default="true" description="Global lights illuminate all objects within their volume of lighting influence." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of light relative to local coordinate system." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
<field name="radius" type="SFFloat" accessType="inputOutput" default="100" minInclusive="0" description="Maximum effective distance of light relative to local light position, affected by ancestor scaling.">
<componentInfo name="Lighting" level="3" />
</field>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PointLight": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@attenuation": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@global": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@radius": {
          "minimum": 0,
          "default": 100,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadowIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
attenuation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" minInclusive="0" description="Constant, linear-distance and squared-distance dropoff factors as radial distance increases from the source." />
'

JSON "@attenuation": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="true" description="Global lights illuminate all objects within their volume of lighting influence." />
'

JSON "@global": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
'

JSON "@intensity": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of light relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="inputOutput" default="100" minInclusive="0" description="Maximum effective distance of light relative to local light position, affected by ancestor scaling.">
<componentInfo name="Lighting" level="3" />
</field>
'

JSON "@radius": {
  "minimum": 0,
  "default": 100,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadowIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
'

JSON "@shadowIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PointPickSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PointPickSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#PointPickSensor" appinfo="PointPickSensor tests one or more pickingGeometry points in space as lying inside the provided pickTarget geometry.">
<componentInfo name="Picking" level="1" />
<Inheritance baseType="X3DPickSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive indicates when the intersecting object is picked by the picking geometry." />
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
<field name="pickedPoint" type="MFVec3f" accessType="outputOnly" description="Output event containing 3D points on surface of underlying pickingGeometry computed by the picking intersection computations, given in the local coordinate system." />
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="PickSensorGroupingNodeContentModel" />
<NodeContentModel name="PointSet" />
<NodeContentModel name="Shape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PointPickSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intersectionType": {
          "anyOf": [
            {
              "enum": [
                "BOUNDS",
                "GEOMETRY"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "BOUNDS",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@matchCriterion": {
          "enum": [
            "MATCH_ANY",
            "MATCH_EVERY",
            "MATCH_ONLY_ONE"
          ],
          "default": "MATCH_ANY",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "-pickedGeometry": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-pickingGeometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-pickTarget": {
          "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
        },
        "@sortOrder": {
          "anyOf": [
            {
              "enum": [
                "ANY",
                "CLOSEST",
                "ALL",
                "ALL_SORTED"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "CLOSEST",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intersectionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
'

JSON "@intersectionType": {
  "anyOf": [
    {
      "enum": [
        "BOUNDS",
        "GEOMETRY"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "BOUNDS",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
matchCriterion
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
'

JSON "@matchCriterion": {
  "enum": [
    "MATCH_ANY",
    "MATCH_EVERY",
    "MATCH_ONLY_ONE"
  ],
  "default": "MATCH_ANY",
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickedGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
'

JSON "-pickedGeometry": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
pickingGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
'

JSON "-pickingGeometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
pickTarget
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
'

JSON "-pickTarget": {
  "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
}
sortOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
'

JSON "@sortOrder": {
  "anyOf": [
    {
      "enum": [
        "ANY",
        "CLOSEST",
        "ALL",
        "ALL_SORTED"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "CLOSEST",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PointProperties
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PointProperties">
<InterfaceDefinition specificationUrl="https://github.com/Web3DConsortium/X3D/blob/master/ISO-IEC19775/ISO-IEC19775-1/ISO-IEC19775-1v4.0/ISO-IEC19775-1v4-WD1/Part01/components/shape.html" appinfo="PointProperties allows precise fine-grained control over the rendering style of PointSet node points inside the same Shape.">
<componentInfo name="Shape" level="5" />
<Inheritance baseType="X3DAppearanceChildNode" />
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="attenuation array values [a, b, c] are set to default values if undefined." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pointSizeMaxValue" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="pointSizeMaxValue is maximum allowed scaling factor on nominal browser point scaling." />
<field name="pointSizeMinValue" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="pointSizeMinValue is minimum allowed scaling factor on nominal browser point scaling." />
<field name="pointSizeScaleFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="1" description="Nominal rendered point size is a browser-dependent minimum renderable point size, which is then multiplied by an additional pointSizeScaleFactor (which is greater than or equal to 1)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="pointProperties" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PointProperties": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@attenuation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pointSizeMaxValue": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@pointSizeMinValue": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@pointSizeScaleFactor": {
          "minimum": 1,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attenuation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="attenuation array values [a, b, c] are set to default values if undefined." />
'

JSON "@attenuation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pointSizeMaxValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pointSizeMaxValue" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="pointSizeMaxValue is maximum allowed scaling factor on nominal browser point scaling." />
'

JSON "@pointSizeMaxValue": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
pointSizeMinValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pointSizeMinValue" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="pointSizeMinValue is minimum allowed scaling factor on nominal browser point scaling." />
'

JSON "@pointSizeMinValue": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
pointSizeScaleFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pointSizeScaleFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="1" description="Nominal rendered point size is a browser-dependent minimum renderable point size, which is then multiplied by an additional pointSizeScaleFactor (which is greater than or equal to 1)." />
'

JSON "@pointSizeScaleFactor": {
  "minimum": 1,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PointSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PointSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#PointSet" appinfo="PointSet is a node that contains a set of colored 3D points, represented by contained Color|ColorRGBA and Coordinate|CoordinateDouble nodes.">
<componentInfo name="Rendering" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ColorCoordinateContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PointSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Polyline2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Polyline2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Polyline2D" appinfo="Polyline2D is a geometry node that defines a connected set of vertices in a contiguous set of line segments in X-Y plane.">
<componentInfo name="Geometry2D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="lineSegments" type="MFVec2f" accessType="initializeOnly" description="Coordinates of vertices connected into contiguous Polyline2D." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Polyline2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@lineSegments": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
lineSegments
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lineSegments" type="MFVec2f" accessType="initializeOnly" description="Coordinates of vertices connected into contiguous Polyline2D." />
'

JSON "@lineSegments": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PolylineEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PolylineEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#PolylineEmitter" appinfo="PolylineEmitter emits particles along a single polyline.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Coordinates for the line along which particles are randomly generated." />
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" default="-1" minInclusive="-1" description="coordIndex indices are applied to contained Coordinate values in order to define randomly generated initial geometry of the particles." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="set_coordIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PolylineEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "@coordIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "default": -1,
            "minimum": -1,
            "type": "integer"
          }
        },
        "@direction": {
          "maximum": 1,
          "minimum": -1,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Coordinates for the line along which particles are randomly generated." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
coordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" default="-1" minInclusive="-1" description="coordIndex indices are applied to contained Coordinate values in order to define randomly generated initial geometry of the particles." />
'

JSON "@coordIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "default": -1,
    "minimum": -1,
    "type": "integer"
  }
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
'

JSON "@direction": {
  "maximum": 1,
  "minimum": -1,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Polypoint2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Polypoint2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Polypoint2D" appinfo="Polypoint2D is a geometry node that defines a set of 2D points in X-Y plane.">
<componentInfo name="Geometry2D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec2f" accessType="inputOutput" description="2D coordinates of vertices." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Polypoint2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec2f" accessType="inputOutput" description="2D coordinates of vertices." />
'

JSON "@point": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionChaser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionChaser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#PositionChaser" appinfo="PositionChaser generates a series of position values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="SFVec3f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFVec3f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionChaser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionChaser2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionChaser2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#PositionChaser2D" appinfo="PositionChaser2D generates a series of 2D position values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="SFVec2f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFVec2f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="SFVec2f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionChaser2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "$comment": "SFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "SFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionDamper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionDamper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#PositionDamper" appinfo="PositionDamper generates a series of position values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="SFVec3f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFVec3f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionDamper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFVec3f" accessType="initializeOnly" default="0 0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionDamper2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionDamper2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#PositionDamper2D" appinfo="PositionDamper2D generates a series of 2D floating-point values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial destination value for this node." />
<field name="initialValue" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="SFVec2f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFVec2f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="SFVec2f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionDamper2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "$comment": "SFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "SFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "SFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFVec2f" accessType="initializeOnly" default="0 0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "SFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#PositionInterpolator" appinfo="PositionInterpolator generates a series of 3-tuple SFVec3f values.">
<componentInfo name="Interpolation" level="1" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PositionInterpolator2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PositionInterpolator2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#PositionInterpolator2D" appinfo="PositionInterpolator2D generates a series of SFVec2f values.">
<componentInfo name="Interpolation" level="3" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFVec2f" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PositionInterpolator2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
PrimitivePickSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="PrimitivePickSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#PrimitivePickSensor" appinfo="If a non-uniform scale is applied to the pick sensor, correct results may require level 3 support.">
<componentInfo name="Picking" level="2" />
<Inheritance baseType="X3DPickSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive indicates when the intersecting object is picked by the picking geometry." />
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="PickSensorGroupingNodeContentModel" />
<NodeContentModel name="Box" />
<NodeContentModel name="Cone" />
<NodeContentModel name="Cylinder" />
<NodeContentModel name="Sphere" />
<NodeContentModel name="Shape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "PrimitivePickSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intersectionType": {
          "anyOf": [
            {
              "enum": [
                "BOUNDS",
                "GEOMETRY"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "BOUNDS",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@matchCriterion": {
          "enum": [
            "MATCH_ANY",
            "MATCH_EVERY",
            "MATCH_ONLY_ONE"
          ],
          "default": "MATCH_ANY",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "-pickedGeometry": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-pickingGeometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-pickTarget": {
          "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
        },
        "@sortOrder": {
          "anyOf": [
            {
              "enum": [
                "ANY",
                "CLOSEST",
                "ALL",
                "ALL_SORTED"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "CLOSEST",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intersectionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
'

JSON "@intersectionType": {
  "anyOf": [
    {
      "enum": [
        "BOUNDS",
        "GEOMETRY"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "BOUNDS",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
matchCriterion
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
'

JSON "@matchCriterion": {
  "enum": [
    "MATCH_ANY",
    "MATCH_EVERY",
    "MATCH_ONLY_ONE"
  ],
  "default": "MATCH_ANY",
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickedGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
'

JSON "-pickedGeometry": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
pickingGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
'

JSON "-pickingGeometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
pickTarget
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
'

JSON "-pickTarget": {
  "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
}
sortOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
'

JSON "@sortOrder": {
  "anyOf": [
    {
      "enum": [
        "ANY",
        "CLOSEST",
        "ALL",
        "ALL_SORTED"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "CLOSEST",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProgramShader
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ProgramShader">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#ProgramShader" appinfo="ProgramShader contains no field declarations and no plain-text source code.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DShaderNode" />
<field name="activate" type="SFBool" accessType="inputOnly" inheritedFrom="X3DShaderNode" description="activate forces the shader to activate the contained objects." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isSelected" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events." />
<field name="isValid" type="SFBool" accessType="outputOnly" inheritedFrom="X3DShaderNode" description="isValid indicates whether current shader objects can be run as a shader program." />
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="programs" type="MFNode" accessType="inputOutput" acceptableNodeTypes="ShaderProgram" description="ProgramShader contains zero or more ShaderProgram node instances." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="shaders" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ShaderProgram" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ProgramShader": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@language": {
          "anyOf": [
            {
              "enum": [
                "Cg",
                "GLSL",
                "HLSL"
              ]
            },
            {
              "type": "string"
            }
          ],
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-programs": {
          "$ref": "#/$defs/-ShaderProgramMFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
language
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="language" type="SFString" accessType="initializeOnly" inheritedFrom="X3DShaderNode" additionalEnumerationValuesAllowed="true" simpleType="shaderLanguageValues" baseType="xs:NMTOKEN" description="The language field indicates to the X3D player which shading language is used.">
<enumeration value="Cg" appinfo="nVidia Cg shading language." />
<enumeration value="GLSL" appinfo="OpenGL shading language (GLSL)." />
<enumeration value="HLSL" appinfo="Microsoft High Level Shading Language (HLSL)." />
</field>
'

JSON "@language": {
  "anyOf": [
    {
      "enum": [
        "Cg",
        "GLSL",
        "HLSL"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString initializeOnly",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
programs
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="programs" type="MFNode" accessType="inputOutput" acceptableNodeTypes="ShaderProgram" description="ProgramShader contains zero or more ShaderProgram node instances." />
'

JSON "-programs": {
  "$ref": "#/$defs/-ShaderProgramMFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProjectionVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ProjectionVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#ProjectionVolumeStyle" appinfo="ProjectionVolumeStyle uses voxel data to directly generate output color.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="intensityThreshold" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="Threshold value used when type=MIN (LMIP) or type=MAX (MIP)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="type" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="projectionVolumeStyleTypeChoices" baseType="xs:NMTOKEN" description="If type=MAX then Maximum Intensity Projection (MIP) or Least MIP (LMIP) algorithm is used to generate output color.">
<enumeration value="MAX" appinfo="Maximum Intensity Projection (MIP) or Least MIP (LMIP) algorithm is used to generate output color." />
<enumeration value="MIN" appinfo="Minimum Intensity Projection algorithm is used to generate output color." />
<enumeration value="AVERAGE" appinfo="All voxels along ray are averaged to generate output color." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ProjectionVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensityThreshold": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@type": {
          "enum": [
            "MAX",
            "MIN",
            "AVERAGE"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensityThreshold
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensityThreshold" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="Threshold value used when type=MIN (LMIP) or type=MAX (MIP)." />
'

JSON "@intensityThreshold": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="projectionVolumeStyleTypeChoices" baseType="xs:NMTOKEN" description="If type=MAX then Maximum Intensity Projection (MIP) or Least MIP (LMIP) algorithm is used to generate output color.">
<enumeration value="MAX" appinfo="Maximum Intensity Projection (MIP) or Least MIP (LMIP) algorithm is used to generate output color." />
<enumeration value="MIN" appinfo="Minimum Intensity Projection algorithm is used to generate output color." />
<enumeration value="AVERAGE" appinfo="All voxels along ray are averaged to generate output color." />
</field>
'

JSON "@type": {
  "enum": [
    "MAX",
    "MIN",
    "AVERAGE"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProtoInstance
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ProtoInstance">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#ProtoInstanceAndFieldValueStatement" appinfo="ProtoInstance can override field default values via fieldValue initializations. Non-recursive nested ProtoInstance and ProtoDeclare statements are allowed within a ProtoDeclare.">
<componentInfo name="Core" level="2" />
<Inheritance baseType="X3DPrototypeInstance" />
<AdditionalInheritance baseType="X3DChildNode" />
<field name="fieldValue" type="MFNode" accessType="inputOutput" acceptableNodeTypes="fieldValue" description="Include fieldValue statements if this ProtoInstance overrides default values in any of the original field declarations." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="name of the prototype node being instanced." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="fieldValue" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ProtoInstance": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "fieldValue": {
          "$ref": "#/$defs/fieldValue"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@name": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
fieldValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldValue" type="MFNode" accessType="inputOutput" acceptableNodeTypes="fieldValue" description="Include fieldValue statements if this ProtoInstance overrides default values in any of the original field declarations." />
'

JSON "fieldValue": {
  "$ref": "#/$defs/fieldValue"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="name of the prototype node being instanced." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="name of the prototype node being instanced." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProximitySensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ProximitySensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html#ProximitySensor" appinfo="ProximitySensor generates events when the viewer enters, exits and moves within a region of space (defined by a box).">
<componentInfo name="EnvironmentalSensor" level="1" />
<Inheritance baseType="X3DEnvironmentalSensorNode" />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
<field name="centerOfRotation_changed" type="SFVec3f" accessType="outputOnly" description="Sends changed centerOfRotation values, likely caused by user interaction." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="enterTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera enters the box." />
<field name="exitTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera exits the box." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent as viewer enters/exits Proximity box." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation_changed" type="SFRotation" accessType="outputOnly" description="Sends rotation event relative to center.">
<componentInfo name="EnvironmentalSensor" level="2" />
</field>
<field name="position_changed" type="SFVec3f" accessType="outputOnly" description="Sends translation event relative to center.">
<componentInfo name="EnvironmentalSensor" level="2" />
</field>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of Proximity box around center location, oriented within local transformation frame." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ProximitySensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of Proximity box around center location, oriented within local transformation frame." />
'

JSON "@size": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
QuadSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="QuadSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html#QuadSet" appinfo="QuadSet is a geometry node that defines quadrilaterals.">
<componentInfo name="CADGeometry" level="1" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "QuadSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ReceiverPdu
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ReceiverPdu">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#ReceiverPdu" appinfo="ReceiverPdu is a networked Protocol Data Unit (PDU) information node that transmits the state of radio frequency (RF) receivers modeled in a simulation.">
<componentInfo name="DIS" level="1" />
<Inheritance baseType="X3DNetworkSensorNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'; Example: 224." />
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="confirm whether there has been a recent network update." />
<field name="isNetworkReader" type="SFBool" accessType="outputOnly" description="Whether networkMode='remote' (listen to network as copy of remote entity)." />
<field name="isNetworkWriter" type="SFBool" accessType="outputOnly" description="Whether networkMode='master' (output to network as master entity at writeInterval)." />
<field name="isRtpHeaderHeard" type="SFBool" accessType="outputOnly" description="Whether incoming DIS packets have an RTP header prepended." />
<field name="isStandAlone" type="SFBool" accessType="outputOnly" description="Whether networkMode='local' (ignore network but still respond to local events)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
<field name="receivedPower" type="SFFloat" accessType="inputOutput" default="0.0" description="receivedPower indicates radio frequency (RF) power received, in units of decibel-milliwatts (dBm), after applying any propagation loss and antenna gain." />
<field name="receiverState" type="SFInt32" accessType="inputOutput" default="0" description="receiverState indicates if receiver is currently idle or busy via one of these enumerated values: 0 = off, 1 = on but not receiving, or 2 = on and receiving." />
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="timestamp" type="SFTime" accessType="outputOnly" minInclusive="0" description="DIS timestamp in X3D units (value 0." />
<field name="transmitterApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterApplicationID is unique for transmitter application at that site." />
<field name="transmitterEntityID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterEntityID is a unique ID for a single entity within that application." />
<field name="transmitterRadioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
<field name="transmitterSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterSiteID of the participating LAN or organization." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ReceiverPdu": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@address": {
          "default": "localhost",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@applicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@entityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@multicastRelayHost": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@multicastRelayPort": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@networkMode": {
          "enum": [
            "standAlone",
            "networkReader",
            "networkWriter"
          ],
          "default": "standAlone",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@port": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@readInterval": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@receivedPower": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@receiverState": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@rtpHeaderExpected": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@siteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@transmitterApplicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@transmitterEntityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@transmitterRadioID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@transmitterSiteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@whichGeometry": {
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@writeInterval": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
address
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'; Example: 224." />
'

JSON "@address": {
  "default": "localhost",
  "$comment": "SFString inputOutput",
  "type": "string"
}
applicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
'

JSON "@applicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
entityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
'

JSON "@entityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
multicastRelayHost
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
'

JSON "@multicastRelayHost": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
multicastRelayPort
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
'

JSON "@multicastRelayPort": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
networkMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
'

JSON "@networkMode": {
  "enum": [
    "standAlone",
    "networkReader",
    "networkWriter"
  ],
  "default": "standAlone",
  "$comment": "SFString inputOutput",
  "type": "string"
}
port
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
'

JSON "@port": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
'

JSON "@radioID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
readInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
'

JSON "@readInterval": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
receivedPower
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="receivedPower" type="SFFloat" accessType="inputOutput" default="0.0" description="receivedPower indicates radio frequency (RF) power received, in units of decibel-milliwatts (dBm), after applying any propagation loss and antenna gain." />
'

JSON "@receivedPower": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
receiverState
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="receiverState" type="SFInt32" accessType="inputOutput" default="0" description="receiverState indicates if receiver is currently idle or busy via one of these enumerated values: 0 = off, 1 = on but not receiving, or 2 = on and receiving." />
'

JSON "@receiverState": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
rtpHeaderExpected
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
'

JSON "@rtpHeaderExpected": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
siteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@siteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
transmitterApplicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitterApplicationID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterApplicationID is unique for transmitter application at that site." />
'

JSON "@transmitterApplicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
transmitterEntityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitterEntityID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterEntityID is a unique ID for a single entity within that application." />
'

JSON "@transmitterEntityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
transmitterRadioID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitterRadioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
'

JSON "@transmitterRadioID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
transmitterSiteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitterSiteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise transmitterSiteID of the participating LAN or organization." />
'

JSON "@transmitterSiteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
whichGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
'

JSON "@whichGeometry": {
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
writeInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
'

JSON "@writeInterval": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Rectangle2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Rectangle2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#Rectangle2D" appinfo="Rectangle2D is a geometry node that defines a 2D rectangle in X-Y plane.">
<componentInfo name="Geometry2D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="size" type="SFVec2f" accessType="initializeOnly" default="2 2" description="2D dimensions of Rectangle2D." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Rectangle2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "$comment": "SFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 2,
            "type": "number"
          }
        },
        "@solid": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec2f" accessType="initializeOnly" default="2 2" description="2D dimensions of Rectangle2D." />
'

JSON "@size": {
  "$comment": "SFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 2,
    "type": "number"
  }
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
RigidBody
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="RigidBody">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#RigidBody" appinfo="RigidBody describes a collection of shapes with a mass distribution that is affected by the physics model.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="angularDampingFactor" type="SFFloat" accessType="inputOutput" default="0.001" description="angularDampingFactor automatically damps a portion of body motion over time." />
<field name="angularVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="angularVelocity sets constant velocity value to object every frame, and reports updates by physics model." />
<field name="autoDamp" type="SFBool" accessType="inputOutput" default="false" description="autoDamp enables/disables angularDampingFactor and linearDampingFactor." />
<field name="autoDisable" type="SFBool" accessType="inputOutput" default="false" description="autoDisable toggles operation of disableAngularSpeed, disableLinearSpeed, disableTime." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="centerOfMass" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfMass defines local center of mass for physics calculations." />
<field name="disableAngularSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableAngularSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculations, reducing numeric instabilities." />
<field name="disableLinearSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableLinearSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculation, reducing numeric instabilitiess." />
<field name="disableTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="disableTime defines interval when body becomes at rest and not part of rigid body calculations, reducing numeric instabilities." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="finiteRotationAxis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="finiteRotationAxis specifies vector around which the object rotates." />
<field name="fixed" type="SFBool" accessType="inputOutput" default="false" description="fixed indicates whether body is able to move." />
<field name="forces" type="MFVec3f" accessType="inputOutput" description="forces defines linear force values applied to the object every frame." />
<field name="geometry" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry field is used to connect the body modelled by the physics engine implementation to the real geometry of the scene through the use of collidable nodes." />
<field name="inertia" type="SFMatrix3f" accessType="inputOutput" default="1 0 0 0 1 0 0 0 1" description="inertia matrix defines a 3x2 inertia tensor matrix." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="linearDampingFactor" type="SFFloat" accessType="inputOutput" default="0.001" description="linearDampingFactor automatically damps a portion of body motion over time." />
<field name="linearVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="linearVelocity sets constant velocity value to object every frame, and reports updates by physics model." />
<field name="mass" type="SFFloat" accessType="inputOutput" default="1" description="mass of the body in kilograms." />
<field name="massDensityModel" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Sphere|Box|Cone" description="The massDensityModel field is used to describe the geometry type and dimensions used to calculate the mass density in the physics model." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="orientation sets body direction in world space, then reports physics updates." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position sets body location in world space, then reports physics updates." />
<field name="torques" type="MFVec3f" accessType="inputOutput" description="torques defines rotational force values applied to the object every frame." />
<field name="useFiniteRotation" type="SFBool" accessType="inputOutput" default="false" description="useFiniteRotation enables/disables higher-resolution, higher-cost computational method for calculating rotations." />
<field name="useGlobalGravity" type="SFBool" accessType="inputOutput" default="true" description="useGlobalGravity indicates whether this particular body is influenced by parent RigidBodyCollection's gravity setting." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="bodies" type="xs:NMTOKEN">
<enumeration value="body1" />
<enumeration value="body2" />
<enumeration value="bodies" />
</containerField>
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidBodyContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "RigidBody": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@angularDampingFactor": {
          "default": 0.001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@angularVelocity": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@autoDamp": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@autoDisable": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@centerOfMass": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@disableAngularSpeed": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@disableLinearSpeed": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@disableTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@finiteRotationAxis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@fixed": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@forces": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-geometry": {
          "$ref": "#/$defs/-X3DNBodyCollidableNodeMFNode"
        },
        "@inertia": {
          "$comment": "SFMatrix3f inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@linearDampingFactor": {
          "default": 0.001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@linearVelocity": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@mass": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-massDensityModel": {
          "$ref": "#/$defs/-Sphere-Box-ConeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@orientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@torques": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@useFiniteRotation": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@useGlobalGravity": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
angularDampingFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="angularDampingFactor" type="SFFloat" accessType="inputOutput" default="0.001" description="angularDampingFactor automatically damps a portion of body motion over time." />
'

JSON "@angularDampingFactor": {
  "default": 0.001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
angularVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="angularVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="angularVelocity sets constant velocity value to object every frame, and reports updates by physics model." />
'

JSON "@angularVelocity": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
autoDamp
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoDamp" type="SFBool" accessType="inputOutput" default="false" description="autoDamp enables/disables angularDampingFactor and linearDampingFactor." />
'

JSON "@autoDamp": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
autoDisable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoDisable" type="SFBool" accessType="inputOutput" default="false" description="autoDisable toggles operation of disableAngularSpeed, disableLinearSpeed, disableTime." />
'

JSON "@autoDisable": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
centerOfMass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="centerOfMass" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfMass defines local center of mass for physics calculations." />
'

JSON "@centerOfMass": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
disableAngularSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableAngularSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableAngularSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculations, reducing numeric instabilities." />
'

JSON "@disableAngularSpeed": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
disableLinearSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableLinearSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableLinearSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculation, reducing numeric instabilitiess." />
'

JSON "@disableLinearSpeed": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
disableTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="disableTime defines interval when body becomes at rest and not part of rigid body calculations, reducing numeric instabilities." />
'

JSON "@disableTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
finiteRotationAxis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="finiteRotationAxis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="finiteRotationAxis specifies vector around which the object rotates." />
'

JSON "@finiteRotationAxis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
fixed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fixed" type="SFBool" accessType="inputOutput" default="false" description="fixed indicates whether body is able to move." />
'

JSON "@fixed": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
forces
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forces" type="MFVec3f" accessType="inputOutput" description="forces defines linear force values applied to the object every frame." />
'

JSON "@forces": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
geometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNBodyCollidableNode" description="The geometry field is used to connect the body modelled by the physics engine implementation to the real geometry of the scene through the use of collidable nodes." />
'

JSON "-geometry": {
  "$ref": "#/$defs/-X3DNBodyCollidableNodeMFNode"
}
inertia
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="inertia" type="SFMatrix3f" accessType="inputOutput" default="1 0 0 0 1 0 0 0 1" description="inertia matrix defines a 3x2 inertia tensor matrix." />
'

JSON "@inertia": {
  "$comment": "SFMatrix3f inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
linearDampingFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linearDampingFactor" type="SFFloat" accessType="inputOutput" default="0.001" description="linearDampingFactor automatically damps a portion of body motion over time." />
'

JSON "@linearDampingFactor": {
  "default": 0.001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
linearVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="linearVelocity" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="linearVelocity sets constant velocity value to object every frame, and reports updates by physics model." />
'

JSON "@linearVelocity": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="1" description="mass of the body in kilograms." />
'

JSON "@mass": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
massDensityModel
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="massDensityModel" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Sphere|Box|Cone" description="The massDensityModel field is used to describe the geometry type and dimensions used to calculate the mass density in the physics model." />
'

JSON "-massDensityModel": {
  "$ref": "#/$defs/-Sphere-Box-ConeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="orientation sets body direction in world space, then reports physics updates." />
'

JSON "@orientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="position sets body location in world space, then reports physics updates." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
torques
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="torques" type="MFVec3f" accessType="inputOutput" description="torques defines rotational force values applied to the object every frame." />
'

JSON "@torques": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
useFiniteRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="useFiniteRotation" type="SFBool" accessType="inputOutput" default="false" description="useFiniteRotation enables/disables higher-resolution, higher-cost computational method for calculating rotations." />
'

JSON "@useFiniteRotation": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
useGlobalGravity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="useGlobalGravity" type="SFBool" accessType="inputOutput" default="true" description="useGlobalGravity indicates whether this particular body is influenced by parent RigidBodyCollection's gravity setting." />
'

JSON "@useGlobalGravity": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
RigidBodyCollection
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="RigidBodyCollection">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#RigidBodyCollection" appinfo="RigidBodyCollection represents a system of bodies that interact within a single physics model.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="autoDisable" type="SFBool" accessType="inputOutput" default="false" description="autoDisable toggles operation of disableAngularSpeed, disableLinearSpeed, disableTime." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="bodies" type="MFNode" accessType="inputOutput" acceptableNodeTypes="RigidBody" description="Collection of top-level nodes that comprise a set of bodies evaluated as a single set of interactions." />
<field name="collider" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="CollisionCollection" description="The collider field associates a collision collection with this rigid body collection allowing seamless updates and integration without the need to use the X3D event model." />
<field name="constantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" description="constantForceMix modifies damping calculations by violating normal constraints while applying small, constant forces in those calculations." />
<field name="contactSurfaceThickness" type="SFFloat" accessType="inputOutput" default="0" description="contactSurfaceThickness defines how far bodies may interpenetrate after a collision, allowing simulation of softer bodies that deform somewhat during collision." />
<field name="disableAngularSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableAngularSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculations, reducing numeric instabilities." />
<field name="disableLinearSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableLinearSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculation, reducing numeric instabilitiess." />
<field name="disableTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="disableTime defines interval when body becomes at rest and not part of rigid body calculations, reducing numeric instabilities." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
<field name="errorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="errorCorrection describes how quickly intersection errors due to floating-point inaccuracies are resolved (0=no correction, 1=all corrected in single step)." />
<field name="gravity" type="SFVec3f" accessType="inputOutput" default="0 -9.8 0" description="gravity indicates direction and strength of local gravity vector for this collection of bodies (units m/sec^2)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="iterations" type="SFInt32" accessType="inputOutput" default="10" description="iterations controls number of iterations performed over collectioned joints and bodies during each evaluation." />
<field name="joints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DRigidJointNode" description="The joints field is used to register all joints between bodies contained in this collection." />
<field name="maxCorrectionSpeed" type="SFFloat" accessType="inputOutput" default="-1" description="or -1, maxCorrectionSpeed." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="preferAccuracy" type="SFBool" accessType="inputOutput" default="false" description="preferAccuracy provides hint for performance preference: higher accuracy or faster computational speed." />
<field name="set_contacts" type="MFNode" accessType="inputOnly" acceptableNodeTypes="Contact" description="set_contacts input field for Contact nodes provides per-frame information about contacts between bodies." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidBodyCollectionContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "RigidBodyCollection": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoDisable": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-bodies": {
          "$ref": "#/$defs/-RigidBodyMFNode"
        },
        "-collider": {
          "$ref": "#/$defs/-CollisionCollectionSFNode"
        },
        "@constantForceMix": {
          "default": 0.0001,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@contactSurfaceThickness": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@disableAngularSpeed": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@disableLinearSpeed": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@disableTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@errorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@gravity": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": -9.8,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@iterations": {
          "default": 10,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-joints": {
          "$ref": "#/$defs/-X3DRigidJointNodeMFNode"
        },
        "@maxCorrectionSpeed": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@preferAccuracy": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-set_contacts": {
          "$ref": "#/$defs/-ContactMFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoDisable
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoDisable" type="SFBool" accessType="inputOutput" default="false" description="autoDisable toggles operation of disableAngularSpeed, disableLinearSpeed, disableTime." />
'

JSON "@autoDisable": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
bodies
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bodies" type="MFNode" accessType="inputOutput" acceptableNodeTypes="RigidBody" description="Collection of top-level nodes that comprise a set of bodies evaluated as a single set of interactions." />
'

JSON "-bodies": {
  "$ref": "#/$defs/-RigidBodyMFNode"
}
collider
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="collider" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="CollisionCollection" description="The collider field associates a collision collection with this rigid body collection allowing seamless updates and integration without the need to use the X3D event model." />
'

JSON "-collider": {
  "$ref": "#/$defs/-CollisionCollectionSFNode"
}
constantForceMix
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="constantForceMix" type="SFFloat" accessType="inputOutput" default="0.0001" description="constantForceMix modifies damping calculations by violating normal constraints while applying small, constant forces in those calculations." />
'

JSON "@constantForceMix": {
  "default": 0.0001,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
contactSurfaceThickness
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="contactSurfaceThickness" type="SFFloat" accessType="inputOutput" default="0" description="contactSurfaceThickness defines how far bodies may interpenetrate after a collision, allowing simulation of softer bodies that deform somewhat during collision." />
'

JSON "@contactSurfaceThickness": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
disableAngularSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableAngularSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableAngularSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculations, reducing numeric instabilities." />
'

JSON "@disableAngularSpeed": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
disableLinearSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableLinearSpeed" type="SFFloat" accessType="inputOutput" default="0" description="disableLinearSpeed defines lower-limit tolerance value when body is considered at rest and not part of rigid body calculation, reducing numeric instabilitiess." />
'

JSON "@disableLinearSpeed": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
disableTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="disableTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" description="disableTime defines interval when body becomes at rest and not part of rigid body calculations, reducing numeric instabilities." />
'

JSON "@disableTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
errorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="errorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="errorCorrection describes how quickly intersection errors due to floating-point inaccuracies are resolved (0=no correction, 1=all corrected in single step)." />
'

JSON "@errorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
gravity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gravity" type="SFVec3f" accessType="inputOutput" default="0 -9.8 0" description="gravity indicates direction and strength of local gravity vector for this collection of bodies (units m/sec^2)." />
'

JSON "@gravity": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": -9.8,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
iterations
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="iterations" type="SFInt32" accessType="inputOutput" default="10" description="iterations controls number of iterations performed over collectioned joints and bodies during each evaluation." />
'

JSON "@iterations": {
  "default": 10,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
joints
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="joints" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DRigidJointNode" description="The joints field is used to register all joints between bodies contained in this collection." />
'

JSON "-joints": {
  "$ref": "#/$defs/-X3DRigidJointNodeMFNode"
}
maxCorrectionSpeed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxCorrectionSpeed" type="SFFloat" accessType="inputOutput" default="-1" description="or -1, maxCorrectionSpeed." />
'

JSON "@maxCorrectionSpeed": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
preferAccuracy
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="preferAccuracy" type="SFBool" accessType="inputOutput" default="false" description="preferAccuracy provides hint for performance preference: higher accuracy or faster computational speed." />
'

JSON "@preferAccuracy": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
set_contacts
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="set_contacts" type="MFNode" accessType="inputOnly" acceptableNodeTypes="Contact" description="set_contacts input field for Contact nodes provides per-frame information about contacts between bodies." />
'

JSON "-set_contacts": {
  "$ref": "#/$defs/-ContactMFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ScalarChaser
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ScalarChaser">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#ScalarChaser" appinfo="ScalarChaser generates a series of single floating-point values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="SFFloat" accessType="initializeOnly" default="0" description="Initial destination value for this node." />
<field name="initialValue" type="SFFloat" accessType="initializeOnly" default="0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="SFFloat" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFFloat" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="SFFloat" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ScalarChaser": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@initialValue": {
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFFloat" accessType="initializeOnly" default="0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFFloat" accessType="initializeOnly" default="0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ScalarDamper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ScalarDamper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#ScalarDamper" appinfo="ScalarDamper generates a series of floating-point values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="SFFloat" accessType="initializeOnly" default="0" description="Initial destination value for this node." />
<field name="initialValue" type="SFFloat" accessType="initializeOnly" default="0" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="SFFloat" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="SFFloat" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="SFFloat" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ScalarDamper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@initialValue": {
          "default": 0,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="SFFloat" accessType="initializeOnly" default="0" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="SFFloat" accessType="initializeOnly" default="0" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "default": 0,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ScalarInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ScalarInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#ScalarInterpolator" appinfo="ScalarInterpolator generates piecewise-linear SFFloat values.">
<componentInfo name="Interpolation" level="1" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
<field name="keyValue" type="MFFloat" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding keyValue output." />
<field name="value_changed" type="SFFloat" accessType="outputOnly" description="Linearly interpolated output value determined by current key time and corresponding keyValue pair." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ScalarInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition values for linear-interpolation function input intervals, listed in non-decreasing order and corresponding to a value in the keyValue array." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFFloat" accessType="inputOutput" description="Output values for linear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ScreenFontStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ScreenFontStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#ScreenFontStyle" appinfo="ScreenFontStyle is an X3DFontStyleNode defines the size, family, justification, and other styles used within a screen layout.">
<componentInfo name="Layout" level="2" />
<Inheritance baseType="X3DFontStyleNode" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="family" type="MFString" accessType="inputOutput" default="&quot;SERIF&quot;" additionalEnumerationValuesAllowed="true" simpleType="fontFamilyValues" baseType="MFString" description="Array of quoted font family names in preference order, browsers use the first supported family.">
<enumeration value="&quot;SANS&quot;" appinfo="default font family for sans-serif font such as Helvetica." />
<enumeration value="&quot;SERIF&quot;" appinfo="default font family for serif font such as Times-Roman." />
<enumeration value="&quot;TYPEWRITER&quot;" appinfo="default font family for a fixed-pitch font such as Courier." />
</field>
<field name="horizontal" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is horizontal (true) or vertical (false)." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="justify" type="MFString" accessType="inputOutput" default="&quot;BEGIN&quot;" additionalEnumerationValuesAllowed="false" simpleType="justifyChoices" baseType="MFString" description="The justify field determines horizontal and vertical alignment of text layout, relative to the origin of the object coordinate system.">
<enumeration value="&quot;MIDDLE&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;END&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;END&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;END&quot; &quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;END&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;END&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;MIDDLE&quot;" />
</field>
<field name="language" type="SFString" accessType="inputOutput" description="Language codes consist of a primary code and a (possibly empty) series of subcodes." />
<field name="leftToRight" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is left-to-right (true) or right-to-left (false)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pointSize" type="SFFloat" accessType="inputOutput" default="12.0" minExclusive="0" description="pointSize field specifies the size of text in points." />
<field name="spacing" type="SFFloat" accessType="inputOutput" default="1.0" minInclusive="0" description="Adjustment factor for line spacing between adjacent lines of text." />
<field name="style" type="SFString" accessType="inputOutput" default="PLAIN" additionalEnumerationValuesAllowed="false" simpleType="fontStyleChoices" baseType="xs:NMTOKEN" description="Pick one of four values for text style (PLAIN|BOLD|ITALIC|BOLDITALIC).">
<enumeration value="PLAIN" appinfo="default plain type." />
<enumeration value="BOLD" appinfo="boldface type." />
<enumeration value="ITALIC" appinfo="italic type." />
<enumeration value="BOLDITALIC" appinfo="bold and italic type." />
</field>
<field name="topToBottom" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is top-to-bottom (true) or bottom-to-top (false)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<containerField default="fontStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ScreenFontStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@family": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "SANS",
                  "SERIF",
                  "TYPEWRITER"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "SERIF",
            "type": "string"
          }
        },
        "@horizontal": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@justify": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "enum": [
              "MIDDLE",
              "\"MIDDLE\" \"BEGIN\"",
              "\"MIDDLE\" \"END\"",
              "\"MIDDLE\" \"FIRST\"",
              "\"MIDDLE\" \"MIDDLE\"",
              "BEGIN",
              "\"BEGIN\" \"BEGIN\"",
              "\"BEGIN\" \"END\"",
              "\"BEGIN\" \"FIRST\"",
              "\"BEGIN\" \"MIDDLE\"",
              "END",
              "\"END\" \"BEGIN\"",
              "\"END\" \"END\"",
              "\"END\" \"FIRST\"",
              "\"END\" \"MIDDLE\"",
              "FIRST",
              "\"FIRST\" \"BEGIN\"",
              "\"FIRST\" \"END\"",
              "\"FIRST\" \"FIRST\"",
              "\"FIRST\" \"MIDDLE\""
            ],
            "default": "BEGIN",
            "type": "string"
          }
        },
        "@language": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@leftToRight": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pointSize": {
          "exclusiveMinimum": 0,
          "default": 12,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@spacing": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@style": {
          "enum": [
            "PLAIN",
            "BOLD",
            "ITALIC",
            "BOLDITALIC"
          ],
          "default": "PLAIN",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@topToBottom": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
family
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="family" type="MFString" accessType="inputOutput" default="&quot;SERIF&quot;" additionalEnumerationValuesAllowed="true" simpleType="fontFamilyValues" baseType="MFString" description="Array of quoted font family names in preference order, browsers use the first supported family.">
<enumeration value="&quot;SANS&quot;" appinfo="default font family for sans-serif font such as Helvetica." />
<enumeration value="&quot;SERIF&quot;" appinfo="default font family for serif font such as Times-Roman." />
<enumeration value="&quot;TYPEWRITER&quot;" appinfo="default font family for a fixed-pitch font such as Courier." />
</field>
'

JSON "@family": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "SANS",
          "SERIF",
          "TYPEWRITER"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "SERIF",
    "type": "string"
  }
}
horizontal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="horizontal" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is horizontal (true) or vertical (false)." />
'

JSON "@horizontal": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
justify
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="justify" type="MFString" accessType="inputOutput" default="&quot;BEGIN&quot;" additionalEnumerationValuesAllowed="false" simpleType="justifyChoices" baseType="MFString" description="The justify field determines horizontal and vertical alignment of text layout, relative to the origin of the object coordinate system.">
<enumeration value="&quot;MIDDLE&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;END&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;MIDDLE&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;END&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;BEGIN&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;END&quot; &quot;END&quot;" />
<enumeration value="&quot;END&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;END&quot; &quot;MIDDLE&quot;" />
<enumeration value="&quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;BEGIN&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;END&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;FIRST&quot;" />
<enumeration value="&quot;FIRST&quot; &quot;MIDDLE&quot;" />
</field>
'

JSON "@justify": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "enum": [
      "MIDDLE",
      "\"MIDDLE\" \"BEGIN\"",
      "\"MIDDLE\" \"END\"",
      "\"MIDDLE\" \"FIRST\"",
      "\"MIDDLE\" \"MIDDLE\"",
      "BEGIN",
      "\"BEGIN\" \"BEGIN\"",
      "\"BEGIN\" \"END\"",
      "\"BEGIN\" \"FIRST\"",
      "\"BEGIN\" \"MIDDLE\"",
      "END",
      "\"END\" \"BEGIN\"",
      "\"END\" \"END\"",
      "\"END\" \"FIRST\"",
      "\"END\" \"MIDDLE\"",
      "FIRST",
      "\"FIRST\" \"BEGIN\"",
      "\"FIRST\" \"END\"",
      "\"FIRST\" \"FIRST\"",
      "\"FIRST\" \"MIDDLE\""
    ],
    "default": "BEGIN",
    "type": "string"
  }
}
language
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="language" type="SFString" accessType="inputOutput" description="Language codes consist of a primary code and a (possibly empty) series of subcodes." />
'

JSON "@language": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
leftToRight
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="leftToRight" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is left-to-right (true) or right-to-left (false)." />
'

JSON "@leftToRight": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pointSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pointSize" type="SFFloat" accessType="inputOutput" default="12.0" minExclusive="0" description="pointSize field specifies the size of text in points." />
'

JSON "@pointSize": {
  "exclusiveMinimum": 0,
  "default": 12,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
spacing
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="spacing" type="SFFloat" accessType="inputOutput" default="1.0" minInclusive="0" description="Adjustment factor for line spacing between adjacent lines of text." />
'

JSON "@spacing": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" default="PLAIN" additionalEnumerationValuesAllowed="false" simpleType="fontStyleChoices" baseType="xs:NMTOKEN" description="Pick one of four values for text style (PLAIN|BOLD|ITALIC|BOLDITALIC).">
<enumeration value="PLAIN" appinfo="default plain type." />
<enumeration value="BOLD" appinfo="boldface type." />
<enumeration value="ITALIC" appinfo="italic type." />
<enumeration value="BOLDITALIC" appinfo="bold and italic type." />
</field>
'

JSON "@style": {
  "enum": [
    "PLAIN",
    "BOLD",
    "ITALIC",
    "BOLDITALIC"
  ],
  "default": "PLAIN",
  "$comment": "SFString inputOutput",
  "type": "string"
}
topToBottom
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="topToBottom" type="SFBool" accessType="inputOutput" default="true" description="Whether text direction is top-to-bottom (true) or bottom-to-top (false)." />
'

JSON "@topToBottom": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ScreenGroup
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ScreenGroup">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html#ScreenGroup" appinfo="ScreenGroup is a Grouping node that can contain most nodes.">
<componentInfo name="Layout" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ScreenGroup": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Script
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Script">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/scripting.html#Script" appinfo="Script contains author-programmed event behaviors for a scene.">
<componentInfo name="Scripting" level="1" />
<Inheritance baseType="X3DScriptNode" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DScriptNode" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DScriptNode" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DScriptNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="directOutput" type="SFBool" accessType="initializeOnly" default="false" description="Set directOutput true if Script has field reference(s) of type SFNode/MFNode, and also uses direct access to modify attributes of a referenced node in the Scene." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in this Script node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DScriptNode" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="mustEvaluate" type="SFBool" accessType="initializeOnly" default="false" description="If mustEvaluate false, then the X3D player may delay sending input events to Script until output events are needed." />
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DScriptNode" description="List of address links for runnable script files.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesX3DUrlObject" />
<ContentModel>
<FieldDeclaration minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<SourceText />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Script": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "#sourceCode": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "field": {
          "$ref": "#/$defs/field"
        },
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@directOutput": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@mustEvaluate": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@sourceCode": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DScriptNode" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DScriptNode" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DScriptNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
directOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="directOutput" type="SFBool" accessType="initializeOnly" default="false" description="Set directOutput true if Script has field reference(s) of type SFNode/MFNode, and also uses direct access to modify attributes of a referenced node in the Scene." />
'

JSON "@directOutput": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in this Script node." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DScriptNode" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
mustEvaluate
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mustEvaluate" type="SFBool" accessType="initializeOnly" default="false" description="If mustEvaluate false, then the X3D player may delay sending input events to Script until output events are needed." />
'

JSON "@mustEvaluate": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "#sourceCode": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "string"
  }
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "@sourceCode": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DScriptNode" description="List of address links for runnable script files.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SegmentedVolumeData
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SegmentedVolumeData">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#SegmentedVolumeData" appinfo="SegmentedVolumeData displays a segmented voxel dataset with different RenderStyle nodes.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DVolumeDataNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Multiple contained X3DVolumeRenderStyleNode nodes corresponding to each isosurface that define specific rendering technique for this volumetric object." />
<field name="segmentEnabled" type="MFBool" accessType="inputOutput" description="Array of boolean values that indicates whether to draw each segment, with indices corresponding to the segment identifier." />
<field name="segmentIdentifiers" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) holds component texture that provides corresponding segment identifier." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" minOccurs="0" />
<GroupContentModel name="VolumeRenderStyleContentModel" minOccurs="0" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SegmentedVolumeData": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@dimensions": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-renderStyle": {
          "$ref": "#/$defs/-X3DVolumeRenderStyleNodeMFNode"
        },
        "@segmentEnabled": {
          "$comment": "MFBool inputOutput",
          "type": "array",
          "items": {
            "type": "boolean"
          }
        },
        "-segmentIdentifiers": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-voxels": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
dimensions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
'

JSON "@dimensions": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
renderStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="renderStyle" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Multiple contained X3DVolumeRenderStyleNode nodes corresponding to each isosurface that define specific rendering technique for this volumetric object." />
'

JSON "-renderStyle": {
  "$ref": "#/$defs/-X3DVolumeRenderStyleNodeMFNode"
}
segmentEnabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="segmentEnabled" type="MFBool" accessType="inputOutput" description="Array of boolean values that indicates whether to draw each segment, with indices corresponding to the segment identifier." />
'

JSON "@segmentEnabled": {
  "$comment": "MFBool inputOutput",
  "type": "array",
  "items": {
    "type": "boolean"
  }
}
segmentIdentifiers
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="segmentIdentifiers" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) holds component texture that provides corresponding segment identifier." />
'

JSON "-segmentIdentifiers": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
voxels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
'

JSON "-voxels": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ShadedVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ShadedVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#ShadedVolumeStyle" appinfo="All fields fully supported except shadows supported with at least Phong shading at level 3. All fields fully supported with at least Phong shading and Henyey-Greenstein phase function, shadows fully supported at level 4.">
<componentInfo name="VolumeRendering" level="3" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="lighting" type="SFBool" accessType="inputOutput" default="false" description="Whether rendering calculates and applies shading effects to visual output." />
<field name="material" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" description="Colour and opacity is determined based on whether a value has been specified for the material field." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="phaseFunction" type="SFString" accessType="initializeOnly" default="Henyey-Greenstein" additionalEnumerationValuesAllowed="true" simpleType="phaseFunctionValues" baseType="SFString" description="define scattering model for implementations using global illumination (NONE or Henyey-Greenstein phase function).">
<enumeration value="Henyey-Greenstein" appinfo="Henyey-Greenstein phase function for scattering model." />
<enumeration value="NONE" appinfo="no scattering." />
</field>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" description="Whether rendering calculates and applies shadows to visual output (using global illumination model)." />
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="Material" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ShadedVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@lighting": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-material": {
          "$ref": "#/$defs/-X3DMaterialNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@phaseFunction": {
          "anyOf": [
            {
              "enum": [
                "Henyey-Greenstein",
                "NONE"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "Henyey-Greenstein",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-surfaceNormals": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
lighting
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lighting" type="SFBool" accessType="inputOutput" default="false" description="Whether rendering calculates and applies shading effects to visual output." />
'

JSON "@lighting": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
material
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="material" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMaterialNode" description="Colour and opacity is determined based on whether a value has been specified for the material field." />
'

JSON "-material": {
  "$ref": "#/$defs/-X3DMaterialNodeSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
phaseFunction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="phaseFunction" type="SFString" accessType="initializeOnly" default="Henyey-Greenstein" additionalEnumerationValuesAllowed="true" simpleType="phaseFunctionValues" baseType="SFString" description="define scattering model for implementations using global illumination (NONE or Henyey-Greenstein phase function).">
<enumeration value="Henyey-Greenstein" appinfo="Henyey-Greenstein phase function for scattering model." />
<enumeration value="NONE" appinfo="no scattering." />
</field>
'

JSON "@phaseFunction": {
  "anyOf": [
    {
      "enum": [
        "Henyey-Greenstein",
        "NONE"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "Henyey-Greenstein",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" description="Whether rendering calculates and applies shadows to visual output (using global illumination model)." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
surfaceNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
'

JSON "-surfaceNormals": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ShaderPart
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ShaderPart">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#ShaderPart" appinfo="ShaderPart can contain a CDATA section of plain-text source code.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
<field name="type" type="SFString" accessType="initializeOnly" default="VERTEX" additionalEnumerationValuesAllowed="true" simpleType="shaderPartTypeValues" baseType="xs:NMTOKEN" description="type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.">
<enumeration value="VERTEX" appinfo="vertex shader." />
<enumeration value="FRAGMENT" appinfo="fragment shader." />
</field>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of shader.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="parts" type="containerFieldChoicesShaderPart" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<SourceText />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ShaderPart": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "#sourceCode": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@sourceCode": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@type": {
          "anyOf": [
            {
              "enum": [
                "VERTEX",
                "FRAGMENT"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "VERTEX",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "#sourceCode": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "string"
  }
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "@sourceCode": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="initializeOnly" default="VERTEX" additionalEnumerationValuesAllowed="true" simpleType="shaderPartTypeValues" baseType="xs:NMTOKEN" description="type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.">
<enumeration value="VERTEX" appinfo="vertex shader." />
<enumeration value="FRAGMENT" appinfo="fragment shader." />
</field>
'

JSON "@type": {
  "anyOf": [
    {
      "enum": [
        "VERTEX",
        "FRAGMENT"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "VERTEX",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of shader.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ShaderProgram
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ShaderProgram">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html#ShaderProgram" appinfo="ShaderProgram can contain field declarations and a CDATA section of plain-text source code.">
<componentInfo name="Shaders" level="1" />
<Inheritance baseType="X3DNode" />
<AdditionalInheritance baseType="X3DUrlObject" />
<AdditionalInheritance baseType="X3DProgrammableShaderObject" />
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the ShaderProgram node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
<field name="type" type="SFString" accessType="initializeOnly" default="VERTEX" additionalEnumerationValuesAllowed="true" simpleType="shaderPartTypeValues" baseType="xs:NMTOKEN" description="type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.">
<enumeration value="VERTEX" appinfo="vertex shader." />
<enumeration value="FRAGMENT" appinfo="fragment shader." />
</field>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of shader.">
<componentInfo name="Networking" level="4" />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="programs" type="xs:NMTOKEN" />
<ContentModel>
<FieldDeclaration minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<SourceText />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ShaderProgram": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "#sourceCode": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "string"
          }
        },
        "field": {
          "$ref": "#/$defs/field"
        },
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoRefresh": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@autoRefreshTimeLimit": {
          "minimum": 0,
          "default": 3600,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@load": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@sourceCode": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@type": {
          "anyOf": [
            {
              "enum": [
                "VERTEX",
                "FRAGMENT"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "VERTEX",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@url": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "minItems": 1,
          "items": {
            "format": "uri-reference",
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoRefresh
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefresh" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefresh defines interval in seconds before automatic reload of current url asset is performed." />
'

JSON "@autoRefresh": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
autoRefreshTimeLimit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoRefreshTimeLimit" type="SFTime" accessType="inputOutput" default="3600" minInclusive="0" inheritedFrom="X3DUrlObject" description="autoRefreshTimeLimit defines maximum duration that automatic refresh activity can occur." />
'

JSON "@autoRefreshTimeLimit": {
  "minimum": 0,
  "default": 3600,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the ShaderProgram node." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
load
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="load" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DUrlObject" description="load=true means load immediately, load=false means defer loading or else unload a previously loaded scene." />
'

JSON "@load": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "#sourceCode": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "string"
  }
}
sourceCode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sourceCode" type="SFString" accessType="inputOutput" baseType="xs:string" description="Embedded scripting source code can be contained within the parent node as a plain-text CDATA block, without requiring escaping of special characters." />
'

JSON "@sourceCode": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="initializeOnly" default="VERTEX" additionalEnumerationValuesAllowed="true" simpleType="shaderPartTypeValues" baseType="xs:NMTOKEN" description="type indicates whether this ShaderProgram is a vertex or fragment (pixel) shader.">
<enumeration value="VERTEX" appinfo="vertex shader." />
<enumeration value="FRAGMENT" appinfo="fragment shader." />
</field>
'

JSON "@type": {
  "anyOf": [
    {
      "enum": [
        "VERTEX",
        "FRAGMENT"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "VERTEX",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" inheritedFrom="X3DUrlObject" description="Location and filename of shader.">
<componentInfo name="Networking" level="4" />
</field>
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Shape
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Shape">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Shape" appinfo="Shape can appear under any grouping node.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DShapeNode" />
<field name="appearance" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DAppearanceNode" inheritedFrom="X3DShapeNode" description="Single contained Appearance node that can specify visual attributes (such as material, texture, fillProperties and lineProperties) applied to corresponding geometry." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DShapeNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DShapeNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DShapeNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="castShadow" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="castShadow defines whether this Shape casts shadows as produced by lighting nodes." />
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DShapeNode" description="Single contained geometry node that is rendered according to corresponding appearance." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesGroupLODShapeTransformSwitch" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ShapeChildContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Shape": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-appearance": {
          "$ref": "#/$defs/-X3DAppearanceNodeSFNode"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@castShadow": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-geometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
appearance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appearance" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DAppearanceNode" inheritedFrom="X3DShapeNode" description="Single contained Appearance node that can specify visual attributes (such as material, texture, fillProperties and lineProperties) applied to corresponding geometry." />
'

JSON "-appearance": {
  "$ref": "#/$defs/-X3DAppearanceNodeSFNode"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DShapeNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DShapeNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DShapeNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
castShadow
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="castShadow" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="castShadow defines whether this Shape casts shadows as produced by lighting nodes." />
'

JSON "@castShadow": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
geometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DShapeNode" description="Single contained geometry node that is rendered according to corresponding appearance." />
'

JSON "-geometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DShapeNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SignalPdu
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SignalPdu">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#SignalPdu" appinfo="SignalPdu is a networked Protocol Data Unit (PDU) information node that communicates the transmission of voice, audio or other data modeled in a simulation.">
<componentInfo name="DIS" level="1" />
<Inheritance baseType="X3DNetworkSensorNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="data" type="MFInt32" accessType="inputOutput" description="Holds audio or digital data conveyed by the radio transmission." />
<field name="dataLength" type="SFInt32" accessType="inputOutput" default="0" description="number of bits of digital voice audio or digital data being sent in the Signal PDU." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
<field name="encodingScheme" type="SFInt32" accessType="inputOutput" default="0" description="designates both Encoding Class and Encoding Type." />
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="confirm whether there has been a recent network update." />
<field name="isNetworkReader" type="SFBool" accessType="outputOnly" description="Whether networkMode='remote' (listen to network as copy of remote entity)." />
<field name="isNetworkWriter" type="SFBool" accessType="outputOnly" description="Whether networkMode='master' (output to network as master entity at writeInterval)." />
<field name="isRtpHeaderHeard" type="SFBool" accessType="outputOnly" description="Whether incoming DIS packets have an RTP header prepended." />
<field name="isStandAlone" type="SFBool" accessType="outputOnly" description="Whether networkMode='local' (ignore network but still respond to local events)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
<field name="sampleRate" type="SFInt32" accessType="inputOutput" default="0" description="sampleRate gives either (1) sample rate in samples per second if Encoding Class is encoded audio, or (2) data rate in bits per second for data transmissions." />
<field name="samples" type="SFInt32" accessType="inputOutput" default="0" description="Number of samples in the PDU if the Encoding Class is encoded voice, otherwise the field is set to zero." />
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="tdlType" type="SFInt32" accessType="inputOutput" default="0" description="Tactical Data Link (TDL) type as an enumerated value when the Encoding Class is voice, raw binary, application-specific, or database index representation of a TDL message." />
<field name="timestamp" type="SFTime" accessType="outputOnly" minInclusive="0" description="DIS timestamp in X3D units (value 0." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SignalPdu": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@address": {
          "default": "localhost",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@applicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@data": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "type": "integer"
          }
        },
        "@dataLength": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@encodingScheme": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@entityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@multicastRelayHost": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@multicastRelayPort": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@networkMode": {
          "enum": [
            "standAlone",
            "networkReader",
            "networkWriter"
          ],
          "default": "standAlone",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@port": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@readInterval": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@rtpHeaderExpected": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@sampleRate": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@samples": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@siteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@tdlType": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@whichGeometry": {
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@writeInterval": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
address
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
'

JSON "@address": {
  "default": "localhost",
  "$comment": "SFString inputOutput",
  "type": "string"
}
applicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
'

JSON "@applicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
data
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="data" type="MFInt32" accessType="inputOutput" description="Holds audio or digital data conveyed by the radio transmission." />
'

JSON "@data": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "type": "integer"
  }
}
dataLength
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dataLength" type="SFInt32" accessType="inputOutput" default="0" description="number of bits of digital voice audio or digital data being sent in the Signal PDU." />
'

JSON "@dataLength": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
encodingScheme
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="encodingScheme" type="SFInt32" accessType="inputOutput" default="0" description="designates both Encoding Class and Encoding Type." />
'

JSON "@encodingScheme": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
entityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
'

JSON "@entityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
multicastRelayHost
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
'

JSON "@multicastRelayHost": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
multicastRelayPort
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
'

JSON "@multicastRelayPort": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
networkMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
'

JSON "@networkMode": {
  "enum": [
    "standAlone",
    "networkReader",
    "networkWriter"
  ],
  "default": "standAlone",
  "$comment": "SFString inputOutput",
  "type": "string"
}
port
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
'

JSON "@port": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
'

JSON "@radioID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
readInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
'

JSON "@readInterval": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
rtpHeaderExpected
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
'

JSON "@rtpHeaderExpected": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
sampleRate
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sampleRate" type="SFInt32" accessType="inputOutput" default="0" description="sampleRate gives either (1) sample rate in samples per second if Encoding Class is encoded audio, or (2) data rate in bits per second for data transmissions." />
'

JSON "@sampleRate": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
samples
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="samples" type="SFInt32" accessType="inputOutput" default="0" description="Number of samples in the PDU if the Encoding Class is encoded voice, otherwise the field is set to zero." />
'

JSON "@samples": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
siteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@siteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
tdlType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tdlType" type="SFInt32" accessType="inputOutput" default="0" description="Tactical Data Link (TDL) type as an enumerated value when the Encoding Class is voice, raw binary, application-specific, or database index representation of a TDL message." />
'

JSON "@tdlType": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
whichGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
'

JSON "@whichGeometry": {
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
writeInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
'

JSON "@writeInterval": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SilhouetteEnhancementVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SilhouetteEnhancementVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#SilhouetteEnhancementVolumeStyle" appinfo="SilhouetteEnhancementVolumeStyle specifies that volumetric data is rendered with silhouette enhancement.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="silhouetteBoundaryOpacity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="amount of the silhouette enhancement to use." />
<field name="silhouetteRetainedOpacity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" description="scaling of non-silhouette regions." />
<field name="silhouetteSharpness" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" description="power function to control sharpness of the silhouette." />
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SilhouetteEnhancementVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@silhouetteBoundaryOpacity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@silhouetteRetainedOpacity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@silhouetteSharpness": {
          "minimum": 0,
          "default": 0.5,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-surfaceNormals": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
silhouetteBoundaryOpacity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="silhouetteBoundaryOpacity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="amount of the silhouette enhancement to use." />
'

JSON "@silhouetteBoundaryOpacity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
silhouetteRetainedOpacity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="silhouetteRetainedOpacity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" description="scaling of non-silhouette regions." />
'

JSON "@silhouetteRetainedOpacity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
silhouetteSharpness
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="silhouetteSharpness" type="SFFloat" accessType="inputOutput" default="0.5" minInclusive="0" description="power function to control sharpness of the silhouette." />
'

JSON "@silhouetteSharpness": {
  "minimum": 0,
  "default": 0.5,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
'

JSON "-surfaceNormals": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SingleAxisHingeJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SingleAxisHingeJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#SingleAxisHingeJoint" appinfo="SingleAxisHingeJoint has single axis about which to rotate, similar to a traditional door hinge. Contains two RigidBody nodes (containerField values body1, body2).">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
<field name="angle" type="SFFloat" accessType="outputOnly" />
<field name="angleRate" type="SFFloat" accessType="outputOnly" />
<field name="axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis defines vector of joint connection between body1 and body2." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body1AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body1AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body2AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="maxAngle" type="SFFloat" accessType="inputOutput" default="3.141592653" description="maxAngle is maximum rotation angle for hinge." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minAngle" type="SFFloat" accessType="inputOutput" default="-3.141592653" description="minAngle is minimum rotation angle for hinge." />
<field name="stopBounce" type="SFFloat" accessType="inputOutput" default="0" description="stopBounce is velocity factor for bounce back once stop point is reached." />
<field name="stopErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stopErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SingleAxisHingeJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@anchorPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@axis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "@maxAngle": {
          "default": 3.141592653,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minAngle": {
          "default": -3.141592653,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stopBounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stopErrorCorrection": {
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
anchorPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
'

JSON "@anchorPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
axis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis defines vector of joint connection between body1 and body2." />
'

JSON "@axis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxAngle" type="SFFloat" accessType="inputOutput" default="3.141592653" description="maxAngle is maximum rotation angle for hinge." />
'

JSON "@maxAngle": {
  "default": 3.141592653,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minAngle" type="SFFloat" accessType="inputOutput" default="-3.141592653" description="minAngle is minimum rotation angle for hinge." />
'

JSON "@minAngle": {
  "default": -3.141592653,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stopBounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopBounce" type="SFFloat" accessType="inputOutput" default="0" description="stopBounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stopBounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stopErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" description="stopErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stopErrorCorrection": {
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SliderJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SliderJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#SliderJoint" appinfo="SliderJoint constrains all movement between body1 and body2 along a single axis. Contains two RigidBody nodes (containerField values body1, body2).">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis is normalized vector specifying direction of motion." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="maxSeparation" type="SFFloat" accessType="inputOutput" default="1" description="maxSeparation is maximum separation distance between the two bodies." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minSeparation" type="SFFloat" accessType="inputOutput" default="0" description="minSeparation is minimum separation distance between the two bodies." />
<field name="separation" type="SFFloat" accessType="outputOnly" description="separation indicates final separation distance between the two bodies." />
<field name="separationRate" type="SFFloat" accessType="outputOnly" description="separationRate indicates change in separation distance over time between the two bodies." />
<field name="sliderForce" type="SFFloat" accessType="inputOutput" default="0" description="sliderForce value is used to apply a force (specified in force base units) along the axis of the slider in equal and opposite directions to the two bodies." />
<field name="stopBounce" type="SFFloat" accessType="inputOutput" default="0" description="stopBounce is velocity factor for bounce back once stop point is reached." />
<field name="stopErrorCorrection" type="SFFloat" accessType="inputOutput" default="1" description="stopErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SliderJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@axis": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "@maxSeparation": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minSeparation": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@sliderForce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stopBounce": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stopErrorCorrection": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
axis
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis is normalized vector specifying direction of motion." />
'

JSON "@axis": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
maxSeparation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxSeparation" type="SFFloat" accessType="inputOutput" default="1" description="maxSeparation is maximum separation distance between the two bodies." />
'

JSON "@maxSeparation": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minSeparation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minSeparation" type="SFFloat" accessType="inputOutput" default="0" description="minSeparation is minimum separation distance between the two bodies." />
'

JSON "@minSeparation": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
sliderForce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sliderForce" type="SFFloat" accessType="inputOutput" default="0" description="sliderForce value is used to apply a force (specified in force base units) along the axis of the slider in equal and opposite directions to the two bodies." />
'

JSON "@sliderForce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stopBounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopBounce" type="SFFloat" accessType="inputOutput" default="0" description="stopBounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stopBounce": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stopErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopErrorCorrection" type="SFFloat" accessType="inputOutput" default="1" description="stopErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stopErrorCorrection": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Sound
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Sound">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Sound" appinfo="The Sound node controls the 3D spatialization of sound playback by a child AudioClip or MovieTexture node.">
<componentInfo name="Sound" level="1" />
<Inheritance baseType="X3DSoundNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="direction of sound axis, relative to local coordinate system." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Factor [0,1] adjusting loudness (decibels) of emitted sound." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of sound ellipsoid center, relative to local coordinate system." />
<field name="maxBack" type="SFFloat" accessType="inputOutput" default="10" minInclusive="0" description="Outer (zero loudness)ellipsoid distance along back direction." />
<field name="maxFront" type="SFFloat" accessType="inputOutput" default="10" minInclusive="0" description="Outer (zero loudness)ellipsoid distance along front direction." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minBack" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Inner (full loudness) ellipsoid distance along back direction." />
<field name="minFront" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Inner (full loudness) ellipsoid distance along front direction." />
<field name="priority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Player hint [0,1] if needed to choose which sounds to play." />
<field name="source" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSoundSourceNode" description="sound source for the Sound node, either an AudioClip node or a MovieTexture node." />
<field name="spatialize" type="SFBool" accessType="initializeOnly" default="true" description="Whether to spatialize sound playback relative to viewer." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Sound": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@maxBack": {
          "minimum": 0,
          "default": 10,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@maxFront": {
          "minimum": 0,
          "default": 10,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minBack": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@minFront": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@priority": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-source": {
          "$ref": "#/$defs/-X3DSoundSourceNodeSFNode"
        },
        "@spatialize": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="direction of sound axis, relative to local coordinate system." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Factor [0,1] adjusting loudness (decibels) of emitted sound." />
'

JSON "@intensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of sound ellipsoid center, relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
maxBack
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxBack" type="SFFloat" accessType="inputOutput" default="10" minInclusive="0" description="Outer (zero loudness)ellipsoid distance along back direction." />
'

JSON "@maxBack": {
  "minimum": 0,
  "default": 10,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
maxFront
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxFront" type="SFFloat" accessType="inputOutput" default="10" minInclusive="0" description="Outer (zero loudness)ellipsoid distance along front direction." />
'

JSON "@maxFront": {
  "minimum": 0,
  "default": 10,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minBack
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minBack" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Inner (full loudness) ellipsoid distance along back direction." />
'

JSON "@minBack": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
minFront
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minFront" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="Inner (full loudness) ellipsoid distance along front direction." />
'

JSON "@minFront": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
priority
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="priority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Player hint [0,1] if needed to choose which sounds to play." />
'

JSON "@priority": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
source
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="source" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSoundSourceNode" description="sound source for the Sound node, either an AudioClip node or a MovieTexture node." />
'

JSON "-source": {
  "$ref": "#/$defs/-X3DSoundSourceNodeSFNode"
}
spatialize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="spatialize" type="SFBool" accessType="initializeOnly" default="true" description="Whether to spatialize sound playback relative to viewer." />
'

JSON "@spatialize": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SpatialSound
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SpatialSound">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#Sound" appinfo="The SpatialSound node controls the 3D spatialization of sound playback by a child AudioClip or MovieTexture node.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundNode" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="coneInnerAngle" type="SFFloat" accessType="inputOutput" default="6.2832" minInclusive="0" maxInclusive="6.2832" description="coneInnerAngle is centered along direction and defines the inner conical volume, inside of which no source gain reduction occurs." />
<field name="coneOuterAngle" type="SFFloat" accessType="inputOutput" default="6.2832" minInclusive="0" maxInclusive="6.2832" description="coneOuterAngle is centered along direction and defines an outer conical volume, within which the sound gain decreases linearly from full gain to coneOuterGain." />
<field name="coneOuterGain" type="SFFloat" accessType="inputOutput" default="0" description="coneOuterGain is minimum gain value found outside coneOuterAngle." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="direction of sound axis, relative to local coordinate system." />
<field name="distanceModel" type="SFString" accessType="inputOutput" default="INVERSE" additionalEnumerationValuesAllowed="false" simpleType="distanceModelChoices" baseType="SFString" description="distanceModel determines how field specifies which algorithm to use for sound attenuation, corresponding to distance between an audio source and a listener, as it moves away from the listener.">
<enumeration value="LINEAR" alias="linear" appinfo="X3D version of &quot;linear&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
<enumeration value="INVERSE" alias="inverse" appinfo="X3D version of &quot;inverse&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
<enumeration value="EXPONENTIAL" alias="exponential" appinfo="X3D version of &quot;exponential&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
</field>
<field name="dopplerEnabled" type="SFBool" accessType="inputOutput" default="false" description="dopplerEnabled enables/disables whether real-time Doppler effects (due to relation motion between sources and listeners) are computed by browser between virtual sound sources and active listening locations, then applied to received frequency at active listening locations." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="enableHRTF" type="SFBool" accessType="inputOutput" default="false" description="enableHRTF enables/disables Head Related Transfer Function (HRTF) auralization, if available." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Factor [0,1] adjusting loudness (decibels) of emitted sound." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of sound ellipsoid center, relative to local coordinate system." />
<field name="maxDistance" type="SFFloat" accessType="inputOutput" default="10000" minInclusive="0" description="maxDistance is the maximum distance where sound is renderable between source and listener, after which no reduction in sound volume occurs." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="priority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Player hint [0,1] if needed to choose which sounds to play." />
<field name="referenceDistance" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="referenceDistance for reducing volume as source moves further from the listener." />
<field name="rolloffFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="rolloffFactor indicates how quickly volume is reduced as source moves further from listener." />
<field name="spatialize" type="SFBool" accessType="initializeOnly" default="true" description="Whether to spatialize sound playback relative to viewer." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SpatialSound": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@coneInnerAngle": {
          "maximum": 6.2832,
          "minimum": 0,
          "default": 6.2832,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@coneOuterAngle": {
          "maximum": 6.2832,
          "minimum": 0,
          "default": 6.2832,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@coneOuterGain": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@distanceModel": {
          "enum": [
            "LINEAR",
            "INVERSE",
            "EXPONENTIAL"
          ],
          "default": "INVERSE",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@dopplerEnabled": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@enableHRTF": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@intensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@maxDistance": {
          "minimum": 0,
          "default": 10000,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@priority": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@referenceDistance": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@rolloffFactor": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@spatialize": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
coneInnerAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coneInnerAngle" type="SFFloat" accessType="inputOutput" default="6.2832" minInclusive="0" maxInclusive="6.2832" description="coneInnerAngle is centered along direction and defines the inner conical volume, inside of which no source gain reduction occurs." />
'

JSON "@coneInnerAngle": {
  "maximum": 6.2832,
  "minimum": 0,
  "default": 6.2832,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
coneOuterAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coneOuterAngle" type="SFFloat" accessType="inputOutput" default="6.2832" minInclusive="0" maxInclusive="6.2832" description="coneOuterAngle is centered along direction and defines an outer conical volume, within which the sound gain decreases linearly from full gain to coneOuterGain." />
'

JSON "@coneOuterAngle": {
  "maximum": 6.2832,
  "minimum": 0,
  "default": 6.2832,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
coneOuterGain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coneOuterGain" type="SFFloat" accessType="inputOutput" default="0" description="coneOuterGain is minimum gain value found outside coneOuterAngle." />
'

JSON "@coneOuterGain": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="direction of sound axis, relative to local coordinate system." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
distanceModel
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="distanceModel" type="SFString" accessType="inputOutput" default="INVERSE" additionalEnumerationValuesAllowed="false" simpleType="distanceModelChoices" baseType="SFString" description="distanceModel determines how field specifies which algorithm to use for sound attenuation, corresponding to distance between an audio source and a listener, as it moves away from the listener.">
<enumeration value="LINEAR" alias="linear" appinfo="X3D version of &quot;linear&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
<enumeration value="INVERSE" alias="inverse" appinfo="X3D version of &quot;inverse&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
<enumeration value="EXPONENTIAL" alias="exponential" appinfo="X3D version of &quot;exponential&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-distancemodeltype" />
</field>
'

JSON "@distanceModel": {
  "enum": [
    "LINEAR",
    "INVERSE",
    "EXPONENTIAL"
  ],
  "default": "INVERSE",
  "$comment": "SFString inputOutput",
  "type": "string"
}
dopplerEnabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dopplerEnabled" type="SFBool" accessType="inputOutput" default="false" description="dopplerEnabled enables/disables whether real-time Doppler effects (due to relation motion between sources and listeners) are computed by browser between virtual sound sources and active listening locations, then applied to received frequency at active listening locations." />
'

JSON "@dopplerEnabled": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
enableHRTF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enableHRTF" type="SFBool" accessType="inputOutput" default="false" description="enableHRTF enables/disables Head Related Transfer Function (HRTF) auralization, if available." />
'

JSON "@enableHRTF": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Factor [0,1] adjusting loudness (decibels) of emitted sound." />
'

JSON "@intensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of sound ellipsoid center, relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
maxDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxDistance" type="SFFloat" accessType="inputOutput" default="10000" minInclusive="0" description="maxDistance is the maximum distance where sound is renderable between source and listener, after which no reduction in sound volume occurs." />
'

JSON "@maxDistance": {
  "minimum": 0,
  "default": 10000,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
priority
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="priority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Player hint [0,1] if needed to choose which sounds to play." />
'

JSON "@priority": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
referenceDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="referenceDistance" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="referenceDistance for reducing volume as source moves further from the listener." />
'

JSON "@referenceDistance": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
rolloffFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rolloffFactor" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" description="rolloffFactor indicates how quickly volume is reduced as source moves further from listener." />
'

JSON "@rolloffFactor": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
spatialize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="spatialize" type="SFBool" accessType="initializeOnly" default="true" description="Whether to spatialize sound playback relative to viewer." />
'

JSON "@spatialize": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Sphere
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Sphere">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html#Sphere" appinfo="Sphere is a geometry node, representing a perfectly round geometrical object that is the surface of a completely round ball.">
<componentInfo name="Geometry3D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Sphere": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@radius": {
          "exclusiveMinimum": 0,
          "default": 1,
          "$comment": "SFFloat initializeOnly",
          "type": "number"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="initializeOnly" default="1" minExclusive="0" description="Size in meters." />
'

JSON "@radius": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFFloat initializeOnly",
  "type": "number"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SphereSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SphereSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#SphereSensor" appinfo="SphereSensor converts pointing device motion into a spherical rotation about the origin of the local coordinate system.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DDragSensorNode" />
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="Determines whether previous offset values are remembered/accumulated." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" description="Hover over geometry by aiming the mouse (or pointing device) to generate isOver events." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="offset" type="SFRotation" accessType="inputOutput" default="0 1 0 0" description="Sends event and remembers last value sensed." />
<field name="rotation_changed" type="SFRotation" accessType="outputOnly" description="rotation_changed events equal sum of relative bearing changes plus offset value." />
<field name="trackPoint_changed" type="SFVec3f" accessType="outputOnly" inheritedFrom="X3DDragSensorNode" description="trackPoint_changed events give intersection point of bearing with sensor's virtual geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SphereSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@autoOffset": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@offset": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
autoOffset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="autoOffset" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DDragSensorNode" description="Determines whether previous offset values are remembered/accumulated." />
'

JSON "@autoOffset": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
offset
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="offset" type="SFRotation" accessType="inputOutput" default="0 1 0 0" description="Sends event and remembers last value sensed." />
'

JSON "@offset": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SplinePositionInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SplinePositionInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#SplinePositionInterpolator" appinfo="SplinePositionInterpolator performs non-linear interpolation among paired lists of 3-tuple values and velocities to produce an SFVec3f value_changed output event.">
<componentInfo name="Interpolation" level="4" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="keyVelocity" type="MFVec3f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding use of keyValue, keyVelocity values for output computation." />
<field name="value_changed" type="SFVec3f" accessType="outputOnly" description="Nonlinearly interpolated output value computed by using current time fraction along with corresponding key, keyValue and keyVelocity values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SplinePositionInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closed": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@keyVelocity": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalizeVelocity": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
'

JSON "@closed": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec3f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
keyVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyVelocity" type="MFVec3f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyVelocity": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalizeVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
'

JSON "@normalizeVelocity": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SplinePositionInterpolator2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SplinePositionInterpolator2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#SplinePositionInterpolator2D" appinfo="SplinePositionInterpolator2D performs non-linear interpolation among paired lists of 2-tuple values and velocities to produce an SFVec2f value_changed output event.">
<componentInfo name="Interpolation" level="4" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="keyVelocity" type="MFVec2f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding use of keyValue, keyVelocity values for output computation." />
<field name="value_changed" type="SFVec2f" accessType="outputOnly" description="Nonlinearly interpolated output value computed by using current time fraction along with corresponding key, keyValue and keyVelocity values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SplinePositionInterpolator2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closed": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@keyVelocity": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalizeVelocity": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
'

JSON "@closed": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFVec2f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
keyVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyVelocity" type="MFVec2f" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyVelocity": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalizeVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
'

JSON "@normalizeVelocity": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SplineScalarInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SplineScalarInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#SplineScalarInterpolator" appinfo="SplineScalarInterpolator performs non-linear interpolation among paired lists of float values and velocities to produce an SFFloat value_changed output event.">
<componentInfo name="Interpolation" level="4" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
<field name="keyValue" type="MFFloat" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="keyVelocity" type="MFFloat" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding use of keyValue, keyVelocity values for output computation." />
<field name="value_changed" type="SFFloat" accessType="outputOnly" description="Nonlinearly interpolated output value computed by using current time fraction along with corresponding key, keyValue and keyVelocity values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SplineScalarInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@closed": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyVelocity": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalizeVelocity": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
closed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="closed" type="SFBool" accessType="inputOutput" default="false" description="Whether or not the curve is closed (i." />
'

JSON "@closed": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFFloat" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyVelocity" type="MFFloat" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyVelocity": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalizeVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
'

JSON "@normalizeVelocity": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SpotLight
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SpotLight">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html#SpotLight" appinfo="Linear attenuation may occur at level 2, full support at level 3.">
<componentInfo name="Lighting" level="2" />
<Inheritance baseType="X3DLightNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" minInclusive="0" description="Constant, linear-distance and squared-distance dropoff factors as radial distance increases from the source." />
<field name="beamWidth" type="SFFloat" accessType="inputOutput" default="0.589049" minExclusive="0" maxInclusive="1.570796" description="Inner conical solid angle (in radians) where light source has uniform full intensity.">
<componentInfo name="Lighting" level="3" />
</field>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
<field name="cutOffAngle" type="SFFloat" accessType="inputOutput" default="1.570796" minExclusive="0" maxInclusive="1.570796" description="Outer conical solid angle (in radians) where light source intensity becomes zero." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 -1" description="Orientation vector of light relative to local coordinate system." />
<field name="global" type="SFBool" accessType="inputOutput" default="true" description="Global lights illuminate all objects within their volume of lighting influence." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of light relative to local coordinate system." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
<field name="radius" type="SFFloat" accessType="inputOutput" default="100" minInclusive="0" description="Maximum effective distance of light relative to local light position, affected by ancestor scaling.">
<componentInfo name="Lighting" level="3" />
</field>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SpotLight": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@attenuation": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@beamWidth": {
          "maximum": 1.570796,
          "exclusiveMinimum": 0,
          "default": 0.589049,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@cutOffAngle": {
          "maximum": 1.570796,
          "exclusiveMinimum": 0,
          "default": 1.570796,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@global": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@radius": {
          "minimum": 0,
          "default": 100,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadowIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
attenuation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attenuation" type="SFVec3f" accessType="inputOutput" default="1 0 0" minInclusive="0" description="Constant, linear-distance and squared-distance dropoff factors as radial distance increases from the source." />
'

JSON "@attenuation": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
beamWidth
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="beamWidth" type="SFFloat" accessType="inputOutput" default="0.589049" minExclusive="0" maxInclusive="1.570796" description="Inner conical solid angle (in radians) where light source has uniform full intensity.">
<componentInfo name="Lighting" level="3" />
</field>
'

JSON "@beamWidth": {
  "maximum": 1.570796,
  "exclusiveMinimum": 0,
  "default": 0.589049,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
cutOffAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="cutOffAngle" type="SFFloat" accessType="inputOutput" default="1.570796" minExclusive="0" maxInclusive="1.570796" description="Outer conical solid angle (in radians) where light source intensity becomes zero." />
'

JSON "@cutOffAngle": {
  "maximum": 1.570796,
  "exclusiveMinimum": 0,
  "default": 1.570796,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 -1" description="Orientation vector of light relative to local coordinate system." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    }
  ],
  "items": false
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="true" description="Global lights illuminate all objects within their volume of lighting influence." />
'

JSON "@global": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
'

JSON "@intensity": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position of light relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this light source." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
radius
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radius" type="SFFloat" accessType="inputOutput" default="100" minInclusive="0" description="Maximum effective distance of light relative to local light position, affected by ancestor scaling.">
<componentInfo name="Lighting" level="3" />
</field>
'

JSON "@radius": {
  "minimum": 0,
  "default": 100,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadowIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
'

JSON "@shadowIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SquadOrientationInterpolator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SquadOrientationInterpolator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html#SquadOrientationInterpolator" appinfo="SquadOrientationInterpolator performs non-linear interpolation among paired lists of rotation values to produce an SFRotation value_changed output event.">
<componentInfo name="Interpolation" level="5" />
<Inheritance baseType="X3DInterpolatorNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
<field name="keyValue" type="MFRotation" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
<field name="set_fraction" type="SFFloat" accessType="inputOnly" inheritedFrom="X3DInterpolatorNode" description="set_fraction selects input key for corresponding use of keyValue, keyVelocity values for output computation." />
<field name="value_changed" type="SFRotation" accessType="outputOnly" description="Nonlinearly interpolated output value computed by using current time fraction along with corresponding key, keyValue and keyVelocity values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SquadOrientationInterpolator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@key": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@keyValue": {
          "$comment": "MFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalizeVelocity": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
key
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="key" type="MFFloat" accessType="inputOutput" inheritedFrom="X3DInterpolatorNode" description="Definition parameters for nonlinear-interpolation function time intervals, listed in non-decreasing order and corresponding to keyValue, keyVelocity array values." />
'

JSON "@key": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
keyValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="keyValue" type="MFRotation" accessType="inputOutput" description="Output values for nonlinear interpolation, each corresponding to an input-fraction value in the key array." />
'

JSON "@keyValue": {
  "$comment": "MFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "items": {
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalizeVelocity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalizeVelocity" type="SFBool" accessType="inputOutput" default="false" description="normalizeVelocity field specifies whether the velocity vectors are normalized to produce smooth speed transitions, or transformed into tangency vectors." />
'

JSON "@normalizeVelocity": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
StaticGroup
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="StaticGroup">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#StaticGroup" appinfo="StaticGroup is similar to Group node but does not allow access to children after creation time.">
<componentInfo name="Grouping" level="3" />
<Inheritance baseType="X3DChildNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "StaticGroup": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="initializeOnly" acceptableNodeTypes="X3DChildNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
StreamAudioDestination
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="StreamAudioDestination">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#StreamAudioDestination" appinfo="StreamAudioDestination node represents the final audio destination via a media stream.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundDestinationNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundDestinationNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundDestinationNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSoundDestinationNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundDestinationNode" description="mediaDeviceID field provides ID parameter functionality." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="streamIdentifier" type="SFString" accessType="inputOutput" description="Stream identification TBD Hint: W3C Media Capture and Streams https://www." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "StreamAudioDestination": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@mediaDeviceID": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@streamIdentifier": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundDestinationNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundDestinationNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mediaDeviceID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mediaDeviceID" type="SFString" accessType="inputOutput" inheritedFrom="X3DSoundDestinationNode" description="mediaDeviceID field provides ID parameter functionality." />
'

JSON "@mediaDeviceID": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
streamIdentifier
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="streamIdentifier" type="SFString" accessType="inputOutput" description="Stream identification TBD Hint: W3C Media Capture and Streams https://www." />
'

JSON "@streamIdentifier": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
StreamAudioSource
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="StreamAudioSource">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#StreamAudioSource" appinfo="StreamAudioSource operates as an audio source whose media is received from a MediaStream obtained using the WebRTC or Media Capture and Streams APIs.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundSourceNode" />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="streamIdentifier" type="SFString" accessType="inputOutput" description="Stream identification TBD Hint: W3C Media Capture and Streams https://www." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesSoundSource" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "StreamAudioSource": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@streamIdentifier": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundSourceNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundSourceNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
streamIdentifier
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="streamIdentifier" type="SFString" accessType="inputOutput" description="Stream identification TBD Hint: W3C Media Capture and Streams https://www." />
'

JSON "@streamIdentifier": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
StringSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="StringSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/keyDeviceSensor.html#StringSensor" appinfo="StringSensor generates events as the user presses keys on the keyboard.">
<componentInfo name="KeyDeviceSensor" level="2" />
<Inheritance baseType="X3DKeyDeviceSensorNode" />
<field name="deletionAllowed" type="SFBool" accessType="inputOutput" default="true" description="If deletionAllowed is true, then previously entered character in enteredText can be removed." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="enteredText" type="SFString" accessType="outputOnly" description="Events generated as character-producing keys are pressed on keyboard." />
<field name="finalText" type="SFString" accessType="outputOnly" description="Events generated when sequence of keystrokes matches keys in terminationText string when this condition occurs, enteredText is moved to finalText and enteredText is set to empty string." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "StringSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@deletionAllowed": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
deletionAllowed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="deletionAllowed" type="SFBool" accessType="inputOutput" default="true" description="If deletionAllowed is true, then previously entered character in enteredText can be removed." />
'

JSON "@deletionAllowed": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
SurfaceEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="SurfaceEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#SurfaceEmitter" appinfo="SurfaceEmitter generates particles from the surface of an object.">
<componentInfo name="ParticleSystems" level="2" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surface" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="The geometry node provides geometry used as the emitting surface." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GeometryContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "SurfaceEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-surface": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surface
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surface" type="SFNode" accessType="initializeOnly" default="NULL" acceptableNodeTypes="X3DGeometryNode" description="The geometry node provides geometry used as the emitting surface." />
'

JSON "-surface": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Switch
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Switch">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#Switch" appinfo="Switch is a Grouping node that only renders one (or zero) child at a time.">
<componentInfo name="Grouping" level="2" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="whichChoice" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" description="Index of active child choice, counting from 0." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesGroupLODShapeTransformSwitch" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Switch": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@whichChoice": {
          "minimum": -1,
          "default": -1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
whichChoice
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="whichChoice" type="SFInt32" accessType="inputOutput" default="-1" minInclusive="-1" description="Index of active child choice, counting from 0." />
'

JSON "@whichChoice": {
  "minimum": -1,
  "default": -1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TexCoordChaser2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TexCoordChaser2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#TexCoordChaser2D" appinfo="TexCoordChaser2D generates a series of single floating-point values that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DChaserNode" />
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
<field name="initialDestination" type="MFVec2f" accessType="initializeOnly" description="Initial destination value for this node." />
<field name="initialValue" type="MFVec2f" accessType="initializeOnly" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_destination" type="MFVec2f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="MFVec2f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="value_changed" type="MFVec2f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TexCoordChaser2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@duration": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime initializeOnly",
          "type": "number"
        },
        "@initialDestination": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
duration
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="duration" type="SFTime" accessType="initializeOnly" default="1" minInclusive="0" inheritedFrom="X3DChaserNode" description="duration is the time interval for filter response in seconds." />
'

JSON "@duration": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime initializeOnly",
  "type": "number"
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="MFVec2f" accessType="initializeOnly" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="MFVec2f" accessType="initializeOnly" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TexCoordDamper2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TexCoordDamper2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html#TexCoordDamper2D" appinfo="TexCoordDamper2D generates a series of 2D floating-point arrays that progressively change from initial value to destination value.">
<componentInfo name="Followers" level="1" />
<Inheritance baseType="X3DDamperNode" />
<field name="initialDestination" type="MFVec2f" accessType="initializeOnly" description="Initial destination value for this node." />
<field name="initialValue" type="MFVec2f" accessType="initializeOnly" description="Initial starting value for this node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DFollowerNode" description="isActive true/false events are sent when follower-node computation starts/stops." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
<field name="set_destination" type="MFVec2f" accessType="inputOnly" description="set_destination resets destination value of this node." />
<field name="set_value" type="MFVec2f" accessType="inputOnly" description="set_value resets current value of this node." />
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
<field name="value_changed" type="MFVec2f" accessType="outputOnly" description="Computed output value that approaches within tolerance of destination value, as determined by elapsed time, order and tau." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TexCoordDamper2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@initialDestination": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@initialValue": {
          "$comment": "MFVec2f initializeOnly",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@order": {
          "maximum": 5,
          "minimum": 0,
          "default": 3,
          "$comment": "SFInt32 initializeOnly",
          "type": "integer"
        },
        "@tau": {
          "minimum": 0,
          "default": 0.3,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tolerance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
initialDestination
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialDestination" type="MFVec2f" accessType="initializeOnly" description="Initial destination value for this node." />
'

JSON "@initialDestination": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
initialValue
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="initialValue" type="MFVec2f" accessType="initializeOnly" description="Initial starting value for this node." />
'

JSON "@initialValue": {
  "$comment": "MFVec2f initializeOnly",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
order
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="order" type="SFInt32" accessType="initializeOnly" default="3" minInclusive="0" maxInclusive="5" inheritedFrom="X3DDamperNode" description="order defines the number of internal filters (larger means smoother response, longer delay)." />
'

JSON "@order": {
  "maximum": 5,
  "minimum": 0,
  "default": 3,
  "$comment": "SFInt32 initializeOnly",
  "type": "integer"
}
tau
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tau" type="SFTime" accessType="inputOutput" default="0.3" minInclusive="0" inheritedFrom="X3DDamperNode" description="tau is the exponential-decay time constant for filter response in seconds." />
'

JSON "@tau": {
  "minimum": 0,
  "default": 0.3,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tolerance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tolerance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DDamperNode" description="or -1." />
'

JSON "@tolerance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Text
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Text">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html#Text" appinfo="Text is a 2D (flat) geometry node that can contain multiple lines of string values.">
<componentInfo name="Text" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="fontStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DFontStyleNode" description="The fontStyle field can contain a FontStyle or ScreenFontStyle node defining size, family, and style for presented text." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="length" type="MFFloat" accessType="inputOutput" minInclusive="0" description="Array of length values for each text string in the local coordinate system." />
<field name="lineBounds" type="MFVec2f" accessType="outputOnly" description="Array of 2D bounding box values for each line of text in the local coordinate system." />
<field name="maxExtent" type="SFFloat" accessType="inputOutput" default="0.0" minInclusive="0" description="Limits/compresses all text strings if max string length is longer than maxExtent, as measured in local coordinate system." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="origin" type="SFVec3f" accessType="outputOnly" description="origin of the text local coordinate system, in units of the coordinate system in which the Text node is embedded." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="string" type="MFString" accessType="inputOutput" description="Single or multiple string values to present as Text." />
<field name="textBounds" type="SFVec2f" accessType="outputOnly" description="2D bounding box value for all lines of text in the local coordinate system." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="TextChildContentModel" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Text": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-fontStyle": {
          "$ref": "#/$defs/-X3DFontStyleNodeSFNode"
        },
        "@length": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "minimum": 0,
            "type": "number"
          }
        },
        "@maxExtent": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@solid": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@string": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
fontStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fontStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DFontStyleNode" description="The fontStyle field can contain a FontStyle or ScreenFontStyle node defining size, family, and style for presented text." />
'

JSON "-fontStyle": {
  "$ref": "#/$defs/-X3DFontStyleNodeSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
length
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="length" type="MFFloat" accessType="inputOutput" minInclusive="0" description="Array of length values for each text string in the local coordinate system." />
'

JSON "@length": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "minimum": 0,
    "type": "number"
  }
}
maxExtent
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="maxExtent" type="SFFloat" accessType="inputOutput" default="0.0" minInclusive="0" description="Limits/compresses all text strings if max string length is longer than maxExtent, as measured in local coordinate system." />
'

JSON "@maxExtent": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
string
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="string" type="MFString" accessType="inputOutput" description="Single or multiple string values to present as Text." />
'

JSON "@string": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureBackground
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureBackground">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html#TextureBackground" appinfo="TextureBackground simulates ground and sky, using vertical arrays of wraparound color values, TextureBackground can also provide backdrop texture images on all six sides.">
<componentInfo name="EnvironmentalEffects" level="3" />
<Inheritance baseType="X3DBackgroundNode" />
<field name="backTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="event sent when node becomes active/inactive." />
<field name="bottomTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="frontTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="groundAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1.5708" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="groundColor" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the ground at the various angles on the ground partial sphere." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="event true sent when node becomes active, event false sent when unbound by another node." />
<field name="leftTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rightTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Input event set_bind=true makes this node active, input event set_bind=false makes this node inactive." />
<field name="skyAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="3.1416" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="skyColor" type="MFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the sky at various angles on the sky sphere.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
<field name="topTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" baseType="unitIntervalType" description="transparency applied to texture images, enabling an X3D scene to overlay an HTML page or desktop." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="TextureBackgroundChildContentModel" minOccurs="0" maxOccurs="6" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureBackground": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-backTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "-bottomTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "-frontTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "@groundAngle": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 1.5708,
            "minimum": 0,
            "type": "number"
          }
        },
        "@groundColor": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-leftTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-rightTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "@skyAngle": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "maximum": 3.1416,
            "minimum": 0,
            "type": "number"
          }
        },
        "@skyColor": {
          "$comment": "MFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-topTexture": {
          "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
backTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-backTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
bottomTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bottomTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-bottomTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
frontTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frontTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-frontTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
groundAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="groundAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="1.5708" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@groundAngle": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 1.5708,
    "minimum": 0,
    "type": "number"
  }
}
groundColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="groundColor" type="MFColor" accessType="inputOutput" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the ground at the various angles on the ground partial sphere." />
'

JSON "@groundColor": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
leftTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="leftTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-leftTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rightTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rightTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-rightTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
skyAngle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skyAngle" type="MFFloat" accessType="inputOutput" minInclusive="0" maxInclusive="3.1416" inheritedFrom="X3DBackgroundNode" description="The angle array values increase from 0.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@skyAngle": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "maximum": 3.1416,
    "minimum": 0,
    "type": "number"
  }
}
skyColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="skyColor" type="MFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" description="Color of the sky at various angles on the sky sphere.">
<componentInfo name="EnvironmentalEffects" level="2" />
</field>
'

JSON "@skyColor": {
  "$comment": "MFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
topTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="topTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode|MultiTexture" description="Parent TextureBackground element can contain up to six image nodes (ImageTexture PixelTexture MovieTexture MultiTexture)." />
'

JSON "-topTexture": {
  "$ref": "#/$defs/-X3DTexture2DNode-MultiTextureSFNode"
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DBackgroundNode" baseType="unitIntervalType" description="transparency applied to texture images, enabling an X3D scene to overlay an HTML page or desktop." />
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureCoordinate
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureCoordinate">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureCoordinate" appinfo="TextureCoordinate specifies 2D (s,t) texture-coordinate points, used by vertex-based geometry nodes (such as IndexedFaceSet or ElevationGrid) to map textures to vertices (and patches to NURBS surfaces).">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DSingleTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec2f" accessType="inputOutput" description="pairs of 2D (s,t) texture coordinates, either in range [0,1] or higher if repeating." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="containerFieldChoicesTextureCoordinate" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureCoordinate": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec2f" accessType="inputOutput" description="pairs of 2D (s,t) texture coordinates, either in range [0,1] or higher if repeating." />
'

JSON "@point": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureCoordinate3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureCoordinate3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureCoordinate3D" appinfo="TextureCoordinate3D specifies a set of 3D texture coordinates used by vertex-based geometry nodes (such as IndexedFaceSet or ElevationGrid) to map 3D textures to vertices.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DSingleTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec3f" accessType="inputOutput" description="triplets of 3D (s,t,r) texture coordinates, either in range [0,1] or higher if repeating." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureCoordinate3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec3f" accessType="inputOutput" description="triplets of 3D (s,t,r) texture coordinates, either in range [0,1] or higher if repeating." />
'

JSON "@point": {
  "$comment": "MFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureCoordinate4D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureCoordinate4D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureCoordinate4D" appinfo="TextureCoordinate4D specifies a set of 4D (homogeneous 3D) texture coordinates used by vertex-based geometry nodes (such as IndexedFaceSet or ElevationGrid) to map 3D textures to vertices.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DSingleTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="point" type="MFVec4f" accessType="inputOutput" description="4-tuple values of 4D texture coordinates, either in range [0,1] or higher if repeating." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureCoordinate4D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@point": {
          "$comment": "MFVec4f inputOutput",
          "type": "array",
          "minItems": 4,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
point
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="point" type="MFVec4f" accessType="inputOutput" description="4-tuple values of 4D texture coordinates, either in range [0,1] or higher if repeating." />
'

JSON "@point": {
  "$comment": "MFVec4f inputOutput",
  "type": "array",
  "minItems": 4,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureCoordinateGenerator
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureCoordinateGenerator">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureCoordinateGenerator" appinfo="TextureCoordinateGenerator computes 2D (s,t) texture-coordinate points, used by vertex-based geometry nodes (such as IndexedFaceSet or ElevationGrid) to map textures to vertices (and patches to NURBS surfaces).">
<componentInfo name="Texturing" level="2" />
<Inheritance baseType="X3DSingleTextureCoordinateNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="mode" type="SFString" accessType="inputOutput" default="SPHERE" additionalEnumerationValuesAllowed="false" simpleType="textureCoordinateGeneratorModeChoices" baseType="xs:NMTOKEN" description="parameter field defines the algorithm used to compute texture coordinates.">
<enumeration value="SPHERE" appinfo="Creates texture coordinates for a spherical environment." />
<enumeration value="CAMERASPACENORMAL" appinfo="Use vertex normal, transformed to camera space, as input texture coordinates." />
<enumeration value="CAMERASPACEPOSITION" appinfo="Use vertex position, transformed to camera space, as input texture coordinates." />
<enumeration value="CAMERASPACEREFLECTIONVECTOR" appinfo="Use reflection vector, transformed to camera space, as input texture coordinates." />
<enumeration value="SPHERE-LOCAL" appinfo="Sphere mapping but in local coordinates." />
<enumeration value="COORD" appinfo="Use vertex coordinates." />
<enumeration value="COORD-EYE" appinfo="Use vertex coordinates transformed to camera space." />
<enumeration value="NOISE" appinfo="Apply Perlin solid noise function on vertex coordinates." />
<enumeration value="NOISE-EYE" appinfo="Apply Perlin solid noise function on vertex coordinates transformed to camera space." />
<enumeration value="SPHERE-REFLECT" appinfo="similar to CAMERASPACEREFLECTIONVECTOR with optional index of refraction." />
<enumeration value="SPHERE-REFLECT-LOCAL" appinfo="Similar to SPHERE-REFLECT transformed to camera space." />
</field>
<field name="parameter" type="MFFloat" accessType="inputOutput" description="parameter array contains scale and translation (x y z) values for Perlin NOISE mode, parameter[0] contains index of refraction for SPHERE-REFLECT mode, parameter[0] contains index of refraction and parameter[1 to 3] contains the eye point in local coordinates for SPHERE-REFLECT-LOCAL mode." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="texCoord" type="containerFieldChoicesTextureCoordinate" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureCoordinateGenerator": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@mode": {
          "enum": [
            "SPHERE",
            "CAMERASPACENORMAL",
            "CAMERASPACEPOSITION",
            "CAMERASPACEREFLECTIONVECTOR",
            "SPHERE-LOCAL",
            "COORD",
            "COORD-EYE",
            "NOISE",
            "NOISE-EYE",
            "SPHERE-REFLECT",
            "SPHERE-REFLECT-LOCAL"
          ],
          "default": "SPHERE",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@parameter": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DSingleTextureCoordinateNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
mode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mode" type="SFString" accessType="inputOutput" default="SPHERE" additionalEnumerationValuesAllowed="false" simpleType="textureCoordinateGeneratorModeChoices" baseType="xs:NMTOKEN" description="parameter field defines the algorithm used to compute texture coordinates.">
<enumeration value="SPHERE" appinfo="Creates texture coordinates for a spherical environment." />
<enumeration value="CAMERASPACENORMAL" appinfo="Use vertex normal, transformed to camera space, as input texture coordinates." />
<enumeration value="CAMERASPACEPOSITION" appinfo="Use vertex position, transformed to camera space, as input texture coordinates." />
<enumeration value="CAMERASPACEREFLECTIONVECTOR" appinfo="Use reflection vector, transformed to camera space, as input texture coordinates." />
<enumeration value="SPHERE-LOCAL" appinfo="Sphere mapping but in local coordinates." />
<enumeration value="COORD" appinfo="Use vertex coordinates." />
<enumeration value="COORD-EYE" appinfo="Use vertex coordinates transformed to camera space." />
<enumeration value="NOISE" appinfo="Apply Perlin solid noise function on vertex coordinates." />
<enumeration value="NOISE-EYE" appinfo="Apply Perlin solid noise function on vertex coordinates transformed to camera space." />
<enumeration value="SPHERE-REFLECT" appinfo="similar to CAMERASPACEREFLECTIONVECTOR with optional index of refraction." />
<enumeration value="SPHERE-REFLECT-LOCAL" appinfo="Similar to SPHERE-REFLECT transformed to camera space." />
</field>
'

JSON "@mode": {
  "enum": [
    "SPHERE",
    "CAMERASPACENORMAL",
    "CAMERASPACEPOSITION",
    "CAMERASPACEREFLECTIONVECTOR",
    "SPHERE-LOCAL",
    "COORD",
    "COORD-EYE",
    "NOISE",
    "NOISE-EYE",
    "SPHERE-REFLECT",
    "SPHERE-REFLECT-LOCAL"
  ],
  "default": "SPHERE",
  "$comment": "SFString inputOutput",
  "type": "string"
}
parameter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="parameter" type="MFFloat" accessType="inputOutput" description="parameter array contains scale and translation (x y z) values for Perlin NOISE mode, parameter[0] contains index of refraction for SPHERE-REFLECT mode, parameter[0] contains index of refraction and parameter[1 to 3] contains the eye point in local coordinates for SPHERE-REFLECT-LOCAL mode." />
'

JSON "@parameter": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureProjector
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureProjector">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/textureProjector.html#TextureProjector" appinfo="TextureProjector is similar to a light that projects a texture into the scene, illuminating geometry that intersects the perspective projection volume.">
<componentInfo name="TextureProjection" level="2" />
<Inheritance baseType="X3DTextureProjectorNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
<field name="aspectRatio" type="SFFloat" accessType="outputOnly" minExclusive="0" inheritedFrom="X3DTextureProjectorNode" description="aspectRatio is the ratio of width and height that is projected." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureProjectorNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" inheritedFrom="X3DTextureProjectorNode" description="Direction for projection." />
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="maximum distance necessary for texture display." />
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minInclusive="0" maxInclusive="3.1416" description="Preferred minimum viewing angle for this projection in radians, providing minimum height or minimum width (whichever is smaller)." />
<field name="global" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DTextureProjectorNode" description="Global texture projection illuminates all objects within their volume of influence." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DTextureProjectorNode" description="Position of center of texture projection relative to local coordinate system." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="minimum distance necessary for texture display." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this texture projection source." />
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" inheritedFrom="X3DTextureProjectorNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
<field name="upVector" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="upVector describes the roll of the camera by saying which direction is up for the camera's orientation." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureProjector": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@farDistance": {
          "minimum": -1,
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@fieldOfView": {
          "maximum": 3.1416,
          "minimum": 0,
          "default": 0.7854,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@global": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@nearDistance": {
          "minimum": -1,
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@shadowIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-texture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "@upVector": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureProjectorNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" inheritedFrom="X3DTextureProjectorNode" description="Direction for projection." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
farDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="maximum distance necessary for texture display." />
'

JSON "@farDistance": {
  "minimum": -1,
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
fieldOfView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minInclusive="0" maxInclusive="3.1416" description="Preferred minimum viewing angle for this projection in radians, providing minimum height or minimum width (whichever is smaller)." />
'

JSON "@fieldOfView": {
  "maximum": 3.1416,
  "minimum": 0,
  "default": 0.7854,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DTextureProjectorNode" description="Global texture projection illuminates all objects within their volume of influence." />
'

JSON "@global": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
'

JSON "@intensity": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DTextureProjectorNode" description="Position of center of texture projection relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
nearDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="minimum distance necessary for texture display." />
'

JSON "@nearDistance": {
  "minimum": -1,
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this texture projection source." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
shadowIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
'

JSON "@shadowIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
texture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" inheritedFrom="X3DTextureProjectorNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
'

JSON "-texture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
upVector
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="upVector" type="SFVec3f" accessType="inputOutput" default="0 0 1" description="upVector describes the roll of the camera by saying which direction is up for the camera's orientation." />
'

JSON "@upVector": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureProjectorParallel
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureProjectorParallel">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/textureProjector.html#TextureProjectorParallel" appinfo="TextureProjectorParallel is similar to a light that projects a texture into the scene, illuminating geometry that intersects the parallel projection volume.">
<componentInfo name="TextureProjection" level="2" />
<Inheritance baseType="X3DTextureProjectorNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
<field name="aspectRatio" type="SFFloat" accessType="outputOnly" minExclusive="0" inheritedFrom="X3DTextureProjectorNode" description="aspectRatio is the ratio of width and height that is projected." />
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureProjectorNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" inheritedFrom="X3DTextureProjectorNode" description="Direction for projection." />
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="maximum distance necessary for texture display." />
<field name="fieldOfView" type="SFVec4f" accessType="inputOutput" default="-1 -1 1 1" description="Minimum and maximum extents of projection texture in units of local coordinate system." />
<field name="global" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DTextureProjectorNode" description="Global texture projection illuminates all objects within their volume of influence." />
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DTextureProjectorNode" description="Position of center of texture projection relative to local coordinate system." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="minimum distance necessary for texture display." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this texture projection source." />
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" inheritedFrom="X3DTextureProjectorNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureProjectorParallel": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@color": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@farDistance": {
          "minimum": -1,
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@fieldOfView": {
          "$comment": "SFVec4f inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": -1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@global": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intensity": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@location": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@nearDistance": {
          "minimum": -1,
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@shadowIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@shadows": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-texture": {
          "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="Brightness of ambient (nondirectional background) emission from the light." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" description="color of light, applied to colors of objects." />
'

JSON "@color": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTextureProjectorNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 0 1" inheritedFrom="X3DTextureProjectorNode" description="Direction for projection." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
farDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="maximum distance necessary for texture display." />
'

JSON "@farDistance": {
  "minimum": -1,
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
fieldOfView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldOfView" type="SFVec4f" accessType="inputOutput" default="-1 -1 1 1" description="Minimum and maximum extents of projection texture in units of local coordinate system." />
'

JSON "@fieldOfView": {
  "$comment": "SFVec4f inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": -1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
global
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="global" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DTextureProjectorNode" description="Global texture projection illuminates all objects within their volume of influence." />
'

JSON "@global": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DLightNode" description="Brightness of direct emission from the light." />
'

JSON "@intensity": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
location
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="location" type="SFVec3f" accessType="inputOutput" default="0 0 0" inheritedFrom="X3DTextureProjectorNode" description="Position of center of texture projection relative to local coordinate system." />
'

JSON "@location": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
nearDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" minInclusive="-1" inheritedFrom="X3DTextureProjectorNode" description="minimum distance necessary for texture display." />
'

JSON "@nearDistance": {
  "minimum": -1,
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DLightNode" description="Enables/disables this texture projection source." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
shadowIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadowIntensity" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" maxInclusive="1" inheritedFrom="X3DLightNode" baseType="unitIntervalType" description="shadowIntensity field defines how much light is obscured by shapes that cast shadows, ranging from 0 (light not obscured, no visible shadows) to 1 (light completely obscured, full-intensity shadows)." />
'

JSON "@shadowIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
shadows
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shadows" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DLightNode" description="shadows field indicates whether or not this light casts a shadow behind illuminated X3DShapeNode geometry." />
'

JSON "@shadows": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
texture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture2DNode" inheritedFrom="X3DTextureProjectorNode" description="Single contained texture node (ImageTexture, MovieTexture, PixelTexture, MultiTexture) that maps image(s) to surface geometry." />
'

JSON "-texture": {
  "$ref": "#/$defs/-X3DTexture2DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureProperties
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureProperties">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureProperties" appinfo="TextureProperties allows precise fine-grained control over application of image textures to geometry.">
<componentInfo name="Texturing" level="2" />
<Inheritance baseType="X3DNode" />
<field name="anisotropicDegree" type="SFFloat" accessType="inputOutput" default="1" minInclusive="1" description="anisotropicDegree defines minimum degree of anisotropy to account for in texture filtering (1=no effect for symmetric filtering, otherwise provide higher value)." />
<field name="borderColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 0" minInclusive="0" maxInclusive="1" description="borderColor defines border pixel color." />
<field name="borderWidth" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="borderWidth number of pixels for texture border." />
<field name="boundaryModeR" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeR describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
<field name="boundaryModeS" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeS describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
<field name="boundaryModeT" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeT describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
<field name="generateMipMaps" type="SFBool" accessType="initializeOnly" default="false" description="Determines whether MIPMAPs are generated for texture images." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="magnificationFilter" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureMagnificationModeChoices" baseType="xs:NMTOKEN" description="magnificationFilter indicates texture filter when image is smaller than screen space representation.">
<enumeration value="AVG_PIXEL" appinfo="weighted average of four texture elements closest to center of pixel being textured." />
<enumeration value="DEFAULT" appinfo="browser-specified default magnification mode." />
<enumeration value="FASTEST" appinfo="fastest method available." />
<enumeration value="NEAREST_PIXEL" appinfo="texture element nearest to the center of pixel being textured." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="minificationFilter" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureMinificationModeChoices" baseType="xs:NMTOKEN" description="minificationFilter indicates texture filter when image is larger than screen space representation.">
<enumeration value="AVG_PIXEL" appinfo="weighted average of four texture elements closest to center of pixel being textured." />
<enumeration value="AVG_PIXEL_AVG_MIPMAP" appinfo="tri-linear mipmap filtering." />
<enumeration value="AVG_PIXEL_NEAREST_MIPMAP" appinfo="choose mipmap that most closely matches size of pixel being textured, use weighted average of four texture elements closest to center of pixel." />
<enumeration value="DEFAULT" appinfo="browser-specified default minification mode." />
<enumeration value="FASTEST" appinfo="fastest method available, use mipmaps if possible." />
<enumeration value="NEAREST_PIXEL" appinfo="texture element nearest to center of pixel being textured." />
<enumeration value="NEAREST_PIXEL_AVG_MIPMAP" appinfo="texture element nearest to center of pixel being textured, use average of two nearest mipmaps." />
<enumeration value="NEAREST_PIXEL_NEAREST_MIPMAP" appinfo="texture element nearest to center of pixel being textured, use nearest mipmap." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
<field name="textureCompression" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureCompressionModeChoices" baseType="xs:NMTOKEN" description="textureCompression indicates compression algorithm selection mode.">
<enumeration value="DEFAULT" appinfo="browser-specified default compression mode." />
<enumeration value="FASTEST" appinfo="fastest method available." />
<enumeration value="HIGH" appinfo="greatest amount of compression." />
<enumeration value="LOW" appinfo="least amount of compression." />
<enumeration value="MEDIUM" appinfo="moderate amount of compressions." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
<field name="texturePriority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="texturePriority defines relative priority for this texture when allocating texture memory, an important rendering resource in graphics-card hardware." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="textureProperties" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureProperties": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@anisotropicDegree": {
          "minimum": 1,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@borderColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@borderWidth": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@boundaryModeR": {
          "enum": [
            "CLAMP",
            "CLAMP_TO_EDGE",
            "CLAMP_TO_BOUNDARY",
            "MIRRORED_REPEAT",
            "REPEAT"
          ],
          "default": "REPEAT",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@boundaryModeS": {
          "enum": [
            "CLAMP",
            "CLAMP_TO_EDGE",
            "CLAMP_TO_BOUNDARY",
            "MIRRORED_REPEAT",
            "REPEAT"
          ],
          "default": "REPEAT",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@boundaryModeT": {
          "enum": [
            "CLAMP",
            "CLAMP_TO_EDGE",
            "CLAMP_TO_BOUNDARY",
            "MIRRORED_REPEAT",
            "REPEAT"
          ],
          "default": "REPEAT",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@generateMipMaps": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@magnificationFilter": {
          "enum": [
            "AVG_PIXEL",
            "DEFAULT",
            "FASTEST",
            "NEAREST_PIXEL",
            "NICEST"
          ],
          "default": "FASTEST",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@minificationFilter": {
          "enum": [
            "AVG_PIXEL",
            "AVG_PIXEL_AVG_MIPMAP",
            "AVG_PIXEL_NEAREST_MIPMAP",
            "DEFAULT",
            "FASTEST",
            "NEAREST_PIXEL",
            "NEAREST_PIXEL_AVG_MIPMAP",
            "NEAREST_PIXEL_NEAREST_MIPMAP",
            "NICEST"
          ],
          "default": "FASTEST",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@textureCompression": {
          "enum": [
            "DEFAULT",
            "FASTEST",
            "HIGH",
            "LOW",
            "MEDIUM",
            "NICEST"
          ],
          "default": "FASTEST",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@texturePriority": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
anisotropicDegree
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="anisotropicDegree" type="SFFloat" accessType="inputOutput" default="1" minInclusive="1" description="anisotropicDegree defines minimum degree of anisotropy to account for in texture filtering (1=no effect for symmetric filtering, otherwise provide higher value)." />
'

JSON "@anisotropicDegree": {
  "minimum": 1,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
borderColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="borderColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 0 0" minInclusive="0" maxInclusive="1" description="borderColor defines border pixel color." />
'

JSON "@borderColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
borderWidth
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="borderWidth" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="borderWidth number of pixels for texture border." />
'

JSON "@borderWidth": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
boundaryModeR
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="boundaryModeR" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeR describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
'

JSON "@boundaryModeR": {
  "enum": [
    "CLAMP",
    "CLAMP_TO_EDGE",
    "CLAMP_TO_BOUNDARY",
    "MIRRORED_REPEAT",
    "REPEAT"
  ],
  "default": "REPEAT",
  "$comment": "SFString inputOutput",
  "type": "string"
}
boundaryModeS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="boundaryModeS" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeS describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
'

JSON "@boundaryModeS": {
  "enum": [
    "CLAMP",
    "CLAMP_TO_EDGE",
    "CLAMP_TO_BOUNDARY",
    "MIRRORED_REPEAT",
    "REPEAT"
  ],
  "default": "REPEAT",
  "$comment": "SFString inputOutput",
  "type": "string"
}
boundaryModeT
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="boundaryModeT" type="SFString" accessType="inputOutput" default="REPEAT" additionalEnumerationValuesAllowed="false" simpleType="textureBoundaryModeChoices" baseType="xs:NMTOKEN" description="boundaryModeT describes handling of texture-coordinate boundaries.">
<enumeration value="CLAMP" appinfo="Clamp texture coordinates to range [0,1]." />
<enumeration value="CLAMP_TO_EDGE" appinfo="Clamp texture coordinates such that a border texel is never sampled." />
<enumeration value="CLAMP_TO_BOUNDARY" appinfo="Clamp texture coordinates such that texture samples are border texels for fragments." />
<enumeration value="MIRRORED_REPEAT" appinfo="Texture coordinates are mirrored and then clamped as in CLAMP_TO_EDGE." />
<enumeration value="REPEAT" appinfo="Repeat a texture across the fragment." />
</field>
'

JSON "@boundaryModeT": {
  "enum": [
    "CLAMP",
    "CLAMP_TO_EDGE",
    "CLAMP_TO_BOUNDARY",
    "MIRRORED_REPEAT",
    "REPEAT"
  ],
  "default": "REPEAT",
  "$comment": "SFString inputOutput",
  "type": "string"
}
generateMipMaps
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="generateMipMaps" type="SFBool" accessType="initializeOnly" default="false" description="Determines whether MIPMAPs are generated for texture images." />
'

JSON "@generateMipMaps": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
magnificationFilter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="magnificationFilter" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureMagnificationModeChoices" baseType="xs:NMTOKEN" description="magnificationFilter indicates texture filter when image is smaller than screen space representation.">
<enumeration value="AVG_PIXEL" appinfo="weighted average of four texture elements closest to center of pixel being textured." />
<enumeration value="DEFAULT" appinfo="browser-specified default magnification mode." />
<enumeration value="FASTEST" appinfo="fastest method available." />
<enumeration value="NEAREST_PIXEL" appinfo="texture element nearest to the center of pixel being textured." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
'

JSON "@magnificationFilter": {
  "enum": [
    "AVG_PIXEL",
    "DEFAULT",
    "FASTEST",
    "NEAREST_PIXEL",
    "NICEST"
  ],
  "default": "FASTEST",
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
minificationFilter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="minificationFilter" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureMinificationModeChoices" baseType="xs:NMTOKEN" description="minificationFilter indicates texture filter when image is larger than screen space representation.">
<enumeration value="AVG_PIXEL" appinfo="weighted average of four texture elements closest to center of pixel being textured." />
<enumeration value="AVG_PIXEL_AVG_MIPMAP" appinfo="tri-linear mipmap filtering." />
<enumeration value="AVG_PIXEL_NEAREST_MIPMAP" appinfo="choose mipmap that most closely matches size of pixel being textured, use weighted average of four texture elements closest to center of pixel." />
<enumeration value="DEFAULT" appinfo="browser-specified default minification mode." />
<enumeration value="FASTEST" appinfo="fastest method available, use mipmaps if possible." />
<enumeration value="NEAREST_PIXEL" appinfo="texture element nearest to center of pixel being textured." />
<enumeration value="NEAREST_PIXEL_AVG_MIPMAP" appinfo="texture element nearest to center of pixel being textured, use average of two nearest mipmaps." />
<enumeration value="NEAREST_PIXEL_NEAREST_MIPMAP" appinfo="texture element nearest to center of pixel being textured, use nearest mipmap." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
'

JSON "@minificationFilter": {
  "enum": [
    "AVG_PIXEL",
    "AVG_PIXEL_AVG_MIPMAP",
    "AVG_PIXEL_NEAREST_MIPMAP",
    "DEFAULT",
    "FASTEST",
    "NEAREST_PIXEL",
    "NEAREST_PIXEL_AVG_MIPMAP",
    "NEAREST_PIXEL_NEAREST_MIPMAP",
    "NICEST"
  ],
  "default": "FASTEST",
  "$comment": "SFString inputOutput",
  "type": "string"
}
textureCompression
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="textureCompression" type="SFString" accessType="inputOutput" default="FASTEST" additionalEnumerationValuesAllowed="false" simpleType="textureCompressionModeChoices" baseType="xs:NMTOKEN" description="textureCompression indicates compression algorithm selection mode.">
<enumeration value="DEFAULT" appinfo="browser-specified default compression mode." />
<enumeration value="FASTEST" appinfo="fastest method available." />
<enumeration value="HIGH" appinfo="greatest amount of compression." />
<enumeration value="LOW" appinfo="least amount of compression." />
<enumeration value="MEDIUM" appinfo="moderate amount of compressions." />
<enumeration value="NICEST" appinfo="highest quality method available." />
</field>
'

JSON "@textureCompression": {
  "enum": [
    "DEFAULT",
    "FASTEST",
    "HIGH",
    "LOW",
    "MEDIUM",
    "NICEST"
  ],
  "default": "FASTEST",
  "$comment": "SFString inputOutput",
  "type": "string"
}
texturePriority
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texturePriority" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="texturePriority defines relative priority for this texture when allocating texture memory, an important rendering resource in graphics-card hardware." />
'

JSON "@texturePriority": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureTransform
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureTransform">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html#TextureTransform" appinfo="TextureTransform shifts 2D texture coordinates for positioning, orienting and scaling image textures on geometry.">
<componentInfo name="Texturing" level="1" />
<Inheritance baseType="X3DTextureTransformNode" />
<field name="center" type="SFVec2f" accessType="inputOutput" default="0 0" description="center point in 2D (s,t) texture coordinates for rotation and scaling." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rotation" type="SFFloat" accessType="inputOutput" default="0" description="single rotation angle of texture about center (opposite effect appears on geometry)." />
<field name="scale" type="SFVec2f" accessType="inputOutput" default="1 1" description="Non-uniform planar scaling of texture about center (opposite effect appears on geometry)." />
<field name="translation" type="SFVec2f" accessType="inputOutput" default="0 0" description="Lateral/vertical shift in 2D (s,t) texture coordinates (opposite effect appears on geometry)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="textureTransform" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureTransform": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@scale": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@translation": {
          "$comment": "SFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec2f" accessType="inputOutput" default="0 0" description="center point in 2D (s,t) texture coordinates for rotation and scaling." />
'

JSON "@center": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFFloat" accessType="inputOutput" default="0" description="single rotation angle of texture about center (opposite effect appears on geometry)." />
'

JSON "@rotation": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec2f" accessType="inputOutput" default="1 1" description="Non-uniform planar scaling of texture about center (opposite effect appears on geometry)." />
'

JSON "@scale": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 1,
    "type": "number"
  }
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec2f" accessType="inputOutput" default="0 0" description="Lateral/vertical shift in 2D (s,t) texture coordinates (opposite effect appears on geometry)." />
'

JSON "@translation": {
  "$comment": "SFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "maxItems": 2,
  "items": {
    "default": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureTransform3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureTransform3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransform3D" appinfo="TextureTransform3D applies a 3D transformation to texture coordinates.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DTextureTransformNode" />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="center point in 2D (s,t) texture coordinates for rotation and scaling." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="rotation angle of texture about center (opposite effect appears on geometry)." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform planar scaling of texture about center (opposite effect appears on geometry)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Lateral/vertical shift in 2D (s,t) texture coordinates (opposite effect appears on geometry)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="textureTransform" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureTransform3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="center point in 2D (s,t) texture coordinates for rotation and scaling." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="rotation angle of texture about center (opposite effect appears on geometry)." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform planar scaling of texture about center (opposite effect appears on geometry)." />
'

JSON "@scale": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "type": "number"
  }
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Lateral/vertical shift in 2D (s,t) texture coordinates (opposite effect appears on geometry)." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TextureTransformMatrix3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TextureTransformMatrix3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html#TextureTransformMatrix3D" appinfo="TextureTransformMatrix3D applies a 3D transformation to texture coordinates.">
<componentInfo name="Texturing3D" level="1" />
<Inheritance baseType="X3DTextureTransformNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="matrix" type="SFMatrix4f" accessType="inputOutput" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1" description="matrix is a generalized, unfiltered 4x4 transformation matrix to modify texture (opposite effect appears on geometry)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="textureTransform" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TextureTransformMatrix3D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@mapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@matrix": {
          "$comment": "SFMatrix4f inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            }
          ],
          "items": false
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mapping" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@mapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
matrix
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="matrix" type="SFMatrix4f" accessType="inputOutput" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1" description="matrix is a generalized, unfiltered 4x4 transformation matrix to modify texture (opposite effect appears on geometry)." />
'

JSON "@matrix": {
  "$comment": "SFMatrix4f inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    }
  ],
  "items": false
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TimeSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TimeSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/time.html#TimeSensor" appinfo="TimeSensor continuously generates events as time passes.">
<componentInfo name="Time" level="1" />
<Inheritance baseType="X3DTimeDependentNode" />
<AdditionalInheritance baseType="X3DSensorNode" />
<field name="cycleInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="cycleInterval is loop duration in seconds." />
<field name="cycleTime" type="SFTime" accessType="outputOnly" minInclusive="0" description="cycleTime sends a time outputOnly at startTime, and also at the beginning of each new cycle (useful for synchronization with other time-based objects)." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since TimeSensor activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="fraction_changed" type="SFFloat" accessType="outputOnly" description="fraction_changed continuously sends value in range [0,1] showing time progress in the current cycle." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when TimeSensor starts/stops running." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when TimeSensor is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and TimeSensor becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and TimeSensor becomes inactive.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= startTime, isActive becomes true and TimeSensor becomes active." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When stopTime becomes &lt;= time now, isActive becomes false and TimeSensor becomes inactive." />
<field name="time" type="SFTime" accessType="outputOnly" minInclusive="0" description="Time continuously sends the absolute time (value 0." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TimeSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@cycleInterval": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@loop": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
cycleInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="cycleInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="cycleInterval is loop duration in seconds." />
'

JSON "@cycleInterval": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
loop
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="loop" type="SFBool" accessType="inputOutput" default="false" description="Repeat indefinitely when loop=true, repeat only once when loop=false." />
'

JSON "@loop": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and TimeSensor becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and TimeSensor becomes inactive.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= startTime, isActive becomes true and TimeSensor becomes active." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When stopTime becomes &lt;= time now, isActive becomes false and TimeSensor becomes inactive." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TimeTrigger
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TimeTrigger">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html#TimeTrigger" appinfo="TimeTrigger converts boolean true events to time events.">
<componentInfo name="EventUtilities" level="1" />
<Inheritance baseType="X3DTriggerNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="set_boolean" type="SFBool" accessType="inputOnly" description="If input event set_boolean is true, send output triggerTime event." />
<field name="triggerTime" type="SFTime" accessType="outputOnly" description="triggerTime is output time event, sent when input event set_boolean is true." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TimeTrigger": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ToneMappedVolumeStyle
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ToneMappedVolumeStyle">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#ToneMappedVolumeStyle" appinfo="ToneMappedVolumeStyle specifies that volumetric data is rendered with Gooch shading model of two-toned warm/cool coloring.">
<componentInfo name="VolumeRendering" level="2" />
<Inheritance baseType="X3DComposableVolumeRenderStyleNode" />
<field name="coolColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 1 0" minInclusive="0" maxInclusive="1" description="coolColor is used for surfaces facing away from the light direction." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
<field name="warmColor" type="SFColorRGBA" accessType="inputOutput" default="1 1 0 0" minInclusive="0" maxInclusive="1" description="warmColor is used for surfaces facing towards the light." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="renderStyle" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ToneMappedVolumeStyle": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@coolColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-surfaceNormals": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@warmColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColorRGBA inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
coolColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coolColor" type="SFColorRGBA" accessType="inputOutput" default="0 0 1 0" minInclusive="0" maxInclusive="1" description="coolColor is used for surfaces facing away from the light direction." />
'

JSON "@coolColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeRenderStyleNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
surfaceNormals
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceNormals" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="The surfaceNormals field contains a 3D texture with at least three component values." />
'

JSON "-surfaceNormals": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
warmColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="warmColor" type="SFColorRGBA" accessType="inputOutput" default="1 1 0 0" minInclusive="0" maxInclusive="1" description="warmColor is used for surfaces facing towards the light." />
'

JSON "@warmColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColorRGBA inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": false
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TouchSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TouchSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html#TouchSensor" appinfo="TouchSensor tracks location and state of the pointing device, detecting when a user points at or selects (activates) geometry.">
<componentInfo name="PointingDeviceSensor" level="1" />
<Inheritance baseType="X3DTouchSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="hitNormal_changed" type="SFVec3f" accessType="outputOnly" description="When pointing device selects geometry, send event containing surface normal vector at the hitPoint." />
<field name="hitPoint_changed" type="SFVec3f" accessType="outputOnly" description="When pointing device selects geometry, send event containing 3D point on surface of underlying geometry, as measured in reference frame for TouchSensor's local coordinate system." />
<field name="hitTexCoord_changed" type="SFVec2f" accessType="outputOnly" description="When pointing device selects geometry, send event containing texture coordinates of surface at the hitPoint." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="Select geometry by activating the pointing device (for example, clicking the mouse) to generate isActive events." />
<field name="isOver" type="SFBool" accessType="outputOnly" inheritedFrom="X3DPointingDeviceSensorNode" description="Hover over geometry by aiming the mouse (or pointing device) to generate isOver events." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="touchTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DTouchSensorNode" description="Time event generated when sensor is touched by pointing device, and then deselected by the user." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TouchSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of this node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Transform
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Transform">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html#Transform" appinfo="Transform is a Grouping node that can contain most nodes.">
<componentInfo name="Grouping" level="1" />
<Inheritance baseType="X3DGroupingNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesGroupLODShapeTransformSwitch" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Transform": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@rotation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@scale": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "type": "number"
          }
        },
        "@scaleOrientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@translation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system, applied prior to rotation or scaling." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
rotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rotation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Orientation (axis, angle in radians) of children relative to local coordinate system." />
'

JSON "@rotation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
scale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scale" type="SFVec3f" accessType="inputOutput" default="1 1 1" description="Non-uniform x-y-z scale of child coordinate system, adjusted by center and scaleOrientation." />
'

JSON "@scale": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "type": "number"
  }
}
scaleOrientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scaleOrientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" description="Preliminary rotation of coordinate system before scaling (to allow scaling around arbitrary orientations)." />
'

JSON "@scaleOrientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
translation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="translation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Position (x, y, z in meters) of children relative to local coordinate system." />
'

JSON "@translation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TransformSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TransformSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html#TransformSensor" appinfo="TransformSensor generates output events when its targetObject enters, exits, and moves within a region in space (defined by a box).">
<componentInfo name="EnvironmentalSensor" level="3" />
<Inheritance baseType="X3DEnvironmentalSensorNode" />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="enterTime" type="SFTime" accessType="outputOnly" description="Time event generated when targetObject enters the box region for sensor." />
<field name="exitTime" type="SFTime" accessType="outputOnly" description="Time event generated when targetObject exits the box region for sensor." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent when triggering the sensor." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="orientation_changed" type="SFRotation" accessType="outputOnly" description="Sends rotation event relative to center whenever the target object is contained within the box region and results change." />
<field name="position_changed" type="SFVec3f" accessType="outputOnly" description="Sends translation event relative to center whenever the target object is contained within the box region and results change." />
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of transformation-traccking box around center location, oriented within local transformation frame." />
<field name="targetObject" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode" description="targetObject is the movable geometry represented by any valid X3DGroupingNode or X3DShapeNode which may enter or exit the box." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Anchor" />
<NodeContentModel name="Billboard" />
<NodeContentModel name="Collision" />
<NodeContentModel name="Group" />
<NodeContentModel name="LOD" />
<NodeContentModel name="Shape" />
<NodeContentModel name="StaticGroup" />
<NodeContentModel name="Switch" />
<NodeContentModel name="Transform" />
<NodeContentModel name="EspduTransform" />
<NodeContentModel name="ReceiverPdu" />
<NodeContentModel name="SignalPdu" />
<NodeContentModel name="TransmitterPdu" />
<NodeContentModel name="CADAssembly" />
<NodeContentModel name="CADLayer" />
<NodeContentModel name="CADPart" />
<NodeContentModel name="GeoLocation" />
<NodeContentModel name="GeoLOD" />
<NodeContentModel name="GeoTransform" />
<NodeContentModel name="HAnimJoint" />
<NodeContentModel name="HAnimSegment" />
<NodeContentModel name="HAnimSite" />
<NodeContentModel name="PickableGroup" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TransformSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "-targetObject": {
          "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of transformation-traccking box around center location, oriented within local transformation frame." />
'

JSON "@size": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
targetObject
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="targetObject" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode" description="targetObject is the movable geometry represented by any valid X3DGroupingNode or X3DShapeNode which may enter or exit the box." />
'

JSON "-targetObject": {
  "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TransmitterPdu
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TransmitterPdu">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html#TransmitterPdu" appinfo="TransmitterPdu is a networked Protocol Data Unit (PDU) information node that provides detailed information about a radio transmitter modeled in a simulation.">
<componentInfo name="DIS" level="1" />
<Inheritance baseType="X3DNetworkSensorNode" />
<AdditionalInheritance baseType="X3DBoundedObject" />
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
<field name="antennaLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="World coordinates for antenna location." />
<field name="antennaPatternLength" type="SFInt32" accessType="inputOutput" default="0" description="." />
<field name="antennaPatternType" type="SFInt32" accessType="inputOutput" default="0" description="Antenna shape pattern: 0 for omnidirectional, 1 for beam, 2 for spherical harmonic (deprecated), or optional higher value." />
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="cryptoKeyID" type="SFInt32" accessType="inputOutput" default="0" description="Nonzero value corresponding to the simulated cryptographic key." />
<field name="cryptoSystem" type="SFInt32" accessType="inputOutput" default="0" description="Indicates type of crypto system being used, even if the encryption equipment is not keyed." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
<field name="frequency" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="Transmission frequency in Hz." />
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
<field name="inputSource" type="SFInt32" accessType="inputOutput" default="0" description="Source of transmission input." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="confirm whether there has been a recent network update." />
<field name="isNetworkReader" type="SFBool" accessType="outputOnly" description="Whether networkMode='remote' (listen to network as copy of remote entity)." />
<field name="isNetworkWriter" type="SFBool" accessType="outputOnly" description="Whether networkMode='master' (output to network as master entity at writeInterval)." />
<field name="isRtpHeaderHeard" type="SFBool" accessType="outputOnly" description="Whether incoming DIS packets have an RTP header prepended." />
<field name="isStandAlone" type="SFBool" accessType="outputOnly" description="Whether networkMode='local' (ignore network but still respond to local events)." />
<field name="lengthOfModulationParameters" type="SFInt32" accessType="inputOutput" default="0" description="." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="modulationTypeDetail" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing detailed information depending on the major modulation type." />
<field name="modulationTypeMajor" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing major classification of the modulation type." />
<field name="modulationTypeSpreadSpectrum" type="SFInt32" accessType="inputOutput" default="0" description="Indicates the spread spectrum technique or combination of spread spectrum techniques in use." />
<field name="modulationTypeSystem" type="SFInt32" accessType="inputOutput" default="0" description="Specifies radio system associated with this Transmitter PDU and used to interpret other fields whose values depend on a specific radio system." />
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
<field name="power" type="SFFloat" accessType="inputOutput" default="0.0" description="Power that radio would be capable of outputting if on and transmitting, independent of actual transmit state of the radio." />
<field name="radioEntityTypeCategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing EntityType of transmitter radio." />
<field name="radioEntityTypeCountry" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
<field name="radioEntityTypeDomain" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
<field name="radioEntityTypeKind" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
<field name="radioEntityTypeNomenclature" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value indicating nomenclature (name) for a particular emitter." />
<field name="radioEntityTypeNomenclatureVersion" type="SFInt32" accessType="inputOutput" default="0" description="Named equipment version number." />
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
<field name="relativeAntennaLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Relative coordinates for antenna location." />
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
<field name="timestamp" type="SFTime" accessType="outputOnly" minInclusive="0" description="DIS timestamp in X3D units (value 0." />
<field name="transmitFrequencyBandwidth" type="SFFloat" accessType="inputOutput" default="0" description="Bandwidth of the particular transmitter measured between the half-power (-3 dB) points (this value represents total bandwidth, not the deviation from the center frequency)." />
<field name="transmitState" type="SFInt32" accessType="inputOutput" default="0" description="Specify radio transmission state where enumerations value 0 is for off, value 1 for powered but not transmitting, or value 1 is for powered and transmitting,." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TransmitterPdu": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@address": {
          "default": "localhost",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@antennaLocation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@antennaPatternLength": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@antennaPatternType": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@applicationID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@cryptoKeyID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@cryptoSystem": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@entityID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@frequency": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@geoCoords": {
          "$comment": "SFVec3d inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@geoSystem": {
          "$ref": "#/$defs/@geoSystem"
        },
        "@inputSource": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@lengthOfModulationParameters": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@modulationTypeDetail": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@modulationTypeMajor": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@modulationTypeSpreadSpectrum": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@modulationTypeSystem": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@multicastRelayHost": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@multicastRelayPort": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@networkMode": {
          "enum": [
            "standAlone",
            "networkReader",
            "networkWriter"
          ],
          "default": "standAlone",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@port": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@power": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@radioEntityTypeCategory": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioEntityTypeCountry": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioEntityTypeDomain": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioEntityTypeKind": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioEntityTypeNomenclature": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioEntityTypeNomenclatureVersion": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@radioID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@readInterval": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@relativeAntennaLocation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@rtpHeaderExpected": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@siteID": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@transmitFrequencyBandwidth": {
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@transmitState": {
          "default": 0,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@whichGeometry": {
          "default": 1,
          "$comment": "SFInt32 inputOutput",
          "type": "integer"
        },
        "@writeInterval": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
address
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="address" type="SFString" accessType="inputOutput" default="localhost" description="Multicast network address, or else 'localhost'." />
'

JSON "@address": {
  "default": "localhost",
  "$comment": "SFString inputOutput",
  "type": "string"
}
antennaLocation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="antennaLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="World coordinates for antenna location." />
'

JSON "@antennaLocation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
antennaPatternLength
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="antennaPatternLength" type="SFInt32" accessType="inputOutput" default="0" description="." />
'

JSON "@antennaPatternLength": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
antennaPatternType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="antennaPatternType" type="SFInt32" accessType="inputOutput" default="0" description="Antenna shape pattern: 0 for omnidirectional, 1 for beam, 2 for spherical harmonic (deprecated), or optional higher value." />
'

JSON "@antennaPatternType": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
applicationID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="applicationID" type="SFInt32" accessType="inputOutput" default="0" description="Each simulation application that can respond to simulation management PDUs needs to have a unique applicationID." />
'

JSON "@applicationID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DBoundedObject" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DBoundedObject" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DBoundedObject" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
cryptoKeyID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="cryptoKeyID" type="SFInt32" accessType="inputOutput" default="0" description="Nonzero value corresponding to the simulated cryptographic key." />
'

JSON "@cryptoKeyID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
cryptoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="cryptoSystem" type="SFInt32" accessType="inputOutput" default="0" description="Indicates type of crypto system being used, even if the encryption equipment is not keyed." />
'

JSON "@cryptoSystem": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables the sensor node." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
entityID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="entityID" type="SFInt32" accessType="inputOutput" default="0" description="EntityID unique ID for entity within that application." />
'

JSON "@entityID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
frequency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="frequency" type="SFInt32" accessType="inputOutput" default="0" minInclusive="0" description="Transmission frequency in Hz." />
'

JSON "@frequency": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
geoCoords
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoCoords" type="SFVec3d" accessType="inputOutput" default="0 0 0" description="Geographic location (specified in current geoSystem coordinates) for children geometry (specified in relative coordinate system, in meters)." />
'

JSON "@geoCoords": {
  "$comment": "SFVec3d inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
geoSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="geoSystem" type="MFString" accessType="initializeOnly" default="&quot;GD&quot; &quot;WE&quot;" additionalEnumerationValuesAllowed="true" baseType="geoSystemType" description="Identifies spatial reference frame: Geodetic (GD), Geocentric (GC), Universal Transverse Mercator (UTM)." />
'

JSON "@geoSystem": {
  "$ref": "#/$defs/@geoSystem"
}
inputSource
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="inputSource" type="SFInt32" accessType="inputOutput" default="0" description="Source of transmission input." />
'

JSON "@inputSource": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
lengthOfModulationParameters
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lengthOfModulationParameters" type="SFInt32" accessType="inputOutput" default="0" description="." />
'

JSON "@lengthOfModulationParameters": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
modulationTypeDetail
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="modulationTypeDetail" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing detailed information depending on the major modulation type." />
'

JSON "@modulationTypeDetail": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
modulationTypeMajor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="modulationTypeMajor" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing major classification of the modulation type." />
'

JSON "@modulationTypeMajor": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
modulationTypeSpreadSpectrum
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="modulationTypeSpreadSpectrum" type="SFInt32" accessType="inputOutput" default="0" description="Indicates the spread spectrum technique or combination of spread spectrum techniques in use." />
'

JSON "@modulationTypeSpreadSpectrum": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
modulationTypeSystem
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="modulationTypeSystem" type="SFInt32" accessType="inputOutput" default="0" description="Specifies radio system associated with this Transmitter PDU and used to interpret other fields whose values depend on a specific radio system." />
'

JSON "@modulationTypeSystem": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
multicastRelayHost
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayHost" type="SFString" accessType="inputOutput" description="Fallback server address if multicast not available locally." />
'

JSON "@multicastRelayHost": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
multicastRelayPort
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="multicastRelayPort" type="SFInt32" accessType="inputOutput" default="0" description="Fallback server port if multicast not available locally." />
'

JSON "@multicastRelayPort": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
networkMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="networkMode" type="SFString" accessType="inputOutput" default="standAlone" additionalEnumerationValuesAllowed="false" simpleType="networkModeChoices" baseType="xs:NMTOKEN" description="Whether this entity is ignoring the network, sending DIS packets to the network, or receiving DIS packets from the network.">
<enumeration value="standAlone" appinfo="ignore network but still respond to events in local scene." />
<enumeration value="networkReader" appinfo="listen to network and read PDU packets at readInterval, act as remotely linked copy of entity." />
<enumeration value="networkWriter" appinfo="send PDU packets to network at writeInterval, act as master entity." />
</field>
'

JSON "@networkMode": {
  "enum": [
    "standAlone",
    "networkReader",
    "networkWriter"
  ],
  "default": "standAlone",
  "$comment": "SFString inputOutput",
  "type": "string"
}
port
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="port" type="SFInt32" accessType="inputOutput" default="0" description="Multicast network port, for example: 3000." />
'

JSON "@port": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
power
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="power" type="SFFloat" accessType="inputOutput" default="0.0" description="Power that radio would be capable of outputting if on and transmitting, independent of actual transmit state of the radio." />
'

JSON "@power": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
radioEntityTypeCategory
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeCategory" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumeration containing EntityType of transmitter radio." />
'

JSON "@radioEntityTypeCategory": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioEntityTypeCountry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeCountry" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for country to which the design of the entity or its design specification is attributed." />
'

JSON "@radioEntityTypeCountry": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioEntityTypeDomain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeDomain" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for domain in which the entity operates: LAND, AIR, SURFACE, SUBSURFACE, SPACE or OTHER." />
'

JSON "@radioEntityTypeDomain": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioEntityTypeKind
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeKind" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value for whether entity is a PLATFORM, MUNITION, LIFE_FORM, ENVIRONMENTAL, CULTURAL_FEATURE, SUPPLY, RADIO, EXPENDABLE, SENSOR_EMITTER or OTHER." />
'

JSON "@radioEntityTypeKind": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioEntityTypeNomenclature
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeNomenclature" type="SFInt32" accessType="inputOutput" default="0" description="Integer enumerations value indicating nomenclature (name) for a particular emitter." />
'

JSON "@radioEntityTypeNomenclature": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioEntityTypeNomenclatureVersion
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioEntityTypeNomenclatureVersion" type="SFInt32" accessType="inputOutput" default="0" description="Named equipment version number." />
'

JSON "@radioEntityTypeNomenclatureVersion": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
radioID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="radioID" type="SFInt32" accessType="inputOutput" default="0" description="Identifies a particular radio within a given entity." />
'

JSON "@radioID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
readInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="readInterval" type="SFTime" accessType="inputOutput" default="0.1" minInclusive="0" description="Seconds between read updates, 0 means no reading." />
'

JSON "@readInterval": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
relativeAntennaLocation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="relativeAntennaLocation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Relative coordinates for antenna location." />
'

JSON "@relativeAntennaLocation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
rtpHeaderExpected
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="rtpHeaderExpected" type="SFBool" accessType="inputOutput" default="false" description="Whether RTP headers are prepended to DIS PDUs." />
'

JSON "@rtpHeaderExpected": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
siteID
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="siteID" type="SFInt32" accessType="inputOutput" default="0" description="Simulation/exercise siteID of the participating LAN or organization." />
'

JSON "@siteID": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
transmitFrequencyBandwidth
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitFrequencyBandwidth" type="SFFloat" accessType="inputOutput" default="0" description="Bandwidth of the particular transmitter measured between the half-power (-3 dB) points (this value represents total bandwidth, not the deviation from the center frequency)." />
'

JSON "@transmitFrequencyBandwidth": {
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
transmitState
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transmitState" type="SFInt32" accessType="inputOutput" default="0" description="Specify radio transmission state where enumerations value 0 is for off, value 1 for powered but not transmitting, or value 1 is for powered and transmitting,." />
'

JSON "@transmitState": {
  "default": 0,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DBoundedObject" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
whichGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="whichGeometry" type="SFInt32" accessType="inputOutput" default="1" description="Select geometry to render: -1 for no geometry, 0 for text trace, 1 for default geometry, (optional) higher values to render different states." />
'

JSON "@whichGeometry": {
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
writeInterval
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="writeInterval" type="SFTime" accessType="inputOutput" default="1.0" minInclusive="0" description="Seconds between write updates, 0 means no writing (sending)." />
'

JSON "@writeInterval": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TriangleFanSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TriangleFanSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#TriangleFanSet" appinfo="TriangleFanSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fanCount" type="MFInt32" accessType="inputOutput" minInclusive="3" description="fanCount array provides number of vertices in each fan." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TriangleFanSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "@fanCount": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "minimum": 3,
            "type": "integer"
          }
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fanCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fanCount" type="MFInt32" accessType="inputOutput" minInclusive="3" description="fanCount array provides number of vertices in each fan." />
'

JSON "@fanCount": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "minimum": 3,
    "type": "integer"
  }
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TriangleSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TriangleSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#TriangleSet" appinfo="TriangleSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TriangleSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TriangleSet2D
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TriangleSet2D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html#TriangleSet2D" appinfo="TriangleSet2D is a geometry node that defines a set of filled 2D triangles in X-Y plane.">
<componentInfo name="Geometry2D" level="1" />
<Inheritance baseType="X3DGeometryNode" />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="vertices" type="MFVec2f" accessType="inputOutput" description="2D coordinates of TriangleSet2D vertices." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TriangleSet2D": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@solid": {
          "default": false,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@vertices": {
          "$comment": "MFVec2f inputOutput",
          "type": "array",
          "minItems": 2,
          "items": {
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="false" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": false,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
vertices
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="vertices" type="MFVec2f" accessType="inputOutput" description="2D coordinates of TriangleSet2D vertices." />
'

JSON "@vertices": {
  "$comment": "MFVec2f inputOutput",
  "type": "array",
  "minItems": 2,
  "items": {
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TriangleStripSet
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TriangleStripSet">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html#TriangleStripSet" appinfo="TriangleStripSet is a geometry node containing a Coordinate|CoordinateDouble node, and can also contain Color|ColorRGBA, Normal and TextureCoordinate nodes.">
<componentInfo name="Rendering" level="3" />
<Inheritance baseType="X3DComposedGeometryNode" />
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
<field name="stripCount" type="MFInt32" accessType="inputOutput" minInclusive="3" description="stripCount array provides number of vertices in each strip." />
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="geometry" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ComposedGeometryContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TriangleStripSet": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-attrib": {
          "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
        },
        "@ccw": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-color": {
          "$ref": "#/$defs/-X3DColorNodeSFNode"
        },
        "@colorPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "-fogCoord": {
          "$ref": "#/$defs/-FogCoordinateSFNode"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-normal": {
          "$ref": "#/$defs/-X3DNormalNodeSFNode"
        },
        "@normalPerVertex": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@solid": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@stripCount": {
          "$comment": "MFInt32 inputOutput",
          "type": "array",
          "items": {
            "minimum": 3,
            "type": "integer"
          }
        },
        "-texCoord": {
          "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
attrib
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="attrib" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DVertexAttributeNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained FloatVertexAttribute node that can specify list of per-vertex attribute information for programmable shaders." />
'

JSON "-attrib": {
  "$ref": "#/$defs/-X3DVertexAttributeNodeMFNode"
}
ccw
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ccw" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="ccw defines clockwise/counterclockwise ordering of vertex coordinates, which in turn defines front/back orientation of polygon normals according to Right-Hand Rule (RHR)." />
'

JSON "@ccw": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
color
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="color" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DColorNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Color or ColorRGBA node that can specify color values applied to corresponding vertices according to colorIndex and colorPerVertex fields." />
'

JSON "-color": {
  "$ref": "#/$defs/-X3DColorNodeSFNode"
}
colorPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="colorPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Color|ColorRGBA values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@colorPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Coordinate or CoordinateDouble node that can specify a list of vertex values." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
fogCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fogCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="FogCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained FogCoordinate node that can specify depth parameters for fog in corresponding geometry." />
'

JSON "-fogCoord": {
  "$ref": "#/$defs/-FogCoordinateSFNode"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normal" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DNormalNode" inheritedFrom="X3DComposedGeometryNode" description="Single contained Normal node that can specify perpendicular vectors for corresponding vertices to support rendering computations, applied according to the normalPerVertex field." />
'

JSON "-normal": {
  "$ref": "#/$defs/-X3DNormalNodeSFNode"
}
normalPerVertex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalPerVertex" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Whether Normal node vector values are applied to each point vertex (true) or to each polygon face (false)." />
'

JSON "@normalPerVertex": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
solid
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="solid" type="SFBool" accessType="initializeOnly" default="true" inheritedFrom="X3DComposedGeometryNode" description="Setting solid true means draw only one side of polygons (backface culling on), setting solid false means draw both sides of polygons (backface culling off)." />
'

JSON "@solid": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
stripCount
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stripCount" type="MFInt32" accessType="inputOutput" minInclusive="3" description="stripCount array provides number of vertices in each strip." />
'

JSON "@stripCount": {
  "$comment": "MFInt32 inputOutput",
  "type": "array",
  "items": {
    "minimum": 3,
    "type": "integer"
  }
}
texCoord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="texCoord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureCoordinateNode|MultiTextureCoordinate" inheritedFrom="X3DComposedGeometryNode" description="Single contained TextureCoordinate, TextureCoordinateGenerator or MultiTextureCoordinate node that can specify coordinates for texture mapping onto corresponding geometry." />
'

JSON "-texCoord": {
  "$ref": "#/$defs/-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
TwoSidedMaterial
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="TwoSidedMaterial">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#TwoSidedMaterial" appinfo="TwoSidedMaterial specifies surface rendering properties for associated geometry nodes, for outer (front) and inner (back) sides of polygons.">
<componentInfo name="Shape" level="4" />
<Inheritance baseType="X3DMaterialNode" />
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources." />
<field name="backAmbientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources." />
<field name="backDiffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
<field name="backEmissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
<field name="backShininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights." />
<field name="backSpecularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple)." />
<field name="backTransparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
<field name="diffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="separateBackColor" type="SFBool" accessType="inputOutput" default="false" description="separateBackColor determines whether separate Material values are used for back faces." />
<field name="shininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights." />
<field name="specularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple)." />
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="material" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "TwoSidedMaterial": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@ambientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@backAmbientIntensity": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@backDiffuseColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@backEmissiveColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@backShininess": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@backSpecularColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@backTransparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@diffuseColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0.8,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@emissiveColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@separateBackColor": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@shininess": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.2,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@specularColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
ambientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ambientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources." />
'

JSON "@ambientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
backAmbientIntensity
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backAmbientIntensity" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how much ambient omnidirectional light is reflected from all light sources." />
'

JSON "@backAmbientIntensity": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
backDiffuseColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backDiffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
'

JSON "@backDiffuseColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
backEmissiveColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backEmissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
'

JSON "@backEmissiveColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
backShininess
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backShininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights." />
'

JSON "@backShininess": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
backSpecularColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backSpecularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple)." />
'

JSON "@backSpecularColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
backTransparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="backTransparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
'

JSON "@backTransparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
diffuseColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="diffuseColor" type="SFColor" accessType="inputOutput" default="0.8 0.8 0.8" minInclusive="0" maxInclusive="1" description="how much direct, angle-dependent light is reflected from all light sources." />
'

JSON "@diffuseColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0.8,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
emissiveColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
'

JSON "@emissiveColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
separateBackColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="separateBackColor" type="SFBool" accessType="inputOutput" default="false" description="separateBackColor determines whether separate Material values are used for back faces." />
'

JSON "@separateBackColor": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
shininess
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="shininess" type="SFFloat" accessType="inputOutput" default="0.2" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="Lower shininess values provide soft specular glows, while higher values result in sharper, smaller highlights." />
'

JSON "@shininess": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.2,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
specularColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="specularColor" type="SFColor" accessType="inputOutput" default="0 0 0" minInclusive="0" maxInclusive="1" description="specular highlights are brightness reflections (example: shiny spots on an apple)." />
'

JSON "@specularColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
UniversalJoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="UniversalJoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html#UniversalJoint" appinfo="UniversalJoint is like a BallJoint that constrains an extra degree of rotational freedom.">
<componentInfo name="RigidBodyPhysics" level="2" />
<Inheritance baseType="X3DRigidJointNode" />
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
<field name="axis1" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="axis1 defines axis vector of joint connection to body1." />
<field name="axis2" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis2 defines axis vector of joint connection to body2." />
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body1AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body1AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body1Axis" type="SFVec3f" accessType="outputOnly" description="body1Axis describes report the current location of the anchor point relative to the corresponding body." />
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
<field name="body2AnchorPoint" type="SFVec3f" accessType="outputOnly" description="body2AnchorPoint describes anchorPoint position relative to local coordinate reference frame." />
<field name="body2Axis" type="SFVec3f" accessType="outputOnly" description="body1Axis describes report the current location of the anchor point relative to the corresponding body." />
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="stop2Bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="stop2Bounce is velocity factor for bounce back once stop point is reached." />
<field name="stop2ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="stop2ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="joints" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="RigidJointNodeContentModel" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "UniversalJoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@anchorPoint": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@axis1": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@axis2": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "-body1": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "-body2": {
          "$ref": "#/$defs/-RigidBodySFNode"
        },
        "@forceOutput": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "NONE",
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@stop1Bounce": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop1ErrorCorrection": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop2Bounce": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@stop2ErrorCorrection": {
          "maximum": 1,
          "minimum": 0,
          "default": 0.8,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
anchorPoint
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="anchorPoint" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="anchorPoint is joint center, specified in world coordinates." />
'

JSON "@anchorPoint": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
axis1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis1" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="axis1 defines axis vector of joint connection to body1." />
'

JSON "@axis1": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
axis2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="axis2" type="SFVec3f" accessType="inputOutput" default="0 1 0" description="axis2 defines axis vector of joint connection to body2." />
'

JSON "@axis2": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
body1
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body1" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body1": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
body2
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="body2" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="RigidBody" inheritedFrom="X3DRigidJointNode" description="The body1 and body2 fields indicate the two RigidBody nodes connected by this joint." />
'

JSON "-body2": {
  "$ref": "#/$defs/-RigidBodySFNode"
}
forceOutput
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="forceOutput" type="MFString" accessType="inputOutput" default="&quot;NONE&quot;" inheritedFrom="X3DRigidJointNode" additionalEnumerationValuesAllowed="true" simpleType="forceOutputValues" baseType="MFString" description="forceOutput controls which output fields are generated for the next frame.">
<enumeration value="&quot;ALL&quot;" appinfo="all forceOutput fields computed." />
<enumeration value="&quot;NONE&quot;" appinfo="no forceOutput fields computed." />
</field>
'

JSON "@forceOutput": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "NONE",
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
stop1Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1Bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="stop1Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop1Bounce": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop1ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop1ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="stop1ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop1ErrorCorrection": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop2Bounce
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop2Bounce" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="stop2Bounce is velocity factor for bounce back once stop point is reached." />
'

JSON "@stop2Bounce": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
stop2ErrorCorrection
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stop2ErrorCorrection" type="SFFloat" accessType="inputOutput" default="0.8" minInclusive="0" maxInclusive="1" description="stop2ErrorCorrection is fraction of error correction performed during time step once stop point is reached." />
'

JSON "@stop2ErrorCorrection": {
  "maximum": 1,
  "minimum": 0,
  "default": 0.8,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
UnlitMaterial
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="UnlitMaterial">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#UnlitMaterial" appinfo="UnlitMaterial specifies surface rendering properties for associated geometry nodes.">
<componentInfo name="Shape" level="1" />
<Inheritance baseType="X3DOneSidedMaterialNode" />
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="material" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="ImageTexture" />
<NodeContentModel name="MovieTexture" />
<NodeContentModel name="PixelTexture" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "UnlitMaterial": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@emissiveColor": {
          "maximum": 1,
          "minimum": 0,
          "$comment": "SFColor inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-emissiveTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@emissiveTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@normalScale": {
          "minimum": 0,
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-normalTexture": {
          "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
        },
        "@normalTextureMapping": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@transparency": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
emissiveColor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveColor" type="SFColor" accessType="inputOutput" default="1 1 1" minInclusive="0" maxInclusive="1" description="how much glowing light is emitted from this object." />
'

JSON "@emissiveColor": {
  "maximum": 1,
  "minimum": 0,
  "$comment": "SFColor inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
emissiveTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying emissiveColor for this material node, the contained texture provides Physically Based Rendering (PBR) modulation for each pixel." />
'

JSON "-emissiveTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
emissiveTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="emissiveTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@emissiveTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
normalScale
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalScale" type="SFFloat" accessType="inputOutput" default="1" minInclusive="0" inheritedFrom="X3DOneSidedMaterialNode" description="normalScale controls the degree to which normalTexture RGB values apply XYZ-normal bump mapping to pixels in the parent material.">
<componentInfo name="Shape" level="2" />
</field>
'

JSON "@normalScale": {
  "minimum": 0,
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
normalTexture
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTexture" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DSingleTextureNode" description="When applying normalScale for this material node, the contained texture modulates the texture across the surface." />
'

JSON "-normalTexture": {
  "$ref": "#/$defs/-X3DSingleTextureNodeSFNode"
}
normalTextureMapping
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="normalTextureMapping" type="SFString" accessType="inputOutput" inheritedFrom="X3DOneSidedMaterialNode" baseType="xs:NMTOKEN" description="The mapping label identifies which texture coordinates and transformations are used to compute texture effects from corresponding geometry on a given material." />
'

JSON "@normalTextureMapping": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
transparency
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="transparency" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" baseType="unitIntervalType" description="how &quot;clear&quot; an object is: 1." />
'

JSON "@transparency": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Viewpoint
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Viewpoint">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#Viewpoint" appinfo="Viewpoint provides a specific location and direction where the user may view the scene.">
<componentInfo name="Navigation" level="1" />
<Inheritance baseType="X3DViewpointNode" />
<field name="bindTime" type="SFTime" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Event sent reporting timestamp when node becomes active/inactive." />
<field name="centerOfRotation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Text description or navigation hint to describe the significance of this model Viewpoint.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minExclusive="0" maxExclusive="3.1416" description="Preferred minimum viewing angle from this viewpoint in radians, providing minimum height or minimum width (whichever is smaller).">
<componentInfo name="Navigation" level="2" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isBound" type="SFBool" accessType="outputOnly" inheritedFrom="X3DBindableNode" description="Output event true gets sent when node becomes bound and activated, otherwise output event false gets sent when node becomes unbound and deactivated." />
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Transition instantly by jumping, otherwise smoothly adjust offsets in place when changing to this Viewpoint." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation (axis, angle in radians) of Viewpoint, relative to default -Z axis direction in local coordinate system." />
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 10" description="position (x, y, z in meters) relative to local coordinate system." />
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
<field name="set_bind" type="SFBool" accessType="inputOnly" inheritedFrom="X3DBindableNode" description="Sending event set_bind=true makes this node active." />
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="NavigationInfo" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Viewpoint": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@centerOfRotation": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@farDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@fieldOfView": {
          "exclusiveMaximum": 3.1416,
          "exclusiveMinimum": 0,
          "default": 0.7854,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@jump": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-navigationInfo": {
          "$ref": "#/$defs/-NavigationInfoSFNode"
        },
        "@nearDistance": {
          "default": -1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@orientation": {
          "$comment": "SFRotation inputOutput",
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@position": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 10,
              "type": "number"
            }
          ],
          "items": false
        },
        "@retainUserOffsets": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@viewAll": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
centerOfRotation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="centerOfRotation" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="centerOfRotation specifies center point about which to rotate user's eyepoint when in EXAMINE or LOOKAT mode." />
'

JSON "@centerOfRotation": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DViewpointNode" description="Text description or navigation hint to describe the significance of this model Viewpoint.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
farDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="farDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="farDistance defines maximum clipping plane distance allowed for object display." />
'

JSON "@farDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
fieldOfView
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fieldOfView" type="SFFloat" accessType="inputOutput" default="0.7854" minExclusive="0" maxExclusive="3.1416" description="Preferred minimum viewing angle from this viewpoint in radians, providing minimum height or minimum width (whichever is smaller).">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@fieldOfView": {
  "exclusiveMaximum": 3.1416,
  "exclusiveMinimum": 0,
  "default": 0.7854,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
jump
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="jump" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DViewpointNode" description="Transition instantly by jumping, otherwise smoothly adjust offsets in place when changing to this Viewpoint." />
'

JSON "@jump": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
navigationInfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="navigationInfo" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="NavigationInfo" inheritedFrom="X3DViewpointNode" description="The navigationInfo field defines a dedicated NavigationInfo node for this X3DViewpointNode." />
'

JSON "-navigationInfo": {
  "$ref": "#/$defs/-NavigationInfoSFNode"
}
nearDistance
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nearDistance" type="SFFloat" accessType="inputOutput" default="-1" inheritedFrom="X3DViewpointNode" description="nearDistance defines minimum clipping plane distance necessary for object display." />
'

JSON "@nearDistance": {
  "default": -1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
orientation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="orientation" type="SFRotation" accessType="inputOutput" default="0 0 1 0" inheritedFrom="X3DViewpointNode" description="Rotation (axis, angle in radians) of Viewpoint, relative to default -Z axis direction in local coordinate system." />
'

JSON "@orientation": {
  "$comment": "SFRotation inputOutput",
  "type": "array",
  "minItems": 4,
  "maxItems": 4,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
position
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="position" type="SFVec3f" accessType="inputOutput" default="0 0 10" description="position (x, y, z in meters) relative to local coordinate system." />
'

JSON "@position": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 10,
      "type": "number"
    }
  ],
  "items": false
}
retainUserOffsets
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation.">
<componentInfo name="Navigation" level="2" />
</field>
'

JSON "@retainUserOffsets": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
viewAll
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="viewAll" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DViewpointNode" description="Viewpoint is automatically adjusted to view all visible geometry." />
'

JSON "@viewAll": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ViewpointGroup
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="ViewpointGroup">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html#ViewpointGroup" appinfo="ViewpointGroup can contain Viewpoint, OrthoViewpoint, GeoViewpoint and other ViewpointGroup nodes for better user-navigation support with a shared description on the viewpoint list.">
<componentInfo name="Navigation" level="3" />
<Inheritance baseType="X3DChildNode" />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="center specifies center point of proximity box within which ViewpointGroup is usable and displayed on viewpoint list." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DViewpointNode|ViewpointGroup" description="ViewpointGroup contains Viewpoint, OrthoViewpoint, GeoViewpoint and other ViewpointGroup nodes that each have containerField='children' default value." />
<field name="description" type="SFString" accessType="inputOutput" description="Text description or navigation hint to identify this ViewpointGroup." />
<field name="displayed" type="SFBool" accessType="inputOutput" default="true" description="displayed determines whether this ViewpointGroup is displayed in the current viewpoint list." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation." />
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="size of Proximity box around center location, oriented within local transformation frame, within which ViewpointGroup is usable and displayed on viewpoint list." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Viewpoint" />
<NodeContentModel name="OrthoViewpoint" />
<NodeContentModel name="GeoViewpoint" />
<NodeContentModel name="ViewpointGroup" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "ViewpointGroup": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DViewpointNode-ViewpointGroupMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@displayed": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@retainUserOffsets": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@size": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="center specifies center point of proximity box within which ViewpointGroup is usable and displayed on viewpoint list." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DViewpointNode|ViewpointGroup" description="ViewpointGroup contains Viewpoint, OrthoViewpoint, GeoViewpoint and other ViewpointGroup nodes that each have containerField='children' default value." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DViewpointNode|ViewpointGroup" description="ViewpointGroup contains Viewpoint, OrthoViewpoint, GeoViewpoint and other ViewpointGroup nodes that each have containerField='children' default value." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DViewpointNode-ViewpointGroupMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" description="Text description or navigation hint to identify this ViewpointGroup." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
displayed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="displayed" type="SFBool" accessType="inputOutput" default="true" description="displayed determines whether this ViewpointGroup is displayed in the current viewpoint list." />
'

JSON "@displayed": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
retainUserOffsets
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="retainUserOffsets" type="SFBool" accessType="inputOutput" default="false" description="Retain (true) or reset to zero (false) any prior user navigation offsets from defined viewpoint position, orientation." />
'

JSON "@retainUserOffsets": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="size of Proximity box around center location, oriented within local transformation frame, within which ViewpointGroup is usable and displayed on viewpoint list." />
'

JSON "@size": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Viewport
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="Viewport">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html#Viewport" appinfo="Viewport is a Grouping node that can contain most nodes.">
<componentInfo name="Layering" level="1" />
<Inheritance baseType="X3DViewportNode" />
<field name="addChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
<field name="clipBoundary" type="MFFloat" accessType="inputOutput" default="0 1 0 1" minInclusive="0" maxInclusive="1" description="clipBoundary is specified in fractions of the normal render surface in the sequence left/right/bottom/top." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="removeChildren" type="MFNode" accessType="inputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode">
<componentInfo name="Grouping" level="2" />
</field>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="viewport" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModel" minOccurs="0" maxOccurs="unbounded" />
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "Viewport": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "-children": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "@clipBoundary": {
          "$comment": "MFFloat inputOutput",
          "type": "array",
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          ],
          "items": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DGroupingNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DGroupingNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DGroupingNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DGroupingNode" description="Grouping nodes contain an ordered list of children nodes." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
clipBoundary
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="clipBoundary" type="MFFloat" accessType="inputOutput" default="0 1 0 1" minInclusive="0" maxInclusive="1" description="clipBoundary is specified in fractions of the normal render surface in the sequence left/right/bottom/top." />
'

JSON "@clipBoundary": {
  "$comment": "MFFloat inputOutput",
  "type": "array",
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "type": "number"
    }
  ],
  "items": {
    "maximum": 1,
    "minimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DGroupingNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
VisibilitySensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="VisibilitySensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html#VisibilitySensor" appinfo="VisibilitySensor detects when user can see a specific object or region as they navigate the world.">
<componentInfo name="EnvironmentalSensor" level="2" />
<Inheritance baseType="X3DEnvironmentalSensorNode" />
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="enterTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera enters visibility region for sensor." />
<field name="exitTime" type="SFTime" accessType="outputOnly" description="Time event generated when user's camera exits visibility region for sensor." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive true/false events are sent when triggering the sensor." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of visibility box around center location, oriented within local transformation frame." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "VisibilitySensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@center": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@size": {
          "minimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "minimum": 0,
            "type": "number"
          }
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
center
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="center" type="SFVec3f" accessType="inputOutput" default="0 0 0" description="Translation offset from origin of local coordinate system." />
'

JSON "@center": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
size
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="size" type="SFVec3f" accessType="inputOutput" default="0 0 0" minInclusive="0" inheritedFrom="X3DEnvironmentalSensorNode" description="size of visibility box around center location, oriented within local transformation frame." />
'

JSON "@size": {
  "minimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "minimum": 0,
    "type": "number"
  }
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
VolumeData
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="VolumeData">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html#VolumeData" appinfo="VolumeData displays a simple non-segmented voxel dataset with a single RenderStyle node.">
<componentInfo name="VolumeRendering" level="1" />
<Inheritance baseType="X3DVolumeDataNode" />
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="renderStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Single contained X3DVolumeRenderStyleNode node that defines specific rendering technique for this volumetric object." />
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="VolumeRenderStyleContentModel" />
<GroupContentModel name="Texture3DContentModel" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "VolumeData": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@bboxCenter": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 0,
            "type": "number"
          }
        },
        "@bboxDisplay": {
          "default": false,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@bboxSize": {
          "$comment": "SFVec3f initializeOnly",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": -1,
            "type": "number"
          }
        },
        "@dimensions": {
          "exclusiveMinimum": 0,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "default": 1,
            "exclusiveMinimum": 0,
            "type": "number"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "-renderStyle": {
          "$ref": "#/$defs/-X3DVolumeRenderStyleNodeSFNode"
        },
        "@visible": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "-voxels": {
          "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
bboxCenter
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxCenter" type="SFVec3f" accessType="initializeOnly" default="0 0 0" inheritedFrom="X3DVolumeDataNode" description="Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system." />
'

JSON "@bboxCenter": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 0,
    "type": "number"
  }
}
bboxDisplay
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxDisplay" type="SFBool" accessType="inputOutput" default="false" inheritedFrom="X3DVolumeDataNode" description="Whether to display bounding box for associated geometry, aligned with world coordinates." />
'

JSON "@bboxDisplay": {
  "default": false,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
bboxSize
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="bboxSize" type="SFVec3f" accessType="initializeOnly" default="-1 -1 -1" inheritedFrom="X3DVolumeDataNode" baseType="bboxSizeType" description="Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost." />
'

JSON "@bboxSize": {
  "$comment": "SFVec3f initializeOnly",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": -1,
    "type": "number"
  }
}
dimensions
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dimensions" type="SFVec3f" accessType="inputOutput" default="1 1 1" minExclusive="0" inheritedFrom="X3DVolumeDataNode" description="Actual-size X-Y-Z dimensions of volume data in local coordinate system." />
'

JSON "@dimensions": {
  "exclusiveMinimum": 0,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "items": {
    "default": 1,
    "exclusiveMinimum": 0,
    "type": "number"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
renderStyle
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="renderStyle" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DVolumeRenderStyleNode" description="Single contained X3DVolumeRenderStyleNode node that defines specific rendering technique for this volumetric object." />
'

JSON "-renderStyle": {
  "$ref": "#/$defs/-X3DVolumeRenderStyleNodeSFNode"
}
visible
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="visible" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DVolumeDataNode" description="Whether or not renderable content within this node is visually displayed." />
'

JSON "@visible": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
voxels
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="voxels" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DTexture3DNode" description="Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles." />
'

JSON "-voxels": {
  "$ref": "#/$defs/-X3DTexture3DNodeSFNode"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
VolumeEmitter
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="VolumeEmitter">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#VolumeEmitter" appinfo="VolumeEmitter emits particles from a random position confined within the given closed geometry volume.">
<componentInfo name="ParticleSystems" level="2" />
<Inheritance baseType="X3DParticleEmitterNode" />
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Coordinates for the geometry used as the emitting volume." />
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" default="-1" minInclusive="-1" description="coordIndex indices are applied to contained Coordinate values in order to define randomly generated initial geometry of the particles." />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
<field name="internal" type="SFBool" accessType="initializeOnly" default="true" description="TODO, X3D specification is undefined." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
<field name="set_coordIndex" type="MFInt32" accessType="inputOnly" minInclusive="-1" />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="emitter" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<NodeContentModel name="Coordinate" />
<NodeContentModel name="CoordinateDouble" />
<NodeContentModel name="GeoCoordinate" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "VolumeEmitter": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "-coord": {
          "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
        },
        "@coordIndex": {
          "$comment": "MFInt32 initializeOnly",
          "type": "array",
          "items": {
            "default": -1,
            "minimum": -1,
            "type": "integer"
          }
        },
        "@direction": {
          "maximum": 1,
          "minimum": -1,
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 1,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            },
            {
              "default": 0,
              "maximum": 1,
              "minimum": -1,
              "type": "number"
            }
          ],
          "items": false
        },
        "@internal": {
          "default": true,
          "$comment": "SFBool initializeOnly",
          "type": "boolean"
        },
        "@mass": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@on": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@speed": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@surfaceArea": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@variation": {
          "minimum": 0,
          "default": 0.25,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
coord
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coord" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DCoordinateNode" description="Coordinates for the geometry used as the emitting volume." />
'

JSON "-coord": {
  "$ref": "#/$defs/-X3DCoordinateNodeSFNode"
}
coordIndex
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="coordIndex" type="MFInt32" accessType="initializeOnly" default="-1" minInclusive="-1" description="coordIndex indices are applied to contained Coordinate values in order to define randomly generated initial geometry of the particles." />
'

JSON "@coordIndex": {
  "$comment": "MFInt32 initializeOnly",
  "type": "array",
  "items": {
    "default": -1,
    "minimum": -1,
    "type": "integer"
  }
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="0 1 0" minInclusive="-1" maxInclusive="1" description="Initial direction from which particles emanate." />
'

JSON "@direction": {
  "maximum": 1,
  "minimum": -1,
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 1,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    },
    {
      "default": 0,
      "maximum": 1,
      "minimum": -1,
      "type": "number"
    }
  ],
  "items": false
}
internal
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="internal" type="SFBool" accessType="initializeOnly" default="true" description="TODO, X3D specification is undefined." />
'

JSON "@internal": {
  "default": true,
  "$comment": "SFBool initializeOnly",
  "type": "boolean"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
mass
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="mass" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Basic mass of each particle, defined in mass base units (default is kilograms)." />
'

JSON "@mass": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
on
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="on" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticleEmitterNode" description="Enables/disables production of particles from this emitter node." />
'

JSON "@on": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
surfaceArea
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="surfaceArea" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Particle surface area in area base units (default is meters squared)." />
'

JSON "@surfaceArea": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
variation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="variation" type="SFFloat" accessType="inputOutput" default="0.25" minInclusive="0" inheritedFrom="X3DParticleEmitterNode" description="Multiplier for the randomness used to control the range of possible output values." />
'

JSON "@variation": {
  "minimum": 0,
  "default": 0.25,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
VolumePickSensor
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="VolumePickSensor">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html#VolumePickSensor" appinfo="VolumePickSensor tests picking intersections using the pickingGeometry against the pickTarget geometry volume.">
<componentInfo name="Picking" level="3" />
<Inheritance baseType="X3DPickSensorNode" />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DSensorNode" description="isActive indicates when the intersecting object is picked by the picking geometry." />
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="GeometryContentModel" />
<GroupContentModel name="PickSensorGroupingNodeContentModel" />
<NodeContentModel name="Shape" />
<NodeContentModel name="ProtoInstance" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "VolumePickSensor": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@intersectionType": {
          "anyOf": [
            {
              "enum": [
                "BOUNDS",
                "GEOMETRY"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "BOUNDS",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@matchCriterion": {
          "enum": [
            "MATCH_ANY",
            "MATCH_EVERY",
            "MATCH_ONLY_ONE"
          ],
          "default": "MATCH_ANY",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@objectType": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "anyOf": [
              {
                "enum": [
                  "ALL",
                  "NONE",
                  "TERRAIN"
                ]
              },
              {
                "type": "string"
              }
            ],
            "default": "ALL",
            "type": "string"
          }
        },
        "-pickedGeometry": {
          "$ref": "#/$defs/-X3DChildNodeMFNode"
        },
        "-pickingGeometry": {
          "$ref": "#/$defs/-X3DGeometryNodeSFNode"
        },
        "-pickTarget": {
          "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
        },
        "@sortOrder": {
          "anyOf": [
            {
              "enum": [
                "ANY",
                "CLOSEST",
                "ALL",
                "ALL_SORTED"
              ]
            },
            {
              "type": "string"
            }
          ],
          "default": "CLOSEST",
          "$comment": "SFString initializeOnly",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DSensorNode" description="Author-provided prose that describes intended purpose of the node." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSensorNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
intersectionType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="intersectionType" type="SFString" accessType="initializeOnly" default="BOUNDS" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="intersectionTypeValues" baseType="xs:NMTOKEN" description="intersectionType specifies precision of the collision computation.">
<enumeration value="BOUNDS" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
<enumeration value="GEOMETRY" appinfo="TODO undefined in X3D specification." documentation="https://www.web3d.org/member-only/mantis/view.php?id=1294" />
</field>
'

JSON "@intersectionType": {
  "anyOf": [
    {
      "enum": [
        "BOUNDS",
        "GEOMETRY"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "BOUNDS",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
matchCriterion
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="matchCriterion" type="SFString" accessType="inputOutput" default="MATCH_ANY" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="false" simpleType="pickSensorMatchCriterionChoices" baseType="xs:NMTOKEN" description="defines whether the intersection test (i.">
<enumeration value="MATCH_ANY" appinfo="any match of objectType values is acceptable." />
<enumeration value="MATCH_EVERY" appinfo="every objectType value in X3DPickSensorNode and X3DPickableObject shall match." />
<enumeration value="MATCH_ONLY_ONE" appinfo="one and only one objectType value can match." />
</field>
'

JSON "@matchCriterion": {
  "enum": [
    "MATCH_ANY",
    "MATCH_EVERY",
    "MATCH_ONLY_ONE"
  ],
  "default": "MATCH_ANY",
  "$comment": "SFString inputOutput",
  "type": "string"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
objectType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="objectType" type="MFString" accessType="inputOutput" default="&quot;ALL&quot;" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickableObjectTypeValues" baseType="MFString" description="The objectType field specifies a set of labels used in the picking process.">
<enumeration value="&quot;ALL&quot;" appinfo="each node is available for picking." />
<enumeration value="&quot;NONE&quot;" appinfo="no node is available for picking." />
<enumeration value="&quot;TERRAIN&quot;" appinfo="TERRAIN is an example value." />
</field>
'

JSON "@objectType": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "anyOf": [
      {
        "enum": [
          "ALL",
          "NONE",
          "TERRAIN"
        ]
      },
      {
        "type": "string"
      }
    ],
    "default": "ALL",
    "type": "string"
  }
}
pickedGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickedGeometry" type="MFNode" accessType="outputOnly" acceptableNodeTypes="X3DChildNode" inheritedFrom="X3DPickSensorNode" description="Output event containing the node or nodes that have been found to intersect with the picking geometry from the last time this node performed a picking operation, given in the local coordinate system." />
'

JSON "-pickedGeometry": {
  "$ref": "#/$defs/-X3DChildNodeMFNode"
}
pickingGeometry
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickingGeometry" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DGeometryNode" inheritedFrom="X3DPickSensorNode" description="pickingGeometry specifies the exact geometry coordinates that are used to perform the intersection testing of the picking operation." />
'

JSON "-pickingGeometry": {
  "$ref": "#/$defs/-X3DGeometryNodeSFNode"
}
pickTarget
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pickTarget" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DGroupingNode|X3DShapeNode|Inline" inheritedFrom="X3DPickSensorNode" description="pickTarget specifies the list of nodes against which picking operations are performed." />
'

JSON "-pickTarget": {
  "$ref": "#/$defs/-X3DGroupingNode-X3DShapeNode-InlineMFNode"
}
sortOrder
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="sortOrder" type="SFString" accessType="initializeOnly" default="CLOSEST" inheritedFrom="X3DPickSensorNode" additionalEnumerationValuesAllowed="true" simpleType="pickSensorSortOrderValues" baseType="xs:NMTOKEN" description="The sortOrder field determines the order provided for picked output events.">
<enumeration value="ANY" appinfo="any single object that can satisfy picking conditions." />
<enumeration value="CLOSEST" appinfo="return closest object by distance that satisfies conditions of this pick sensor." />
<enumeration value="ALL" appinfo="every object that satisfies picking conditions for this pick sensor is returned." />
<enumeration value="ALL_SORTED" appinfo="every object that satisfies picking conditions for this pick sensor is returned, in sorted order." />
</field>
'

JSON "@sortOrder": {
  "anyOf": [
    {
      "enum": [
        "ANY",
        "CLOSEST",
        "ALL",
        "ALL_SORTED"
      ]
    },
    {
      "type": "string"
    }
  ],
  "default": "CLOSEST",
  "$comment": "SFString initializeOnly",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
WaveShaper
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="WaveShaper">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html#WaveShaper" appinfo="WaveShaper node represents a nonlinear distorter that applies a wave-shaping distortion curve to the signal.">
<componentInfo name="Sound" level="2" />
<Inheritance baseType="X3DSoundProcessingNode" />
<field name="channelCount" type="SFInt32" accessType="outputOnly" inheritedFrom="X3DSoundProcessingNode" description="channelCount reports number of channels provided by input nodes." />
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
<field name="elapsedTime" type="SFTime" accessType="outputOnly" minInclusive="0" inheritedFrom="X3DTimeDependentNode" description="Current elapsed time since AudioClip activated/running, cumulative in seconds, and not counting any paused time." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="isActive" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isActive true/false events are sent when playback starts/stops." />
<field name="isPaused" type="SFBool" accessType="outputOnly" inheritedFrom="X3DTimeDependentNode" description="isPaused true/false events are sent when AudioClip is paused/resumed.">
<componentInfo name="Time" level="2" />
</field>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="oversample" type="SFString" accessType="inputOutput" default="NONE" additionalEnumerationValuesAllowed="false" simpleType="waveShaperOversampleChoices" baseType="SFString" description="The oversample field is specifies what type of oversampling (if any) should be used when applying the shaping curve.">
<enumeration value="NONE" alias="none" appinfo="No oversampling. X3D version of &quot;none&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
<enumeration value="2X" alias="2x" appinfo="Double sampling rate. X3D version of &quot;2x&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
<enumeration value="4X" alias="4x" appinfo="Quadruple sampling rate. X3D version of &quot;4x&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
</field>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="containerFieldChoicesAudioGraph" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
<GroupContentModel name="AudioGraphContentModel" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "WaveShaper": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@channelCountMode": {
          "enum": [
            "MAX",
            "CLAMPED_MAX",
            "EXPLICIT"
          ],
          "default": "MAX",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@channelInterpretation": {
          "enum": [
            "SPEAKERS",
            "DISCRETE"
          ],
          "default": "SPEAKERS",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
        },
        "@description": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gain": {
          "default": 1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@oversample": {
          "enum": [
            "NONE",
            "2X",
            "4X"
          ],
          "default": "NONE",
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@pauseTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@resumeTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@startTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@stopTime": {
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@tailTime": {
          "minimum": 0,
          "default": 0,
          "$comment": "SFTime inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
channelCountMode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelCountMode" type="SFString" accessType="inputOutput" default="MAX" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelCountModeChoices" baseType="SFString" description="channelCountMode determines how individual channels are counted when up-mixing and down-mixing connections to any inputs.">
<enumeration value="MAX" alias="max" appinfo="X3D version of &quot;max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="CLAMPED_MAX" alias="clamped-max" appinfo="X3D version of &quot;clamped-max&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
<enumeration value="EXPLICIT" alias="explicit" appinfo="X3D version of &quot;explicit&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelcountmode" />
</field>
'

JSON "@channelCountMode": {
  "enum": [
    "MAX",
    "CLAMPED_MAX",
    "EXPLICIT"
  ],
  "default": "MAX",
  "$comment": "SFString inputOutput",
  "type": "string"
}
channelInterpretation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="channelInterpretation" type="SFString" accessType="inputOutput" default="SPEAKERS" inheritedFrom="X3DSoundProcessingNode" additionalEnumerationValuesAllowed="false" simpleType="channelInterpretationChoices" baseType="SFString" description="channelInterpretation determines how individual channels are treated when up-mixing and down-mixing connections to any inputs.">
<enumeration value="SPEAKERS" appinfo="X3D version of &quot;speakers&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
<enumeration value="DISCRETE" appinfo="X3D version of &quot;discrete&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-channelinterpretation" />
</field>
'

JSON "@channelInterpretation": {
  "enum": [
    "SPEAKERS",
    "DISCRETE"
  ],
  "default": "SPEAKERS",
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string",
        "$comment": "#comment statements are the only allowed in -children node when using a USE field"
      }
    },
    "additionalProperties": false
  }
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="Analyser|AudioClip|AudioDestination|BiquadFilter|BufferAudioSource|ChannelMerger|ChannelSelector|ChannelSplitter|Convolver|Delay|DynamicsCompressor|Gain|ListenerPointSource|MicrophoneSource|MovieTexture|OscillatorSource|Sound|SpatialSound|StreamAudioDestination|StreamAudioSource|WaveShaper" description="The children field specifies audio-graph sound sources providing input signals for this node." />
'

JSON "-children": {
  "$ref": "#/$defs/-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode"
}
description
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="description" type="SFString" accessType="inputOutput" inheritedFrom="X3DTimeDependentNode" description="Author-provided prose that describes intended purpose of the url asset." />
'

JSON "@description": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DSoundProcessingNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gain
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gain" type="SFFloat" accessType="inputOutput" default="1" inheritedFrom="X3DSoundProcessingNode" description="The gain field is a factor that represents the amount of linear amplification to apply to the output of the node." />
'

JSON "@gain": {
  "default": 1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
oversample
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="oversample" type="SFString" accessType="inputOutput" default="NONE" additionalEnumerationValuesAllowed="false" simpleType="waveShaperOversampleChoices" baseType="SFString" description="The oversample field is specifies what type of oversampling (if any) should be used when applying the shaping curve.">
<enumeration value="NONE" alias="none" appinfo="No oversampling. X3D version of &quot;none&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
<enumeration value="2X" alias="2x" appinfo="Double sampling rate. X3D version of &quot;2x&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
<enumeration value="4X" alias="4x" appinfo="Quadruple sampling rate. X3D version of &quot;4x&quot; in Web Audio API." documentation="https://www.w3.org/TR/webaudio/#enumdef-oversampletype" />
</field>
'

JSON "@oversample": {
  "enum": [
    "NONE",
    "2X",
    "4X"
  ],
  "default": "NONE",
  "$comment": "SFString inputOutput",
  "type": "string"
}
pauseTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="pauseTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When time now &gt;= pauseTime, isPaused becomes true and AudioClip becomes paused.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@pauseTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
resumeTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="resumeTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="When resumeTime becomes &lt;= time now, isPaused becomes false and AudioClip becomes active.">
<componentInfo name="Time" level="2" />
</field>
'

JSON "@resumeTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
startTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="startTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@startTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
stopTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="stopTime" type="SFTime" accessType="inputOutput" default="0" inheritedFrom="X3DTimeDependentNode" description="Absolute time: number of seconds since January 1, 1970, 00:00:00 GMT." />
'

JSON "@stopTime": {
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
tailTime
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="tailTime" type="SFTime" accessType="inputOutput" default="0" minInclusive="0" inheritedFrom="X3DSoundProcessingNode" description="tailTime is duration of time that a node continues to provide output signal after the input signal becomes silent." />
'

JSON "@tailTime": {
  "minimum": 0,
  "default": 0,
  "$comment": "SFTime inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
WindPhysicsModel
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="WindPhysicsModel">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html#WindPhysicsModel" appinfo="WindPhysicsModel applies a wind effect to the particles.">
<componentInfo name="ParticleSystems" level="1" />
<Inheritance baseType="X3DParticlePhysicsModelNode" />
<field name="direction" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="direction in which wind is travelling in the form of a normalized, unit vector." />
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
<field name="gustiness" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="gustiness specifies how much wind speed varies from the average speed." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="speed" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
<field name="turbulence" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="turbulence field specifies how much the wind acts directly in line with the direction, and how much variation is applied in directions other than the wind direction." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="physics" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "WindPhysicsModel": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@direction": {
          "$comment": "SFVec3f inputOutput",
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "prefixItems": [
            {
              "default": 1,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            },
            {
              "default": 0,
              "type": "number"
            }
          ],
          "items": false
        },
        "@enabled": {
          "default": true,
          "$comment": "SFBool inputOutput",
          "type": "boolean"
        },
        "@gustiness": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@speed": {
          "minimum": 0,
          "default": 0.1,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@turbulence": {
          "maximum": 1,
          "minimum": 0,
          "default": 0,
          "$comment": "SFFloat inputOutput",
          "type": "number"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
direction
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="direction" type="SFVec3f" accessType="inputOutput" default="1 0 0" description="direction in which wind is travelling in the form of a normalized, unit vector." />
'

JSON "@direction": {
  "$comment": "SFVec3f inputOutput",
  "type": "array",
  "minItems": 3,
  "maxItems": 3,
  "prefixItems": [
    {
      "default": 1,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    },
    {
      "default": 0,
      "type": "number"
    }
  ],
  "items": false
}
enabled
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="enabled" type="SFBool" accessType="inputOutput" default="true" inheritedFrom="X3DParticlePhysicsModelNode" description="Enables/disables node operation." />
'

JSON "@enabled": {
  "default": true,
  "$comment": "SFBool inputOutput",
  "type": "boolean"
}
gustiness
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="gustiness" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="gustiness specifies how much wind speed varies from the average speed." />
'

JSON "@gustiness": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
speed
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="speed" type="SFFloat" accessType="inputOutput" default="0.1" minInclusive="0" description="Initial linear speed (default is m/s) imparted to all particles along their direction of movement." />
'

JSON "@speed": {
  "minimum": 0,
  "default": 0.1,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
turbulence
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="turbulence" type="SFFloat" accessType="inputOutput" default="0" minInclusive="0" maxInclusive="1" description="turbulence field specifies how much the wind acts directly in line with the direction, and how much variation is applied in directions other than the wind direction." />
'

JSON "@turbulence": {
  "maximum": 1,
  "minimum": 0,
  "default": 0,
  "$comment": "SFFloat inputOutput",
  "type": "number"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
WorldInfo
XML
b'<?xml version='1.0' encoding='utf8'?>
<ConcreteNode name="WorldInfo">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#WorldInfo" appinfo="WorldInfo contains a title and simple persistent metadata information about an X3D scene. This node is strictly for documentation purposes and has no effect on the visual appearance or behaviour of the world.">
<componentInfo name="Core" level="1" />
<Inheritance baseType="X3DInfoNode" />
<field name="info" type="MFString" accessType="inputOutput" description="Additional information about this model." />
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
<field name="title" type="SFString" accessType="inputOutput" description="title of this world, placed in window title." />
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<containerField default="children" type="xs:NMTOKEN" />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</ConcreteNode>
'
JSON "WorldInfo": {
  "type": "object",
  "oneOf": [
    {
      "type": "object",
      "properties": {
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@USE": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "-children": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "#comment": {
                "type": "string",
                "$comment": "#comment statements are the only allowed in -children node when using a USE field"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "required": [
        "@USE"
      ],
      "additionalProperties": false
    },
    {
      "type": "object",
      "properties": {
        "-children": {
          "$ref": "#/$defs/-childStatements"
        },
        "IS": {
          "$ref": "#/$defs/IS"
        },
        "@info": {
          "$comment": "MFString inputOutput",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "-metadata": {
          "$ref": "#/$defs/-X3DMetadataObjectSFNode"
        },
        "@title": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@DEF": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@class": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@id": {
          "$comment": "SFString inputOutput",
          "type": "string"
        },
        "@style": {
          "$comment": "SFString inputOutput",
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  ]
}
info
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="info" type="MFString" accessType="inputOutput" description="Additional information about this model." />
'

JSON "@info": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "items": {
    "type": "string"
  }
}
IS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="IS" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="IS" inheritedFrom="X3DNode" />
'

JSON "IS": {
  "$ref": "#/$defs/IS"
}
metadata
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="metadata" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="X3DMetadataObject" inheritedFrom="X3DNode" description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node." />
'

JSON "-metadata": {
  "$ref": "#/$defs/-X3DMetadataObjectSFNode"
}
title
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="title" type="SFString" accessType="inputOutput" description="title of this world, placed in window title." />
'

JSON "@title": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
DEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="DEF" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:ID" description="DEF defines a unique ID name for this node, referenceable by other nodes." />
'

JSON "@DEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
USE
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="USE" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:IDREF" description="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)." />
'

JSON "@USE": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DNode" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
component
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="component">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#Components" appinfo="Functional summary: each added component statement indicates needed scene functionality support above the given X3D profile.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="level" type="SFInt32" accessType="inputOutput" default="1" minInclusive="1" maxInclusive="5" use="required" description="Necessary level of support for this scene, as defined in corresponding Support table for a given node's component." />
<field name="name" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="componentNameChoices" baseType="xs:NMTOKEN" description="Provides name of this component, as defined in corresponding X3D Specification component Introduction.">
<enumeration value="Core" appinfo="The Core component supplies the base functionality for the X3D run-time system, including the abstract base node type, field types, the event model, and routing." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html" />
<enumeration value="CADGeometry" appinfo="The CADGeometry component is provided for Computer-Aided Design (CAD) nodes." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html" />
<enumeration value="CubeMapTexturing" appinfo="The Cube Map Environmental Texturing component describes how additional texturing effects are defined to produce environmental effects such as reflections from objects." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing" />
<enumeration value="DIS" appinfo="The Distributed Interactive Simulation (DIS) component provides networked interoperability with the IEEE DIS protocol for sharing state and conducting real-time platform-level simulations across multiple host computers." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html" />
<enumeration value="EnvironmentalEffects" appinfo="Nodes in the Environmental effects component support the creation of realistic environmental effects such as panoramic backgrounds and fog." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html" />
<enumeration value="EnvironmentalSensor" appinfo="The Environment Sensor nodes emit events indicating activity in the scene environment, usually based on interactions between the viewer and the world." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html" />
<enumeration value="EventUtilities" appinfo="The Event Utility nodes provide the capability to filter, trigger, convert, or sequence numerous event-types for common interactive applications without the use of a Script node." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html" />
<enumeration value="Followers" appinfo="The Follower nodes (Chasers and Dampers) support dynamic creation of smooth parameter transitions at run time." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html" />
<enumeration value="Geometry2D" appinfo="The Geometry2D component defines how two-dimensional geometry is specified and what shapes are available." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html" />
<enumeration value="Geometry3D" appinfo="The Geometry3D component describes how three-dimensional geometry is specified and defines ElevationGrid, Extrusion, IndexedFaceSet, and most primitive geometry nodes (Box, Cone, Cylinder, Sphere)." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html" />
<enumeration value="Geospatial" appinfo="The Geospatial component defines how to associate real-world locations in an X3D scene and specifies nodes particularly tuned for geospatial applications." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html" />
<enumeration value="Grouping" appinfo="The Grouping component describes how nodes are organized into groups to establish a transformation hierarchy for the X3D scene graph." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html" />
<enumeration value="HAnim" appinfo="The Humanoid Animation (HAnim) component for X3D defines node bindings and other details for implementing ISO/IEC 19774, the HAnim International Specification. Original name was H-Anim for X3D versions 3.0 through 3.3, both enumeration values HAnim and H-Anim are allowed to pass validation." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html" />
<enumeration value="H-Anim" appinfo="Legacy enumeration H-Anim for X3D versions 3.0-3.3 provides backwards compatibility with Humanoid Animation (HAnim) version 1, preferred form of enumeration value is HAnim." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html" />
<enumeration value="Interpolation" appinfo="Interpolator nodes provide keyframe-based animation capability." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html" />
<enumeration value="KeyDeviceSensor" appinfo="The Key Device Sensor defines how keyboard keystrokes are inserted into an X3D world." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/keyDeviceSensor.html" />
<enumeration value="Layering" appinfo="The Layering component describes how to layer a set of subscene layers into a composite scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html" />
<enumeration value="Layout" appinfo="The Layout component defines how to precisely position content in a scene in relation to the rendered results, especially for integrating 2D content with 3D content." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html" />
<enumeration value="Lighting" appinfo="The Lighting component specifies how light sources are defined and positioned, as well as how lights effect the rendered image." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html" />
<enumeration value="Navigation" appinfo="The Navigation component specifies how a user can effectively and intuitively move through and around a 3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html" />
<enumeration value="Networking" appinfo="The Networking component defines node types and other features used to access file-based and streaming resources on the World Wide Web." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html" />
<enumeration value="NURBS" appinfo="The NURBS component describes Non-uniform Rational B-Spline (NURBS) geometry and interpolation nodes." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html" />
<enumeration value="ParticleSystems" appinfo="The Particle Systems component specifies how to model particles and their interactions through the application of basic physics principles to affect motion." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html" />
<enumeration value="Picking" appinfo="The Picking component provides the ability to test for arbitrary object collision and provide basic capabilities to detecting object intersections and interactions." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html" />
<enumeration value="PointingDeviceSensor" appinfo="Pointing device sensor nodes detect pointing events from user-interface devices, defining activities such as a user selecting a piece of geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html" />
<enumeration value="TextureProjection" appinfo="TextureProjection nodes project texture images onto geometry in a scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/textureProjector.html" />
<enumeration value="Rendering" appinfo="The Rendering component includes fundamental rendering primitives such as TriangleSet and PointSet nodes, as well as geometric properties nodes that define how coordinate indices, colors, normals and texture coordinates are specified." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html" />
<enumeration value="RigidBodyPhysics" appinfo="The Rigid Body Physics component describes how to model rigid bodies and their interactions through the application of basic physics principles to effect motion." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html" />
<enumeration value="Scripting" appinfo="The Scripting component describes how Script nodes are used to effect changes in X3D worlds." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/scripting.html" />
<enumeration value="Shaders" appinfo="The Programmable Shaders component describes how programmable shaders are specified and how they affect the visual appearance of geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html" />
<enumeration value="Shape" appinfo="The Shape component defines nodes for associating geometry with their visible properties and the scene environment." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html" />
<enumeration value="Sound" appinfo="The Sound component defines how sound is delivered to an X3D world as well as how sounds are accessed." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html" />
<enumeration value="Text" appinfo="The Text component defines how text strings are rendered in an X3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html" />
<enumeration value="Texturing" appinfo="The Texturing component specifies how 2D texture images are defined and then positioned on associated geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html" />
<enumeration value="Texturing3D" appinfo="The Texturing3D component specifies how 3D volumetric textures describe surface properties as data points in a volume of space, rather than a flat surface." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html" />
<enumeration value="Time" appinfo="The Time component defines how time is sensed, computed and associated with events in an X3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/time.html" />
<enumeration value="VolumeRendering" appinfo="The Volume Rendering component provides the ability to specify and render volumetric data sets." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html" />
</field>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "component": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "-children": {
        "$ref": "#/$defs/-childStatements"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@level": {
        "maximum": 5,
        "minimum": 1,
        "default": 1,
        "$comment": "SFInt32 inputOutput",
        "type": "integer"
      },
      "@name": {
        "enum": [
          "Core",
          "CADGeometry",
          "CubeMapTexturing",
          "DIS",
          "EnvironmentalEffects",
          "EnvironmentalSensor",
          "EventUtilities",
          "Followers",
          "Geometry2D",
          "Geometry3D",
          "Geospatial",
          "Grouping",
          "HAnim",
          "H-Anim",
          "Interpolation",
          "KeyDeviceSensor",
          "Layering",
          "Layout",
          "Lighting",
          "Navigation",
          "Networking",
          "NURBS",
          "ParticleSystems",
          "Picking",
          "PointingDeviceSensor",
          "TextureProjection",
          "Rendering",
          "RigidBodyPhysics",
          "Scripting",
          "Shaders",
          "Shape",
          "Sound",
          "Text",
          "Texturing",
          "Texturing3D",
          "Time",
          "VolumeRendering"
        ],
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      }
    },
    "required": [
      "@level",
      "@name"
    ],
    "additionalProperties": false
  }
}
component appears multiple times, with the following attributes, see JSON above. component appears multiple times, with the following attributes, see JSON above. component appears multiple times, with the following attributes, see JSON above. component appears multiple times, with the following attributes, see JSON above. component appears multiple times, with the following attributes, see JSON above.
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
level
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="level" type="SFInt32" accessType="inputOutput" default="1" minInclusive="1" maxInclusive="5" use="required" description="Necessary level of support for this scene, as defined in corresponding Support table for a given node's component." />
'

JSON "@level": {
  "maximum": 5,
  "minimum": 1,
  "default": 1,
  "$comment": "SFInt32 inputOutput",
  "type": "integer"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="componentNameChoices" baseType="xs:NMTOKEN" description="Provides name of this component, as defined in corresponding X3D Specification component Introduction.">
<enumeration value="Core" appinfo="The Core component supplies the base functionality for the X3D run-time system, including the abstract base node type, field types, the event model, and routing." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html" />
<enumeration value="CADGeometry" appinfo="The CADGeometry component is provided for Computer-Aided Design (CAD) nodes." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/CADGeometry.html" />
<enumeration value="CubeMapTexturing" appinfo="The Cube Map Environmental Texturing component describes how additional texturing effects are defined to produce environmental effects such as reflections from objects." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalTexturing" />
<enumeration value="DIS" appinfo="The Distributed Interactive Simulation (DIS) component provides networked interoperability with the IEEE DIS protocol for sharing state and conducting real-time platform-level simulations across multiple host computers." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/dis.html" />
<enumeration value="EnvironmentalEffects" appinfo="Nodes in the Environmental effects component support the creation of realistic environmental effects such as panoramic backgrounds and fog." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalEffects.html" />
<enumeration value="EnvironmentalSensor" appinfo="The Environment Sensor nodes emit events indicating activity in the scene environment, usually based on interactions between the viewer and the world." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/environmentalSensor.html" />
<enumeration value="EventUtilities" appinfo="The Event Utility nodes provide the capability to filter, trigger, convert, or sequence numerous event-types for common interactive applications without the use of a Script node." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/eventUtilities.html" />
<enumeration value="Followers" appinfo="The Follower nodes (Chasers and Dampers) support dynamic creation of smooth parameter transitions at run time." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/followers.html" />
<enumeration value="Geometry2D" appinfo="The Geometry2D component defines how two-dimensional geometry is specified and what shapes are available." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry2D.html" />
<enumeration value="Geometry3D" appinfo="The Geometry3D component describes how three-dimensional geometry is specified and defines ElevationGrid, Extrusion, IndexedFaceSet, and most primitive geometry nodes (Box, Cone, Cylinder, Sphere)." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geometry3D.html" />
<enumeration value="Geospatial" appinfo="The Geospatial component defines how to associate real-world locations in an X3D scene and specifies nodes particularly tuned for geospatial applications." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/geospatial.html" />
<enumeration value="Grouping" appinfo="The Grouping component describes how nodes are organized into groups to establish a transformation hierarchy for the X3D scene graph." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/grouping.html" />
<enumeration value="HAnim" appinfo="The Humanoid Animation (HAnim) component for X3D defines node bindings and other details for implementing ISO/IEC 19774, the HAnim International Specification. Original name was H-Anim for X3D versions 3.0 through 3.3, both enumeration values HAnim and H-Anim are allowed to pass validation." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html" />
<enumeration value="H-Anim" appinfo="Legacy enumeration H-Anim for X3D versions 3.0-3.3 provides backwards compatibility with Humanoid Animation (HAnim) version 1, preferred form of enumeration value is HAnim." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/hanim.html" />
<enumeration value="Interpolation" appinfo="Interpolator nodes provide keyframe-based animation capability." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/interpolators.html" />
<enumeration value="KeyDeviceSensor" appinfo="The Key Device Sensor defines how keyboard keystrokes are inserted into an X3D world." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/keyDeviceSensor.html" />
<enumeration value="Layering" appinfo="The Layering component describes how to layer a set of subscene layers into a composite scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layering.html" />
<enumeration value="Layout" appinfo="The Layout component defines how to precisely position content in a scene in relation to the rendered results, especially for integrating 2D content with 3D content." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/layout.html" />
<enumeration value="Lighting" appinfo="The Lighting component specifies how light sources are defined and positioned, as well as how lights effect the rendered image." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/lighting.html" />
<enumeration value="Navigation" appinfo="The Navigation component specifies how a user can effectively and intuitively move through and around a 3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/navigation.html" />
<enumeration value="Networking" appinfo="The Networking component defines node types and other features used to access file-based and streaming resources on the World Wide Web." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html" />
<enumeration value="NURBS" appinfo="The NURBS component describes Non-uniform Rational B-Spline (NURBS) geometry and interpolation nodes." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/nurbs.html" />
<enumeration value="ParticleSystems" appinfo="The Particle Systems component specifies how to model particles and their interactions through the application of basic physics principles to affect motion." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/particleSystems.html" />
<enumeration value="Picking" appinfo="The Picking component provides the ability to test for arbitrary object collision and provide basic capabilities to detecting object intersections and interactions." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/picking.html" />
<enumeration value="PointingDeviceSensor" appinfo="Pointing device sensor nodes detect pointing events from user-interface devices, defining activities such as a user selecting a piece of geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/pointingDeviceSensor.html" />
<enumeration value="TextureProjection" appinfo="TextureProjection nodes project texture images onto geometry in a scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/textureProjector.html" />
<enumeration value="Rendering" appinfo="The Rendering component includes fundamental rendering primitives such as TriangleSet and PointSet nodes, as well as geometric properties nodes that define how coordinate indices, colors, normals and texture coordinates are specified." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rendering.html" />
<enumeration value="RigidBodyPhysics" appinfo="The Rigid Body Physics component describes how to model rigid bodies and their interactions through the application of basic physics principles to effect motion." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/rigidBodyPhysics.html" />
<enumeration value="Scripting" appinfo="The Scripting component describes how Script nodes are used to effect changes in X3D worlds." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/scripting.html" />
<enumeration value="Shaders" appinfo="The Programmable Shaders component describes how programmable shaders are specified and how they affect the visual appearance of geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shaders.html" />
<enumeration value="Shape" appinfo="The Shape component defines nodes for associating geometry with their visible properties and the scene environment." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html" />
<enumeration value="Sound" appinfo="The Sound component defines how sound is delivered to an X3D world as well as how sounds are accessed." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/sound.html" />
<enumeration value="Text" appinfo="The Text component defines how text strings are rendered in an X3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/text.html" />
<enumeration value="Texturing" appinfo="The Texturing component specifies how 2D texture images are defined and then positioned on associated geometry." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texturing.html" />
<enumeration value="Texturing3D" appinfo="The Texturing3D component specifies how 3D volumetric textures describe surface properties as data points in a volume of space, rather than a flat surface." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/texture3D.html" />
<enumeration value="Time" appinfo="The Time component defines how time is sensed, computed and associated with events in an X3D scene." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/time.html" />
<enumeration value="VolumeRendering" appinfo="The Volume Rendering component provides the ability to specify and render volumetric data sets." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/volume.html" />
</field>
'

JSON "@name": {
  "enum": [
    "Core",
    "CADGeometry",
    "CubeMapTexturing",
    "DIS",
    "EnvironmentalEffects",
    "EnvironmentalSensor",
    "EventUtilities",
    "Followers",
    "Geometry2D",
    "Geometry3D",
    "Geospatial",
    "Grouping",
    "HAnim",
    "H-Anim",
    "Interpolation",
    "KeyDeviceSensor",
    "Layering",
    "Layout",
    "Lighting",
    "Navigation",
    "Networking",
    "NURBS",
    "ParticleSystems",
    "Picking",
    "PointingDeviceSensor",
    "TextureProjection",
    "Rendering",
    "RigidBodyPhysics",
    "Scripting",
    "Shaders",
    "Shape",
    "Sound",
    "Text",
    "Texturing",
    "Texturing3D",
    "Time",
    "VolumeRendering"
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
connect
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="connect">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#IS_ConnectStatementSyntax" appinfo="Functional summary: connect statements define event-routing connections between node fields defined inside a ProtoBody declaration back to corresponding ProtoInterface fields.">
<componentInfo name="Core" level="2" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="nodeField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of field within this node which IS CONNECTed to the ancestor ProtoDeclare field definition." />
<field name="protoField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of parent ProtoDeclare field definition connecting to field in this node." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "connect": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "-children": {
        "$ref": "#/$defs/-childStatements"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@nodeField": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@protoField": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      }
    },
    "required": [
      "@nodeField",
      "@protoField"
    ],
    "additionalProperties": false
  }
}
connect appears multiple times, with the following attributes, see JSON above. connect appears multiple times, with the following attributes, see JSON above. connect appears multiple times, with the following attributes, see JSON above. connect appears multiple times, with the following attributes, see JSON above. connect appears multiple times, with the following attributes, see JSON above.
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
nodeField
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="nodeField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of field within this node which IS CONNECTed to the ancestor ProtoDeclare field definition." />
'

JSON "@nodeField": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
protoField
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="protoField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of parent ProtoDeclare field definition connecting to field in this node." />
'

JSON "@protoField": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
EXPORT
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="EXPORT">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#EXPORTSemantics" appinfo="Functional summary: EXPORT exposes a local node for ROUTE passing of event values when the current Scene is included via Inline by a parent external world. These connections allow event values to be exchanged via ROUTE statements between a parent model and a child Inline model.">
<componentInfo name="Networking" level="3" />
<field name="AS" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="rename localDEF node AS a different name when exporting." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="localDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="localDEF is the DEF name of the local node to be EXPORTed." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "EXPORT": {
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@AS": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@localDEF": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "required": [
    "@localDEF"
  ],
  "additionalProperties": false
}
AS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="AS" type="SFString" accessType="inputOutput" baseType="xs:NMTOKEN" description="rename localDEF node AS a different name when exporting." />
'

JSON "@AS": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
localDEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="localDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="localDEF is the DEF name of the local node to be EXPORTed." />
'

JSON "@localDEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ExternProtoDeclare
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="ExternProtoDeclare">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#Externalprototypesemantics" appinfo="ExternProtoDeclare refers to a ProtoDeclare node declaration provided in another file. ExternProtoDeclare interfaces are defined by field statements (and without IS/connect statements).">
<componentInfo name="Core" level="2" />
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the corresponding original ProtoDeclare." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="name of the ExternProtoDeclare (External Prototype Declaration) being referenced." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="url" type="MFString" accessType="inputOutput" use="required" description="Location and filename of ProtoDeclare source declaration of interest." />
<ContentModel>
<StatementContentModel name="field" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "ExternProtoDeclare": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@field": {
        "$comment": "x-orderOf-StatementContentModel"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@appinfo": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@documentation": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "field": {
      "$ref": "#/$defs/field"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@name": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@url": {
      "$comment": "MFString inputOutput",
      "type": "array",
      "minItems": 1,
      "items": {
        "format": "uri-reference",
        "type": "string"
      }
    }
  },
  "required": [
    "@name",
    "@url"
  ],
  "additionalProperties": false
}
appinfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
'

JSON "@appinfo": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
documentation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
'

JSON "@documentation": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in the corresponding original ProtoDeclare." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="name of the ExternProtoDeclare (External Prototype Declaration) being referenced." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
url
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="url" type="MFString" accessType="inputOutput" use="required" description="Location and filename of ProtoDeclare source declaration of interest." />
'

JSON "@url": {
  "$comment": "MFString inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "format": "uri-reference",
    "type": "string"
  }
}
field
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="field">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#NodeAndFieldStatementSyntax" appinfo="Functional summary: a field statement defines an interface attribute or node. Each field statement can contain either attribute-value or node content.">
<componentInfo name="Core" level="1" />
<field name="accessType" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="accessTypeChoices" baseType="xs:NMTOKEN" description="Event-model semantics for field set/get capabilities.">
<enumeration value="initializeOnly" appinfo="A field with accessType initializeOnly can be initialized, but cannot send or receive events." />
<enumeration value="inputOnly" appinfo="A field with accessType inputOnly cannot be initialized or included in a scene file, but can receive input event values via a ROUTE." />
<enumeration value="outputOnly" appinfo="A field with accessType outputOnly cannot be initialized or included in a scene file, but can send output event values via a ROUTE." />
<enumeration value="inputOutput" appinfo="A field with accessType inputOutput can be initialized, and can also send or receive events." />
</field>
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="If this field definition has type SFNode or MFNode, then initialization node (or nodes) of any appropriate type may be provided as children of the field definition." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of this field declaration." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="type" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="fieldTypeChoices" baseType="xs:NMTOKEN" description="Base type of this field variable.">
<enumeration value="SFBool" appinfo="Single Field (singleton) Boolean." />
<enumeration value="MFBool" appinfo="Multiple Field (list) Boolean." />
<enumeration value="SFColor" appinfo="Single Field (singleton) color value, red-green-blue." />
<enumeration value="MFColor" appinfo="Multiple Field (list) color value, red-green-blue." />
<enumeration value="SFColorRGBA" appinfo="Single Field (singleton) color value, red-green-blue alpha (opacity)." />
<enumeration value="MFColorRGBA" appinfo="Multiple Field (list) color value, red-green-blue alpha (opacity)." />
<enumeration value="SFDouble" appinfo="Single Field (singleton) double-precision (64-bit) float." />
<enumeration value="MFDouble" appinfo="Multiple Field (list) 2-tuple double-precision (64-bit) float vector." />
<enumeration value="SFFloat" appinfo="Single Field (singleton) single-precision (32-bit) float." />
<enumeration value="MFFloat" appinfo="Multiple Field (list) single-precision (32-bit) float vector." />
<enumeration value="SFImage" appinfo="Single Field (singleton) image value." />
<enumeration value="MFImage" appinfo="Multiple Field (list) image values." />
<enumeration value="SFInt32" appinfo="Single Field (singleton) 32-bit integer." />
<enumeration value="MFInt32" appinfo="Multiple Field (list) 32-bit integer." />
<enumeration value="SFNode" appinfo="Single Field (singleton) node." />
<enumeration value="MFNode" appinfo="Multiple Field (list) nodes." />
<enumeration value="SFRotation" appinfo="Single Field (singleton) rotation value using 3-tuple axis, radian angle." />
<enumeration value="MFRotation" appinfo="Multiple Field (list) rotation values using 3-tuple axis, radian angle." />
<enumeration value="SFString" appinfo="Single Field (singleton) string value." />
<enumeration value="MFString" appinfo="Multiple Field (list) SFString array." />
<enumeration value="SFTime" appinfo="Single Field (singleton) time value in seconds." />
<enumeration value="MFTime" appinfo="Multiple Field (list) time array in seconds." />
<enumeration value="SFVec2d" appinfo="Single Field (singleton) 2-tuple double-precision float vector." />
<enumeration value="MFVec2d" appinfo="Multiple Field (list) 2-tuple double-precision float vectors." />
<enumeration value="SFVec2f" appinfo="Single Field (singleton) 2-tuple single-precision float vector." />
<enumeration value="MFVec2f" appinfo="Multiple Field (list) 2-tuple single-precision float vectors." />
<enumeration value="SFVec3d" appinfo="Single Field (singleton) 3-tuple double-precision float vector." />
<enumeration value="MFVec3d" appinfo="Multiple Field (list) 3-tuple double-precision float vectors." />
<enumeration value="SFVec3f" appinfo="Single Field (singleton) 3-tuple single-precision float vector." />
<enumeration value="MFVec3f" appinfo="Multiple Field (list) 3-tuple single-precision float vectors." />
<enumeration value="SFVec4d" appinfo="Single Field (singleton) 4-tuple double-precision float vector." />
<enumeration value="MFVec4d" appinfo="Multiple Field (list) 4-tuple double-precision float vectors." />
<enumeration value="SFVec4f" appinfo="Single Field (singleton) 4-tuple single-precision float vector." />
<enumeration value="MFVec4f" appinfo="Multiple Field (list) 4-tuple single-precision float vectors." />
<enumeration value="SFMatrix3d" appinfo="Single Field (singleton) 3\xc3\x83\xe2\x80\x943 matrix of double-precision floating point numbers." />
<enumeration value="MFMatrix3d" appinfo="Multiple Field (list) 3\xc3\x83\xe2\x80\x943 matrices of double-precision floating point numbers." />
<enumeration value="SFMatrix3f" appinfo="Single Field (singleton) 3\xc3\x83\xe2\x80\x943 matrix of single-precision floating point numbers." />
<enumeration value="MFMatrix3f" appinfo="Multiple Field (list) 3\xc3\x83\xe2\x80\x943 matrices of double-precision floating point numbers." />
<enumeration value="SFMatrix4d" appinfo="Single Field (singleton) 4\xc3\x83\xe2\x80\x944 matrix of double-precision floating point numbers." />
<enumeration value="MFMatrix4d" appinfo="Multiple Field (list) 4\xc3\x83\xe2\x80\x944 matric3w of double-precision floating point numbers." />
<enumeration value="SFMatrix4f" appinfo="Single Field (singleton) 4\xc3\x83\xe2\x80\x944 matrix of single-precision floating point numbers." />
<enumeration value="MFMatrix4f" appinfo="Multiple Field (list) 4\xc3\x83\xe2\x80\x944 matrices of single-precision floating point numbers." />
</field>
<field name="value" type="SFString" accessType="inputOutput" description="Provide default initialization value for this field variable (which may be re-initialized later by instantiation value of a named ProtoInstance fieldValue)." />
<ContentModel>
<GroupContentModel name="SceneGraphFragmentContentModel" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "field": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "@accessType": {
        "enum": [
          "initializeOnly",
          "inputOnly",
          "outputOnly",
          "inputOutput"
        ],
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@appinfo": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "-children": {
        "$ref": "#/$defs/-X3DNodeMFNode"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@documentation": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@name": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@type": {
        "enum": [
          "SFBool",
          "MFBool",
          "SFColor",
          "MFColor",
          "SFColorRGBA",
          "MFColorRGBA",
          "SFDouble",
          "MFDouble",
          "SFFloat",
          "MFFloat",
          "SFImage",
          "MFImage",
          "SFInt32",
          "MFInt32",
          "SFNode",
          "MFNode",
          "SFRotation",
          "MFRotation",
          "SFString",
          "MFString",
          "SFTime",
          "MFTime",
          "SFVec2d",
          "MFVec2d",
          "SFVec2f",
          "MFVec2f",
          "SFVec3d",
          "MFVec3d",
          "SFVec3f",
          "MFVec3f",
          "SFVec4d",
          "MFVec4d",
          "SFVec4f",
          "MFVec4f",
          "SFMatrix3d",
          "MFMatrix3d",
          "SFMatrix3f",
          "MFMatrix3f",
          "SFMatrix4d",
          "MFMatrix4d",
          "SFMatrix4f",
          "MFMatrix4f"
        ],
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@value": {}
    },
    "required": [
      "@accessType",
      "@name",
      "@type"
    ],
    "additionalProperties": false
  }
}
field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above. field appears multiple times, with the following attributes, see JSON above.
accessType
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="accessType" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="accessTypeChoices" baseType="xs:NMTOKEN" description="Event-model semantics for field set/get capabilities.">
<enumeration value="initializeOnly" appinfo="A field with accessType initializeOnly can be initialized, but cannot send or receive events." />
<enumeration value="inputOnly" appinfo="A field with accessType inputOnly cannot be initialized or included in a scene file, but can receive input event values via a ROUTE." />
<enumeration value="outputOnly" appinfo="A field with accessType outputOnly cannot be initialized or included in a scene file, but can send output event values via a ROUTE." />
<enumeration value="inputOutput" appinfo="A field with accessType inputOutput can be initialized, and can also send or receive events." />
</field>
'

JSON "@accessType": {
  "enum": [
    "initializeOnly",
    "inputOnly",
    "outputOnly",
    "inputOutput"
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
appinfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
'

JSON "@appinfo": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="If this field definition has type SFNode or MFNode, then initialization node (or nodes) of any appropriate type may be provided as children of the field definition." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DNodeMFNode"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
documentation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
'

JSON "@documentation": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of this field declaration." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
type
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="type" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="false" simpleType="fieldTypeChoices" baseType="xs:NMTOKEN" description="Base type of this field variable.">
<enumeration value="SFBool" appinfo="Single Field (singleton) Boolean." />
<enumeration value="MFBool" appinfo="Multiple Field (list) Boolean." />
<enumeration value="SFColor" appinfo="Single Field (singleton) color value, red-green-blue." />
<enumeration value="MFColor" appinfo="Multiple Field (list) color value, red-green-blue." />
<enumeration value="SFColorRGBA" appinfo="Single Field (singleton) color value, red-green-blue alpha (opacity)." />
<enumeration value="MFColorRGBA" appinfo="Multiple Field (list) color value, red-green-blue alpha (opacity)." />
<enumeration value="SFDouble" appinfo="Single Field (singleton) double-precision (64-bit) float." />
<enumeration value="MFDouble" appinfo="Multiple Field (list) 2-tuple double-precision (64-bit) float vector." />
<enumeration value="SFFloat" appinfo="Single Field (singleton) single-precision (32-bit) float." />
<enumeration value="MFFloat" appinfo="Multiple Field (list) single-precision (32-bit) float vector." />
<enumeration value="SFImage" appinfo="Single Field (singleton) image value." />
<enumeration value="MFImage" appinfo="Multiple Field (list) image values." />
<enumeration value="SFInt32" appinfo="Single Field (singleton) 32-bit integer." />
<enumeration value="MFInt32" appinfo="Multiple Field (list) 32-bit integer." />
<enumeration value="SFNode" appinfo="Single Field (singleton) node." />
<enumeration value="MFNode" appinfo="Multiple Field (list) nodes." />
<enumeration value="SFRotation" appinfo="Single Field (singleton) rotation value using 3-tuple axis, radian angle." />
<enumeration value="MFRotation" appinfo="Multiple Field (list) rotation values using 3-tuple axis, radian angle." />
<enumeration value="SFString" appinfo="Single Field (singleton) string value." />
<enumeration value="MFString" appinfo="Multiple Field (list) SFString array." />
<enumeration value="SFTime" appinfo="Single Field (singleton) time value in seconds." />
<enumeration value="MFTime" appinfo="Multiple Field (list) time array in seconds." />
<enumeration value="SFVec2d" appinfo="Single Field (singleton) 2-tuple double-precision float vector." />
<enumeration value="MFVec2d" appinfo="Multiple Field (list) 2-tuple double-precision float vectors." />
<enumeration value="SFVec2f" appinfo="Single Field (singleton) 2-tuple single-precision float vector." />
<enumeration value="MFVec2f" appinfo="Multiple Field (list) 2-tuple single-precision float vectors." />
<enumeration value="SFVec3d" appinfo="Single Field (singleton) 3-tuple double-precision float vector." />
<enumeration value="MFVec3d" appinfo="Multiple Field (list) 3-tuple double-precision float vectors." />
<enumeration value="SFVec3f" appinfo="Single Field (singleton) 3-tuple single-precision float vector." />
<enumeration value="MFVec3f" appinfo="Multiple Field (list) 3-tuple single-precision float vectors." />
<enumeration value="SFVec4d" appinfo="Single Field (singleton) 4-tuple double-precision float vector." />
<enumeration value="MFVec4d" appinfo="Multiple Field (list) 4-tuple double-precision float vectors." />
<enumeration value="SFVec4f" appinfo="Single Field (singleton) 4-tuple single-precision float vector." />
<enumeration value="MFVec4f" appinfo="Multiple Field (list) 4-tuple single-precision float vectors." />
<enumeration value="SFMatrix3d" appinfo="Single Field (singleton) 3\xc3\x83\xe2\x80\x943 matrix of double-precision floating point numbers." />
<enumeration value="MFMatrix3d" appinfo="Multiple Field (list) 3\xc3\x83\xe2\x80\x943 matrices of double-precision floating point numbers." />
<enumeration value="SFMatrix3f" appinfo="Single Field (singleton) 3\xc3\x83\xe2\x80\x943 matrix of single-precision floating point numbers." />
<enumeration value="MFMatrix3f" appinfo="Multiple Field (list) 3\xc3\x83\xe2\x80\x943 matrices of double-precision floating point numbers." />
<enumeration value="SFMatrix4d" appinfo="Single Field (singleton) 4\xc3\x83\xe2\x80\x944 matrix of double-precision floating point numbers." />
<enumeration value="MFMatrix4d" appinfo="Multiple Field (list) 4\xc3\x83\xe2\x80\x944 matric3w of double-precision floating point numbers." />
<enumeration value="SFMatrix4f" appinfo="Single Field (singleton) 4\xc3\x83\xe2\x80\x944 matrix of single-precision floating point numbers." />
<enumeration value="MFMatrix4f" appinfo="Multiple Field (list) 4\xc3\x83\xe2\x80\x944 matrices of single-precision floating point numbers." />
</field>
'

JSON "@type": {
  "enum": [
    "SFBool",
    "MFBool",
    "SFColor",
    "MFColor",
    "SFColorRGBA",
    "MFColorRGBA",
    "SFDouble",
    "MFDouble",
    "SFFloat",
    "MFFloat",
    "SFImage",
    "MFImage",
    "SFInt32",
    "MFInt32",
    "SFNode",
    "MFNode",
    "SFRotation",
    "MFRotation",
    "SFString",
    "MFString",
    "SFTime",
    "MFTime",
    "SFVec2d",
    "MFVec2d",
    "SFVec2f",
    "MFVec2f",
    "SFVec3d",
    "MFVec3d",
    "SFVec3f",
    "MFVec3f",
    "SFVec4d",
    "MFVec4d",
    "SFVec4f",
    "MFVec4f",
    "SFMatrix3d",
    "MFMatrix3d",
    "SFMatrix3f",
    "MFMatrix3f",
    "SFMatrix4d",
    "MFMatrix4d",
    "SFMatrix4f",
    "MFMatrix4f"
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="SFString" accessType="inputOutput" description="Provide default initialization value for this field variable (which may be re-initialized later by instantiation value of a named ProtoInstance fieldValue)." />
'

JSON "@value": {}
fieldValue
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="fieldValue">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#ProtoInstanceAndFieldValueStatement" appinfo="Functional summary: a fieldValue statement re-initializes the default value of a field in a ProtoInstance. Each fieldValue statement can contain either attribute-value or node content.">
<componentInfo name="Core" level="2" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="If this field definition has type SFNode or MFNode, then initialization node (or nodes) of any appropriate type may be provided as children of the field definition." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of the ProtoInstance field being re-initialized (corresponding to field name already defined in ProtoDeclare or ExternProtoDeclare)." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="value" type="SFString" accessType="inputOutput" description="Initial value for this field, which overrides default initialization value defined in original ProtoDeclare field." />
<ContentModel>
<GroupContentModel name="SceneGraphFragmentContentModel" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "fieldValue": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "-children": {
        "$ref": "#/$defs/-X3DNodeMFNode"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@name": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@value": {}
    },
    "required": [
      "@name"
    ],
    "additionalProperties": false
  }
}
fieldValue appears multiple times, with the following attributes, see JSON above. fieldValue appears multiple times, with the following attributes, see JSON above. fieldValue appears multiple times, with the following attributes, see JSON above. fieldValue appears multiple times, with the following attributes, see JSON above. fieldValue appears multiple times, with the following attributes, see JSON above. fieldValue appears multiple times, with the following attributes, see JSON above.
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="If this field definition has type SFNode or MFNode, then initialization node (or nodes) of any appropriate type may be provided as children of the field definition." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DNodeMFNode"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Name of the ProtoInstance field being re-initialized (corresponding to field name already defined in ProtoDeclare or ExternProtoDeclare)." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
value
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="value" type="SFString" accessType="inputOutput" description="Initial value for this field, which overrides default initialization value defined in original ProtoDeclare field." />
'

JSON "@value": {}
head
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="head">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#Header" appinfo="Functional summary: each X3D scene includes a head statement that can contain component, unit and meta statements.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="component" type="MFNode" accessType="inputOutput" acceptableNodeTypes="component" description="Add component statements to indicate necessary scene functionality above the given profile for this X3D model." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="meta" type="MFNode" accessType="inputOutput" acceptableNodeTypes="meta" description="Add meta statements to provide metadata information about this X3D model." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="unit" type="MFNode" accessType="inputOutput" acceptableNodeTypes="unit" description="Add unit statements to define data-conversion factors for typed values defined within a scene." />
<ContentModel>
<StatementContentModel name="component" minOccurs="0" maxOccurs="unbounded" />
<StatementContentModel name="unit" minOccurs="0" maxOccurs="unbounded" />
<StatementContentModel name="meta" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "head": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@component": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0",
        "maxOccurs": "unbounded"
      },
      "@unit": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0",
        "maxOccurs": "unbounded"
      },
      "@meta": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0",
        "maxOccurs": "unbounded"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "component": {
      "$ref": "#/$defs/component"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "meta": {
      "$ref": "#/$defs/meta"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "unit": {
      "$ref": "#/$defs/unit"
    }
  },
  "additionalProperties": false
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
component
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="component" type="MFNode" accessType="inputOutput" acceptableNodeTypes="component" description="Add component statements to indicate necessary scene functionality above the given profile for this X3D model." />
'

JSON "component": {
  "$ref": "#/$defs/component"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
meta
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="meta" type="MFNode" accessType="inputOutput" acceptableNodeTypes="meta" description="Add meta statements to provide metadata information about this X3D model." />
'

JSON "meta": {
  "$ref": "#/$defs/meta"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
unit
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="unit" type="MFNode" accessType="inputOutput" acceptableNodeTypes="unit" description="Add unit statements to define data-conversion factors for typed values defined within a scene." />
'

JSON "unit": {
  "$ref": "#/$defs/unit"
}
IMPORT
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="IMPORT">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#ImportExportsemantics" appinfo="Functional summary: IMPORT provides ROUTE access to a node that has a corresponding EXPORT statement within an Inline scene. These connections allow event values to be exchanged via ROUTE statements between a parent model and a child Inline model.">
<componentInfo name="Networking" level="3" />
<field name="AS" type="SFString" accessType="inputOutput" baseType="xs:ID" description="map importedDEF name AS a new name in current scene." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="importedDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="importedDEF is DEF name of the node of interest that is contained in the remote inlineDEF scene." />
<field name="inlineDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="inlineDEF is the DEF name of Inline node in the same scene as this IMPORT statement." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "IMPORT": {
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@AS": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@importedDEF": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@inlineDEF": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "required": [
    "@importedDEF",
    "@inlineDEF"
  ],
  "additionalProperties": false
}
AS
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="AS" type="SFString" accessType="inputOutput" baseType="xs:ID" description="map importedDEF name AS a new name in current scene." />
'

JSON "@AS": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
importedDEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="importedDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="importedDEF is DEF name of the node of interest that is contained in the remote inlineDEF scene." />
'

JSON "@importedDEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
inlineDEF
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="inlineDEF" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="inlineDEF is the DEF name of Inline node in the same scene as this IMPORT statement." />
'

JSON "@inlineDEF": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
IS
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="IS">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#PROTOdefinitionsemantics" appinfo="Functional summary: the IS statement connects node fields defined inside a ProtoBody declaration back to corresponding ProtoInterface fields. IS/connect statements can be added if the parent node is within a ProtoBody and connect statements define correspondences between prototype fields and built-in node fields.">
<componentInfo name="Core" level="2" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="connect" type="MFNode" accessType="inputOutput" acceptableNodeTypes="connect" description="When inside a ProtoBody declaration and an IS statement, add a connect statement to define event-routing connections between a parent node's field to a corresponding ProtoInterface field." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<StatementContentModel name="connect" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "IS": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@connect": {
        "$comment": "x-orderOf-StatementContentModel"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "connect": {
      "$ref": "#/$defs/connect"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "additionalProperties": false
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
connect
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="connect" type="MFNode" accessType="inputOutput" acceptableNodeTypes="connect" description="When inside a ProtoBody declaration and an IS statement, add a connect statement to define event-routing connections between a parent node's field to a corresponding ProtoInterface field." />
'

JSON "connect": {
  "$ref": "#/$defs/connect"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
meta
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="meta">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#Header" appinfo="Functional summary: the meta statement provides metadata information about a scene, where name and content attributes provide attribute=value metadata pairs.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="content" type="SFString" accessType="inputOutput" use="required" description="The content attribute provides metadata information relevant to the name attribute provided." />
<field name="dir" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="false" simpleType="metaDirectionChoices" baseType="xs:NMTOKEN" description="Direction for weak/neutral text (ltr=left-to-right, rtl=right-to-left).">
<enumeration value="rtl" appinfo="right-to-left." />
<enumeration value="ltr" appinfo="left-to-right." />
</field>
<field name="http-equiv" type="SFString" accessType="inputOutput" description="The http-equiv attribute provides an HTTP header for the value of the content attribute." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="lang" type="SFString" accessType="inputOutput" description="Language code, as per [IETF BCP47/RFC5646]." />
<field name="name" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="true" simpleType="metaNameValues" baseType="xs:NMTOKEN" description="Keyword name of the meta attribute, following the same naming conventions as HTML's meta tag.">
<enumeration value="accessRights" appinfo="permission required to access resource or security status." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-accessRights" />
<enumeration value="author" appinfo="name of individual author." documentation="https://www.w3.org/TR/html5/document-metadata.html#author" />
<enumeration value="CML-version" appinfo="Chemistry Markup Language (CML) version used." documentation="https://www.web3d.org/x3d/content/examples/Basic/ChemicalMarkupLanguage" />
<enumeration value="contributor" appinfo="name of individual contributing to this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-contributor" />
<enumeration value="created" appinfo="date of initial version." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-created" />
<enumeration value="creator" appinfo="name of original author." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-creator" />
<enumeration value="description" appinfo="summary overview describing this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-description" />
<enumeration value="disclaimer" appinfo="statement of denial or disavowal regarding potential claims or responsiblity." />
<enumeration value="drawing" appinfo="name or reference link to a supporting drawing or sketch file." />
<enumeration value="error" appinfo="information about an error (or known problem) that can prevent proper operation." />
<enumeration value="generator" appinfo="authoring tool or translation tool." documentation="https://www.w3.org/TR/html5/document-metadata.html#generator" />
<enumeration value="hint" appinfo="user hint about resource features or operation." />
<enumeration value="identifier" appinfo="url address or unique Uniform Resource Identifier (URI) for resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-identifier" />
<enumeration value="Image" appinfo="name or reference link to supporting image file." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Image" />
<enumeration value="info" appinfo="additional info of interest." />
<enumeration value="information" appinfo="additional information of interest." />
<enumeration value="isVersionOf" appinfo="Related resource of which the described resource is a version, edition, or adaptation." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-isVersionOf" />
<enumeration value="keywords" appinfo="comma-separated tokens, each of which is a keyword of interest." documentation="https://www.w3.org/TR/html5/document-metadata.html#keywords" />
<enumeration value="license" appinfo="content or software license." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-license" />
<enumeration value="mediator" appinfo="entity that mediates access to resource and for whom resource is intended or useful." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-mediator" />
<enumeration value="modified" appinfo="date of modified version." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-modified" />
<enumeration value="movie" appinfo="name or reference link to supporting movie file (note that Dublin Core term is MovingImage)." />
<enumeration value="MovingImage" appinfo="name or reference link to supporting movie." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-MovingImage" />
<enumeration value="original" appinfo="name or reference link to original file or resource." />
<enumeration value="photo" appinfo="name or reference link to supporting photo file (note that Dublin Core term is Image)." />
<enumeration value="photograph" appinfo="name or reference link to supporting photograph file (note that Dublin Core term is Image)." />
<enumeration value="publisher" appinfo="entity responsible for making the resource available." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-publisher" />
<enumeration value="reference" appinfo="name or reference link to supporting reference." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-references" />
<enumeration value="requires" appinfo="prerequisites for operation or viewing." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-requires" />
<enumeration value="rights" appinfo="intellectual property rights (IPR)." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-rights" />
<enumeration value="robots" appinfo="search engine and web-spider guidance value: noindex to block page indexing, nofollow to block following links." documentation="https://developers.google.com/search/reference/robots_meta_tag" />
<enumeration value="Sound" appinfo="name or reference link to supporting sound file." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Sound" />
<enumeration value="source" appinfo="related resource from which the described resource is derived." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-source" />
<enumeration value="specificationSection" appinfo="title of relevant specification section." />
<enumeration value="specificationUrl" appinfo="url for relevant specification section." documentation="https://www.web3d.org/standards" />
<enumeration value="subject" appinfo="search-index subject keywords, key phrases, or classification codes." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-subject" />
<enumeration value="Text" appinfo="resource consisting primarily of words for reading." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Text" />
<enumeration value="title" appinfo="file name for this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-title" />
<enumeration value="TODO" appinfo="action item &quot;to do&quot; that still needs to be performed." />
<enumeration value="translator" appinfo="name of person performing translation from another format or language." />
<enumeration value="translated" appinfo="date of translation from another format or language." />
<enumeration value="version" appinfo="current version number or ID of this resource." />
<enumeration value="warning" appinfo="warning information about a known problem that impedes proper operation." />
</field>
<field name="scheme" type="SFString" accessType="inputOutput" description="The scheme attribute allows authors to provide user agents more context for the correct interpretation of meta information." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "meta": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "-children": {
        "$ref": "#/$defs/-childStatements"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@content": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@dir": {
        "enum": [
          "rtl",
          "ltr"
        ],
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@http-equiv": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@lang": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@name": {
        "anyOf": [
          {
            "enum": [
              "accessRights",
              "author",
              "CML-version",
              "contributor",
              "created",
              "creator",
              "description",
              "disclaimer",
              "drawing",
              "error",
              "generator",
              "hint",
              "identifier",
              "Image",
              "info",
              "information",
              "isVersionOf",
              "keywords",
              "license",
              "mediator",
              "modified",
              "movie",
              "MovingImage",
              "original",
              "photo",
              "photograph",
              "publisher",
              "reference",
              "requires",
              "rights",
              "robots",
              "Sound",
              "source",
              "specificationSection",
              "specificationUrl",
              "subject",
              "Text",
              "title",
              "TODO",
              "translator",
              "translated",
              "version",
              "warning"
            ]
          },
          {
            "type": "string"
          }
        ],
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@scheme": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      }
    },
    "required": [
      "@content",
      "@name"
    ],
    "additionalProperties": false
  }
}
meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above. meta appears multiple times, with the following attributes, see JSON above.
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
content
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="content" type="SFString" accessType="inputOutput" use="required" description="The content attribute provides metadata information relevant to the name attribute provided." />
'

JSON "@content": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
dir
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="dir" type="SFString" accessType="inputOutput" additionalEnumerationValuesAllowed="false" simpleType="metaDirectionChoices" baseType="xs:NMTOKEN" description="Direction for weak/neutral text (ltr=left-to-right, rtl=right-to-left).">
<enumeration value="rtl" appinfo="right-to-left." />
<enumeration value="ltr" appinfo="left-to-right." />
</field>
'

JSON "@dir": {
  "enum": [
    "rtl",
    "ltr"
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
http-equiv
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="http-equiv" type="SFString" accessType="inputOutput" description="The http-equiv attribute provides an HTTP header for the value of the content attribute." />
'

JSON "@http-equiv": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
lang
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="lang" type="SFString" accessType="inputOutput" description="Language code, as per [IETF BCP47/RFC5646]." />
'

JSON "@lang": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" additionalEnumerationValuesAllowed="true" simpleType="metaNameValues" baseType="xs:NMTOKEN" description="Keyword name of the meta attribute, following the same naming conventions as HTML's meta tag.">
<enumeration value="accessRights" appinfo="permission required to access resource or security status." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-accessRights" />
<enumeration value="author" appinfo="name of individual author." documentation="https://www.w3.org/TR/html5/document-metadata.html#author" />
<enumeration value="CML-version" appinfo="Chemistry Markup Language (CML) version used." documentation="https://www.web3d.org/x3d/content/examples/Basic/ChemicalMarkupLanguage" />
<enumeration value="contributor" appinfo="name of individual contributing to this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-contributor" />
<enumeration value="created" appinfo="date of initial version." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-created" />
<enumeration value="creator" appinfo="name of original author." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-creator" />
<enumeration value="description" appinfo="summary overview describing this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-description" />
<enumeration value="disclaimer" appinfo="statement of denial or disavowal regarding potential claims or responsiblity." />
<enumeration value="drawing" appinfo="name or reference link to a supporting drawing or sketch file." />
<enumeration value="error" appinfo="information about an error (or known problem) that can prevent proper operation." />
<enumeration value="generator" appinfo="authoring tool or translation tool." documentation="https://www.w3.org/TR/html5/document-metadata.html#generator" />
<enumeration value="hint" appinfo="user hint about resource features or operation." />
<enumeration value="identifier" appinfo="url address or unique Uniform Resource Identifier (URI) for resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-identifier" />
<enumeration value="Image" appinfo="name or reference link to supporting image file." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Image" />
<enumeration value="info" appinfo="additional info of interest." />
<enumeration value="information" appinfo="additional information of interest." />
<enumeration value="isVersionOf" appinfo="Related resource of which the described resource is a version, edition, or adaptation." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-isVersionOf" />
<enumeration value="keywords" appinfo="comma-separated tokens, each of which is a keyword of interest." documentation="https://www.w3.org/TR/html5/document-metadata.html#keywords" />
<enumeration value="license" appinfo="content or software license." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-license" />
<enumeration value="mediator" appinfo="entity that mediates access to resource and for whom resource is intended or useful." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-mediator" />
<enumeration value="modified" appinfo="date of modified version." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-modified" />
<enumeration value="movie" appinfo="name or reference link to supporting movie file (note that Dublin Core term is MovingImage)." />
<enumeration value="MovingImage" appinfo="name or reference link to supporting movie." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-MovingImage" />
<enumeration value="original" appinfo="name or reference link to original file or resource." />
<enumeration value="photo" appinfo="name or reference link to supporting photo file (note that Dublin Core term is Image)." />
<enumeration value="photograph" appinfo="name or reference link to supporting photograph file (note that Dublin Core term is Image)." />
<enumeration value="publisher" appinfo="entity responsible for making the resource available." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-publisher" />
<enumeration value="reference" appinfo="name or reference link to supporting reference." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-references" />
<enumeration value="requires" appinfo="prerequisites for operation or viewing." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-requires" />
<enumeration value="rights" appinfo="intellectual property rights (IPR)." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-rights" />
<enumeration value="robots" appinfo="search engine and web-spider guidance value: noindex to block page indexing, nofollow to block following links." documentation="https://developers.google.com/search/reference/robots_meta_tag" />
<enumeration value="Sound" appinfo="name or reference link to supporting sound file." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Sound" />
<enumeration value="source" appinfo="related resource from which the described resource is derived." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-source" />
<enumeration value="specificationSection" appinfo="title of relevant specification section." />
<enumeration value="specificationUrl" appinfo="url for relevant specification section." documentation="https://www.web3d.org/standards" />
<enumeration value="subject" appinfo="search-index subject keywords, key phrases, or classification codes." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-subject" />
<enumeration value="Text" appinfo="resource consisting primarily of words for reading." documentation="https://www.dublincore.org/documents/dcmi-terms/#dcmitype-Text" />
<enumeration value="title" appinfo="file name for this resource." documentation="https://www.dublincore.org/documents/dcmi-terms/#terms-title" />
<enumeration value="TODO" appinfo="action item &quot;to do&quot; that still needs to be performed." />
<enumeration value="translator" appinfo="name of person performing translation from another format or language." />
<enumeration value="translated" appinfo="date of translation from another format or language." />
<enumeration value="version" appinfo="current version number or ID of this resource." />
<enumeration value="warning" appinfo="warning information about a known problem that impedes proper operation." />
</field>
'

JSON "@name": {
  "anyOf": [
    {
      "enum": [
        "accessRights",
        "author",
        "CML-version",
        "contributor",
        "created",
        "creator",
        "description",
        "disclaimer",
        "drawing",
        "error",
        "generator",
        "hint",
        "identifier",
        "Image",
        "info",
        "information",
        "isVersionOf",
        "keywords",
        "license",
        "mediator",
        "modified",
        "movie",
        "MovingImage",
        "original",
        "photo",
        "photograph",
        "publisher",
        "reference",
        "requires",
        "rights",
        "robots",
        "Sound",
        "source",
        "specificationSection",
        "specificationUrl",
        "subject",
        "Text",
        "title",
        "TODO",
        "translator",
        "translated",
        "version",
        "warning"
      ]
    },
    {
      "type": "string"
    }
  ],
  "$comment": "SFString inputOutput",
  "type": "string"
}
scheme
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="scheme" type="SFString" accessType="inputOutput" description="The scheme attribute allows authors to provide user agents more context for the correct interpretation of meta information." />
'

JSON "@scheme": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProtoBody
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="ProtoBody">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax" appinfo="ProtoBody contains the definition nodes for new Prototype nodes.">
<componentInfo name="Core" level="2" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="ProtoBody can contain nodes, statements and comments." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="SceneGraphFragmentWithPrototypeDeclarationsContentModel" maxOccurs="unbounded" />
<StatementContentModel name="LayerSet" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "ProtoBody": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@LayerSet": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-X3DNodeMFNode"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "additionalProperties": false
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DNode" description="ProtoBody can contain nodes, statements and comments." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DNodeMFNode"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProtoDeclare
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="ProtoDeclare">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax" appinfo="ProtoDeclare defines new Prototype nodes. Nested ProtoDeclares and ProtoInstances are allowed by the specification.">
<componentInfo name="Core" level="2" />
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="name of this prototype being declared." />
<field name="ProtoBody" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="ProtoBody" description="Include one ProtoBody statement after the ProtoInterface statement." />
<field name="ProtoInterface" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="ProtoInterface" description="Include an optional ProtoInterface statement if this ProtoDeclare has field declarations." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<StatementContentModel name="ProtoInterface" minOccurs="0" />
<StatementContentModel name="ProtoBody" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "ProtoDeclare": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@ProtoInterface": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0"
      },
      "@ProtoBody": {
        "$comment": "x-orderOf-StatementContentModel"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@appinfo": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@documentation": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@name": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "ProtoBody": {
      "$ref": "#/$defs/ProtoBody"
    },
    "ProtoInterface": {
      "$ref": "#/$defs/ProtoInterface"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "required": [
    "@name"
  ],
  "additionalProperties": false
}
appinfo
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="appinfo" type="SFString" accessType="inputOutput" description="Application information to provide simple description usable as a tooltip, similar to XML Schema appinfo tag." />
'

JSON "@appinfo": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
documentation
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="documentation" type="SFString" accessType="inputOutput" description="Documentation url for further information, similar to XML Schema documentation tag." />
'

JSON "@documentation": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="name of this prototype being declared." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProtoBody
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ProtoBody" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="ProtoBody" description="Include one ProtoBody statement after the ProtoInterface statement." />
'

JSON "ProtoBody": {
  "$ref": "#/$defs/ProtoBody"
}
ProtoInterface
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="ProtoInterface" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="ProtoInterface" description="Include an optional ProtoInterface statement if this ProtoDeclare has field declarations." />
'

JSON "ProtoInterface": {
  "$ref": "#/$defs/ProtoInterface"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ProtoInterface
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="ProtoInterface">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax" appinfo="ProtoInterface defines fields for new Prototype nodes.">
<componentInfo name="Core" level="2" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in this ProtoDeclare's ProtoInterface." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<StatementContentModel name="field" minOccurs="0" maxOccurs="unbounded" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "ProtoInterface": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@field": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0",
        "maxOccurs": "unbounded"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "field": {
      "$ref": "#/$defs/field"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "additionalProperties": false
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
field
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="field" type="MFNode" accessType="inputOutput" acceptableNodeTypes="field" description="Include a field statement for each field declaration in this ProtoDeclare's ProtoInterface." />
'

JSON "field": {
  "$ref": "#/$defs/field"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
ROUTE
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="ROUTE">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/concepts.html#ModifyingObjectsRoutes" appinfo="ROUTE connects output fields of event-producing nodes to input fields of event-consuming nodes.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="fromField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="fromField is the field name in the source node which is originating an event." />
<field name="fromNode" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="fromNode is the DEF name of the node originating an event." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="toField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="toField is the field name in the destination node which is receiving an event." />
<field name="toNode" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="toNode is the DEF name of the destination node receiving an event." />
</InterfaceDefinition>
</Statement>
'
JSON "ROUTE": {
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@fromField": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@fromNode": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@toField": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@toNode": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "required": [
    "@fromField",
    "@fromNode",
    "@toField",
    "@toNode"
  ],
  "additionalProperties": false
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
fromField
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fromField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="fromField is the field name in the source node which is originating an event." />
'

JSON "@fromField": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
fromNode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="fromNode" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="fromNode is the DEF name of the node originating an event." />
'

JSON "@fromNode": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
toField
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="toField" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="toField is the field name in the destination node which is receiving an event." />
'

JSON "@toField": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
toNode
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="toNode" type="SFString" accessType="inputOutput" use="required" baseType="xs:IDREF" description="toNode is the DEF name of the destination node receiving an event." />
'

JSON "@toNode": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
Scene
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="Scene">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#Header" appinfo="Scene is the implicit root node of the X3D scene graph.">
<componentInfo name="Core" level="1" />
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode|X3DMetadataObject|LayerSet" description="Scene can contain nodes, statements and comments." />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<ContentModel>
<GroupContentModel name="ChildContentModelCore" />
<GroupContentModel name="GroupingNodeChildContentModel" />
<StatementContentModel name="LayerSet" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "Scene": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@LayerSet": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0"
      }
    }
  },
  "type": "object",
  "properties": {
    "-children": {
      "$ref": "#/$defs/-X3DChildNode-X3DMetadataObject-LayerSetMFNode"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "additionalProperties": false
}
children
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="children" type="MFNode" accessType="inputOutput" acceptableNodeTypes="X3DChildNode|X3DMetadataObject|LayerSet" description="Scene can contain nodes, statements and comments." />
'

JSON "-children": {
  "$ref": "#/$defs/-X3DChildNode-X3DMetadataObject-LayerSetMFNode"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
unit
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="unit">
<InterfaceDefinition specificationUrl="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/core.html#UNITStatement" appinfo="Functional summary: unit statement defines data-conversion factors for typed values defined in a scene.">
<componentInfo name="Core" level="1" />
<field name="category" type="SFString" accessType="initializeOnly" use="required" additionalEnumerationValuesAllowed="false" simpleType="unitCategoryChoices" baseType="xs:NMTOKEN" description="Base-unit category as defined in X3D Specification.">
<enumeration value="angle" appinfo="angle default is radians." />
<enumeration value="force" appinfo="force default is newtons." />
<enumeration value="length" appinfo="length default is meters." />
<enumeration value="mass" appinfo="mass default is kilograms." />
</field>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="conversionFactor" type="SFDouble" accessType="inputOutput" default="1.0" minExclusive="0" use="required" description="Positive double-precision factor that converts new base unit to default base unit." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Author-defined name for this unit conversionFactor value (for example, FeetToMeters)." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
</InterfaceDefinition>
</Statement>
'
JSON "unit": {
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "-children": {
        "$ref": "#/$defs/-childStatements"
      },
      "@category": {
        "enum": [
          "angle",
          "force",
          "length",
          "mass"
        ],
        "$comment": "SFString initializeOnly",
        "type": "string"
      },
      "@class": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@conversionFactor": {
        "exclusiveMinimum": 0,
        "default": 1,
        "$comment": "SFDouble inputOutput",
        "type": "number"
      },
      "@id": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@name": {
        "$comment": "SFString inputOutput",
        "type": "string"
      },
      "@style": {
        "$comment": "SFString inputOutput",
        "type": "string"
      }
    },
    "required": [
      "@category",
      "@conversionFactor",
      "@name"
    ],
    "additionalProperties": false
  }
}
unit appears multiple times, with the following attributes, see JSON above. unit appears multiple times, with the following attributes, see JSON above. unit appears multiple times, with the following attributes, see JSON above. unit appears multiple times, with the following attributes, see JSON above. unit appears multiple times, with the following attributes, see JSON above. unit appears multiple times, with the following attributes, see JSON above.
category
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="category" type="SFString" accessType="initializeOnly" use="required" additionalEnumerationValuesAllowed="false" simpleType="unitCategoryChoices" baseType="xs:NMTOKEN" description="Base-unit category as defined in X3D Specification.">
<enumeration value="angle" appinfo="angle default is radians." />
<enumeration value="force" appinfo="force default is newtons." />
<enumeration value="length" appinfo="length default is meters." />
<enumeration value="mass" appinfo="mass default is kilograms." />
</field>
'

JSON "@category": {
  "enum": [
    "angle",
    "force",
    "length",
    "mass"
  ],
  "$comment": "SFString initializeOnly",
  "type": "string"
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
conversionFactor
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="conversionFactor" type="SFDouble" accessType="inputOutput" default="1.0" minExclusive="0" use="required" description="Positive double-precision factor that converts new base unit to default base unit." />
'

JSON "@conversionFactor": {
  "exclusiveMinimum": 0,
  "default": 1,
  "$comment": "SFDouble inputOutput",
  "type": "number"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
name
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="name" type="SFString" accessType="inputOutput" use="required" baseType="xs:NMTOKEN" description="Author-defined name for this unit conversionFactor value (for example, FeetToMeters)." />
'

JSON "@name": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
X3D
XML
b'<?xml version='1.0' encoding='utf8'?>
<Statement name="X3D">
<InterfaceDefinition specificationUrl="https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#Header" appinfo="X3D is the root node for an Extensible 3D (X3D) Graphics model.">
<componentInfo name="Core" level="1" />
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="head" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="head" description="Include a head element to contain component, unit or meta statements for this X3D model." />
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
<field name="profile" type="SFString" accessType="inputOutput" default="Full" use="required" additionalEnumerationValuesAllowed="false" simpleType="profileNameChoices" baseType="xs:NMTOKEN" description="profile attribute is required and defines the player or tool support needed for this model.">
<enumeration value="Core" appinfo="Core Profile includes no nodes and is provided as the basis for custom componentization. Allowed X3D statements for all profiles are: connect ExternProtoDeclare EXPORT field fieldValue IMPORT IS ProtoBody ProtoDeclare ProtoInterface ProtoInstance ROUTE X3D. Allowed X3D nodes for this profile are: MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/coreprofile.html" />
<enumeration value="Interchange" appinfo="Interchange Profile equals the minimum subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Appearance Background Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder DirectionalLight Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PointSet PositionInterpolator ScalarInterpolator Shape Sphere TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/interchange.html" />
<enumeration value="CADInterchange" appinfo="CADInterchange Profile adds support for CADGeometry component nodes to Interchange Profile. Allowed X3D nodes for this profile are: Anchor Appearance CADAssembly CADFace CADLayer CADPart Billboard Collision Color ColorRGBA Coordinate DirectionalLight FragmentShader Group ImageTexture IndexedLineSet IndexedQuadSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline LineProperties LineSet LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiShader MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal PixelTexture PointSet QuadSet Shader ShaderAppearance Shape TextureCoordinate TextureCoordinateGenerator TextureTransform Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint VertexShader WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/CADInterchange.html" />
<enumeration value="Interactive" appinfo="Interactive Profile adds interaction nodes (Anchor, KeySensor) to the minimum subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Anchor Appearance Background BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet PositionInterpolator ProximitySensor ScalarInterpolator Shape Sphere SphereSensor SpotLight StringSensor Switch TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor TimeTrigger TouchSensor Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint VisibilitySensor WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/interactive.html" />
<enumeration value="Immersive" appinfo="Immersive Profile equals all of the nodes in the VRML97 Specification, plus various X3D node additions including KeySensor, StringSensor and Scene. Allowed X3D nodes for this profile are: Anchor Appearance AudioClip Background Billboard BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger Box Collision Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Extrusion Fog FontStyle Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFan IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineProperties LineSet LoadSensor LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MovieTexture MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet Polyline2D Polypoint2D PositionInterpolator ProximitySensor Rectangle2D ScalarInterpolator Script Shape Sound Sphere SphereSensor SpotLight StringSensor Switch Text TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor TimeTrigger TouchSensor TriangleFanSet TriangleSet TriangleSet2D TriangleStripSet Transform Viewpoint VisibilitySensor WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/immersive.html" />
<enumeration value="MedicalInterchange" appinfo="The MedicalInterchange profile adds support for VolumeRendering component to Interchange profile. Allowed X3D nodes for this profile are: Anchor Arc2D ArcClose2D Appearance Background Billboard BlendedVolumeStyle BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger BoundaryEnhancementVolumeStyle Box CartoonVolumeStyle Circle2D ClipPlane Collision Color ColorInterpolator ColorRGBA ComposedVolumeStyle CompositeTexture3D Cone Coordinate CoordinateDouble CoordinateInterpolator Cylinder DirectionalLight Disk2D EdgeEnhancementVolumeStyle FillProperties FontStyle Group ImageTexture ImageTexture3D IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger IsoSurfaceVolumeData LineProperties LineSet LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OctTree OpacityMapVolumeStyle OrientationInterpolator OrthoViewpoint PixelTexture PixelTexture3D PointSet Polyline2D Polypoint2D PositionInterpolator ProjectionVolumeStyle Rectangle2D ScalarInterpolator SegmentedVolumeData ShadedVolumeStyle Shape SilhouetteEnhancementVolumeStyle Sphere StaticGroup Switch Text TextureCoordinate TextureCoordinate3D TextureCoordinate4D TextureCoordinateGenerator TextureMatrixTransform TextureProperties TextureTransform TextureTransform3D TimeSensor TimeTrigger ToneMappedVolumeStyle Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint ViewpointGroup VolumeData WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/MedInterchange.html" />
<enumeration value="MPEG4Interactive" appinfo="MPEGInteractive Profile defines base interoperability with MPEG4 standards to a small subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Anchor Appearance Background Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Group ImageTexture IndexedFaceSet IndexedLineSet Inline LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString NavigationInfo NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet PositionInterpolator ProximitySensor ScalarInterpolator Shape Sphere SphereSensor SpotLight Switch TextureCoordinate TextureTransform TimeSensor TouchSensor Transform Viewpoint WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/MPEG4interactive.html" />
<enumeration value="Full" appinfo="The Full Profile corresponds to all Immersive X3D nodes plus all approved/implemented extensions. All X3D nodes and statements are allowed in this profile." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/fullProfile.html" />
</field>
<field name="Scene" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Scene" description="Include a Scene element to contain scene-graph nodes for this X3D model." />
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
<field name="version" type="SFString" accessType="inputOutput" default="4.0" use="required" additionalEnumerationValuesAllowed="false" simpleType="x3dVersionChoices" baseType="xs:NMTOKEN" description="Default is highest value matching schema and DOCTYPE in the scene.">
<enumeration value="3.0" appinfo="X3D version 3.0 approved by ISO in 2004." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.0/index.html" />
<enumeration value="3.1" appinfo="X3D version 3.1 Amendment 1 approved by ISO in 2005. Backwards compatibility maintained with version 3.0." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.1/index.html" />
<enumeration value="3.2" appinfo="X3D version 3.2 Amendment 2 approved by ISO in 2007. Backwards compatibility maintained with versions 3.0 and 3.1." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.2/index.html" />
<enumeration value="3.3" appinfo="X3D version 3.3 approved by ISO in 2013 as International Standard (IS). Backwards compatibility maintained with versions 3.0, 3.1 and 3.2." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/X3D.html" />
<enumeration value="4.0" appinfo="X3D version 4.0 under final development by Web3D Consortium. Backwards compatibility maintained with versions 3.0, 3.1, 3.2 and 3.3." documentation="https://www.web3d.org/x3d4" />
</field>
<ContentModel>
<StatementContentModel name="head" minOccurs="0" />
<StatementContentModel name="Scene" />
<StatementContentModel name="ds:Signature" minOccurs="0" />
</ContentModel>
</InterfaceDefinition>
</Statement>
'
JSON "X3D": {
  "x-orderOf": {
    "type": "object",
    "properties": {
      "@head": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0"
      },
      "@Scene": {
        "$comment": "x-orderOf-StatementContentModel"
      },
      "@ds:Signature": {
        "$comment": "x-orderOf-StatementContentModel",
        "minOccurs": "0"
      }
    }
  },
  "type": "object",
  "properties": {
    "@xsd:noNamespaceSchemaLocation": {
      "type": "string",
      "format": "uri"
    },
    "JSON schema": {
      "type": "string"
    },
    "encoding": {
      "type": "string",
      "enum": [
        "UTF-8",
        "UTF-16",
        "UTF-32"
      ]
    },
    "-children": {
      "$ref": "#/$defs/-childStatements"
    },
    "@class": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "head": {
      "$ref": "#/$defs/head"
    },
    "@id": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@profile": {
      "enum": [
        "Core",
        "Interchange",
        "CADInterchange",
        "Interactive",
        "Immersive",
        "MedicalInterchange",
        "MPEG4Interactive",
        "Full"
      ],
      "default": "Full",
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "Scene": {
      "$ref": "#/$defs/Scene"
    },
    "@style": {
      "$comment": "SFString inputOutput",
      "type": "string"
    },
    "@version": {
      "enum": [
        "3.0",
        "3.1",
        "3.2",
        "3.3",
        "4.0"
      ],
      "default": "4.0",
      "$comment": "SFString inputOutput",
      "type": "string"
    }
  },
  "required": [
    "@profile",
    "Scene",
    "encoding",
    "@version"
  ],
  "additionalProperties": false
}
class
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="class" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKENS" description="The class attribute on each X3D node and statement is a space-separated list of classes, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@class": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
head
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="head" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="head" description="Include a head element to contain component, unit or meta statements for this X3D model." />
'

JSON "head": {
  "$ref": "#/$defs/head"
}
id
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="id" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" baseType="xs:NMTOKEN" description="The id attribute on each X3D node and statement is considered a unique identifier when used as part of an encompassing HTML/DOM context." />
'

JSON "@id": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
profile
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="profile" type="SFString" accessType="inputOutput" default="Full" use="required" additionalEnumerationValuesAllowed="false" simpleType="profileNameChoices" baseType="xs:NMTOKEN" description="profile attribute is required and defines the player or tool support needed for this model.">
<enumeration value="Core" appinfo="Core Profile includes no nodes and is provided as the basis for custom componentization. Allowed X3D statements for all profiles are: connect ExternProtoDeclare EXPORT field fieldValue IMPORT IS ProtoBody ProtoDeclare ProtoInterface ProtoInstance ROUTE X3D. Allowed X3D nodes for this profile are: MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/coreprofile.html" />
<enumeration value="Interchange" appinfo="Interchange Profile equals the minimum subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Appearance Background Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder DirectionalLight Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PointSet PositionInterpolator ScalarInterpolator Shape Sphere TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/interchange.html" />
<enumeration value="CADInterchange" appinfo="CADInterchange Profile adds support for CADGeometry component nodes to Interchange Profile. Allowed X3D nodes for this profile are: Anchor Appearance CADAssembly CADFace CADLayer CADPart Billboard Collision Color ColorRGBA Coordinate DirectionalLight FragmentShader Group ImageTexture IndexedLineSet IndexedQuadSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline LineProperties LineSet LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiShader MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal PixelTexture PointSet QuadSet Shader ShaderAppearance Shape TextureCoordinate TextureCoordinateGenerator TextureTransform Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint VertexShader WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/CADInterchange.html" />
<enumeration value="Interactive" appinfo="Interactive Profile adds interaction nodes (Anchor, KeySensor) to the minimum subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Anchor Appearance Background BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet PositionInterpolator ProximitySensor ScalarInterpolator Shape Sphere SphereSensor SpotLight StringSensor Switch TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor TimeTrigger TouchSensor Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint VisibilitySensor WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/interactive.html" />
<enumeration value="Immersive" appinfo="Immersive Profile equals all of the nodes in the VRML97 Specification, plus various X3D node additions including KeySensor, StringSensor and Scene. Allowed X3D nodes for this profile are: Anchor Appearance AudioClip Background Billboard BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger Box Collision Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Extrusion Fog FontStyle Group ImageTexture IndexedFaceSet IndexedLineSet IndexedTriangleFan IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger KeySensor LineProperties LineSet LoadSensor LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MovieTexture MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet Polyline2D Polypoint2D PositionInterpolator ProximitySensor Rectangle2D ScalarInterpolator Script Shape Sound Sphere SphereSensor SpotLight StringSensor Switch Text TextureCoordinate TextureCoordinateGenerator TextureTransform TimeSensor TimeTrigger TouchSensor TriangleFanSet TriangleSet TriangleSet2D TriangleStripSet Transform Viewpoint VisibilitySensor WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/immersive.html" />
<enumeration value="MedicalInterchange" appinfo="The MedicalInterchange profile adds support for VolumeRendering component to Interchange profile. Allowed X3D nodes for this profile are: Anchor Arc2D ArcClose2D Appearance Background Billboard BlendedVolumeStyle BooleanFilter BooleanSequencer BooleanToggle BooleanTrigger BoundaryEnhancementVolumeStyle Box CartoonVolumeStyle Circle2D ClipPlane Collision Color ColorInterpolator ColorRGBA ComposedVolumeStyle CompositeTexture3D Cone Coordinate CoordinateDouble CoordinateInterpolator Cylinder DirectionalLight Disk2D EdgeEnhancementVolumeStyle FillProperties FontStyle Group ImageTexture ImageTexture3D IndexedFaceSet IndexedLineSet IndexedTriangleFanSet IndexedTriangleSet IndexedTriangleStripSet Inline IntegerSequencer IntegerTrigger IsoSurfaceVolumeData LineProperties LineSet LOD Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString MultiTexture MultiTextureCoordinate MultiTextureTransform NavigationInfo Normal NormalInterpolator OctTree OpacityMapVolumeStyle OrientationInterpolator OrthoViewpoint PixelTexture PixelTexture3D PointSet Polyline2D Polypoint2D PositionInterpolator ProjectionVolumeStyle Rectangle2D ScalarInterpolator SegmentedVolumeData ShadedVolumeStyle Shape SilhouetteEnhancementVolumeStyle Sphere StaticGroup Switch Text TextureCoordinate TextureCoordinate3D TextureCoordinate4D TextureCoordinateGenerator TextureMatrixTransform TextureProperties TextureTransform TextureTransform3D TimeSensor TimeTrigger ToneMappedVolumeStyle Transform TriangleFanSet TriangleSet TriangleStripSet Viewpoint ViewpointGroup VolumeData WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/MedInterchange.html" />
<enumeration value="MPEG4Interactive" appinfo="MPEGInteractive Profile defines base interoperability with MPEG4 standards to a small subset of nodes needed to display lightweight compelling content. Allowed X3D nodes for this profile are: Anchor Appearance Background Box Color ColorInterpolator ColorRGBA Cone Coordinate CoordinateInterpolator Cylinder CylinderSensor DirectionalLight ElevationGrid Group ImageTexture IndexedFaceSet IndexedLineSet Inline LineSet Material MetadataBoolean MetadataDouble MetadataFloat MetadataInteger MetadataSet MetadataString NavigationInfo NormalInterpolator OrientationInterpolator PixelTexture PlaneSensor PointLight PointSet PositionInterpolator ProximitySensor ScalarInterpolator Shape Sphere SphereSensor SpotLight Switch TextureCoordinate TextureTransform TimeSensor TouchSensor Transform Viewpoint WorldInfo." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/MPEG4interactive.html" />
<enumeration value="Full" appinfo="The Full Profile corresponds to all Immersive X3D nodes plus all approved/implemented extensions. All X3D nodes and statements are allowed in this profile." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/fullProfile.html" />
</field>
'

JSON "@profile": {
  "enum": [
    "Core",
    "Interchange",
    "CADInterchange",
    "Interactive",
    "Immersive",
    "MedicalInterchange",
    "MPEG4Interactive",
    "Full"
  ],
  "default": "Full",
  "$comment": "SFString inputOutput",
  "type": "string"
}
Scene
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="Scene" type="SFNode" accessType="inputOutput" default="NULL" acceptableNodeTypes="Scene" description="Include a Scene element to contain scene-graph nodes for this X3D model." />
'

JSON "Scene": {
  "$ref": "#/$defs/Scene"
}
style
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="style" type="SFString" accessType="inputOutput" inheritedFrom="X3DStatement" description="The style attribute on each X3D node and statement provides an inline block of CSS source for element styling, reserved for use by Cascading Style Sheets (CSS) and XML stylesheets." />
'

JSON "@style": {
  "$comment": "SFString inputOutput",
  "type": "string"
}
version
XML b'<?xml version='1.0' encoding='utf8'?>
<field name="version" type="SFString" accessType="inputOutput" default="4.0" use="required" additionalEnumerationValuesAllowed="false" simpleType="x3dVersionChoices" baseType="xs:NMTOKEN" description="Default is highest value matching schema and DOCTYPE in the scene.">
<enumeration value="3.0" appinfo="X3D version 3.0 approved by ISO in 2004." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.0/index.html" />
<enumeration value="3.1" appinfo="X3D version 3.1 Amendment 1 approved by ISO in 2005. Backwards compatibility maintained with version 3.0." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.1/index.html" />
<enumeration value="3.2" appinfo="X3D version 3.2 Amendment 2 approved by ISO in 2007. Backwards compatibility maintained with versions 3.0 and 3.1." documentation="https://www.web3d.org/documents/specifications/19775-1/V3.2/index.html" />
<enumeration value="3.3" appinfo="X3D version 3.3 approved by ISO in 2013 as International Standard (IS). Backwards compatibility maintained with versions 3.0, 3.1 and 3.2." documentation="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/X3D.html" />
<enumeration value="4.0" appinfo="X3D version 4.0 under final development by Web3D Consortium. Backwards compatibility maintained with versions 3.0, 3.1, 3.2 and 3.3." documentation="https://www.web3d.org/x3d4" />
</field>
'

JSON "@version": {
  "enum": [
    "3.0",
    "3.1",
    "3.2",
    "3.3",
    "4.0"
  ],
  "default": "4.0",
  "$comment": "SFString inputOutput",
  "type": "string"
}
JSONEX "-childStatements": {
  "description": "Comments and ROUTEs",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ROUTE": {
        "$ref": "#/$defs/ROUTE"
      },
      "IMPORT": {
        "$ref": "#/$defs/IMPORT"
      },
      "ProtoDeclare": {
        "$ref": "#/$defs/ProtoDeclare"
      },
      "ExternProtoDeclare": {
        "$ref": "#/$defs/ExternProtoDeclare"
      },
      "EXPORT": {
        "$ref": "#/$defs/EXPORT"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "@geoSystem": {
  "description": "Attempts to validate all possible combinations",
  "oneOf": [
    {
      "type": "array",
      "minItems": 2,
      "maxItems": 3,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "GD",
            "GDC"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "WGS84"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "AM",
          "AN",
          "BN",
          "BR",
          "CC",
          "CD",
          "EA",
          "EB",
          "EC",
          "ED",
          "EE",
          "EF",
          "FA",
          "HE",
          "HO",
          "ID",
          "IN",
          "KA",
          "RF",
          "SA",
          "WD",
          "WE"
        ],
        "default": "WE"
      }
    },
    {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "GD",
            "GDC"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "AM",
            "AN",
            "BN",
            "BR",
            "CC",
            "CD",
            "EA",
            "EB",
            "EC",
            "ED",
            "EE",
            "EF",
            "FA",
            "HE",
            "HO",
            "ID",
            "IN",
            "KA",
            "RF",
            "SA",
            "WD",
            "WE"
          ],
          "default": "WE"
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "WGS84"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 4,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "AM",
            "AN",
            "BN",
            "BR",
            "CC",
            "CD",
            "EA",
            "EB",
            "EC",
            "ED",
            "EE",
            "EF",
            "FA",
            "HE",
            "HO",
            "ID",
            "IN",
            "KA",
            "RF",
            "SA",
            "WD",
            "WE"
          ]
        },
        {
          "type": "string",
          "enum": [
            "WGS84"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "S",
          "N"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 3,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "AM",
            "AN",
            "BN",
            "BR",
            "CC",
            "CD",
            "EA",
            "EB",
            "EC",
            "ED",
            "EE",
            "EF",
            "FA",
            "HE",
            "HO",
            "ID",
            "IN",
            "KA",
            "RF",
            "SA",
            "WD",
            "WE"
          ]
        },
        {
          "type": "string",
          "enum": [
            "S",
            "N"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "WGS84"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 4,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "WGS84"
          ]
        },
        {
          "type": "string",
          "enum": [
            "AM",
            "AN",
            "BN",
            "BR",
            "CC",
            "CD",
            "EA",
            "EB",
            "EC",
            "ED",
            "EE",
            "EF",
            "FA",
            "HE",
            "HO",
            "ID",
            "IN",
            "KA",
            "RF",
            "SA",
            "WD",
            "WE"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "S",
          "N"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 3,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "WGS84"
          ]
        },
        {
          "type": "string",
          "enum": [
            "S",
            "N"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "AM",
          "AN",
          "BN",
          "BR",
          "CC",
          "CD",
          "EA",
          "EB",
          "EC",
          "ED",
          "EE",
          "EF",
          "FA",
          "HE",
          "HO",
          "ID",
          "IN",
          "KA",
          "RF",
          "SA",
          "WD",
          "WE"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 4,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "S",
            "N"
          ]
        },
        {
          "type": "string",
          "enum": [
            "WGS84"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "AM",
          "AN",
          "BN",
          "BR",
          "CC",
          "CD",
          "EA",
          "EB",
          "EC",
          "ED",
          "EE",
          "EF",
          "FA",
          "HE",
          "HO",
          "ID",
          "IN",
          "KA",
          "RF",
          "SA",
          "WD",
          "WE"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 2,
      "maxItems": 5,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "UTM"
          ],
          "default": "GD"
        },
        {
          "type": "string",
          "enum": [
            "Z01",
            "Z1",
            "Z02",
            "Z2",
            "Z03",
            "Z3",
            "Z04",
            "Z4",
            "Z05",
            "Z5",
            "Z06",
            "Z6",
            "Z07",
            "Z7",
            "Z08",
            "Z8",
            "Z09",
            "Z9",
            "Z10",
            "Z11",
            "Z12",
            "Z13",
            "Z14",
            "Z15",
            "Z16",
            "Z17",
            "Z18",
            "Z19",
            "Z20",
            "Z21",
            "Z22",
            "Z23",
            "Z24",
            "Z25",
            "Z26",
            "Z27",
            "Z28",
            "Z29",
            "Z30",
            "Z31",
            "Z32",
            "Z33",
            "Z34",
            "Z35",
            "Z36",
            "Z37",
            "Z38",
            "Z39",
            "Z40",
            "Z41",
            "Z42",
            "Z43",
            "Z44",
            "Z45",
            "Z46",
            "Z47",
            "Z48",
            "Z49",
            "Z50",
            "Z51",
            "Z52",
            "Z53",
            "Z54",
            "Z55",
            "Z56",
            "Z57",
            "Z58",
            "Z59",
            "Z60"
          ],
          "default": "WE"
        },
        {
          "type": "string",
          "enum": [
            "S",
            "N"
          ]
        },
        {
          "type": "string",
          "enum": [
            "AM",
            "AN",
            "BN",
            "BR",
            "CC",
            "CD",
            "EA",
            "EB",
            "EC",
            "ED",
            "EE",
            "EF",
            "FA",
            "HE",
            "HO",
            "ID",
            "IN",
            "KA",
            "RF",
            "SA",
            "WD",
            "WE"
          ]
        }
      ],
      "items": {
        "type": "string",
        "enum": [
          "WGS84"
        ]
      }
    },
    {
      "type": "array",
      "minItems": 1,
      "maxItems": 1,
      "prefixItems": [
        {
          "type": "string",
          "enum": [
            "GC",
            "GCC"
          ],
          "default": "GD"
        }
      ],
      "items": false
    }
  ]
}
JSONEX "-X3DMetadataObjectSFNode": {
  "type": "object",
  "properties": {
    "MetadataBoolean": {
      "$ref": "#/$defs/MetadataBoolean"
    },
    "MetadataDouble": {
      "$ref": "#/$defs/MetadataDouble"
    },
    "MetadataFloat": {
      "$ref": "#/$defs/MetadataFloat"
    },
    "MetadataInteger": {
      "$ref": "#/$defs/MetadataInteger"
    },
    "MetadataSet": {
      "$ref": "#/$defs/MetadataSet"
    },
    "MetadataString": {
      "$ref": "#/$defs/MetadataString"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-Analyser-AudioClip-AudioDestination-BiquadFilter-BufferAudioSource-ChannelMerger-ChannelSelector-ChannelSplitter-Convolver-Delay-DynamicsCompressor-Gain-ListenerPointSource-MicrophoneSource-MovieTexture-OscillatorSource-Sound-SpatialSound-StreamAudioDestination-StreamAudioSource-WaveShaperMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Analyser": {
        "$ref": "#/$defs/Analyser"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "AudioDestination": {
        "$ref": "#/$defs/AudioDestination"
      },
      "BiquadFilter": {
        "$ref": "#/$defs/BiquadFilter"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "ChannelMerger": {
        "$ref": "#/$defs/ChannelMerger"
      },
      "ChannelSelector": {
        "$ref": "#/$defs/ChannelSelector"
      },
      "ChannelSplitter": {
        "$ref": "#/$defs/ChannelSplitter"
      },
      "Convolver": {
        "$ref": "#/$defs/Convolver"
      },
      "Delay": {
        "$ref": "#/$defs/Delay"
      },
      "DynamicsCompressor": {
        "$ref": "#/$defs/DynamicsCompressor"
      },
      "Gain": {
        "$ref": "#/$defs/Gain"
      },
      "ListenerPointSource": {
        "$ref": "#/$defs/ListenerPointSource"
      },
      "MicrophoneSource": {
        "$ref": "#/$defs/MicrophoneSource"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "OscillatorSource": {
        "$ref": "#/$defs/OscillatorSource"
      },
      "Sound": {
        "$ref": "#/$defs/Sound"
      },
      "SpatialSound": {
        "$ref": "#/$defs/SpatialSound"
      },
      "StreamAudioDestination": {
        "$ref": "#/$defs/StreamAudioDestination"
      },
      "StreamAudioSource": {
        "$ref": "#/$defs/StreamAudioSource"
      },
      "WaveShaper": {
        "$ref": "#/$defs/WaveShaper"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DChildNodeMFNode": {
  "$comment": "MFNode outputOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "EXPORT": {
        "$ref": "#/$defs/EXPORT"
      },
      "ExternProtoDeclare": {
        "$ref": "#/$defs/ExternProtoDeclare"
      },
      "IMPORT": {
        "$ref": "#/$defs/IMPORT"
      },
      "ProtoDeclare": {
        "$ref": "#/$defs/ProtoDeclare"
      },
      "ROUTE": {
        "$ref": "#/$defs/ROUTE"
      },
      "Background": {
        "$ref": "#/$defs/Background"
      },
      "TextureBackground": {
        "$ref": "#/$defs/TextureBackground"
      },
      "GeoViewpoint": {
        "$ref": "#/$defs/GeoViewpoint"
      },
      "OrthoViewpoint": {
        "$ref": "#/$defs/OrthoViewpoint"
      },
      "Viewpoint": {
        "$ref": "#/$defs/Viewpoint"
      },
      "Fog": {
        "$ref": "#/$defs/Fog"
      },
      "NavigationInfo": {
        "$ref": "#/$defs/NavigationInfo"
      },
      "ColorChaser": {
        "$ref": "#/$defs/ColorChaser"
      },
      "CoordinateChaser": {
        "$ref": "#/$defs/CoordinateChaser"
      },
      "OrientationChaser": {
        "$ref": "#/$defs/OrientationChaser"
      },
      "PositionChaser": {
        "$ref": "#/$defs/PositionChaser"
      },
      "PositionChaser2D": {
        "$ref": "#/$defs/PositionChaser2D"
      },
      "ScalarChaser": {
        "$ref": "#/$defs/ScalarChaser"
      },
      "TexCoordChaser2D": {
        "$ref": "#/$defs/TexCoordChaser2D"
      },
      "ColorDamper": {
        "$ref": "#/$defs/ColorDamper"
      },
      "CoordinateDamper": {
        "$ref": "#/$defs/CoordinateDamper"
      },
      "OrientationDamper": {
        "$ref": "#/$defs/OrientationDamper"
      },
      "PositionDamper": {
        "$ref": "#/$defs/PositionDamper"
      },
      "PositionDamper2D": {
        "$ref": "#/$defs/PositionDamper2D"
      },
      "ScalarDamper": {
        "$ref": "#/$defs/ScalarDamper"
      },
      "TexCoordDamper2D": {
        "$ref": "#/$defs/TexCoordDamper2D"
      },
      "Viewport": {
        "$ref": "#/$defs/Viewport"
      },
      "Anchor": {
        "$ref": "#/$defs/Anchor"
      },
      "Billboard": {
        "$ref": "#/$defs/Billboard"
      },
      "CADAssembly": {
        "$ref": "#/$defs/CADAssembly"
      },
      "CADLayer": {
        "$ref": "#/$defs/CADLayer"
      },
      "CADPart": {
        "$ref": "#/$defs/CADPart"
      },
      "Collision": {
        "$ref": "#/$defs/Collision"
      },
      "EspduTransform": {
        "$ref": "#/$defs/EspduTransform"
      },
      "GeoLocation": {
        "$ref": "#/$defs/GeoLocation"
      },
      "GeoTransform": {
        "$ref": "#/$defs/GeoTransform"
      },
      "Group": {
        "$ref": "#/$defs/Group"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "Layer": {
        "$ref": "#/$defs/Layer"
      },
      "LayoutGroup": {
        "$ref": "#/$defs/LayoutGroup"
      },
      "LayoutLayer": {
        "$ref": "#/$defs/LayoutLayer"
      },
      "LOD": {
        "$ref": "#/$defs/LOD"
      },
      "PickableGroup": {
        "$ref": "#/$defs/PickableGroup"
      },
      "ScreenGroup": {
        "$ref": "#/$defs/ScreenGroup"
      },
      "Switch": {
        "$ref": "#/$defs/Switch"
      },
      "Transform": {
        "$ref": "#/$defs/Transform"
      },
      "DISEntityTypeMapping": {
        "$ref": "#/$defs/DISEntityTypeMapping"
      },
      "GeoMetadata": {
        "$ref": "#/$defs/GeoMetadata"
      },
      "WorldInfo": {
        "$ref": "#/$defs/WorldInfo"
      },
      "ColorInterpolator": {
        "$ref": "#/$defs/ColorInterpolator"
      },
      "CoordinateInterpolator": {
        "$ref": "#/$defs/CoordinateInterpolator"
      },
      "CoordinateInterpolator2D": {
        "$ref": "#/$defs/CoordinateInterpolator2D"
      },
      "GeoPositionInterpolator": {
        "$ref": "#/$defs/GeoPositionInterpolator"
      },
      "NormalInterpolator": {
        "$ref": "#/$defs/NormalInterpolator"
      },
      "OrientationInterpolator": {
        "$ref": "#/$defs/OrientationInterpolator"
      },
      "PositionInterpolator": {
        "$ref": "#/$defs/PositionInterpolator"
      },
      "PositionInterpolator2D": {
        "$ref": "#/$defs/PositionInterpolator2D"
      },
      "ScalarInterpolator": {
        "$ref": "#/$defs/ScalarInterpolator"
      },
      "SplinePositionInterpolator": {
        "$ref": "#/$defs/SplinePositionInterpolator"
      },
      "SplinePositionInterpolator2D": {
        "$ref": "#/$defs/SplinePositionInterpolator2D"
      },
      "SplineScalarInterpolator": {
        "$ref": "#/$defs/SplineScalarInterpolator"
      },
      "SquadOrientationInterpolator": {
        "$ref": "#/$defs/SquadOrientationInterpolator"
      },
      "Layout": {
        "$ref": "#/$defs/Layout"
      },
      "TextureProjector": {
        "$ref": "#/$defs/TextureProjector"
      },
      "TextureProjectorParallel": {
        "$ref": "#/$defs/TextureProjectorParallel"
      },
      "DirectionalLight": {
        "$ref": "#/$defs/DirectionalLight"
      },
      "PointLight": {
        "$ref": "#/$defs/PointLight"
      },
      "SpotLight": {
        "$ref": "#/$defs/SpotLight"
      },
      "CollidableOffset": {
        "$ref": "#/$defs/CollidableOffset"
      },
      "CollidableShape": {
        "$ref": "#/$defs/CollidableShape"
      },
      "CADFace": {
        "$ref": "#/$defs/CADFace"
      },
      "Script": {
        "$ref": "#/$defs/Script"
      },
      "GeoProximitySensor": {
        "$ref": "#/$defs/GeoProximitySensor"
      },
      "ProximitySensor": {
        "$ref": "#/$defs/ProximitySensor"
      },
      "TransformSensor": {
        "$ref": "#/$defs/TransformSensor"
      },
      "VisibilitySensor": {
        "$ref": "#/$defs/VisibilitySensor"
      },
      "KeySensor": {
        "$ref": "#/$defs/KeySensor"
      },
      "StringSensor": {
        "$ref": "#/$defs/StringSensor"
      },
      "LoadSensor": {
        "$ref": "#/$defs/LoadSensor"
      },
      "ReceiverPdu": {
        "$ref": "#/$defs/ReceiverPdu"
      },
      "SignalPdu": {
        "$ref": "#/$defs/SignalPdu"
      },
      "TransmitterPdu": {
        "$ref": "#/$defs/TransmitterPdu"
      },
      "LinePickSensor": {
        "$ref": "#/$defs/LinePickSensor"
      },
      "PointPickSensor": {
        "$ref": "#/$defs/PointPickSensor"
      },
      "PrimitivePickSensor": {
        "$ref": "#/$defs/PrimitivePickSensor"
      },
      "VolumePickSensor": {
        "$ref": "#/$defs/VolumePickSensor"
      },
      "CylinderSensor": {
        "$ref": "#/$defs/CylinderSensor"
      },
      "PlaneSensor": {
        "$ref": "#/$defs/PlaneSensor"
      },
      "SphereSensor": {
        "$ref": "#/$defs/SphereSensor"
      },
      "GeoTouchSensor": {
        "$ref": "#/$defs/GeoTouchSensor"
      },
      "TouchSensor": {
        "$ref": "#/$defs/TouchSensor"
      },
      "CollisionSensor": {
        "$ref": "#/$defs/CollisionSensor"
      },
      "TimeSensor": {
        "$ref": "#/$defs/TimeSensor"
      },
      "BooleanSequencer": {
        "$ref": "#/$defs/BooleanSequencer"
      },
      "IntegerSequencer": {
        "$ref": "#/$defs/IntegerSequencer"
      },
      "ParticleSystem": {
        "$ref": "#/$defs/ParticleSystem"
      },
      "Shape": {
        "$ref": "#/$defs/Shape"
      },
      "ChannelMerger": {
        "$ref": "#/$defs/ChannelMerger"
      },
      "ChannelSelector": {
        "$ref": "#/$defs/ChannelSelector"
      },
      "ChannelSplitter": {
        "$ref": "#/$defs/ChannelSplitter"
      },
      "AudioDestination": {
        "$ref": "#/$defs/AudioDestination"
      },
      "StreamAudioDestination": {
        "$ref": "#/$defs/StreamAudioDestination"
      },
      "Analyser": {
        "$ref": "#/$defs/Analyser"
      },
      "BiquadFilter": {
        "$ref": "#/$defs/BiquadFilter"
      },
      "Convolver": {
        "$ref": "#/$defs/Convolver"
      },
      "Delay": {
        "$ref": "#/$defs/Delay"
      },
      "DynamicsCompressor": {
        "$ref": "#/$defs/DynamicsCompressor"
      },
      "Gain": {
        "$ref": "#/$defs/Gain"
      },
      "WaveShaper": {
        "$ref": "#/$defs/WaveShaper"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "ListenerPointSource": {
        "$ref": "#/$defs/ListenerPointSource"
      },
      "MicrophoneSource": {
        "$ref": "#/$defs/MicrophoneSource"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "OscillatorSource": {
        "$ref": "#/$defs/OscillatorSource"
      },
      "StreamAudioSource": {
        "$ref": "#/$defs/StreamAudioSource"
      },
      "PeriodicWave": {
        "$ref": "#/$defs/PeriodicWave"
      },
      "Sound": {
        "$ref": "#/$defs/Sound"
      },
      "SpatialSound": {
        "$ref": "#/$defs/SpatialSound"
      },
      "BooleanTrigger": {
        "$ref": "#/$defs/BooleanTrigger"
      },
      "IntegerTrigger": {
        "$ref": "#/$defs/IntegerTrigger"
      },
      "TimeTrigger": {
        "$ref": "#/$defs/TimeTrigger"
      },
      "IsoSurfaceVolumeData": {
        "$ref": "#/$defs/IsoSurfaceVolumeData"
      },
      "SegmentedVolumeData": {
        "$ref": "#/$defs/SegmentedVolumeData"
      },
      "VolumeData": {
        "$ref": "#/$defs/VolumeData"
      },
      "BooleanFilter": {
        "$ref": "#/$defs/BooleanFilter"
      },
      "BooleanToggle": {
        "$ref": "#/$defs/BooleanToggle"
      },
      "ClipPlane": {
        "$ref": "#/$defs/ClipPlane"
      },
      "CollisionCollection": {
        "$ref": "#/$defs/CollisionCollection"
      },
      "DISEntityManager": {
        "$ref": "#/$defs/DISEntityManager"
      },
      "EaseInEaseOut": {
        "$ref": "#/$defs/EaseInEaseOut"
      },
      "GeoLOD": {
        "$ref": "#/$defs/GeoLOD"
      },
      "HAnimHumanoid": {
        "$ref": "#/$defs/HAnimHumanoid"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "HAnimMotion": {
        "$ref": "#/$defs/HAnimMotion"
      },
      "Inline": {
        "$ref": "#/$defs/Inline"
      },
      "LocalFog": {
        "$ref": "#/$defs/LocalFog"
      },
      "NurbsOrientationInterpolator": {
        "$ref": "#/$defs/NurbsOrientationInterpolator"
      },
      "NurbsPositionInterpolator": {
        "$ref": "#/$defs/NurbsPositionInterpolator"
      },
      "NurbsSet": {
        "$ref": "#/$defs/NurbsSet"
      },
      "NurbsSurfaceInterpolator": {
        "$ref": "#/$defs/NurbsSurfaceInterpolator"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      },
      "RigidBody": {
        "$ref": "#/$defs/RigidBody"
      },
      "RigidBodyCollection": {
        "$ref": "#/$defs/RigidBodyCollection"
      },
      "StaticGroup": {
        "$ref": "#/$defs/StaticGroup"
      },
      "ViewpointGroup": {
        "$ref": "#/$defs/ViewpointGroup"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-AcousticPropertiesSFNode": {
  "type": "object",
  "properties": {
    "AcousticProperties": {
      "$ref": "#/$defs/AcousticProperties"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DMaterialNodeSFNode": {
  "type": "object",
  "properties": {
    "Material": {
      "$ref": "#/$defs/Material"
    },
    "PhysicalMaterial": {
      "$ref": "#/$defs/PhysicalMaterial"
    },
    "UnlitMaterial": {
      "$ref": "#/$defs/UnlitMaterial"
    },
    "TwoSidedMaterial": {
      "$ref": "#/$defs/TwoSidedMaterial"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-FillPropertiesSFNode": {
  "type": "object",
  "properties": {
    "FillProperties": {
      "$ref": "#/$defs/FillProperties"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-LinePropertiesSFNode": {
  "type": "object",
  "properties": {
    "LineProperties": {
      "$ref": "#/$defs/LineProperties"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-PointPropertiesSFNode": {
  "type": "object",
  "properties": {
    "PointProperties": {
      "$ref": "#/$defs/PointProperties"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DShaderNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ComposedShader": {
        "$ref": "#/$defs/ComposedShader"
      },
      "PackagedShader": {
        "$ref": "#/$defs/PackagedShader"
      },
      "ProgramShader": {
        "$ref": "#/$defs/ProgramShader"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DTextureNodeSFNode": {
  "type": "object",
  "properties": {
    "ComposedCubeMapTexture": {
      "$ref": "#/$defs/ComposedCubeMapTexture"
    },
    "GeneratedCubeMapTexture": {
      "$ref": "#/$defs/GeneratedCubeMapTexture"
    },
    "ImageCubeMapTexture": {
      "$ref": "#/$defs/ImageCubeMapTexture"
    },
    "ImageTexture": {
      "$ref": "#/$defs/ImageTexture"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "PixelTexture": {
      "$ref": "#/$defs/PixelTexture"
    },
    "ComposedTexture3D": {
      "$ref": "#/$defs/ComposedTexture3D"
    },
    "ImageTexture3D": {
      "$ref": "#/$defs/ImageTexture3D"
    },
    "PixelTexture3D": {
      "$ref": "#/$defs/PixelTexture3D"
    },
    "MultiTexture": {
      "$ref": "#/$defs/MultiTexture"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DTextureTransformNodeSFNode": {
  "type": "object",
  "properties": {
    "MultiTextureTransform": {
      "$ref": "#/$defs/MultiTextureTransform"
    },
    "TextureTransform": {
      "$ref": "#/$defs/TextureTransform"
    },
    "TextureTransform3D": {
      "$ref": "#/$defs/TextureTransform3D"
    },
    "TextureTransformMatrix3D": {
      "$ref": "#/$defs/TextureTransformMatrix3D"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-RigidBodySFNode": {
  "type": "object",
  "properties": {
    "RigidBody": {
      "$ref": "#/$defs/RigidBody"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DComposableVolumeRenderStyleNodeSFNode": {
  "type": "object",
  "properties": {
    "BlendedVolumeStyle": {
      "$ref": "#/$defs/BlendedVolumeStyle"
    },
    "BoundaryEnhancementVolumeStyle": {
      "$ref": "#/$defs/BoundaryEnhancementVolumeStyle"
    },
    "CartoonVolumeStyle": {
      "$ref": "#/$defs/CartoonVolumeStyle"
    },
    "ComposedVolumeStyle": {
      "$ref": "#/$defs/ComposedVolumeStyle"
    },
    "EdgeEnhancementVolumeStyle": {
      "$ref": "#/$defs/EdgeEnhancementVolumeStyle"
    },
    "OpacityMapVolumeStyle": {
      "$ref": "#/$defs/OpacityMapVolumeStyle"
    },
    "ShadedVolumeStyle": {
      "$ref": "#/$defs/ShadedVolumeStyle"
    },
    "SilhouetteEnhancementVolumeStyle": {
      "$ref": "#/$defs/SilhouetteEnhancementVolumeStyle"
    },
    "ToneMappedVolumeStyle": {
      "$ref": "#/$defs/ToneMappedVolumeStyle"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DTexture3DNodeSFNode": {
  "type": "object",
  "properties": {
    "ComposedTexture3D": {
      "$ref": "#/$defs/ComposedTexture3D"
    },
    "ImageTexture3D": {
      "$ref": "#/$defs/ImageTexture3D"
    },
    "PixelTexture3D": {
      "$ref": "#/$defs/PixelTexture3D"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DTexture2DNodeSFNode": {
  "type": "object",
  "properties": {
    "ImageTexture": {
      "$ref": "#/$defs/ImageTexture"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "PixelTexture": {
      "$ref": "#/$defs/PixelTexture"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DGeometryNodeSFNode": {
  "type": "object",
  "properties": {
    "IndexedFaceSet": {
      "$ref": "#/$defs/IndexedFaceSet"
    },
    "IndexedQuadSet": {
      "$ref": "#/$defs/IndexedQuadSet"
    },
    "IndexedTriangleFanSet": {
      "$ref": "#/$defs/IndexedTriangleFanSet"
    },
    "IndexedTriangleSet": {
      "$ref": "#/$defs/IndexedTriangleSet"
    },
    "IndexedTriangleStripSet": {
      "$ref": "#/$defs/IndexedTriangleStripSet"
    },
    "QuadSet": {
      "$ref": "#/$defs/QuadSet"
    },
    "TriangleFanSet": {
      "$ref": "#/$defs/TriangleFanSet"
    },
    "TriangleSet": {
      "$ref": "#/$defs/TriangleSet"
    },
    "TriangleStripSet": {
      "$ref": "#/$defs/TriangleStripSet"
    },
    "NurbsPatchSurface": {
      "$ref": "#/$defs/NurbsPatchSurface"
    },
    "NurbsTrimmedSurface": {
      "$ref": "#/$defs/NurbsTrimmedSurface"
    },
    "NurbsCurve": {
      "$ref": "#/$defs/NurbsCurve"
    },
    "NurbsSweptSurface": {
      "$ref": "#/$defs/NurbsSweptSurface"
    },
    "NurbsSwungSurface": {
      "$ref": "#/$defs/NurbsSwungSurface"
    },
    "Arc2D": {
      "$ref": "#/$defs/Arc2D"
    },
    "ArcClose2D": {
      "$ref": "#/$defs/ArcClose2D"
    },
    "Box": {
      "$ref": "#/$defs/Box"
    },
    "Circle2D": {
      "$ref": "#/$defs/Circle2D"
    },
    "Cone": {
      "$ref": "#/$defs/Cone"
    },
    "Cylinder": {
      "$ref": "#/$defs/Cylinder"
    },
    "Disk2D": {
      "$ref": "#/$defs/Disk2D"
    },
    "ElevationGrid": {
      "$ref": "#/$defs/ElevationGrid"
    },
    "Extrusion": {
      "$ref": "#/$defs/Extrusion"
    },
    "GeoElevationGrid": {
      "$ref": "#/$defs/GeoElevationGrid"
    },
    "IndexedLineSet": {
      "$ref": "#/$defs/IndexedLineSet"
    },
    "LineSet": {
      "$ref": "#/$defs/LineSet"
    },
    "PointSet": {
      "$ref": "#/$defs/PointSet"
    },
    "Polyline2D": {
      "$ref": "#/$defs/Polyline2D"
    },
    "Polypoint2D": {
      "$ref": "#/$defs/Polypoint2D"
    },
    "Rectangle2D": {
      "$ref": "#/$defs/Rectangle2D"
    },
    "Sphere": {
      "$ref": "#/$defs/Sphere"
    },
    "Text": {
      "$ref": "#/$defs/Text"
    },
    "TriangleSet2D": {
      "$ref": "#/$defs/TriangleSet2D"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-Shape-LOD-TransformSFNode": {
  "type": "object",
  "properties": {
    "Shape": {
      "$ref": "#/$defs/Shape"
    },
    "LOD": {
      "$ref": "#/$defs/LOD"
    },
    "Transform": {
      "$ref": "#/$defs/Transform"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-CADFaceMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "CADFace": {
        "$ref": "#/$defs/CADFace"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSoundChannelNode-X3DSoundProcessingNode-X3DSoundSourceNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ChannelMerger": {
        "$ref": "#/$defs/ChannelMerger"
      },
      "ChannelSelector": {
        "$ref": "#/$defs/ChannelSelector"
      },
      "ChannelSplitter": {
        "$ref": "#/$defs/ChannelSplitter"
      },
      "Analyser": {
        "$ref": "#/$defs/Analyser"
      },
      "BiquadFilter": {
        "$ref": "#/$defs/BiquadFilter"
      },
      "Convolver": {
        "$ref": "#/$defs/Convolver"
      },
      "Delay": {
        "$ref": "#/$defs/Delay"
      },
      "DynamicsCompressor": {
        "$ref": "#/$defs/DynamicsCompressor"
      },
      "Gain": {
        "$ref": "#/$defs/Gain"
      },
      "WaveShaper": {
        "$ref": "#/$defs/WaveShaper"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "ListenerPointSource": {
        "$ref": "#/$defs/ListenerPointSource"
      },
      "MicrophoneSource": {
        "$ref": "#/$defs/MicrophoneSource"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "OscillatorSource": {
        "$ref": "#/$defs/OscillatorSource"
      },
      "StreamAudioSource": {
        "$ref": "#/$defs/StreamAudioSource"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DNBodyCollidableNodeSFNode": {
  "type": "object",
  "properties": {
    "CollidableOffset": {
      "$ref": "#/$defs/CollidableOffset"
    },
    "CollidableShape": {
      "$ref": "#/$defs/CollidableShape"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-ShapeSFNode": {
  "type": "object",
  "properties": {
    "Shape": {
      "$ref": "#/$defs/Shape"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DChildNodeSFNode": {
  "type": "object",
  "properties": {
    "EXPORT": {
      "$ref": "#/$defs/EXPORT"
    },
    "ExternProtoDeclare": {
      "$ref": "#/$defs/ExternProtoDeclare"
    },
    "IMPORT": {
      "$ref": "#/$defs/IMPORT"
    },
    "ProtoDeclare": {
      "$ref": "#/$defs/ProtoDeclare"
    },
    "ROUTE": {
      "$ref": "#/$defs/ROUTE"
    },
    "Background": {
      "$ref": "#/$defs/Background"
    },
    "TextureBackground": {
      "$ref": "#/$defs/TextureBackground"
    },
    "GeoViewpoint": {
      "$ref": "#/$defs/GeoViewpoint"
    },
    "OrthoViewpoint": {
      "$ref": "#/$defs/OrthoViewpoint"
    },
    "Viewpoint": {
      "$ref": "#/$defs/Viewpoint"
    },
    "Fog": {
      "$ref": "#/$defs/Fog"
    },
    "NavigationInfo": {
      "$ref": "#/$defs/NavigationInfo"
    },
    "ColorChaser": {
      "$ref": "#/$defs/ColorChaser"
    },
    "CoordinateChaser": {
      "$ref": "#/$defs/CoordinateChaser"
    },
    "OrientationChaser": {
      "$ref": "#/$defs/OrientationChaser"
    },
    "PositionChaser": {
      "$ref": "#/$defs/PositionChaser"
    },
    "PositionChaser2D": {
      "$ref": "#/$defs/PositionChaser2D"
    },
    "ScalarChaser": {
      "$ref": "#/$defs/ScalarChaser"
    },
    "TexCoordChaser2D": {
      "$ref": "#/$defs/TexCoordChaser2D"
    },
    "ColorDamper": {
      "$ref": "#/$defs/ColorDamper"
    },
    "CoordinateDamper": {
      "$ref": "#/$defs/CoordinateDamper"
    },
    "OrientationDamper": {
      "$ref": "#/$defs/OrientationDamper"
    },
    "PositionDamper": {
      "$ref": "#/$defs/PositionDamper"
    },
    "PositionDamper2D": {
      "$ref": "#/$defs/PositionDamper2D"
    },
    "ScalarDamper": {
      "$ref": "#/$defs/ScalarDamper"
    },
    "TexCoordDamper2D": {
      "$ref": "#/$defs/TexCoordDamper2D"
    },
    "Viewport": {
      "$ref": "#/$defs/Viewport"
    },
    "Anchor": {
      "$ref": "#/$defs/Anchor"
    },
    "Billboard": {
      "$ref": "#/$defs/Billboard"
    },
    "CADAssembly": {
      "$ref": "#/$defs/CADAssembly"
    },
    "CADLayer": {
      "$ref": "#/$defs/CADLayer"
    },
    "CADPart": {
      "$ref": "#/$defs/CADPart"
    },
    "Collision": {
      "$ref": "#/$defs/Collision"
    },
    "EspduTransform": {
      "$ref": "#/$defs/EspduTransform"
    },
    "GeoLocation": {
      "$ref": "#/$defs/GeoLocation"
    },
    "GeoTransform": {
      "$ref": "#/$defs/GeoTransform"
    },
    "Group": {
      "$ref": "#/$defs/Group"
    },
    "HAnimSegment": {
      "$ref": "#/$defs/HAnimSegment"
    },
    "HAnimSite": {
      "$ref": "#/$defs/HAnimSite"
    },
    "Layer": {
      "$ref": "#/$defs/Layer"
    },
    "LayoutGroup": {
      "$ref": "#/$defs/LayoutGroup"
    },
    "LayoutLayer": {
      "$ref": "#/$defs/LayoutLayer"
    },
    "LOD": {
      "$ref": "#/$defs/LOD"
    },
    "PickableGroup": {
      "$ref": "#/$defs/PickableGroup"
    },
    "ScreenGroup": {
      "$ref": "#/$defs/ScreenGroup"
    },
    "Switch": {
      "$ref": "#/$defs/Switch"
    },
    "Transform": {
      "$ref": "#/$defs/Transform"
    },
    "DISEntityTypeMapping": {
      "$ref": "#/$defs/DISEntityTypeMapping"
    },
    "GeoMetadata": {
      "$ref": "#/$defs/GeoMetadata"
    },
    "WorldInfo": {
      "$ref": "#/$defs/WorldInfo"
    },
    "ColorInterpolator": {
      "$ref": "#/$defs/ColorInterpolator"
    },
    "CoordinateInterpolator": {
      "$ref": "#/$defs/CoordinateInterpolator"
    },
    "CoordinateInterpolator2D": {
      "$ref": "#/$defs/CoordinateInterpolator2D"
    },
    "GeoPositionInterpolator": {
      "$ref": "#/$defs/GeoPositionInterpolator"
    },
    "NormalInterpolator": {
      "$ref": "#/$defs/NormalInterpolator"
    },
    "OrientationInterpolator": {
      "$ref": "#/$defs/OrientationInterpolator"
    },
    "PositionInterpolator": {
      "$ref": "#/$defs/PositionInterpolator"
    },
    "PositionInterpolator2D": {
      "$ref": "#/$defs/PositionInterpolator2D"
    },
    "ScalarInterpolator": {
      "$ref": "#/$defs/ScalarInterpolator"
    },
    "SplinePositionInterpolator": {
      "$ref": "#/$defs/SplinePositionInterpolator"
    },
    "SplinePositionInterpolator2D": {
      "$ref": "#/$defs/SplinePositionInterpolator2D"
    },
    "SplineScalarInterpolator": {
      "$ref": "#/$defs/SplineScalarInterpolator"
    },
    "SquadOrientationInterpolator": {
      "$ref": "#/$defs/SquadOrientationInterpolator"
    },
    "Layout": {
      "$ref": "#/$defs/Layout"
    },
    "TextureProjector": {
      "$ref": "#/$defs/TextureProjector"
    },
    "TextureProjectorParallel": {
      "$ref": "#/$defs/TextureProjectorParallel"
    },
    "DirectionalLight": {
      "$ref": "#/$defs/DirectionalLight"
    },
    "PointLight": {
      "$ref": "#/$defs/PointLight"
    },
    "SpotLight": {
      "$ref": "#/$defs/SpotLight"
    },
    "CollidableOffset": {
      "$ref": "#/$defs/CollidableOffset"
    },
    "CollidableShape": {
      "$ref": "#/$defs/CollidableShape"
    },
    "CADFace": {
      "$ref": "#/$defs/CADFace"
    },
    "Script": {
      "$ref": "#/$defs/Script"
    },
    "GeoProximitySensor": {
      "$ref": "#/$defs/GeoProximitySensor"
    },
    "ProximitySensor": {
      "$ref": "#/$defs/ProximitySensor"
    },
    "TransformSensor": {
      "$ref": "#/$defs/TransformSensor"
    },
    "VisibilitySensor": {
      "$ref": "#/$defs/VisibilitySensor"
    },
    "KeySensor": {
      "$ref": "#/$defs/KeySensor"
    },
    "StringSensor": {
      "$ref": "#/$defs/StringSensor"
    },
    "LoadSensor": {
      "$ref": "#/$defs/LoadSensor"
    },
    "ReceiverPdu": {
      "$ref": "#/$defs/ReceiverPdu"
    },
    "SignalPdu": {
      "$ref": "#/$defs/SignalPdu"
    },
    "TransmitterPdu": {
      "$ref": "#/$defs/TransmitterPdu"
    },
    "LinePickSensor": {
      "$ref": "#/$defs/LinePickSensor"
    },
    "PointPickSensor": {
      "$ref": "#/$defs/PointPickSensor"
    },
    "PrimitivePickSensor": {
      "$ref": "#/$defs/PrimitivePickSensor"
    },
    "VolumePickSensor": {
      "$ref": "#/$defs/VolumePickSensor"
    },
    "CylinderSensor": {
      "$ref": "#/$defs/CylinderSensor"
    },
    "PlaneSensor": {
      "$ref": "#/$defs/PlaneSensor"
    },
    "SphereSensor": {
      "$ref": "#/$defs/SphereSensor"
    },
    "GeoTouchSensor": {
      "$ref": "#/$defs/GeoTouchSensor"
    },
    "TouchSensor": {
      "$ref": "#/$defs/TouchSensor"
    },
    "CollisionSensor": {
      "$ref": "#/$defs/CollisionSensor"
    },
    "TimeSensor": {
      "$ref": "#/$defs/TimeSensor"
    },
    "BooleanSequencer": {
      "$ref": "#/$defs/BooleanSequencer"
    },
    "IntegerSequencer": {
      "$ref": "#/$defs/IntegerSequencer"
    },
    "ParticleSystem": {
      "$ref": "#/$defs/ParticleSystem"
    },
    "Shape": {
      "$ref": "#/$defs/Shape"
    },
    "ChannelMerger": {
      "$ref": "#/$defs/ChannelMerger"
    },
    "ChannelSelector": {
      "$ref": "#/$defs/ChannelSelector"
    },
    "ChannelSplitter": {
      "$ref": "#/$defs/ChannelSplitter"
    },
    "AudioDestination": {
      "$ref": "#/$defs/AudioDestination"
    },
    "StreamAudioDestination": {
      "$ref": "#/$defs/StreamAudioDestination"
    },
    "Analyser": {
      "$ref": "#/$defs/Analyser"
    },
    "BiquadFilter": {
      "$ref": "#/$defs/BiquadFilter"
    },
    "Convolver": {
      "$ref": "#/$defs/Convolver"
    },
    "Delay": {
      "$ref": "#/$defs/Delay"
    },
    "DynamicsCompressor": {
      "$ref": "#/$defs/DynamicsCompressor"
    },
    "Gain": {
      "$ref": "#/$defs/Gain"
    },
    "WaveShaper": {
      "$ref": "#/$defs/WaveShaper"
    },
    "AudioClip": {
      "$ref": "#/$defs/AudioClip"
    },
    "BufferAudioSource": {
      "$ref": "#/$defs/BufferAudioSource"
    },
    "ListenerPointSource": {
      "$ref": "#/$defs/ListenerPointSource"
    },
    "MicrophoneSource": {
      "$ref": "#/$defs/MicrophoneSource"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "OscillatorSource": {
      "$ref": "#/$defs/OscillatorSource"
    },
    "StreamAudioSource": {
      "$ref": "#/$defs/StreamAudioSource"
    },
    "PeriodicWave": {
      "$ref": "#/$defs/PeriodicWave"
    },
    "Sound": {
      "$ref": "#/$defs/Sound"
    },
    "SpatialSound": {
      "$ref": "#/$defs/SpatialSound"
    },
    "BooleanTrigger": {
      "$ref": "#/$defs/BooleanTrigger"
    },
    "IntegerTrigger": {
      "$ref": "#/$defs/IntegerTrigger"
    },
    "TimeTrigger": {
      "$ref": "#/$defs/TimeTrigger"
    },
    "IsoSurfaceVolumeData": {
      "$ref": "#/$defs/IsoSurfaceVolumeData"
    },
    "SegmentedVolumeData": {
      "$ref": "#/$defs/SegmentedVolumeData"
    },
    "VolumeData": {
      "$ref": "#/$defs/VolumeData"
    },
    "BooleanFilter": {
      "$ref": "#/$defs/BooleanFilter"
    },
    "BooleanToggle": {
      "$ref": "#/$defs/BooleanToggle"
    },
    "ClipPlane": {
      "$ref": "#/$defs/ClipPlane"
    },
    "CollisionCollection": {
      "$ref": "#/$defs/CollisionCollection"
    },
    "DISEntityManager": {
      "$ref": "#/$defs/DISEntityManager"
    },
    "EaseInEaseOut": {
      "$ref": "#/$defs/EaseInEaseOut"
    },
    "GeoLOD": {
      "$ref": "#/$defs/GeoLOD"
    },
    "HAnimHumanoid": {
      "$ref": "#/$defs/HAnimHumanoid"
    },
    "HAnimJoint": {
      "$ref": "#/$defs/HAnimJoint"
    },
    "HAnimMotion": {
      "$ref": "#/$defs/HAnimMotion"
    },
    "Inline": {
      "$ref": "#/$defs/Inline"
    },
    "LocalFog": {
      "$ref": "#/$defs/LocalFog"
    },
    "NurbsOrientationInterpolator": {
      "$ref": "#/$defs/NurbsOrientationInterpolator"
    },
    "NurbsPositionInterpolator": {
      "$ref": "#/$defs/NurbsPositionInterpolator"
    },
    "NurbsSet": {
      "$ref": "#/$defs/NurbsSet"
    },
    "NurbsSurfaceInterpolator": {
      "$ref": "#/$defs/NurbsSurfaceInterpolator"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    },
    "RigidBody": {
      "$ref": "#/$defs/RigidBody"
    },
    "RigidBodyCollection": {
      "$ref": "#/$defs/RigidBodyCollection"
    },
    "StaticGroup": {
      "$ref": "#/$defs/StaticGroup"
    },
    "ViewpointGroup": {
      "$ref": "#/$defs/ViewpointGroup"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DNBodyCollisionSpaceNode-X3DNBodyCollidableNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "CollisionSpace": {
        "$ref": "#/$defs/CollisionSpace"
      },
      "CollidableOffset": {
        "$ref": "#/$defs/CollidableOffset"
      },
      "CollidableShape": {
        "$ref": "#/$defs/CollidableShape"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-CollisionCollectionSFNode": {
  "type": "object",
  "properties": {
    "CollisionCollection": {
      "$ref": "#/$defs/CollisionCollection"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-ContactMFNode": {
  "$comment": "MFNode inputOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Contact": {
        "$ref": "#/$defs/Contact"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DNBodyCollidableNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "CollidableOffset": {
        "$ref": "#/$defs/CollidableOffset"
      },
      "CollidableShape": {
        "$ref": "#/$defs/CollidableShape"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-TexturePropertiesSFNode": {
  "type": "object",
  "properties": {
    "TextureProperties": {
      "$ref": "#/$defs/TextureProperties"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-ShaderPartMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ShaderPart": {
        "$ref": "#/$defs/ShaderPart"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DTexture2DNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ImageTexture": {
        "$ref": "#/$defs/ImageTexture"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "PixelTexture": {
        "$ref": "#/$defs/PixelTexture"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DComposableVolumeRenderStyleNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "BlendedVolumeStyle": {
        "$ref": "#/$defs/BlendedVolumeStyle"
      },
      "BoundaryEnhancementVolumeStyle": {
        "$ref": "#/$defs/BoundaryEnhancementVolumeStyle"
      },
      "CartoonVolumeStyle": {
        "$ref": "#/$defs/CartoonVolumeStyle"
      },
      "ComposedVolumeStyle": {
        "$ref": "#/$defs/ComposedVolumeStyle"
      },
      "EdgeEnhancementVolumeStyle": {
        "$ref": "#/$defs/EdgeEnhancementVolumeStyle"
      },
      "OpacityMapVolumeStyle": {
        "$ref": "#/$defs/OpacityMapVolumeStyle"
      },
      "ShadedVolumeStyle": {
        "$ref": "#/$defs/ShadedVolumeStyle"
      },
      "SilhouetteEnhancementVolumeStyle": {
        "$ref": "#/$defs/SilhouetteEnhancementVolumeStyle"
      },
      "ToneMappedVolumeStyle": {
        "$ref": "#/$defs/ToneMappedVolumeStyle"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-NurbsCurve2D-ContourPolyline2DMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "NurbsCurve2D": {
        "$ref": "#/$defs/NurbsCurve2D"
      },
      "ContourPolyline2D": {
        "$ref": "#/$defs/ContourPolyline2D"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-DISEntityTypeMappingMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "DISEntityTypeMapping": {
        "$ref": "#/$defs/DISEntityTypeMapping"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DVertexAttributeNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "FloatVertexAttribute": {
        "$ref": "#/$defs/FloatVertexAttribute"
      },
      "Matrix3VertexAttribute": {
        "$ref": "#/$defs/Matrix3VertexAttribute"
      },
      "Matrix4VertexAttribute": {
        "$ref": "#/$defs/Matrix4VertexAttribute"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DColorNodeSFNode": {
  "type": "object",
  "properties": {
    "Color": {
      "$ref": "#/$defs/Color"
    },
    "ColorRGBA": {
      "$ref": "#/$defs/ColorRGBA"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-FogCoordinateSFNode": {
  "type": "object",
  "properties": {
    "FogCoordinate": {
      "$ref": "#/$defs/FogCoordinate"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DNormalNodeSFNode": {
  "type": "object",
  "properties": {
    "Normal": {
      "$ref": "#/$defs/Normal"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DSingleTextureCoordinateNodeSFNode": {
  "type": "object",
  "properties": {
    "TextureCoordinate": {
      "$ref": "#/$defs/TextureCoordinate"
    },
    "TextureCoordinate3D": {
      "$ref": "#/$defs/TextureCoordinate3D"
    },
    "TextureCoordinate4D": {
      "$ref": "#/$defs/TextureCoordinate4D"
    },
    "TextureCoordinateGenerator": {
      "$ref": "#/$defs/TextureCoordinateGenerator"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-GeoOriginSFNode": {
  "type": "object",
  "properties": {
    "GeoOrigin": {
      "$ref": "#/$defs/GeoOrigin"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Material": {
        "$ref": "#/$defs/Material"
      },
      "PhysicalMaterial": {
        "$ref": "#/$defs/PhysicalMaterial"
      },
      "UnlitMaterial": {
        "$ref": "#/$defs/UnlitMaterial"
      },
      "TwoSidedMaterial": {
        "$ref": "#/$defs/TwoSidedMaterial"
      },
      "ComposedShader": {
        "$ref": "#/$defs/ComposedShader"
      },
      "PackagedShader": {
        "$ref": "#/$defs/PackagedShader"
      },
      "ProgramShader": {
        "$ref": "#/$defs/ProgramShader"
      },
      "ComposedCubeMapTexture": {
        "$ref": "#/$defs/ComposedCubeMapTexture"
      },
      "GeneratedCubeMapTexture": {
        "$ref": "#/$defs/GeneratedCubeMapTexture"
      },
      "ImageCubeMapTexture": {
        "$ref": "#/$defs/ImageCubeMapTexture"
      },
      "ImageTexture": {
        "$ref": "#/$defs/ImageTexture"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "PixelTexture": {
        "$ref": "#/$defs/PixelTexture"
      },
      "ComposedTexture3D": {
        "$ref": "#/$defs/ComposedTexture3D"
      },
      "ImageTexture3D": {
        "$ref": "#/$defs/ImageTexture3D"
      },
      "PixelTexture3D": {
        "$ref": "#/$defs/PixelTexture3D"
      },
      "MultiTexture": {
        "$ref": "#/$defs/MultiTexture"
      },
      "MultiTextureTransform": {
        "$ref": "#/$defs/MultiTextureTransform"
      },
      "TextureTransform": {
        "$ref": "#/$defs/TextureTransform"
      },
      "TextureTransform3D": {
        "$ref": "#/$defs/TextureTransform3D"
      },
      "TextureTransformMatrix3D": {
        "$ref": "#/$defs/TextureTransformMatrix3D"
      },
      "AcousticProperties": {
        "$ref": "#/$defs/AcousticProperties"
      },
      "FillProperties": {
        "$ref": "#/$defs/FillProperties"
      },
      "LineProperties": {
        "$ref": "#/$defs/LineProperties"
      },
      "PointProperties": {
        "$ref": "#/$defs/PointProperties"
      },
      "Appearance": {
        "$ref": "#/$defs/Appearance"
      },
      "EXPORT": {
        "$ref": "#/$defs/EXPORT"
      },
      "ExternProtoDeclare": {
        "$ref": "#/$defs/ExternProtoDeclare"
      },
      "IMPORT": {
        "$ref": "#/$defs/IMPORT"
      },
      "ProtoDeclare": {
        "$ref": "#/$defs/ProtoDeclare"
      },
      "ROUTE": {
        "$ref": "#/$defs/ROUTE"
      },
      "Background": {
        "$ref": "#/$defs/Background"
      },
      "TextureBackground": {
        "$ref": "#/$defs/TextureBackground"
      },
      "GeoViewpoint": {
        "$ref": "#/$defs/GeoViewpoint"
      },
      "OrthoViewpoint": {
        "$ref": "#/$defs/OrthoViewpoint"
      },
      "Viewpoint": {
        "$ref": "#/$defs/Viewpoint"
      },
      "Fog": {
        "$ref": "#/$defs/Fog"
      },
      "NavigationInfo": {
        "$ref": "#/$defs/NavigationInfo"
      },
      "ColorChaser": {
        "$ref": "#/$defs/ColorChaser"
      },
      "CoordinateChaser": {
        "$ref": "#/$defs/CoordinateChaser"
      },
      "OrientationChaser": {
        "$ref": "#/$defs/OrientationChaser"
      },
      "PositionChaser": {
        "$ref": "#/$defs/PositionChaser"
      },
      "PositionChaser2D": {
        "$ref": "#/$defs/PositionChaser2D"
      },
      "ScalarChaser": {
        "$ref": "#/$defs/ScalarChaser"
      },
      "TexCoordChaser2D": {
        "$ref": "#/$defs/TexCoordChaser2D"
      },
      "ColorDamper": {
        "$ref": "#/$defs/ColorDamper"
      },
      "CoordinateDamper": {
        "$ref": "#/$defs/CoordinateDamper"
      },
      "OrientationDamper": {
        "$ref": "#/$defs/OrientationDamper"
      },
      "PositionDamper": {
        "$ref": "#/$defs/PositionDamper"
      },
      "PositionDamper2D": {
        "$ref": "#/$defs/PositionDamper2D"
      },
      "ScalarDamper": {
        "$ref": "#/$defs/ScalarDamper"
      },
      "TexCoordDamper2D": {
        "$ref": "#/$defs/TexCoordDamper2D"
      },
      "Viewport": {
        "$ref": "#/$defs/Viewport"
      },
      "Anchor": {
        "$ref": "#/$defs/Anchor"
      },
      "Billboard": {
        "$ref": "#/$defs/Billboard"
      },
      "CADAssembly": {
        "$ref": "#/$defs/CADAssembly"
      },
      "CADLayer": {
        "$ref": "#/$defs/CADLayer"
      },
      "CADPart": {
        "$ref": "#/$defs/CADPart"
      },
      "Collision": {
        "$ref": "#/$defs/Collision"
      },
      "EspduTransform": {
        "$ref": "#/$defs/EspduTransform"
      },
      "GeoLocation": {
        "$ref": "#/$defs/GeoLocation"
      },
      "GeoTransform": {
        "$ref": "#/$defs/GeoTransform"
      },
      "Group": {
        "$ref": "#/$defs/Group"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "Layer": {
        "$ref": "#/$defs/Layer"
      },
      "LayoutGroup": {
        "$ref": "#/$defs/LayoutGroup"
      },
      "LayoutLayer": {
        "$ref": "#/$defs/LayoutLayer"
      },
      "LOD": {
        "$ref": "#/$defs/LOD"
      },
      "PickableGroup": {
        "$ref": "#/$defs/PickableGroup"
      },
      "ScreenGroup": {
        "$ref": "#/$defs/ScreenGroup"
      },
      "Switch": {
        "$ref": "#/$defs/Switch"
      },
      "Transform": {
        "$ref": "#/$defs/Transform"
      },
      "DISEntityTypeMapping": {
        "$ref": "#/$defs/DISEntityTypeMapping"
      },
      "GeoMetadata": {
        "$ref": "#/$defs/GeoMetadata"
      },
      "WorldInfo": {
        "$ref": "#/$defs/WorldInfo"
      },
      "ColorInterpolator": {
        "$ref": "#/$defs/ColorInterpolator"
      },
      "CoordinateInterpolator": {
        "$ref": "#/$defs/CoordinateInterpolator"
      },
      "CoordinateInterpolator2D": {
        "$ref": "#/$defs/CoordinateInterpolator2D"
      },
      "GeoPositionInterpolator": {
        "$ref": "#/$defs/GeoPositionInterpolator"
      },
      "NormalInterpolator": {
        "$ref": "#/$defs/NormalInterpolator"
      },
      "OrientationInterpolator": {
        "$ref": "#/$defs/OrientationInterpolator"
      },
      "PositionInterpolator": {
        "$ref": "#/$defs/PositionInterpolator"
      },
      "PositionInterpolator2D": {
        "$ref": "#/$defs/PositionInterpolator2D"
      },
      "ScalarInterpolator": {
        "$ref": "#/$defs/ScalarInterpolator"
      },
      "SplinePositionInterpolator": {
        "$ref": "#/$defs/SplinePositionInterpolator"
      },
      "SplinePositionInterpolator2D": {
        "$ref": "#/$defs/SplinePositionInterpolator2D"
      },
      "SplineScalarInterpolator": {
        "$ref": "#/$defs/SplineScalarInterpolator"
      },
      "SquadOrientationInterpolator": {
        "$ref": "#/$defs/SquadOrientationInterpolator"
      },
      "Layout": {
        "$ref": "#/$defs/Layout"
      },
      "TextureProjector": {
        "$ref": "#/$defs/TextureProjector"
      },
      "TextureProjectorParallel": {
        "$ref": "#/$defs/TextureProjectorParallel"
      },
      "DirectionalLight": {
        "$ref": "#/$defs/DirectionalLight"
      },
      "PointLight": {
        "$ref": "#/$defs/PointLight"
      },
      "SpotLight": {
        "$ref": "#/$defs/SpotLight"
      },
      "CollidableOffset": {
        "$ref": "#/$defs/CollidableOffset"
      },
      "CollidableShape": {
        "$ref": "#/$defs/CollidableShape"
      },
      "CADFace": {
        "$ref": "#/$defs/CADFace"
      },
      "Script": {
        "$ref": "#/$defs/Script"
      },
      "GeoProximitySensor": {
        "$ref": "#/$defs/GeoProximitySensor"
      },
      "ProximitySensor": {
        "$ref": "#/$defs/ProximitySensor"
      },
      "TransformSensor": {
        "$ref": "#/$defs/TransformSensor"
      },
      "VisibilitySensor": {
        "$ref": "#/$defs/VisibilitySensor"
      },
      "KeySensor": {
        "$ref": "#/$defs/KeySensor"
      },
      "StringSensor": {
        "$ref": "#/$defs/StringSensor"
      },
      "LoadSensor": {
        "$ref": "#/$defs/LoadSensor"
      },
      "ReceiverPdu": {
        "$ref": "#/$defs/ReceiverPdu"
      },
      "SignalPdu": {
        "$ref": "#/$defs/SignalPdu"
      },
      "TransmitterPdu": {
        "$ref": "#/$defs/TransmitterPdu"
      },
      "LinePickSensor": {
        "$ref": "#/$defs/LinePickSensor"
      },
      "PointPickSensor": {
        "$ref": "#/$defs/PointPickSensor"
      },
      "PrimitivePickSensor": {
        "$ref": "#/$defs/PrimitivePickSensor"
      },
      "VolumePickSensor": {
        "$ref": "#/$defs/VolumePickSensor"
      },
      "CylinderSensor": {
        "$ref": "#/$defs/CylinderSensor"
      },
      "PlaneSensor": {
        "$ref": "#/$defs/PlaneSensor"
      },
      "SphereSensor": {
        "$ref": "#/$defs/SphereSensor"
      },
      "GeoTouchSensor": {
        "$ref": "#/$defs/GeoTouchSensor"
      },
      "TouchSensor": {
        "$ref": "#/$defs/TouchSensor"
      },
      "CollisionSensor": {
        "$ref": "#/$defs/CollisionSensor"
      },
      "TimeSensor": {
        "$ref": "#/$defs/TimeSensor"
      },
      "BooleanSequencer": {
        "$ref": "#/$defs/BooleanSequencer"
      },
      "IntegerSequencer": {
        "$ref": "#/$defs/IntegerSequencer"
      },
      "ParticleSystem": {
        "$ref": "#/$defs/ParticleSystem"
      },
      "Shape": {
        "$ref": "#/$defs/Shape"
      },
      "ChannelMerger": {
        "$ref": "#/$defs/ChannelMerger"
      },
      "ChannelSelector": {
        "$ref": "#/$defs/ChannelSelector"
      },
      "ChannelSplitter": {
        "$ref": "#/$defs/ChannelSplitter"
      },
      "AudioDestination": {
        "$ref": "#/$defs/AudioDestination"
      },
      "StreamAudioDestination": {
        "$ref": "#/$defs/StreamAudioDestination"
      },
      "Analyser": {
        "$ref": "#/$defs/Analyser"
      },
      "BiquadFilter": {
        "$ref": "#/$defs/BiquadFilter"
      },
      "Convolver": {
        "$ref": "#/$defs/Convolver"
      },
      "Delay": {
        "$ref": "#/$defs/Delay"
      },
      "DynamicsCompressor": {
        "$ref": "#/$defs/DynamicsCompressor"
      },
      "Gain": {
        "$ref": "#/$defs/Gain"
      },
      "WaveShaper": {
        "$ref": "#/$defs/WaveShaper"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "ListenerPointSource": {
        "$ref": "#/$defs/ListenerPointSource"
      },
      "MicrophoneSource": {
        "$ref": "#/$defs/MicrophoneSource"
      },
      "OscillatorSource": {
        "$ref": "#/$defs/OscillatorSource"
      },
      "StreamAudioSource": {
        "$ref": "#/$defs/StreamAudioSource"
      },
      "PeriodicWave": {
        "$ref": "#/$defs/PeriodicWave"
      },
      "Sound": {
        "$ref": "#/$defs/Sound"
      },
      "SpatialSound": {
        "$ref": "#/$defs/SpatialSound"
      },
      "BooleanTrigger": {
        "$ref": "#/$defs/BooleanTrigger"
      },
      "IntegerTrigger": {
        "$ref": "#/$defs/IntegerTrigger"
      },
      "TimeTrigger": {
        "$ref": "#/$defs/TimeTrigger"
      },
      "IsoSurfaceVolumeData": {
        "$ref": "#/$defs/IsoSurfaceVolumeData"
      },
      "SegmentedVolumeData": {
        "$ref": "#/$defs/SegmentedVolumeData"
      },
      "VolumeData": {
        "$ref": "#/$defs/VolumeData"
      },
      "BooleanFilter": {
        "$ref": "#/$defs/BooleanFilter"
      },
      "BooleanToggle": {
        "$ref": "#/$defs/BooleanToggle"
      },
      "ClipPlane": {
        "$ref": "#/$defs/ClipPlane"
      },
      "CollisionCollection": {
        "$ref": "#/$defs/CollisionCollection"
      },
      "DISEntityManager": {
        "$ref": "#/$defs/DISEntityManager"
      },
      "EaseInEaseOut": {
        "$ref": "#/$defs/EaseInEaseOut"
      },
      "GeoLOD": {
        "$ref": "#/$defs/GeoLOD"
      },
      "HAnimHumanoid": {
        "$ref": "#/$defs/HAnimHumanoid"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "HAnimMotion": {
        "$ref": "#/$defs/HAnimMotion"
      },
      "Inline": {
        "$ref": "#/$defs/Inline"
      },
      "LocalFog": {
        "$ref": "#/$defs/LocalFog"
      },
      "NurbsOrientationInterpolator": {
        "$ref": "#/$defs/NurbsOrientationInterpolator"
      },
      "NurbsPositionInterpolator": {
        "$ref": "#/$defs/NurbsPositionInterpolator"
      },
      "NurbsSet": {
        "$ref": "#/$defs/NurbsSet"
      },
      "NurbsSurfaceInterpolator": {
        "$ref": "#/$defs/NurbsSurfaceInterpolator"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      },
      "RigidBody": {
        "$ref": "#/$defs/RigidBody"
      },
      "RigidBodyCollection": {
        "$ref": "#/$defs/RigidBodyCollection"
      },
      "StaticGroup": {
        "$ref": "#/$defs/StaticGroup"
      },
      "ViewpointGroup": {
        "$ref": "#/$defs/ViewpointGroup"
      },
      "FontStyle": {
        "$ref": "#/$defs/FontStyle"
      },
      "ScreenFontStyle": {
        "$ref": "#/$defs/ScreenFontStyle"
      },
      "Color": {
        "$ref": "#/$defs/Color"
      },
      "ColorRGBA": {
        "$ref": "#/$defs/ColorRGBA"
      },
      "Coordinate": {
        "$ref": "#/$defs/Coordinate"
      },
      "CoordinateDouble": {
        "$ref": "#/$defs/CoordinateDouble"
      },
      "GeoCoordinate": {
        "$ref": "#/$defs/GeoCoordinate"
      },
      "Normal": {
        "$ref": "#/$defs/Normal"
      },
      "TextureCoordinate": {
        "$ref": "#/$defs/TextureCoordinate"
      },
      "TextureCoordinate3D": {
        "$ref": "#/$defs/TextureCoordinate3D"
      },
      "TextureCoordinate4D": {
        "$ref": "#/$defs/TextureCoordinate4D"
      },
      "TextureCoordinateGenerator": {
        "$ref": "#/$defs/TextureCoordinateGenerator"
      },
      "MultiTextureCoordinate": {
        "$ref": "#/$defs/MultiTextureCoordinate"
      },
      "FloatVertexAttribute": {
        "$ref": "#/$defs/FloatVertexAttribute"
      },
      "Matrix3VertexAttribute": {
        "$ref": "#/$defs/Matrix3VertexAttribute"
      },
      "Matrix4VertexAttribute": {
        "$ref": "#/$defs/Matrix4VertexAttribute"
      },
      "FogCoordinate": {
        "$ref": "#/$defs/FogCoordinate"
      },
      "HAnimDisplacer": {
        "$ref": "#/$defs/HAnimDisplacer"
      },
      "IndexedFaceSet": {
        "$ref": "#/$defs/IndexedFaceSet"
      },
      "IndexedQuadSet": {
        "$ref": "#/$defs/IndexedQuadSet"
      },
      "IndexedTriangleFanSet": {
        "$ref": "#/$defs/IndexedTriangleFanSet"
      },
      "IndexedTriangleSet": {
        "$ref": "#/$defs/IndexedTriangleSet"
      },
      "IndexedTriangleStripSet": {
        "$ref": "#/$defs/IndexedTriangleStripSet"
      },
      "QuadSet": {
        "$ref": "#/$defs/QuadSet"
      },
      "TriangleFanSet": {
        "$ref": "#/$defs/TriangleFanSet"
      },
      "TriangleSet": {
        "$ref": "#/$defs/TriangleSet"
      },
      "TriangleStripSet": {
        "$ref": "#/$defs/TriangleStripSet"
      },
      "NurbsPatchSurface": {
        "$ref": "#/$defs/NurbsPatchSurface"
      },
      "NurbsTrimmedSurface": {
        "$ref": "#/$defs/NurbsTrimmedSurface"
      },
      "NurbsCurve": {
        "$ref": "#/$defs/NurbsCurve"
      },
      "NurbsSweptSurface": {
        "$ref": "#/$defs/NurbsSweptSurface"
      },
      "NurbsSwungSurface": {
        "$ref": "#/$defs/NurbsSwungSurface"
      },
      "Arc2D": {
        "$ref": "#/$defs/Arc2D"
      },
      "ArcClose2D": {
        "$ref": "#/$defs/ArcClose2D"
      },
      "Box": {
        "$ref": "#/$defs/Box"
      },
      "Circle2D": {
        "$ref": "#/$defs/Circle2D"
      },
      "Cone": {
        "$ref": "#/$defs/Cone"
      },
      "Cylinder": {
        "$ref": "#/$defs/Cylinder"
      },
      "Disk2D": {
        "$ref": "#/$defs/Disk2D"
      },
      "ElevationGrid": {
        "$ref": "#/$defs/ElevationGrid"
      },
      "Extrusion": {
        "$ref": "#/$defs/Extrusion"
      },
      "GeoElevationGrid": {
        "$ref": "#/$defs/GeoElevationGrid"
      },
      "IndexedLineSet": {
        "$ref": "#/$defs/IndexedLineSet"
      },
      "LineSet": {
        "$ref": "#/$defs/LineSet"
      },
      "PointSet": {
        "$ref": "#/$defs/PointSet"
      },
      "Polyline2D": {
        "$ref": "#/$defs/Polyline2D"
      },
      "Polypoint2D": {
        "$ref": "#/$defs/Polypoint2D"
      },
      "Rectangle2D": {
        "$ref": "#/$defs/Rectangle2D"
      },
      "Sphere": {
        "$ref": "#/$defs/Sphere"
      },
      "Text": {
        "$ref": "#/$defs/Text"
      },
      "TriangleSet2D": {
        "$ref": "#/$defs/TriangleSet2D"
      },
      "CollisionSpace": {
        "$ref": "#/$defs/CollisionSpace"
      },
      "ContourPolyline2D": {
        "$ref": "#/$defs/ContourPolyline2D"
      },
      "NurbsCurve2D": {
        "$ref": "#/$defs/NurbsCurve2D"
      },
      "ConeEmitter": {
        "$ref": "#/$defs/ConeEmitter"
      },
      "ExplosionEmitter": {
        "$ref": "#/$defs/ExplosionEmitter"
      },
      "PointEmitter": {
        "$ref": "#/$defs/PointEmitter"
      },
      "PolylineEmitter": {
        "$ref": "#/$defs/PolylineEmitter"
      },
      "SurfaceEmitter": {
        "$ref": "#/$defs/SurfaceEmitter"
      },
      "VolumeEmitter": {
        "$ref": "#/$defs/VolumeEmitter"
      },
      "BoundedPhysicsModel": {
        "$ref": "#/$defs/BoundedPhysicsModel"
      },
      "ForcePhysicsModel": {
        "$ref": "#/$defs/ForcePhysicsModel"
      },
      "WindPhysicsModel": {
        "$ref": "#/$defs/WindPhysicsModel"
      },
      "BallJoint": {
        "$ref": "#/$defs/BallJoint"
      },
      "DoubleAxisHingeJoint": {
        "$ref": "#/$defs/DoubleAxisHingeJoint"
      },
      "MotorJoint": {
        "$ref": "#/$defs/MotorJoint"
      },
      "SingleAxisHingeJoint": {
        "$ref": "#/$defs/SingleAxisHingeJoint"
      },
      "SliderJoint": {
        "$ref": "#/$defs/SliderJoint"
      },
      "UniversalJoint": {
        "$ref": "#/$defs/UniversalJoint"
      },
      "BlendedVolumeStyle": {
        "$ref": "#/$defs/BlendedVolumeStyle"
      },
      "BoundaryEnhancementVolumeStyle": {
        "$ref": "#/$defs/BoundaryEnhancementVolumeStyle"
      },
      "CartoonVolumeStyle": {
        "$ref": "#/$defs/CartoonVolumeStyle"
      },
      "ComposedVolumeStyle": {
        "$ref": "#/$defs/ComposedVolumeStyle"
      },
      "EdgeEnhancementVolumeStyle": {
        "$ref": "#/$defs/EdgeEnhancementVolumeStyle"
      },
      "OpacityMapVolumeStyle": {
        "$ref": "#/$defs/OpacityMapVolumeStyle"
      },
      "ShadedVolumeStyle": {
        "$ref": "#/$defs/ShadedVolumeStyle"
      },
      "SilhouetteEnhancementVolumeStyle": {
        "$ref": "#/$defs/SilhouetteEnhancementVolumeStyle"
      },
      "ToneMappedVolumeStyle": {
        "$ref": "#/$defs/ToneMappedVolumeStyle"
      },
      "ProjectionVolumeStyle": {
        "$ref": "#/$defs/ProjectionVolumeStyle"
      },
      "Contact": {
        "$ref": "#/$defs/Contact"
      },
      "Contour2D": {
        "$ref": "#/$defs/Contour2D"
      },
      "GeoOrigin": {
        "$ref": "#/$defs/GeoOrigin"
      },
      "LayerSet": {
        "$ref": "#/$defs/LayerSet"
      },
      "MetadataBoolean": {
        "$ref": "#/$defs/MetadataBoolean"
      },
      "MetadataDouble": {
        "$ref": "#/$defs/MetadataDouble"
      },
      "MetadataFloat": {
        "$ref": "#/$defs/MetadataFloat"
      },
      "MetadataInteger": {
        "$ref": "#/$defs/MetadataInteger"
      },
      "MetadataSet": {
        "$ref": "#/$defs/MetadataSet"
      },
      "MetadataString": {
        "$ref": "#/$defs/MetadataString"
      },
      "NurbsTextureCoordinate": {
        "$ref": "#/$defs/NurbsTextureCoordinate"
      },
      "ShaderPart": {
        "$ref": "#/$defs/ShaderPart"
      },
      "ShaderProgram": {
        "$ref": "#/$defs/ShaderProgram"
      },
      "TextureProperties": {
        "$ref": "#/$defs/TextureProperties"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-NavigationInfoSFNode": {
  "type": "object",
  "properties": {
    "NavigationInfo": {
      "$ref": "#/$defs/NavigationInfo"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-HAnimJointMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-HAnimMotionMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimMotion": {
        "$ref": "#/$defs/HAnimMotion"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-HAnimSegmentMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-HAnimSiteMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-HAnimJoint-HAnimSiteMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-Group-Transform-Shape-IndexedFaceSetMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Group": {
        "$ref": "#/$defs/Group"
      },
      "Transform": {
        "$ref": "#/$defs/Transform"
      },
      "Shape": {
        "$ref": "#/$defs/Shape"
      },
      "IndexedFaceSet": {
        "$ref": "#/$defs/IndexedFaceSet"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-Coordinate-CoordinateDoubleSFNode": {
  "type": "object",
  "properties": {
    "Coordinate": {
      "$ref": "#/$defs/Coordinate"
    },
    "CoordinateDouble": {
      "$ref": "#/$defs/CoordinateDouble"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-HAnimJoint-HAnimSegmentMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-HAnimDisplacerMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "HAnimDisplacer": {
        "$ref": "#/$defs/HAnimDisplacer"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DCoordinateNodeSFNode": {
  "type": "object",
  "properties": {
    "Coordinate": {
      "$ref": "#/$defs/Coordinate"
    },
    "CoordinateDouble": {
      "$ref": "#/$defs/CoordinateDouble"
    },
    "GeoCoordinate": {
      "$ref": "#/$defs/GeoCoordinate"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DSingleTextureCoordinateNode-MultiTextureCoordinateSFNode": {
  "type": "object",
  "properties": {
    "TextureCoordinate": {
      "$ref": "#/$defs/TextureCoordinate"
    },
    "TextureCoordinate3D": {
      "$ref": "#/$defs/TextureCoordinate3D"
    },
    "TextureCoordinate4D": {
      "$ref": "#/$defs/TextureCoordinate4D"
    },
    "TextureCoordinateGenerator": {
      "$ref": "#/$defs/TextureCoordinateGenerator"
    },
    "MultiTextureCoordinate": {
      "$ref": "#/$defs/MultiTextureCoordinate"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DVolumeRenderStyleNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "BlendedVolumeStyle": {
        "$ref": "#/$defs/BlendedVolumeStyle"
      },
      "BoundaryEnhancementVolumeStyle": {
        "$ref": "#/$defs/BoundaryEnhancementVolumeStyle"
      },
      "CartoonVolumeStyle": {
        "$ref": "#/$defs/CartoonVolumeStyle"
      },
      "ComposedVolumeStyle": {
        "$ref": "#/$defs/ComposedVolumeStyle"
      },
      "EdgeEnhancementVolumeStyle": {
        "$ref": "#/$defs/EdgeEnhancementVolumeStyle"
      },
      "OpacityMapVolumeStyle": {
        "$ref": "#/$defs/OpacityMapVolumeStyle"
      },
      "ShadedVolumeStyle": {
        "$ref": "#/$defs/ShadedVolumeStyle"
      },
      "SilhouetteEnhancementVolumeStyle": {
        "$ref": "#/$defs/SilhouetteEnhancementVolumeStyle"
      },
      "ToneMappedVolumeStyle": {
        "$ref": "#/$defs/ToneMappedVolumeStyle"
      },
      "ProjectionVolumeStyle": {
        "$ref": "#/$defs/ProjectionVolumeStyle"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DViewportNodeSFNode": {
  "type": "object",
  "properties": {
    "Viewport": {
      "$ref": "#/$defs/Viewport"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DLayerNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Layer": {
        "$ref": "#/$defs/Layer"
      },
      "LayoutLayer": {
        "$ref": "#/$defs/LayoutLayer"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DLayoutNodeSFNode": {
  "type": "object",
  "properties": {
    "Layout": {
      "$ref": "#/$defs/Layout"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DGroupingNode-X3DShapeNode-InlineMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Viewport": {
        "$ref": "#/$defs/Viewport"
      },
      "Anchor": {
        "$ref": "#/$defs/Anchor"
      },
      "Billboard": {
        "$ref": "#/$defs/Billboard"
      },
      "CADAssembly": {
        "$ref": "#/$defs/CADAssembly"
      },
      "CADLayer": {
        "$ref": "#/$defs/CADLayer"
      },
      "CADPart": {
        "$ref": "#/$defs/CADPart"
      },
      "Collision": {
        "$ref": "#/$defs/Collision"
      },
      "EspduTransform": {
        "$ref": "#/$defs/EspduTransform"
      },
      "GeoLocation": {
        "$ref": "#/$defs/GeoLocation"
      },
      "GeoTransform": {
        "$ref": "#/$defs/GeoTransform"
      },
      "Group": {
        "$ref": "#/$defs/Group"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "Layer": {
        "$ref": "#/$defs/Layer"
      },
      "LayoutGroup": {
        "$ref": "#/$defs/LayoutGroup"
      },
      "LayoutLayer": {
        "$ref": "#/$defs/LayoutLayer"
      },
      "LOD": {
        "$ref": "#/$defs/LOD"
      },
      "PickableGroup": {
        "$ref": "#/$defs/PickableGroup"
      },
      "ScreenGroup": {
        "$ref": "#/$defs/ScreenGroup"
      },
      "Switch": {
        "$ref": "#/$defs/Switch"
      },
      "Transform": {
        "$ref": "#/$defs/Transform"
      },
      "ParticleSystem": {
        "$ref": "#/$defs/ParticleSystem"
      },
      "Shape": {
        "$ref": "#/$defs/Shape"
      },
      "Inline": {
        "$ref": "#/$defs/Inline"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DUrlObjectMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Script": {
        "$ref": "#/$defs/Script"
      },
      "Anchor": {
        "$ref": "#/$defs/Anchor"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "DISEntityTypeMapping": {
        "$ref": "#/$defs/DISEntityTypeMapping"
      },
      "GeoMetadata": {
        "$ref": "#/$defs/GeoMetadata"
      },
      "ImageCubeMapTexture": {
        "$ref": "#/$defs/ImageCubeMapTexture"
      },
      "ImageTexture": {
        "$ref": "#/$defs/ImageTexture"
      },
      "ImageTexture3D": {
        "$ref": "#/$defs/ImageTexture3D"
      },
      "Inline": {
        "$ref": "#/$defs/Inline"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "PackagedShader": {
        "$ref": "#/$defs/PackagedShader"
      },
      "ShaderPart": {
        "$ref": "#/$defs/ShaderPart"
      },
      "ShaderProgram": {
        "$ref": "#/$defs/ShaderProgram"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSingleTextureNodeSFNode": {
  "type": "object",
  "properties": {
    "ImageTexture": {
      "$ref": "#/$defs/ImageTexture"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "PixelTexture": {
      "$ref": "#/$defs/PixelTexture"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DMetadataObjectMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "MetadataBoolean": {
        "$ref": "#/$defs/MetadataBoolean"
      },
      "MetadataDouble": {
        "$ref": "#/$defs/MetadataDouble"
      },
      "MetadataFloat": {
        "$ref": "#/$defs/MetadataFloat"
      },
      "MetadataInteger": {
        "$ref": "#/$defs/MetadataInteger"
      },
      "MetadataSet": {
        "$ref": "#/$defs/MetadataSet"
      },
      "MetadataString": {
        "$ref": "#/$defs/MetadataString"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSingleTextureNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ImageTexture": {
        "$ref": "#/$defs/ImageTexture"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "PixelTexture": {
        "$ref": "#/$defs/PixelTexture"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSingleTextureCoordinateNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "TextureCoordinate": {
        "$ref": "#/$defs/TextureCoordinate"
      },
      "TextureCoordinate3D": {
        "$ref": "#/$defs/TextureCoordinate3D"
      },
      "TextureCoordinate4D": {
        "$ref": "#/$defs/TextureCoordinate4D"
      },
      "TextureCoordinateGenerator": {
        "$ref": "#/$defs/TextureCoordinateGenerator"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSingleTextureTransformNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSingleTextureCoordinateNode-NurbsTextureCoordinateSFNode": {
  "type": "object",
  "properties": {
    "TextureCoordinate": {
      "$ref": "#/$defs/TextureCoordinate"
    },
    "TextureCoordinate3D": {
      "$ref": "#/$defs/TextureCoordinate3D"
    },
    "TextureCoordinate4D": {
      "$ref": "#/$defs/TextureCoordinate4D"
    },
    "TextureCoordinateGenerator": {
      "$ref": "#/$defs/TextureCoordinateGenerator"
    },
    "NurbsTextureCoordinate": {
      "$ref": "#/$defs/NurbsTextureCoordinate"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DParametricGeometryNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "NurbsPatchSurface": {
        "$ref": "#/$defs/NurbsPatchSurface"
      },
      "NurbsTrimmedSurface": {
        "$ref": "#/$defs/NurbsTrimmedSurface"
      },
      "NurbsCurve": {
        "$ref": "#/$defs/NurbsCurve"
      },
      "NurbsSweptSurface": {
        "$ref": "#/$defs/NurbsSweptSurface"
      },
      "NurbsSwungSurface": {
        "$ref": "#/$defs/NurbsSwungSurface"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DNurbsControlCurveNodeSFNode": {
  "type": "object",
  "properties": {
    "ContourPolyline2D": {
      "$ref": "#/$defs/ContourPolyline2D"
    },
    "NurbsCurve2D": {
      "$ref": "#/$defs/NurbsCurve2D"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-NurbsCurveSFNode": {
  "type": "object",
  "properties": {
    "NurbsCurve": {
      "$ref": "#/$defs/NurbsCurve"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-Contour2DMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "Contour2D": {
        "$ref": "#/$defs/Contour2D"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DTexture2DNode-X3DTexture3DNodeSFNode": {
  "type": "object",
  "properties": {
    "ImageTexture": {
      "$ref": "#/$defs/ImageTexture"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "PixelTexture": {
      "$ref": "#/$defs/PixelTexture"
    },
    "ComposedTexture3D": {
      "$ref": "#/$defs/ComposedTexture3D"
    },
    "ImageTexture3D": {
      "$ref": "#/$defs/ImageTexture3D"
    },
    "PixelTexture3D": {
      "$ref": "#/$defs/PixelTexture3D"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DAppearanceNodeSFNode": {
  "type": "object",
  "properties": {
    "Appearance": {
      "$ref": "#/$defs/Appearance"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DParticleEmitterNodeSFNode": {
  "type": "object",
  "properties": {
    "ConeEmitter": {
      "$ref": "#/$defs/ConeEmitter"
    },
    "ExplosionEmitter": {
      "$ref": "#/$defs/ExplosionEmitter"
    },
    "PointEmitter": {
      "$ref": "#/$defs/PointEmitter"
    },
    "PolylineEmitter": {
      "$ref": "#/$defs/PolylineEmitter"
    },
    "SurfaceEmitter": {
      "$ref": "#/$defs/SurfaceEmitter"
    },
    "VolumeEmitter": {
      "$ref": "#/$defs/VolumeEmitter"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DParticlePhysicsModelNodeMFNode": {
  "$comment": "MFNode initializeOnly",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "BoundedPhysicsModel": {
        "$ref": "#/$defs/BoundedPhysicsModel"
      },
      "ForcePhysicsModel": {
        "$ref": "#/$defs/ForcePhysicsModel"
      },
      "WindPhysicsModel": {
        "$ref": "#/$defs/WindPhysicsModel"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-TextureCoordinate-TextureCoordinateGeneratorSFNode": {
  "type": "object",
  "properties": {
    "TextureCoordinate": {
      "$ref": "#/$defs/TextureCoordinate"
    },
    "TextureCoordinateGenerator": {
      "$ref": "#/$defs/TextureCoordinateGenerator"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-ShaderProgramMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "ShaderProgram": {
        "$ref": "#/$defs/ShaderProgram"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-Sphere-Box-ConeSFNode": {
  "type": "object",
  "properties": {
    "Sphere": {
      "$ref": "#/$defs/Sphere"
    },
    "Box": {
      "$ref": "#/$defs/Box"
    },
    "Cone": {
      "$ref": "#/$defs/Cone"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-RigidBodyMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "RigidBody": {
        "$ref": "#/$defs/RigidBody"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DRigidJointNodeMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "BallJoint": {
        "$ref": "#/$defs/BallJoint"
      },
      "DoubleAxisHingeJoint": {
        "$ref": "#/$defs/DoubleAxisHingeJoint"
      },
      "MotorJoint": {
        "$ref": "#/$defs/MotorJoint"
      },
      "SingleAxisHingeJoint": {
        "$ref": "#/$defs/SingleAxisHingeJoint"
      },
      "SliderJoint": {
        "$ref": "#/$defs/SliderJoint"
      },
      "UniversalJoint": {
        "$ref": "#/$defs/UniversalJoint"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DSoundSourceNodeSFNode": {
  "type": "object",
  "properties": {
    "AudioClip": {
      "$ref": "#/$defs/AudioClip"
    },
    "BufferAudioSource": {
      "$ref": "#/$defs/BufferAudioSource"
    },
    "ListenerPointSource": {
      "$ref": "#/$defs/ListenerPointSource"
    },
    "MicrophoneSource": {
      "$ref": "#/$defs/MicrophoneSource"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "OscillatorSource": {
      "$ref": "#/$defs/OscillatorSource"
    },
    "StreamAudioSource": {
      "$ref": "#/$defs/StreamAudioSource"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DFontStyleNodeSFNode": {
  "type": "object",
  "properties": {
    "FontStyle": {
      "$ref": "#/$defs/FontStyle"
    },
    "ScreenFontStyle": {
      "$ref": "#/$defs/ScreenFontStyle"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DTexture2DNode-MultiTextureSFNode": {
  "type": "object",
  "properties": {
    "ImageTexture": {
      "$ref": "#/$defs/ImageTexture"
    },
    "MovieTexture": {
      "$ref": "#/$defs/MovieTexture"
    },
    "PixelTexture": {
      "$ref": "#/$defs/PixelTexture"
    },
    "MultiTexture": {
      "$ref": "#/$defs/MultiTexture"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DGroupingNode-X3DShapeNodeSFNode": {
  "type": "object",
  "properties": {
    "Viewport": {
      "$ref": "#/$defs/Viewport"
    },
    "Anchor": {
      "$ref": "#/$defs/Anchor"
    },
    "Billboard": {
      "$ref": "#/$defs/Billboard"
    },
    "CADAssembly": {
      "$ref": "#/$defs/CADAssembly"
    },
    "CADLayer": {
      "$ref": "#/$defs/CADLayer"
    },
    "CADPart": {
      "$ref": "#/$defs/CADPart"
    },
    "Collision": {
      "$ref": "#/$defs/Collision"
    },
    "EspduTransform": {
      "$ref": "#/$defs/EspduTransform"
    },
    "GeoLocation": {
      "$ref": "#/$defs/GeoLocation"
    },
    "GeoTransform": {
      "$ref": "#/$defs/GeoTransform"
    },
    "Group": {
      "$ref": "#/$defs/Group"
    },
    "HAnimSegment": {
      "$ref": "#/$defs/HAnimSegment"
    },
    "HAnimSite": {
      "$ref": "#/$defs/HAnimSite"
    },
    "Layer": {
      "$ref": "#/$defs/Layer"
    },
    "LayoutGroup": {
      "$ref": "#/$defs/LayoutGroup"
    },
    "LayoutLayer": {
      "$ref": "#/$defs/LayoutLayer"
    },
    "LOD": {
      "$ref": "#/$defs/LOD"
    },
    "PickableGroup": {
      "$ref": "#/$defs/PickableGroup"
    },
    "ScreenGroup": {
      "$ref": "#/$defs/ScreenGroup"
    },
    "Switch": {
      "$ref": "#/$defs/Switch"
    },
    "Transform": {
      "$ref": "#/$defs/Transform"
    },
    "ParticleSystem": {
      "$ref": "#/$defs/ParticleSystem"
    },
    "Shape": {
      "$ref": "#/$defs/Shape"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DViewpointNode-ViewpointGroupMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "GeoViewpoint": {
        "$ref": "#/$defs/GeoViewpoint"
      },
      "OrthoViewpoint": {
        "$ref": "#/$defs/OrthoViewpoint"
      },
      "Viewpoint": {
        "$ref": "#/$defs/Viewpoint"
      },
      "ViewpointGroup": {
        "$ref": "#/$defs/ViewpointGroup"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      }
    },
    "additionalProperties": false
  }
}
JSONEX "-X3DVolumeRenderStyleNodeSFNode": {
  "type": "object",
  "properties": {
    "BlendedVolumeStyle": {
      "$ref": "#/$defs/BlendedVolumeStyle"
    },
    "BoundaryEnhancementVolumeStyle": {
      "$ref": "#/$defs/BoundaryEnhancementVolumeStyle"
    },
    "CartoonVolumeStyle": {
      "$ref": "#/$defs/CartoonVolumeStyle"
    },
    "ComposedVolumeStyle": {
      "$ref": "#/$defs/ComposedVolumeStyle"
    },
    "EdgeEnhancementVolumeStyle": {
      "$ref": "#/$defs/EdgeEnhancementVolumeStyle"
    },
    "OpacityMapVolumeStyle": {
      "$ref": "#/$defs/OpacityMapVolumeStyle"
    },
    "ShadedVolumeStyle": {
      "$ref": "#/$defs/ShadedVolumeStyle"
    },
    "SilhouetteEnhancementVolumeStyle": {
      "$ref": "#/$defs/SilhouetteEnhancementVolumeStyle"
    },
    "ToneMappedVolumeStyle": {
      "$ref": "#/$defs/ToneMappedVolumeStyle"
    },
    "ProjectionVolumeStyle": {
      "$ref": "#/$defs/ProjectionVolumeStyle"
    },
    "ProtoInstance": {
      "$ref": "#/$defs/ProtoInstance"
    }
  },
  "additionalProperties": false
}
JSONEX "-X3DChildNode-X3DMetadataObject-LayerSetMFNode": {
  "$comment": "MFNode inputOutput",
  "type": "array",
  "minItems": 1,
  "items": {
    "type": "object",
    "properties": {
      "#comment": {
        "type": "string"
      },
      "EXPORT": {
        "$ref": "#/$defs/EXPORT"
      },
      "ExternProtoDeclare": {
        "$ref": "#/$defs/ExternProtoDeclare"
      },
      "IMPORT": {
        "$ref": "#/$defs/IMPORT"
      },
      "ProtoDeclare": {
        "$ref": "#/$defs/ProtoDeclare"
      },
      "ROUTE": {
        "$ref": "#/$defs/ROUTE"
      },
      "Background": {
        "$ref": "#/$defs/Background"
      },
      "TextureBackground": {
        "$ref": "#/$defs/TextureBackground"
      },
      "GeoViewpoint": {
        "$ref": "#/$defs/GeoViewpoint"
      },
      "OrthoViewpoint": {
        "$ref": "#/$defs/OrthoViewpoint"
      },
      "Viewpoint": {
        "$ref": "#/$defs/Viewpoint"
      },
      "Fog": {
        "$ref": "#/$defs/Fog"
      },
      "NavigationInfo": {
        "$ref": "#/$defs/NavigationInfo"
      },
      "ColorChaser": {
        "$ref": "#/$defs/ColorChaser"
      },
      "CoordinateChaser": {
        "$ref": "#/$defs/CoordinateChaser"
      },
      "OrientationChaser": {
        "$ref": "#/$defs/OrientationChaser"
      },
      "PositionChaser": {
        "$ref": "#/$defs/PositionChaser"
      },
      "PositionChaser2D": {
        "$ref": "#/$defs/PositionChaser2D"
      },
      "ScalarChaser": {
        "$ref": "#/$defs/ScalarChaser"
      },
      "TexCoordChaser2D": {
        "$ref": "#/$defs/TexCoordChaser2D"
      },
      "ColorDamper": {
        "$ref": "#/$defs/ColorDamper"
      },
      "CoordinateDamper": {
        "$ref": "#/$defs/CoordinateDamper"
      },
      "OrientationDamper": {
        "$ref": "#/$defs/OrientationDamper"
      },
      "PositionDamper": {
        "$ref": "#/$defs/PositionDamper"
      },
      "PositionDamper2D": {
        "$ref": "#/$defs/PositionDamper2D"
      },
      "ScalarDamper": {
        "$ref": "#/$defs/ScalarDamper"
      },
      "TexCoordDamper2D": {
        "$ref": "#/$defs/TexCoordDamper2D"
      },
      "Viewport": {
        "$ref": "#/$defs/Viewport"
      },
      "Anchor": {
        "$ref": "#/$defs/Anchor"
      },
      "Billboard": {
        "$ref": "#/$defs/Billboard"
      },
      "CADAssembly": {
        "$ref": "#/$defs/CADAssembly"
      },
      "CADLayer": {
        "$ref": "#/$defs/CADLayer"
      },
      "CADPart": {
        "$ref": "#/$defs/CADPart"
      },
      "Collision": {
        "$ref": "#/$defs/Collision"
      },
      "EspduTransform": {
        "$ref": "#/$defs/EspduTransform"
      },
      "GeoLocation": {
        "$ref": "#/$defs/GeoLocation"
      },
      "GeoTransform": {
        "$ref": "#/$defs/GeoTransform"
      },
      "Group": {
        "$ref": "#/$defs/Group"
      },
      "HAnimSegment": {
        "$ref": "#/$defs/HAnimSegment"
      },
      "HAnimSite": {
        "$ref": "#/$defs/HAnimSite"
      },
      "Layer": {
        "$ref": "#/$defs/Layer"
      },
      "LayoutGroup": {
        "$ref": "#/$defs/LayoutGroup"
      },
      "LayoutLayer": {
        "$ref": "#/$defs/LayoutLayer"
      },
      "LOD": {
        "$ref": "#/$defs/LOD"
      },
      "PickableGroup": {
        "$ref": "#/$defs/PickableGroup"
      },
      "ScreenGroup": {
        "$ref": "#/$defs/ScreenGroup"
      },
      "Switch": {
        "$ref": "#/$defs/Switch"
      },
      "Transform": {
        "$ref": "#/$defs/Transform"
      },
      "DISEntityTypeMapping": {
        "$ref": "#/$defs/DISEntityTypeMapping"
      },
      "GeoMetadata": {
        "$ref": "#/$defs/GeoMetadata"
      },
      "WorldInfo": {
        "$ref": "#/$defs/WorldInfo"
      },
      "ColorInterpolator": {
        "$ref": "#/$defs/ColorInterpolator"
      },
      "CoordinateInterpolator": {
        "$ref": "#/$defs/CoordinateInterpolator"
      },
      "CoordinateInterpolator2D": {
        "$ref": "#/$defs/CoordinateInterpolator2D"
      },
      "GeoPositionInterpolator": {
        "$ref": "#/$defs/GeoPositionInterpolator"
      },
      "NormalInterpolator": {
        "$ref": "#/$defs/NormalInterpolator"
      },
      "OrientationInterpolator": {
        "$ref": "#/$defs/OrientationInterpolator"
      },
      "PositionInterpolator": {
        "$ref": "#/$defs/PositionInterpolator"
      },
      "PositionInterpolator2D": {
        "$ref": "#/$defs/PositionInterpolator2D"
      },
      "ScalarInterpolator": {
        "$ref": "#/$defs/ScalarInterpolator"
      },
      "SplinePositionInterpolator": {
        "$ref": "#/$defs/SplinePositionInterpolator"
      },
      "SplinePositionInterpolator2D": {
        "$ref": "#/$defs/SplinePositionInterpolator2D"
      },
      "SplineScalarInterpolator": {
        "$ref": "#/$defs/SplineScalarInterpolator"
      },
      "SquadOrientationInterpolator": {
        "$ref": "#/$defs/SquadOrientationInterpolator"
      },
      "Layout": {
        "$ref": "#/$defs/Layout"
      },
      "TextureProjector": {
        "$ref": "#/$defs/TextureProjector"
      },
      "TextureProjectorParallel": {
        "$ref": "#/$defs/TextureProjectorParallel"
      },
      "DirectionalLight": {
        "$ref": "#/$defs/DirectionalLight"
      },
      "PointLight": {
        "$ref": "#/$defs/PointLight"
      },
      "SpotLight": {
        "$ref": "#/$defs/SpotLight"
      },
      "CollidableOffset": {
        "$ref": "#/$defs/CollidableOffset"
      },
      "CollidableShape": {
        "$ref": "#/$defs/CollidableShape"
      },
      "CADFace": {
        "$ref": "#/$defs/CADFace"
      },
      "Script": {
        "$ref": "#/$defs/Script"
      },
      "GeoProximitySensor": {
        "$ref": "#/$defs/GeoProximitySensor"
      },
      "ProximitySensor": {
        "$ref": "#/$defs/ProximitySensor"
      },
      "TransformSensor": {
        "$ref": "#/$defs/TransformSensor"
      },
      "VisibilitySensor": {
        "$ref": "#/$defs/VisibilitySensor"
      },
      "KeySensor": {
        "$ref": "#/$defs/KeySensor"
      },
      "StringSensor": {
        "$ref": "#/$defs/StringSensor"
      },
      "LoadSensor": {
        "$ref": "#/$defs/LoadSensor"
      },
      "ReceiverPdu": {
        "$ref": "#/$defs/ReceiverPdu"
      },
      "SignalPdu": {
        "$ref": "#/$defs/SignalPdu"
      },
      "TransmitterPdu": {
        "$ref": "#/$defs/TransmitterPdu"
      },
      "LinePickSensor": {
        "$ref": "#/$defs/LinePickSensor"
      },
      "PointPickSensor": {
        "$ref": "#/$defs/PointPickSensor"
      },
      "PrimitivePickSensor": {
        "$ref": "#/$defs/PrimitivePickSensor"
      },
      "VolumePickSensor": {
        "$ref": "#/$defs/VolumePickSensor"
      },
      "CylinderSensor": {
        "$ref": "#/$defs/CylinderSensor"
      },
      "PlaneSensor": {
        "$ref": "#/$defs/PlaneSensor"
      },
      "SphereSensor": {
        "$ref": "#/$defs/SphereSensor"
      },
      "GeoTouchSensor": {
        "$ref": "#/$defs/GeoTouchSensor"
      },
      "TouchSensor": {
        "$ref": "#/$defs/TouchSensor"
      },
      "CollisionSensor": {
        "$ref": "#/$defs/CollisionSensor"
      },
      "TimeSensor": {
        "$ref": "#/$defs/TimeSensor"
      },
      "BooleanSequencer": {
        "$ref": "#/$defs/BooleanSequencer"
      },
      "IntegerSequencer": {
        "$ref": "#/$defs/IntegerSequencer"
      },
      "ParticleSystem": {
        "$ref": "#/$defs/ParticleSystem"
      },
      "Shape": {
        "$ref": "#/$defs/Shape"
      },
      "ChannelMerger": {
        "$ref": "#/$defs/ChannelMerger"
      },
      "ChannelSelector": {
        "$ref": "#/$defs/ChannelSelector"
      },
      "ChannelSplitter": {
        "$ref": "#/$defs/ChannelSplitter"
      },
      "AudioDestination": {
        "$ref": "#/$defs/AudioDestination"
      },
      "StreamAudioDestination": {
        "$ref": "#/$defs/StreamAudioDestination"
      },
      "Analyser": {
        "$ref": "#/$defs/Analyser"
      },
      "BiquadFilter": {
        "$ref": "#/$defs/BiquadFilter"
      },
      "Convolver": {
        "$ref": "#/$defs/Convolver"
      },
      "Delay": {
        "$ref": "#/$defs/Delay"
      },
      "DynamicsCompressor": {
        "$ref": "#/$defs/DynamicsCompressor"
      },
      "Gain": {
        "$ref": "#/$defs/Gain"
      },
      "WaveShaper": {
        "$ref": "#/$defs/WaveShaper"
      },
      "AudioClip": {
        "$ref": "#/$defs/AudioClip"
      },
      "BufferAudioSource": {
        "$ref": "#/$defs/BufferAudioSource"
      },
      "ListenerPointSource": {
        "$ref": "#/$defs/ListenerPointSource"
      },
      "MicrophoneSource": {
        "$ref": "#/$defs/MicrophoneSource"
      },
      "MovieTexture": {
        "$ref": "#/$defs/MovieTexture"
      },
      "OscillatorSource": {
        "$ref": "#/$defs/OscillatorSource"
      },
      "StreamAudioSource": {
        "$ref": "#/$defs/StreamAudioSource"
      },
      "PeriodicWave": {
        "$ref": "#/$defs/PeriodicWave"
      },
      "Sound": {
        "$ref": "#/$defs/Sound"
      },
      "SpatialSound": {
        "$ref": "#/$defs/SpatialSound"
      },
      "BooleanTrigger": {
        "$ref": "#/$defs/BooleanTrigger"
      },
      "IntegerTrigger": {
        "$ref": "#/$defs/IntegerTrigger"
      },
      "TimeTrigger": {
        "$ref": "#/$defs/TimeTrigger"
      },
      "IsoSurfaceVolumeData": {
        "$ref": "#/$defs/IsoSurfaceVolumeData"
      },
      "SegmentedVolumeData": {
        "$ref": "#/$defs/SegmentedVolumeData"
      },
      "VolumeData": {
        "$ref": "#/$defs/VolumeData"
      },
      "BooleanFilter": {
        "$ref": "#/$defs/BooleanFilter"
      },
      "BooleanToggle": {
        "$ref": "#/$defs/BooleanToggle"
      },
      "ClipPlane": {
        "$ref": "#/$defs/ClipPlane"
      },
      "CollisionCollection": {
        "$ref": "#/$defs/CollisionCollection"
      },
      "DISEntityManager": {
        "$ref": "#/$defs/DISEntityManager"
      },
      "EaseInEaseOut": {
        "$ref": "#/$defs/EaseInEaseOut"
      },
      "GeoLOD": {
        "$ref": "#/$defs/GeoLOD"
      },
      "HAnimHumanoid": {
        "$ref": "#/$defs/HAnimHumanoid"
      },
      "HAnimJoint": {
        "$ref": "#/$defs/HAnimJoint"
      },
      "HAnimMotion": {
        "$ref": "#/$defs/HAnimMotion"
      },
      "Inline": {
        "$ref": "#/$defs/Inline"
      },
      "LocalFog": {
        "$ref": "#/$defs/LocalFog"
      },
      "NurbsOrientationInterpolator": {
        "$ref": "#/$defs/NurbsOrientationInterpolator"
      },
      "NurbsPositionInterpolator": {
        "$ref": "#/$defs/NurbsPositionInterpolator"
      },
      "NurbsSet": {
        "$ref": "#/$defs/NurbsSet"
      },
      "NurbsSurfaceInterpolator": {
        "$ref": "#/$defs/NurbsSurfaceInterpolator"
      },
      "ProtoInstance": {
        "$ref": "#/$defs/ProtoInstance"
      },
      "RigidBody": {
        "$ref": "#/$defs/RigidBody"
      },
      "RigidBodyCollection": {
        "$ref": "#/$defs/RigidBodyCollection"
      },
      "StaticGroup": {
        "$ref": "#/$defs/StaticGroup"
      },
      "ViewpointGroup": {
        "$ref": "#/$defs/ViewpointGroup"
      },
      "MetadataBoolean": {
        "$ref": "#/$defs/MetadataBoolean"
      },
      "MetadataDouble": {
        "$ref": "#/$defs/MetadataDouble"
      },
      "MetadataFloat": {
        "$ref": "#/$defs/MetadataFloat"
      },
      "MetadataInteger": {
        "$ref": "#/$defs/MetadataInteger"
      },
      "MetadataSet": {
        "$ref": "#/$defs/MetadataSet"
      },
      "MetadataString": {
        "$ref": "#/$defs/MetadataString"
      },
      "LayerSet": {
        "$ref": "#/$defs/LayerSet"
      }
    },
    "additionalProperties": false
  }
}