2009/04/29 (75-1 Edition2, log at bottom)
See www.web3d.org/specifications for the actual X3D ISO specifications. 20090807

|*View Object Hierarchy Diagram |

Over time, the text-based art called the Object Hierarchy, or just 'the diagram', has served to reconcile naming and structural objectives, thus providing a firm foundation for continued development and extensions.

|*View Language Abstract Standard |

Our X3D Abstract standard, Part 1, provides a description of the X3D human-readable user code interfaces used to represent the visualization and behavior of a scene. Each node and field is described in a form that is independent of the actual implementation language.

|*View X3D SAI Abstract |

The X3D Abstract standard, Part 2, describes the X3D Scene Access Interface (SAI) that provides 'internal' and 'external' program access to the X3D browser and to the current scene. This is my quick reference for the abstract, language-independent, SAI.

|*View X3D SAI ECMAScript Bindings |

My ECMAScript user code quick reference for the X3D SAI.



7 - Core Component

X3DBindableNode : X3DChildNode {
  SFBool [in]     set_bind
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFTime [out]    bindTime
  SFBool [out]    isBound
}

X3DChildNode : X3DMetadataObject {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DMetadataObject { 
  SFString [in,out] name      ""
  SFString [in,out] reference "" 
}

X3DNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DPrototypeInstance : X3DNode {
  SFNode [in,out] metdata NULL [X3DMetadataObject]
}

PrototypeInstanceName : X3DPrototypeInstanceNode {
PROTO PrototypeName{
  # any number of:
  inputOnly      eventtype name
  outputOnly     eventtype name
  inputOutput    fieldName name 
  initializeOnly fieldtype name
}
or
EXTERNPROTO ExternPrototypeName {
"url" | [urn]
  # any number of:
  inputOnly      eventtype name
  outputOnly     eventtype name
  inputOutput    fieldName name 
  initializeOnly fieldtype name] 
}

X3DSensorNode  : X3DChildNode {
  SFBool [in,out] enabled  TRUE
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFBool [out]    isActive
}

MetadataDouble : X3DNode, X3DMetadataObject {
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFDouble [in,out] value     []
}

MetadataFloat : X3DNode, X3DMetadataObject { 
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFFloat  [in,out] value     []
}

MetadataInteger : X3DNode, X3DMetadataObject { 
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFInt32  [in,out] value     []
}

MetadataSet : X3DNode, X3DMetadataObject { 
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFNode   [in,out] value     []   [X3DMetadataObject]
}

MetadataString : X3DNode, X3DMetadataObject { 
  SFNode   [in,out] metadata  NULL [X3DMetadataObject]
  SFString [in,out] name      ""
  SFString [in,out] reference ""
  MFString [in,out] value     []
}


8 - Time component

X3DTimeDependentNode : X3DChildNode {
  SFBool  [in,out] loop         FALSE
  SFNode  [in,out] metadata     NULL  [X3DMetadataObject]
  SFTime  [in,out] pauseTime    0     (-∞,∞)
  SFTime  [in,out] resumeTime   0     (-∞,∞)
  SFTime  [in,out] startTime    0     (-∞,∞)
  SFTime  [in,out] stopTime     0     (-∞,∞)
  SFTime  [out]    elapsedTime
  SFBool  [out]    isActive
  SFBool  [out]    isPaused
}


TimeSensor : X3DTimeDependentNode, X3DSensorNode {
  SFTime  [in,out] cycleInterval    1     (0,∞)
  SFBool  [in,out] enabled          TRUE
  SFBool  [in,out] loop             FALSE
  SFNode  [in,out] metadata         NULL  [X3DMetadataObject]
  SFTime  [in,out] pauseTime        0     (-∞,∞)
  SFTime  [in,out] resumeTime       0
  SFTime  [in,out] startTime        0     (-∞,∞)
  SFTime  [in,out] stopTime         0     (-∞,∞)
  SFTime  [out]    cycleTime
  SFTime  [out]    elapsedTime
  SFFloat [out]    fraction_changed
  SFBool  [out]    isActive
  SFBool  [out]    isPaused
  SFTime  [out]    time
}


9 - Networking component

X3DNetworkSensorNode : X3DSensorNode {
  SFBool [in,out] enabled   TRUE
  SFNode [in,out] metadata  NULL  [X3DMetadataObject]
  SFBool [out]    isActive
}

X3DUrlObject {
  MFString [in,out] url [] [urn]
}

Anchor : X3DGroupingNode, X3DUrlObject { 
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DChildNode]
  SFString [in,out] description    ""
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  MFString [in,out] parameter      []
  MFString [in,out] url            []       [urn]
  SFVec3f  []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1 
}

Inline : X3DChildNode, X3DBoundedObject, X3DUrlObject {
  SFBool   [in,out] load       TRUE
  SFNode   [in,out] metadata   NULL     [X3DMetadataObject]
  MFString [in,out] url        []       [url or urn]
  SFVec3f  []       bboxCenter 0 0      (-∞,∞)
  SFVec3f  []       bboxSize   -1 -1 -1 [0,∞) or -1 -1 -1
}

LoadSensor : X3DNetworkSensorNode {
  SFBool  [in,out] enabled   TRUE
  SFNode  [in,out] metadata  NULL [X3DMetadataObject]
  SFTime  [in,out] timeOut   0
  MFNode  [in,out] watchList []   [X3DUrlObject]
  SFBool  [out]    isActive
  SFBool  [out]    isLoaded
  SFTime  [out]    loadTime
  SFFloat [out]    progress
}


10 - Grouping component

X3DBoundedObject { 
  SFVec3f [] bboxCenter 0 0 0    (-∞,∞)
  SFVec3f [] bboxSize   -1 -1 -1 [0,∞) or -1 -1 -1
}

X3DGroupingNode : X3DChildNode, X3DBoundedObject { 
  MFNode  [in]     addChildren
  MFNode  [in]     removeChildren
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter*    0 0 0    (-∞,∞)
  SFVec3f []       bboxSize  *    -1 -1 -1 (0,∞) or -1 -1 -1
}

X3DInfoNode : X3DChildNode { 
  SFNode  [in,out] metadata  NULL [X3DMetadataObject]
}

Group : X3DGroupingNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}

StaticGroup : X3DChildNode, X3DBoundedObject {
  SFNode  [in,out] metadata   NULL     [X3DMetadataObject]
  MFNode  []       children   []       [X3DChildNode]
  SFVec3f []       bboxCenter 0 0      (-∞,∞)
  SFVec3f []       bboxSize  -1 -1 -1 [0,∞) or -1 -1 -1
}

Switch : X3DGroupingNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFInt32 [in,out] whichChoice    -1       [-1,2E31)
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}

Transform : X3DGroupingNode {
  MFNode     [in]     addChildren               [X3DChildNode]
  MFNode     [in]     removeChildren            [X3DChildNode]
  SFVec3f    [in,out] center           0 0 0    (-∞,∞)
  MFNode     [in,out] children         []       [X3DChildNode]
  SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
  SFRotation [in,out] rotation         0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] scale            1 1 1    (-∞,∞)
  SFRotation [in,out] scaleOrientation 0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] translation      0 0 0    (-∞,∞)
  SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or -1 -1 -1
}

WorldInfo : X3DInfoNode { 
  SFNode   [in,out] metadata NULL [X3DMetadataObject]
  MFString []       info     []
  SFString []       title    ""
}


11 - Rendering component

X3DColorNode : X3DGeometricPropertyNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DComposedGeometryNode : X3DGeometryNode { 
  MFNode [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode [in,out] color           NULL [X3DColorObject]
  SFNode [in,out] coord           NULL [X3DCoordinateNode]
  SFNode [in,out] fogCoord        []   [FogCoordinate]
  SFNode [in,out] metadata        NULL [X3DMetadataObject]
  SFNode [in,out] normal          NULL [X3DNormalNode]
  SFNode [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool []       ccw             TRUE
  SFBool []       colorPerVertex  TRUE
  SFBool []       normalPerVertex TRUE
  SFBool []       solid           TRUE
}

X3DCoordinateNode : X3DGeometricPropertyNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DGeometricPropertyNode : X3DNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject] 
}

X3DGeometryNode : X3DNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DNormalNode : X3DGeometricPropertyNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject] 
}

ClipPlane : X3DChildNode { 
  SFBool  [in,out] enabled  TRUE
  SFNode  [in,out] metadata NULL    [X3DMetadataObject]
  SFVec4f [in,out] plane    0 1 0 0 [0,1]
}

Color : X3DColorNode { 
  MFColor [in,out] color    [NULL] [0,1]
  SFNode  [in,out] metadata NULL   [X3DMetadataObject]
}

ColorRGBA : X3DColorNode { 
  MFColorRGBA [in,out] color    [NULL] [0,1] 
  SFNode      [in,out] metadata NULL   [X3DMetadataObject]
} 

Coordinate : X3DCoordinateNode { 
  SFNode  [in,out] metadata NULL   [X3DMetadataObject]
  MFVec3f [in,out] point    [NULL] (-∞,∞)
}

IndexedLineSet : X3DGeometryNode {
  MFInt32 [in]     set_colorIndex
  MFInt32 [in]     set_coordIndex
  MFNode  [in,out] attrib         []   [X3DVertexAttributeNode]
  SFNode  [in,out] color          NULL [X3DColorNode]
  SFNode  [in,out] coord          NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord       []   [FogCoordinate]
  SFNode  [in,out] metadata       NULL [X3DMetadataObject]
  MFInt32 []       colorIndex     []   [0,∞) or -1
  SFBool  []       colorPerVertex TRUE
  MFInt32 []       coordIndex     []   [0,∞) or -1
}

IndexedTriangleFanSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_index       []   [0,∞) or -1
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  MFInt32 []       index           []   [0,∞) or -1
}

IndexedTriangleSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_index       []   [0,∞)
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  MFInt32 []       index           []   [0,∞)
}

IndexedTriangleStripSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_index       []   [0,∞) or −1
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  MFInt32 []       index           []   [0,∞) or −1
}

LineSet : X3DGeometryNode {
  MFNode  [in,out] attrib         []   [X3DVertexAttributeNode]
  SFNode  [in,out] color          NULL [X3DColorNode]
  SFNode  [in,out] coord          NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord       []   [FogCoordinate]
  SFNode  [in,out] metadata       NULL [X3DMetadataObject]
  MFInt32 [in,out] vertexCount    []   [2,∞)
}

Normal : X3DNormalNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec3f [in,out] vector   []   [-1,1]
}

PointSet : X3DGeometryNode { 
  MFNode [in,out] attrib   []   [X3DVertexAttributeNode]
  SFNode [in,out] color    NULL [X3DColorNode]
  SFNode [in,out] coord    NULL [X3DCoordinateNode]
  SFNode [in,out] fogCoord []   [FogCoordinate]
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

TriangleFanSet : X3DComposedGeometryNode {
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  MFInt32 [in,out] fanCount        []   [3,∞)
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
}


TriangleSet : X3DComposedGeometryNode {
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
}


TriangleStripSet : X3DComposedGeometryNode {
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  MFInt32 [in,out] stripCount      []   [3,∞)
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
}



12 - Shape component

X3DAppearanceChildNode : X3DNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DAppearanceNode : X3DNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DMaterialNode : X3DAppearanceChildNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DShapeNode : X3DChildNode, X3DBoundedObject {
  SFNode  [in,out] appearance NULL     [X3DAppearanceNode]
  SFNode  [in,out] geometry   NULL     [X3DGeometryNode]
  SFNode  [in,out] metadata   NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter 0 0 0    (-∞,∞)
  SFVec3f []       bboxSize   -1 -1 -1 [0,∞) or -1 -1 -1
}

Appearance : X3DAppearanceNode { 
  SFNode [in,out] fillProperties   NULL [FillProperties]
  SFNode [in,out] lineProperties   NULL [LineProperties]
  SFNode [in,out] material         NULL [X3DMaterialNode]
  SFNode [in,out] metadata         NULL [X3DMetadataObject]
  MFNode [in,out] shaders          []   [X3DShaderNode]
  SFNode [in,out] texture          NULL [X3DTextureNode]
  SFNode [in,out] textureTransform NULL [X3DTextureTransformNode]
}


FillProperties : X3DAppearanceChildNode { 
  SFBool  [in,out] filled     TRUE
  SFColor [in,out] hatchColor 1 1 1 [0,1]
  SFBool  [in,out] hatched    TRUE
  SFInt32 [in,out] hatchStyle 1     [0,∞)
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
}

LineProperties : X3DAppearanceChildNode { 
  SFBool  [in,out] applied              TRUE
  SFInt32 [in,out] linetype             1    [1,∞)
  SFFloat [in,out] linewidthScaleFactor 0    (-∞,∞)
  SFNode  [in,out] metadata             NULL [X3DMetadataObject]
}
1 Solid 2 Dashed 3 Dotted 4 Dashed-dotted 5 Dash-dot-dot 
6 (single) 7 (single dot) 8 (double arrow) 10 (chain line) 
11 (center line) 12 (hidden line) 13 (phantom line) 
14 (break line 1) 15 (break line 2) 
16 User-specified dash pattern  
http://jitc.fhu.disa.mil/nitf/graph_reg/graph_reg.htm#LINETYPE
ISO/IEC 973 Linetype

Material : X3DMaterialNode { 
  SFFloat [in,out] ambientIntensity 0.2         [0,1]
  SFColor [in,out] diffuseColor     0.8 0.8 0.8 [0,1]
  SFColor [in,out] emissiveColor    0 0 0       [0,1]
  SFNode  [in,out] metadata         NULL        [X3DMetadataObject]
  SFFloat [in,out] shininess        0.2         [0,1]
  SFColor [in,out] specularColor    0 0 0       [0,1]
  SFFloat [in,out] transparency     0           [0,1]
}

Shape : X3DShapeNode {
  SFNode  [in,out] appearance NULL     [X3DAppearanceNode]
  SFNode  [in,out] geometry   NULL     [X3DGeometryNode]
  SFNode  [in,out] metadata   NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter 0 0 0    (-∞,∞)
  SFVec3f []       bboxSize   -1 -1 -1 [0,∞) or -1 -1 -1
}

TwoSidedMaterial : X3DMaterialNode {
  SFFloat [in,out] ambientIntensity     0.2         [0,1]
  SFFloat [in,out] backAmbientIntensity 0.2         [0,1]
  SFColor [in,out] backDiffuseColor     0.8 0.8 0.8 [0,1]
  SFColor [in,out] backEmissiveColor    0 0 0       [0,1]
  SFFloat [in,out] backShininess        0.2         [0,1]
  SFColor [in,out] backSpecularColor    0 0 0       [0,1]
  SFFloat [in,out] backTransparency     0           [0,1]
  SFColor [in,out] diffuseColor         0.8 0.8 0.8 [0,1]
  SFColor [in,out] emissiveColor        0 0 0       [0,1]
  SFNode  [in,out] metadata             NULL        [X3DMetadataObject]
  SFFloat [in,out] shininess            0.2         [0,1]
  SFBool  [in,out] separateBackColor    FALSE
  SFColor [in,out] specularColor        0 0 0       [0,1]
  SFFloat [in,out] transparency         0           [0,1]
}


13 - Geometry3D component

Box : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  SFVec3f []       size     2 2 2 [0,∞)
  SFBool  []       solid    TRUE
}

Cone : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  SFBool  []       bottom       TRUE
  SFFloat []       bottomRadius 1     (0,∞)
  SFFloat []       height       2     (0,∞)
  SFBool  []       side         TRUE
  SFBool  []       solid        TRUE
}

Cylinder : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  SFBool  []       bottom   TRUE
  SFFloat []       height   2    (0,∞)
  SFFloat []       radius   1    (0,∞)
  SFBool  []       side     TRUE
  SFBool  []       solid    TRUE
  SFBool  []       top      TRUE
}

ElevationGrid : X3DGeometryNode {
  MFFloat [in]     set_height
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE  
  SFBool  []       colorPerVertex  TRUE
  SFFloat []       creaseAngle     0    [0,∞)
  MFFloat []       height          []   (-∞,∞)
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  SFInt32 []       xDimension      0    [0,∞)
  SFFloat []       xSpacing        1.0  (0,∞)
  SFInt32 []       zDimension      0    [0,∞)
  SFFloat []       zSpacing        1.0  (0,∞)
}


Extrusion : X3DGeometryNode {
  MFVec2f    [in]     set_crossSection
  MFRotation [in]     set_orientation
  MFVec2f    [in]     set_scale
  MFVec3f    [in]     set_spine
  SFNode     [in,out] metadata         NULL [X3DMetadataObject]
  SFBool     []       beginCap         TRUE
  SFBool     []       ccw              TRUE
  SFBool     []       convex           TRUE
  SFFloat    []       creaseAngle      0                         [0,∞)
  MFVec2f    []       crossSection     [1 1 1 -1 -1 -1 -1 1 1 1] (-∞,∞)
  SFBool     []       endCap           TRUE
  MFRotation []       orientation      0 0 1 0                   [-1,1] or (-∞,∞)
  MFVec2f    []       scale            1 1                       (0,∞)
  SFBool     []       solid            TRUE
  MFVec3f    []       spine            [0 0 0 0 1 0]             (-∞,∞)
}

IndexedFaceSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_colorIndex
  MFInt32 [in]     set_coordIndex
  MFInt32 [in]     set_normalIndex
  MFInt32 [in]     set_texCoordIndex
  MFNode  [in,out] attrib            []   [X3DVertexAttributeNode]
  SFNode  [in,out] color             NULL [X3DColorNode]
  SFNode  [in,out] coord             NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord          []   [FogCoordinate]
  SFNode  [in,out] metadata          NULL [X3DMetadataObject]
  SFNode  [in,out] normal            NULL [X3DNormalNode]
  SFNode  [in,out] texCoord          NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw               TRUE
  MFInt32 []       colorIndex        []   [0,∞) or -1
  SFBool  []       colorPerVertex    TRUE
  SFBool  []       convex            TRUE
  MFInt32 []       coordIndex        []   [0,∞) or -1
  SFFloat []       creaseAngle       0    [0,∞)
  MFInt32 []       normalIndex       []   [0,∞) or -1
  SFBool  []       normalPerVertex   TRUE
  SFBool  []       solid             TRUE
  MFInt32 []       texCoordIndex     []   [-1,∞)
}

Sphere : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  SFFloat []       radius   1    (0,∞)
  SFBool  []       solid    TRUE
}


14 - Geometry2D component

Arc2D : X3DGeometryNode { 
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFFloat []       endAngle   π/2   [0,2π]
  SFFloat []       radius     1     (0,∞]
  SFFloat []       startAngle 0     [-2π,2π]
}

ArcClose2D : X3DGeometryNode { 
  SFNode   [in,out] metadata NULL [X3DMetadataObject]
  SFString []       closureType   "PIE" ["PIE"|"CHORD"]
  SFFloat  []       endAngle      π/2   [-2π,2π]
  SFFloat  []       radius        1     (0,∞]
  SFBool   []       solid         FALSE
  SFFloat  []       startAngle    0     [-2π,2π]
}

Circle2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  SFFloat []       radius   1     (0,∞)
}

Disk2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  SFFloat []       innerRadius 0 [0,∞)
  SFFloat []       outerRadius 1 (0,∞)
  SFBool  []       solid          FALSE
}

Polyline2D : X3DGeometryNode { 
  SFNode  [in,out] metadata     NULL [X3DMetadataObject]
  MFVec2f []       lineSegments []   (-∞,∞)
}

Polypoint2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec2f [in,out] point    []   (-∞,∞)
}

Rectangle2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  SFVec2f []       size     2 2  (0,∞)
  SFBool  []       solid    FALSE

}

TriangleSet2D : X3DGeometryNode { 
  SFNode  [in,out] metadata NULL  [X3DMetadataObject]
  MFVec2f [in,out] vertices []    (-∞,∞)
  SFBool  []       solid    FALSE
}


15 - Text component

X3DFontStyleNode : X3DNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

FontStyle : X3DFontStyleNode {
  SFNode   [in,out] metadata    NULL [X3DMetadataObject]
  MFString []       family      "SERIF"
  SFBool   []       horizontal  TRUE
  MFString []       justify     "BEGIN" ["BEGIN"|"END"|"FIRST"|"MIDDLE"|""]
  SFString []       language    ""
  SFBool   []       leftToRight TRUE
  SFFloat  []       size        1.0     (0,∞)
  SFFloat  []       spacing     1.0     [0,∞)
  SFString []       style       "PLAIN" ["PLAIN"|"BOLD"|"ITALIC"|"BOLDITALIC"|""]
  SFBool   []       topToBottom TRUE
}

Text : X3DGeometryNode {
  SFNode   [in,out] fontStyle NULL  [X3FontSyleNode]
  MFFloat  [in,out] length     []    [0,∞)
  SFFloat  [in,out] maxExtent  0.0   [0,∞)
  SFNode   [in,out] metadata   NULL  [X3DMetadataObject]
  MFString [in,out] string     []
  MFVec2f  [out]    lineBounds
  SFVec3f  [out]    origin
  SFVec2f  [out]    textBounds
  SFBool   []       solid      FALSE
}


16 - Sound component

X3DSoundNode : X3DChildNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DSoundSourceNode : X3DTimeDependentNode { 
  SFString [in,out] description      ""
  SFBool   [in,out] loop             FALSE
  SFNode   [in,out] metadata         NULL  [X3DMetadataObject]
  SFTime   [in,out] pauseTime        0     (-∞,∞)
  SFFloat  [in,out] pitch            1.0   (0,∞)
  SFTime   [in,out] resumeTime       0     (-∞,∞)
  SFTime   [in,out] startTime        0     (-∞,∞)
  SFTime   [in,out] stopTime         0     (-∞,∞)
  SFTime   [out]    duration_changed
  SFTime   [out]    elapsedTime
  SFBool   [out]    isActive
  SFBool   [out]    isPaused
}

AudioClip : X3DSoundSourceNode, X3DUrlObject {
  SFString [in,out] description      ""
  SFBool   [in,out] loop             FALSE
  SFNode   [in,out] metadata         NULL  [X3DMetadataObject]
  SFTime   [in,out] pauseTime        0     (-∞,∞)
  SFFloat  [in,out] pitch            1.0   (0,∞)
  SFTime   [in,out] resumeTime       0     (-∞,∞)
  SFTime   [in,out] startTime        0     (-∞,∞)
  SFTime   [in,out] stopTime         0     (-∞,∞)
  MFString [in,out] url              []    [urn]
  SFTime   [out]    duration_changed
  SFTime   [out]    elapsedTime
  SFBool   [out]    isActive
  SFBool   [out]    isPaused
}

Sound : X3DSoundNode {
  SFVec3f [in,out] direction  0 0 1 (-∞,∞)
  SFFloat [in,out] intensity  1     [0,1]
  SFVec3f [in,out] location   0 0 0 (-∞,∞)
  SFFloat [in,out] maxBack    10    [0,∞)
  SFFloat [in,out] maxFront   10    [0,∞)
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFFloat [in,out] minBack    1     [0,∞)
  SFFloat [in,out] minFront   1     [0,∞)
  SFFloat [in,out] priority   0     [0,1]
  SFNode  [in,out] source     NULL  [X3DSoundSourceNode]
  SFBool  []       spatialize TRUE
}


17 - Lighting component

X3DLightNode : X3DChildNode { 
  SFFloat [in,out] ambientIntensity 0     [0,1]
  SFColor [in,out] color            1 1 1 [0,1]
  SFBool  [in,out] global           FALSE
  SFFloat [in,out] intensity        1     [0,1]
  SFNode  [in,out] metadata         NULL  [X3DMetadataObject]
  SFBool  [in,out] on               TRUE
}

DirectionalLight : X3DLightNode {
  SFFloat [in,out] ambientIntensity 0      [0,1]
  SFColor [in,out] color            1 1 1  [0,1]
  SFVec3f [in,out] direction        0 0 -1 (-∞,∞)
  SFBool  [in,out] global           FALSE
  SFFloat [in,out] intensity        1      [0,1]
  SFNode  [in,out] metadata         NULL   [X3DMetadataObject]
  SFBool  [in,out] on               TRUE
}

PointLight : X3DLightNode {
  SFFloat [in,out] ambientIntensity 0     [0,1]
  SFVec3f [in,out] attenuation      1 0 0 [0,∞)
  SFColor [in,out] color            1 1 1 [0,1]
  SFBool  [in,out] global           TRUE
  SFFloat [in,out] intensity        1     [0,1]
  SFVec3f [in,out] location         0 0 0 (-∞,∞)
  SFNode  [in,out] metadata         NULL  [X3DMetadataObject]
  SFBool  [in,out] on               TRUE
  SFFloat [in,out] radius           100   [0,∞)
}

SpotLight : X3DLightNode {
  SFFloat [in,out] ambientIntensity 0        [0,1]
  SFVec3f [in,out] attenuation      1 0 0    [0,∞)
  SFFloat [in,out] beamWidth        1.570796 (0,π/2]
  SFColor [in,out] color            1 1 1    [0,1]
  SFFloat [in,out] cutOffAngle      0.785398 (0,π/2]
  SFVec3f [in,out] direction        0 0 -1   (-∞,∞)
  SFBool  [in,out] global           TRUE
  SFFloat [in,out] intensity        1        [0,1]
  SFVec3f [in,out] location         0 0 0    (-∞,∞)
  SFNode  [in,out] metadata         NULL     [X3DMetadataObject]
  SFBool  [in,out] on               TRUE
  SFFloat [in,out] radius           100      [0,∞)
}


18 - Texturing component

X3DTextureCoordinateNode : X3DGeometricPropertyNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DTextureNode : X3DAppearanceChildNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

X3DTexture2DNode : X3DTextureNode {
  SFNode [in,out] metadata          NULL [X3DMetadataObject]
  SFBool []       repeatS           TRUE
  SFBool []       repeatT           TRUE
  SFNode []       textureProperties NULL [TextureProperties]
}

X3DTextureTransformNode : X3DAppearanceChildNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

ImageTexture : X3DTexture2DNode, X3DUrlObject { 
  SFNode   [in,out] metadata          NULL [X3DMetadataObject]
  MFString [in,out] url               []   [urn]
  SFBool   []       repeatS           TRUE 
  SFBool   []       repeatT           TRUE
  SFNode   []       textureProperties NULL [TextureProperties]
} 

MovieTexture : X3DTexture2DNode, X3DSoundSourceNode, X3DUrlObject { 
  SFString [in,out] description  
  SFBool   [in,out] loop              FALSE
  SFNode   [in,out] metadata          NULL  [X3DMetadataObject]
  SFTime   [in,out] pauseTime         0     (-∞,∞)
  SFTime   [in,out] resumeTime        0     (-∞,∞)
  SFFloat  [in,out] speed             1.0   (-∞,∞)
  SFTime   [in,out] startTime         0     (-∞,∞)
  SFTime   [in,out] stopTime          0     (-∞,∞)
  MFString [in,out] url               []    [urn]
  SFBool   []       repeatS           TRUE
  SFBool   []       repeatT           TRUE
  SFNode   []       textureProperties NULL [TextureProperties]
  SFTime   [out]    duration_changed
  SFTime   [out]    elapsedTime
  SFBool   [out]    isActive
  SFBool   [out]    isPaused
}

MultiTexture : X3DTextureNode {
  SFFloat  [in,out] alpha       1     [0.1]
  SFColor  [in,out] color       1 1 1 [0,1] 
  MFString [in,out] function    []
  SFNode   [in,out] metadata    NULL  [X3DMetadataObject]
  MFString [in,out] mode        []
  MFString [in,out] source      []
  MFNode   [in,out] texture     []    [X3DTextureNode]
}
mode: ColorRGBa=(Arg1.color × Arg2.color, Arg1.alpha) 
MODULATE(default) REPLACE MODULATE2X MODULATE4X ADD ADDSIGNED 
ADDSIGNED2X SUBTRACT ADDSMOOTH BLENDDIFFUSEALPHA BLENDTEXTUREALPHA 
BLENDFACTORALPHA BLENDCURRENTALPHA MODULATEALPHA_ADDCOLOR 
MODULATEINVALPHA_ADDCOLOR MODULATEINVCOLOR_ADDALPHA OFF SELECTARG1 
SELECTARG2 DOTPRODUCT3
source: ""(default) DIFFUSE SPECULAR FACTOR
function: ""(default) COMPLEMENT ALPHAREPLICATE

MultiTextureCoordinate : X3DTextureCoordinateNode {
  SFNode [in,out] metadata NULL   [X3DMetadataObject]
  MFNode [in,out] texCoord [NULL] [X3DTextureCoordinateNode]
}

MultiTextureTransform : X3DTextureTransformNode { 
  SFNode [in,out] metadata         NULL   [X3DMetadataObject]
  MFNode [in,out] textureTransform [NULL] [X3DTextureTransformNode]
}

PixelTexture : X3DTexture2DNode { 
  SFImage [in,out] image             0 0 0
  SFNode  [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool  []       repeatS           TRUE
  SFBool  []       repeatT           TRUE
  SFNode  []       textureProperties NULL  [TextureProperties]
}

TextureCoordinate : X3DTextureCoordinateNode { 
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec2f [in,out] point    []   (-∞,∞)
}

TextureCoordinateGenerator : X3DTextureCoordinateNode {
  SFNode   [in,out] metadata NULL      [X3DMetadataObject]
  SFString [in,out] mode      "SPHERE" [see Table]
  MFFloat  [in,out] parameter []       [see Table]
}
mode: SPHERE CAMERASPACEPOSITION CAMERASPACEREFLECTIONVECTOR
SPHERE-LOCAL COORD COORD-EYE NOISE NOISE-EYE SPHERE-REFLECT
SPHERE-REFLECT-LOCAL

TextureProperties : X3DNode
  SFFloat     [in,out] anisotropicDegree   1.0       [1,∞)
  SFColorRGBA [in,out] borderColor         0 0 0 0   [0,1]
  SFInt32     [in,out] borderWidth         0         [0,1]
  SFString    [in,out] boundaryModeS       "REPEAT"  [see Table 18.7]
  SFString    [in,out] boundaryModeT       "REPEAT"  [see Table 18.7]
  SFString    [in,out] boundaryModeR       "REPEAT"  [see Table 18.7]
  SFString    [in,out] magnificationFilter "FASTEST" [see Table 18.8]
  SFNode      [in,out] metadata            NULL      [X3DMetadataObject]
  SFString    [in,out] minificationFilter  "FASTEST" [see Table 18.9]
  SFString    [in,out] textureCompression  "FASTEST" [see Table 18.10]
  SFFloat     [in,out] texturePriority     0         [0,1]
  SFBool      []       generateMipMaps     FALSE
}

TextureTransform : X3DTextureTransform2DNode { 
  SFVec2f [in,out] center      0 0  (-∞,∞)
  SFNode  [in,out] metadata    NULL [X3DMetadataObject]
  SFFloat [in,out] rotation    0    (-∞,∞)
  SFVec2f [in,out] scale       1 1  (-∞,∞)
  SFVec2f [in,out] translation 0 0  (-∞,∞)
}


19 - Interpolation component

X3DInterpolatorNode : X3DChildNode { 
  SFFloat      [in]     set_fraction       (-∞,∞)
  MFFloat      [in,out] key           []   (-∞,∞)
  MF<type>     [in,out] keyValue      []
  SFNode       [in,out] metadata      NULL [X3DMetadataObject]
  [S|M]F<type> [out]    value_changed
}

ColorInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFColor [in,out] keyValue      []   [0,1]
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFColor [out]    value_changed
}

CoordinateInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFVec3f [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  MFVec3f [out]    value_changed
}

CoordinateInterpolator2D : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFVec2f [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  MFVec2f [out]    value_changed
}

EaseInEaseOut : X3DNode {
  SFFloat [in]     set_fraction                  (-∞,∞)
  MFVec2f [in,out] easeInEaseOut            []   (-∞,∞)
  SFNode  [in,out] metadata                 NULL [X3DMetadataObject]
  SFFloat [out]    modifiedFraction_changed
}

NormalInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFVec3f [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  MFVec3f [out]    value_changed
}

OrientationInterpolator : X3DInterpolatorNode {
  SFFloat    [in]     set_fraction       (-∞,∞)
  MFFloat    [in,out] key           []   (-∞,∞)
  MFRotation [in,out] keyValue      []   [-1,1] or (-∞,∞)
  SFNode     [in,out] metadata      NULL [X3DMetadataObject]
  SFRotation [out]    value_changed
}

PositionInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFVec3f [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFVec3f [out]    value_changed
}

PositionInterpolator2D : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFVec2f [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFVec2f [out]    value_changed
}

ScalarInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction       (-∞,∞)
  MFFloat [in,out] key           []   (-∞,∞)
  MFFloat [in,out] keyValue      []   (-∞,∞)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFFloat [out]    value_changed
}

SplinePositionInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction            (-∞,∞)
  SFBool  [in,out] closed            FALSE
  MFFloat [in,out] key               []    (-∞,∞)
  MFVec3f [in,out] keyValue          []    (-∞,∞)
  MFVec3f [in,out] keyVelocity       []    (-∞,∞)
  SFNode  [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool  [in,out] normalizeVelocity FALSE
  SFVec3f [out]    value_changed
}

SplinePositionInterpolator2D : X3DInterpolatorNode {
  SFFloat [in]     set_fraction            (-∞,∞)
  SFBool  [in,out] closed            FALSE
  MFFloat [in,out] key               []    (-∞,∞)
  MFVec2f [in,out] keyValue          []    (-∞,∞)
  MFVec2f [in,out] keyVelocity       []    (-∞,∞)
  SFNode  [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool  [in,out] normalizeVelocity FALSE
  SFVec2f [out]    value_changed
}

SplineScalarInterpolator : X3DInterpolatorNode {
  SFFloat [in]     set_fraction            (-∞,∞)
  SFBool  [in,out] closed            FALSE
  MFFloat [in,out] key               []    (-∞,∞)
  MFFloat [in,out] keyValue          []    (-∞,∞)
  MFFloat [in,out] keyVelocity       []    (-∞,∞)
  SFNode  [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool  [in,out] normalizeVelocity FALSE
  SFVec2f [out]    value_changed
}

SquadOrientationInterpolator : X3DInterpolatorNode {
  SFFloat    [in]     set_fraction            (-∞,∞)
  MFFloat    [in,out] key               []    (-∞,∞)
  MFRotation [in,out] keyValue          []    (-∞,∞)
  SFNode     [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool     [in,out] normalizeVelocity FALSE
  SFRotation [out]    value_changed
}


20 - Pointing device sensor component

X3DDragSensorNode : X3DPointingDeviceSensorNode { 
  SFBool   [in,out] autoOffset         TRUE
  SFString [in,out] description        ""
  SFBool   [in,out] enabled            TRUE
  SFNode   [in,out] metadata           NULL [X3DMetadataObject]
  SFBool   [out]    isActive
  SFBool   [out]    isOver
  SFVec3f  [out]    trackPoint_changed
}

X3DPointingDeviceSensorNode : X3DSensorNode {
  SFString [in,out] description ""
  SFBool   [in,out] enabled     TRUE
  SFNode   [in,out] metadata    NULL [X3DMetadataObject]
  SFBool   [out]    isActive
  SFBool   [out]    isOver
}

X3DTouchSensorNode : X3DPointingDeviceSensorNode {
  SFString [in,out] description "" 
  SFBool   [in,out] enabled     TRUE
  SFNode   [in,out] metadata    NULL [X3DMetadataObject]
  SFBool   [out]    isActive
  SFBool   [out]    isOver
  SFTime   [out]    touchTime
}

CylinderSensor : X3DDragSensorNode { 
  SFBool     [in,out] autoOffset         TRUE
  SFRotation [in,out] axisOfRotation     0 1 0 0 [-1,1], (-∞,∞)
  SFString   [in,out] description        ""
  SFFloat    [in,out] diskAngle          π/2    (0,π/2)
  SFBool     [in,out] enabled            TRUE
  SFFloat    [in,out] maxAngle           -1      [-2π,2π]
  SFNode     [in,out] metadata           NULL    [X3DMetadataObject]
  SFFloat    [in,out] minAngle           0       [-2π,2π]
  SFFloat    [in,out] offset             0       (-∞,∞)
  SFBool     [out]    isActive
  SFBool     [out]    isOver
  SFRotation [out]    rotation_changed
  SFVec3f    [out]    trackPoint_changed
}

PlaneSensor : X3DDragSensorNode { 
  SFBool   [in,out]   autoOffset          TRUE
  SFRotation [in,out] axisOfRotation      0 1 0 0 [-1,1], (-∞,∞)
  SFString [in,out]   description         ""
  SFBool   [in,out]   enabled             TRUE
  SFVec2f  [in,out]   maxPosition         -1 -1 (-∞,∞)
  SFNode   [in,out]   metadata            NULL  [X3DMetadataObject]
  SFVec2f  [in,out]   minPosition         0 0   (-∞,∞)
  SFVec3f  [in,out]   offset              0 0 0 (-∞,∞)
  SFBool   [out]      isActive
  SFBool   [out]      isOver
  SFVec3f  [out]      trackPoint_changed
  SFVec3f  [out]      translation_changed
}

SphereSensor : X3DDragSensorNode { 
  SFBool     [in,out] autoOffset         TRUE
  SFString   [in,out] description         ""
  SFBool     [in,out] enabled            TRUE
  SFNode     [in,out] metadata           NULL    [X3DMetadataObject]
  SFRotation [in,out] offset             0 1 0 0 [-1,1],(-∞,∞)
  SFBool     [out]    isActive
  SFBool     [out]    isOver
  SFRotation [out]    rotation_changed
  SFVec3f    [out]    trackPoint_changed
}

TouchSensor : X3DTouchSensorNode { 
  SFString [in,out] description         ""
  SFBool   [in,out] enabled             TRUE
  SFNode   [in,out] metadata            NULL [X3DMetadataObject]
  SFVec3f  [out]    hitNormal_changed
  SFVec3f  [out]    hitPoint_changed
  SFVec2f  [out]    hitTexCoord_changed
  SFBool   [out]    isActive
  SFBool   [out]    isOver
  SFTime   [out]    touchTime
}


21 - Key device sensor component

X3DKeyDeviceSensorNode : X3DSensorNode {
  SFBool [in,out] enabled  TRUE
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFBool [out]    isActive
}

KeySensor : X3DKeyDeviceSensorNode {
  SFBool  [in,out] enabled          TRUE
  SFNode  [in,out] metadata         NULL [X3DMetadataObject]
  SFInt32 [out]    actionKeyPress
  SFInt32 [out]    actionKeyRelease
  SFBool  [out]    altKey
  SFBool  [out]    controlKey
  SFBool  [out]    isActive
  SFInt32 [out]    keyPress
  SFInt32 [out]    keyRelease
  SFBool  [out]    shiftKey
}

StringSensor : X3DKeyDeviceSensorNode {
  SFBool   [in,out] deletionAllowed TRUE
  SFBool   [in,out] enabled         TRUE
  SFNode   [in,out] metadata        NULL [X3DMetadataObject]
  SFString [out]    enteredText 
  SFString [out]    finalText 
  SFBool   [out]    isActive 
}


22 - Environmental sensor component

X3DEnvironmentalSensorNode : X3DSensorNode {
  SFVec3f [in,out] center    0 0 0 (-∞,∞)
  SFBool  [in,out] enabled   TRUE
  SFNode  [in,out] metadata  NULL [X3DMetadataObject]
  SFVec3f [in,out] size      0 0 0 (-∞,∞)
  SFTime  [out]    enterTime
  SFTime  [out]    exitTime
  SFBool  [out]    isActive
}

ProximitySensor : X3DEnvironmentalSensorNode {
  SFVec3f    [in,out] center                   0 0 0 (-∞,∞)
  SFBool     [in,out] enabled                  TRUE
  SFNode     [in,out] metadata                 NULL  [X3DMetadataObject]
  SFVec3f    [in,out] size                     0 0 0 [0,∞)
  SFTime     [out]    enterTime
  SFTime     [out]    exitTime
  SFVec3f    [out]    centerOfRotation_changed
  SFBool     [out]    isActive
  SFRotation [out]    orientation_changed
  SFVec3f    [out]    position_changed
}

TransformSensor : X3DEnvironmentalSensorNode {
  SFVec3f    [in,out] center              0 0 0 (-∞,∞)
  SFBool     [in,out] enabled             TRUE
  SFNode     [in,out] metadata            NULL  [X3DMetadataObject]
  SFVec3f    [in,out] size                0 0 0 [0,∞)
  SFNode     [in,out] targetObject        NULL  [X3DGroupingNode|X3DShapeNode]
  SFTime     [out]    enterTime
  SFTime     [out]    exitTime
  SFBool     [out]    isActive
  SFRotation [out]    orientation_changed
  SFVec3f    [out]    position_changed
}

VisibilitySensor : X3DEnvironmentalSensorNode {
  SFVec3f [in,out] center     0 0 0 (-∞,∞)
  SFBool  [in,out] enabled    TRUE
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFVec3f [in,out] size       0 0 0 [0,∞)
  SFTime  [out]    enterTime
  SFTime  [out]    exitTime
  SFBool  [out]    isActive
}


23 - Navigation component

X3DViewpointNode : X3DBindableNode {
  SFBool     [in]     set_bind
  SFVec3f    [in,out] centerOfRotation  0 0 0     (-∞,∞)
  SFString   [in,out] description       ""
  SFBool     [in,out] jump              TRUE
  SFNode     [in,out] metadata          NULL      [X3DMetadataObject]
  SFRotation [in,out] orientation       0 0 1 0   [-1,1],(-∞,∞)
  SFVec3f    [in,out] position          0 0 10    (-∞,∞)
  SFBool     [in,out] retainUserOffsets FALSE
  SFTime     [out]    bindTime
  SFBool     [out]    isBound
}

Billboard : X3DGroupingNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  SFVec3f [in,out] axisOfRotation 0 1 0    (-∞,∞)
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}

Collision : X3DGroupingNode, X3DSensorNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFBool  [in,out] enabled        TRUE
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFTime  [out]    collideTime
  SFBool  [out]    isActive
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
  SFNode  []       proxy          NULL     [X3DChildNode]
}

LOD : X3DGroupingNode {
  MFNode  [in]     addChildren               [X3DChildNode]
  MFNode  [in]     removeChildren            [X3DChildNode]
  MFNode  [in,out] children         []       [X3DChildNode]
  SFNode  [in,out] metadata         NULL     [X3DMetadataObject]
  SFInt32 [out]    level_changed
  SFVec3f []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f []       bboxSize         -1 -1 -1 [0,∞) or −1 −1 −1
  SFVec3f []       center           0 0 0    (-∞,∞)
  SFBool  []       forceTransitions FALSE
  MFFloat []       range            []       [0,∞) or -1 
}

NavigationInfo : X3DBindableNode {
  SFBool   [in]     set_bind
  MFFloat  [in,out] avatarSize         [0.25 1.6 0.75]   [0,∞)
  SFBool   [in,out] headlight          TRUE
  SFNode   [in,out] metadata           NULL              [X3DMetadataObject]
  SFFloat  [in,out] speed              1.0               [0,∞)
  SFTime   [in,out] transitionTime     1.0               [0, ∞)
  MFString [in,out] transitionType     ["LINEAR"]        ["TELEPORT"|"LINEAR"|"ANIMATE"]
  MFString [in,out] type               ["EXAMINE", "ANY"]
  SFFloat  [in,out] visibilityLimit    0.0               [0,∞)
  SFTime   [out]    bindTime
  SFBool   [out]    isBound
  SFBool   [out]    transitionComplete
}

OrthoViewpoint : X3DViewpointNode { 
  SFBool     [in]     set_bind
  SFVec3f    [in,out] centerOfRotation  0 0 0         (-∞,∞)
  SFString   [in,out] description       ""
  MFFloat    [in,out] fieldOfView       -1, -1, 1, 1  (-∞,∞)
  SFBool     [in,out] jump              TRUE
  SFNode     [in,out] metadata          NULL          [X3DMetadataObject]
  SFRotation [in,out] orientation       0 0 1 0       [-1,1],(-∞,∞)
  SFVec3f    [in,out] position          0 0 10        (-∞,∞)
  SFBool     [in,out] retainUserOffsets FALSE
  SFTime     [out]    bindTime
  SFBool     [out]    isBound
}

Viewpoint : X3DViewpointNode { 
  SFBool     [in]     set_bind
  SFVec3f    [in,out] centerOfRotation  0 0 0   (-∞,∞)
  SFString   [in,out] description       ""
  SFFloat    [in,out] fieldOfView       π/4    (0,∞)
  SFBool     [in,out] jump              TRUE
  SFNode     [in,out] metadata          NULL    [X3DMetadataObject]
  SFRotation [in,out] orientation       0 0 1 0 [-1,1],(-∞,∞)
  SFVec3f    [in,out] position          0 0 10  (-∞,∞)
  SFBool     [in,out] retainUserOffsets FALSE
  SFTime     [out]    bindTime
  SFBool     [out]    isBound
}

ViewpointGroup : X3DViewpointNode { 
   SFVec3f    [in,out] center            0 0 0   (-∞,∞)
   MFNode     [in,out] children          NULL    [X3DViewpointNode]
   SFString   [in,out] description       ""
   SFBool     [in,out] displayed         TRUE
   SFNode     [in,out] metadata          NULL    [X3DMetadataObject]
   SFVec3f    [in,out] size              0 0 0   (-∞,∞)
   SFBool     [in,out] retainUserOffsets FALSE
 }


24 - Environmental effects componenent

X3DBackgroundNode : X3DBindableNode { 
  SFBool  [in]     set_bind
  MFFloat [in,out] groundAngle   []      [0,π/2]
  MFColor [in,out] groundColor   []      [0,1]
  SFNode  [in,out] metadata      NULL    [X3DMetadataObject]
  MFFloat [in,out] skyAngle      []      [0,π]
  MFColor [in,out] skyColor      0 0 0   [0,1]
  SFFloat [in,out] transparency  0       [0,1]
  SFTime  [out]    bindTime
  SFBool  [out]    isBound
}

X3DFogObject {
  SFColor  [in,out] color           1 1 1    [0,1]
  SFString [in,out] fogType         "LINEAR" ["LINEAR"|"EXPONENTIAL"]
  SFFloat  [in,out] visibilityRange 0        [0,∞)
}

Background : X3DBackgroundNode, X3DUrlObject {
  SFBool   [in]     set_bind
  MFFloat  [in,out] groundAngle  []    [0,π/2]
  MFColor  [in,out] groundColor  []    [0,1]
  MFString [in,out] backUrl      []    [urn]
  MFString [in,out] bottomUrl    []    [urn]
  MFString [in,out] frontUrl     []    [urn]
  MFString [in,out] leftUrl      []    [urn]
  SFNode   [in,out] metadata     NULL  [X3DMetadataObject]
  MFString [in,out] rightUrl     []    [urn]
  MFString [in,out] topUrl       []    [urn]
  MFFloat  [in,out] skyAngle     []    [0,π]
  MFColor  [in,out] skyColor     0 0 0 [0,1]
  SFFloat  [in,out] transparency 0     [0,1]
  SFTime   [out]    bindTime
  SFBool   [out]    isBound
}

Fog : X3DBindableNode, X3DFogObject  {
  SFBool   [in]     set_bind
  SFColor  [in,out] color           1 1 1    [0,1]
  SFString [in,out] fogType         "LINEAR" ["LINEAR"|"EXPONENTIAL"]
  SFNode   [in,out] metadata        NULL     [X3DMetadataObject]
  SFFloat  [in,out] visibilityRange 0        [0,∞)
  SFTime   [out]    bindTime
  SFBool   [out]    isBound
}
 
FogCoordinate : X3DGeometricPropertyNode {
  MFFloat [in,out] depth     []     [0,1]
  SFNode  [in,out] metadata  NULL   [X3DMetadataObject]
}

LocalFog : X3DChildNode, X3DFogObject {
  SFColor  [in,out] color           1 1 1    [0,1]
  SFBool   [in,out] enabled         TRUE
  SFString [in,out] fogType         "LINEAR" ["LINEAR"|"EXPONENTIAL"]
  SFNode   [in,out] metadata        NULL     [X3DMetadataObject]
  SFFloat  [in,out] visibilityRange 0        [0,∞)
}

TextureBackground : X3DBackgroundNode {
  SFBool  [in]     set_bind
  MFFloat [in,out] groundAngle   []    [0,π/2]
  MFColor [in,out] groundColor   []    [0,1]
  SFNode  [in,out] backTexture   NULL  [X3DTextureNode]
  SFNode  [in,out] bottomTexture NULL  [X3DTextureNode]
  SFNode  [in,out] frontTexture  NULL  [X3DTextureNode]
  SFNode  [in,out] leftTexture   NULL  [X3DTextureNode]
  SFNode  [in,out] metadata      NULL  [X3DMetadataObject]
  SFNode  [in,out] rightTexture  NULL  [X3DTextureNode]
  SFNode  [in,out] topTexture    NULL  [X3DTextureNode]
  MFFloat [in,out] skyAngle      []    [0,π]
  MFColor [in,out] skyColor      0 0 0 [0,1]
  SFFloat [in,out] transparency  0     [0,1]
  SFTime  [out]    bindTime
  SFBool  [out]    isBound
}


25 Geospatial component

GeoCoordinate : X3DCoordinateNode {
  SFNode   [in,out] metadata  NULL        [X3DMetadataObject]
  MFVec3d  [in,out] point     [NULL]      (-∞,∞)
  SFNode   []       geoOrigin NULL        [GeoOrigin]
  MFString []       geoSystem ["GD","WE"] [see table]  
}

GeoElevationGrid : X3DGeometryNode {
  MFDouble [in]     set_height
  SFNode   [in,out] color           NULL        [X3DColorNode]
  SFNode   [in,out] metadata        NULL        [X3DMetadataObject]
  SFNode   [in,out] normal          NULL        [X3DNormalNode]
  SFNode   [in,out] texCoord        NULL        [X3DTextureCoordinateNode]
  SFFloat  [in,out] yScale          1.0         (0,∞)
  SFBool   []       ccw             TRUE
  SFBool   []       colorPerVertex  TRUE
  SFFloat  []       creaseAngle     0           [0,∞]
  SFVec3d  []       geoGridOrigin   0 0 0       (-∞,∞)
  SFNode   []       geoOrigin       NULL        [GeoOrigin]
  MFString []       geoSystem       ["GD","WE"] [see table]
  MFDouble []       height          [0 0]       (0,∞)
  SFBool   []       normalPerVertex TRUE
  SFBool   []       solid           TRUE
  SFInt32  []       xDimension      0           ([0,∞)
  SFDouble []       xSpacing        1.0         [0,∞)
  SFInt32  []       zDimension      0           ([0,∞)
  SFDouble []       zSpacing        1.0         [0,∞)
}

GeoLocation : X3DGroupingNode {
  MFNode   [in]     addChildren                [X3DChildNode]
  MFNode   [in]     removeChildren             [X3DChildNode]
  MFNode   [in,out] children       []          [X3DChildNode]
  SFVec3d  [in,out] geoCoords      0 0 0       (-∞,∞)
  SFNode   [in,out] metadata       NULL        [X3DMetadataObject]
  SFNode   []       geoOrigin      NULL        [GeoOrigin]
  MFString []       geoSystem      ["GD","WE"] [see table]
  SFVec3f  []       bboxCenter     0 0 0       (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1    [0,∞) or -1 -1 -1
}

GeoLOD : X3DChildNode, X3DBoundedObject, X3DUrlObject {
  SFNode   [in,out] metadata       NULL        [X3DMetadataObject]
  MFNode   [out]    children       []          [X3DChildNode]
  SFInt32  [out]    level_changed
  SFVec3d  []       center         0 0 0       (-∞,∞)
  MFString []       child1Url      []          [urn]
  MFString []       child2Url      []          [urn]
  MFString []       child3Url      []          [urn]
  MFString []       child4Url      []          [urn]
  SFNode   []       geoOrigin      NULL        [GeoOrigin]
  MFString []       geoSystem      ["GD","WE"] [see table]
  SFFloat  []       range          10          [0,∞)
  MFString []       rootUrl        []          [urn]
  MFNode   []       rootNode       []          [X3DChildNode]
  SFVec3f  []       bboxCenter     0 0 0       (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1    [0,∞) or [-1 -1 -1]
}

GeoMetadata : X3DInfoNode {
  MFNode   [in,out] data     []   [urn]
  SFNode   [in,out] metadata NULL [X3DMetadataObject]
  MFString [in,out] summary  []
  MFString [in,out] url      []   [urn]
}

GeoOrigin : X3DNode {
  SFVec3d  [in,out] geoCoords 0 0 0       (-∞,∞)
  SFNode   [in,out] metadata  NULL        [X3DMetadataObject]
  MFString []       geoSystem ["GD","WE"] [see 25.2.3]
  SFBool   []       rotateYUp FALSE
}

GeoPositionInterpolator : X3DInterpolatorNode {
  SFFloat  [in]     set_fraction                 (-∞,∞)
  MFFloat  [in,out] key              []          (-∞,∞)
  MFVec3d  [in,out] keyValue         []
  SFNode   [in,out] metadata         NULL [X3DMetadataObject]
  SFVec3d  [out]    geovalue_changed
  SFVec3f  [out]    value_changed
  SFNode   []       geoOrigin        NULL        [GeoOrigin]
  MFString []       geoSystem        ["GD","WE"] [see table]
}

GeoProximitySensor : X3DEnvironmentalSensorNode {
  SFBool     [in,out] enabled                  TRUE
  MFDouble   [in,out] geoCenter                0 0 0 (-∞,∞)
  SFNode     [in,out] metadata                 NULL  [X3DMetadataObject]
  SFVec3f    [in,out] size                     0 0 0 [0,∞)
  SFVec3f    [out]    centerOfRotation_changed
  SFTime     [out]    enterTime
  SFTime     [out]    exitTime
  MFDouble   [out]    geoCoord_changed
  SFBool     [out]    isActive
  SFRotation [out]    orientation_changed
  SFVec3f    [out]    position_changed
  SFNode     []       geoOrigin                NULL        [GeoOrigin]
  MFString   []       geoSystem                ["GD","WE"] [see 25.2.3]
}

GeoTouchSensor : X3DTouchSensorNode {
  SFString [in,out] description         ""
  SFBool   [in,out] enabled             TRUE
  SFNode   [in,out] metadata            NULL        [X3DMetadataObject]
  SFVec3f  [out]    hitNormal_changed
  SFVec3f  [out]    hitPoint_changed
  SFVec2f  [out]    hitTexCoord_changed
  SFVec3d  [out]    hitGeoCoord_changed
  SFBool   [out]    isActive
  SFBool   [out]    isOver
  SFTime   [out]    touchTime
  SFNode   []       geoOrigin            NULL        [GeoOrigin]
  MFString []       geoSystem            ["GD","WE"] [see Table]
} 

GeoViewpoint : X3DBindableNode {
  SFBool     [in]     set_bind
  SFRotation [in]     set_orientation
  SFVec3d    [in]     set_position
  SFString   [in,out] description    ""
  SFFloat    [in,out] fieldOfView    π/4               [0,∞)
  SFBool     [in,out] headlight      TRUE
  SFBool     [in,out] jump           TRUE
  SFNode     [in,out] metadata       NULL              [X3DMetadataObject]
  MFString   [in,out] navType        ["EXAMINE","ANY"]
  SFTime     [out]    bindTime
  SFBool     [out]    isBound
  SFNode     []       geoOrigin      NULL               [GeoOrigin]
  MFString   []       geoSystem      ["GD","WE"]        [see table]
  SFRotation []       orientation    0 0 1 0            (-∞,∞) or -1 1
  SFVec3d    []       position       0 0 100000         (-∞,∞)
  SFFloat    []       speedFactor    1.0                [0,∞)
}


26 - Humanoid animation (H-Anim) component

HAnimDisplacer : X3DGeometricPropertyNode {
  MFInt32  [in,out] coordIndex    []   [0,∞) or -1
  MFVec3f  [in,out] displacements []
  SFNode   [in,out] metadata      NULL [X3DMetadataObject]
  SFString [in,out] name          ""
  SFFloat  [in,out] weight        0.0  [0,∞)
}

HAnimHumanoid : X3DChildNode, X3DBoundedObject {
  SFVec3f    [in,out] center           0 0 0    (-∞,∞)
  MFString   [in,out] info             []
  MFNode     [in,out] joints           []       [HAnimJoint]
  SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
  SFString   [in,out] name             ""
  SFRotation [in,out] rotation         0 0 1 0  (-∞,∞)|[-1,1]
  SFVec3f    [in,out] scale            1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation 0 0 1 0  (-∞,∞)|[-1,1]
  MFNode     [in,out] segments         []       [HAnimSegment]
  MFNode     [in,out] sites            []       [HAnimSite]
  MFNode     [in,out] skeleton         []       [HAnimJoint]
  MFNode     [in,out] skin             []       [X3DChildNode]
  SFNode     [in,out] skinCoord        NULL     [X3DCoordinateNode]
  SFNode     [in,out] skinNormal       NULL     [X3DNormalNode]
  SFVec3f    [in,out] translation      0 0 0    (-∞,∞)
  SFString   [in,out] version          ""
  MFNode     [in,out] viewpoints       []       [Viewpoint]
  SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or -1 -1 -1
}

HAnimJoint : X3DGroupingNode {
  MFNode     [in]     addChildren               [HAnimJoint,HAnimSegment,HAnimSite]
  MFNode     [in]     removeChildren            [HAnimJoint,HAnimSegment,HAnimSite]
  SFVec3f    [in,out] center           0 0 0    (-∞,∞)
  MFNode     [in,out] children         []       [HAnimJoint,HAnimSegment,HAnimSite]
  MFNode     [in,out] displacers       []       [HAnimDisplacer]
  SFRotation [in,out] limitOrientation 0 0 1 0  (-∞,∞)|[-1,1]
  MFFloat    [in,out] llimit           []       (-∞,∞)
  SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
  SFString   [in,out] name             ""
  SFRotation [in,out] rotation         0 0 1 0  (-∞,∞)|[-1,1]
  SFVec3f    [in,out] scale            1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation 0 0 1 0  (-∞,∞)|[-1,1]
  MFInt32    [in,out] skinCoordIndex   []
  MFFloat    [in,out] skinCoordWeight  []
  MFFloat    [in,out] stiffness        [0 0 0]  [0,1]
  SFVec3f    [in,out] translation      0 0 0    (-∞,∞)
  MFFloat    [in,out] ulimit           []       (-∞,∞)
  SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or −1 −1 −1
}


HAnimSegment : X3DGroupingNode {
  MFNode   [in]     addChildren               [X3DChildNode]
  MFNode   [in]     removeChildren            [X3DChildNode]
  SFVec3f  [in,out] centerOfMass     0 0 0    (-∞,∞)
  MFNode   [in,out] children         []       [X3DChildNode]
  SFNode   [in,out] coord            NULL     [X3DCoordinateNode]
  MFNode   [in,out] displacers       []       [HAnimDisplacer]
  SFFloat  [in,out] mass             0        (0,∞)
  SFNode   [in,out] metadata         NULL     [X3DMetadataObject]
  MFFloat  [in,out] momentsOfInertia [0 0 0 0 0 0 0 0 0] [0,∞)
  SFString [in,out] name             ""
  SFVec3f  []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f  []       bboxSize         -1 -1 -1 [0,∞) or -1 -1 -1
}

HAnimSite : X3DGroupingNode {
  MFNode     [in]     addChildren               [X3DChildNode]
  MFNode     [in]     removeChildren            [X3DChildNode]
  SFVec3f    [in,out] center           0 0 0    (-∞,∞)
  MFNode     [in,out] children         []       [X3DChildNode]
  SFNode     [in,out] metadata         NULL     [X3DMetadataObject]
  SFString   [in,out] name             ""
  SFRotation [in,out] rotation         0 0 1 0  (-∞,∞)|[-1,1]
  SFVec3f    [in,out] scale            1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation 0 0 1 0  (-∞,∞)|[-1,1]
  SFVec3f    [in,out] translation      0 0 0    (-∞,∞)|[-1,1]
  SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or -1 -1 -1
}


27 - NURBS component

X3DNurbsControlCurveNode : X3DNode {
  MFVec2d [in,out] controlPoint []   (-∞,∞)
  SFNode  [in,out] metadata     NULL [X3DMetadataObject]
}

X3DNurbsSurfaceGeometryNode : X3DParametricGeometryNode { 
  SFNode   [in,out] controlPoint  []    [X3DCoordinateNode]
  SFNode   [in,out] metadata      NULL  [X3DMetadataObject]
  SFNode   [in,out] texCoord      []    [X3DTextureCoordinateNode|NurbsTextureCoordinate]
  SFInt32  [in,out] uTessellation 0     (-∞,∞)
  SFInt32  [in,out] vTessellation 0     (-∞,∞)
  MFDouble [in,out] weight        []    (0,∞)
  SFBool   []       solid         TRUE
  SFBool   []       uClosed       FALSE 
  SFInt32  []       uDimension    0     [0,∞)
  MFDouble []       uKnot         []    (-∞,∞)
  SFInt32  []       uOrder        3     [2,∞)
  SFBool   []       vClosed       FALSE 
  SFInt32  []       vDimension    0     [0,∞)
  MFDouble []       vKnot         []    (-∞,∞)
  SFInt32  []       vOrder        3     [2,∞)
}

X3DParametricGeometryNode : X3DGeometryNode {
  SFNode [in,out] metadata NULL  [X3DMetadataObject]
}

Contour2D : X3DNode { 
  MFNode [in]     addChildren         [X3DNurbsControlCurveNode]
  MFNode [in]     removeChildren      [X3DNurbsControlCurveNode]
  MFNode [in,out] children       []   [X3DNurbsControlCurveNode]
  SFNode [in,out] metadata       NULL [X3DMetadataObject]
}

ContourPolyline2D : X3DNurbsControlCurveNode {
  SFNode  [in,out] metadata     NULL [X3DMetadataObject]
  MFVec2f [in,out] controlPoint CylinderSensor[]   (-∞,∞)
}

CoordinateDouble : X3DCoordinateNode { 
  SFNode  [in,out] metadata NULL   [X3DMetadataObject]
  MFVec3d [in,out] point    [NULL] (-∞,∞)
}

NurbsCurve : X3DParametricGeometryNode {
  SFNode   [in,out] controlPoint []    [X3DCoordinateNode]
  SFNode   [in,out] metadata     NULL  [X3DMetadataObject]
  SFInt32  [in,out] tessellation 0     (-∞,∞)
  MFDouble [in,out] weight       []    (0,∞)
  SFBool   []       closed       FALSE 
  MFDouble []       knot         []    (-∞,∞)
  SFInt32  []       order        3     [2,∞)
}

NurbsCurve2D : X3DNurbsControlCurveNode {
  MFVec2d  [in,out] controlPoint []    (-∞,∞)
  SFNode   [in,out] metadata     NULL  [X3DMetadataObject]
  SFInt32  [in,out] tessellation 0     (-∞,∞)
  MFDouble [in,out] weight       []    (0,∞)
  SFBool   []       closed       FALSE 
  MFDouble []       knot         []    (-∞,∞)
  SFInt32  []       order        3     [2,∞)
} 

NurbsOrientationInterpolator : X3DChildNode { 
  SFFloat    [in]     set_fraction       (-∞,∞)
  SFNode     [in,out] controlPoints []   [X3DCoordinateNode]
  MFDouble   [in,out] knot          []   (-∞,∞) 
  SFNode     [in,out] metadata      NULL [X3DMetadataObject]
  SFInt32    [in,out] order         3    (2,∞)
  MFDouble   [in,out] weight        []   (-∞,∞)
  SFRotation [out]    value_changed
}

NurbsPatchSurface : X3DNurbsSurfaceGeometryNode { 
  SFNode   [in,out] controlPoint  []    [X3DCoordinateNode]
  SFNode   [in,out] metadata      NULL  [X3DMetadataObject]
  SFNode   [in,out] texCoord      []    [X3DTextureCoordinateNode|NurbsTextureCoordinate]
  SFInt32  [in,out] uTessellation 0     (-∞,∞)
  SFInt32  [in,out] vTessellation 0     (-∞,∞)
  MFDouble [in,out] weight        []    (0,∞)
  SFBool   []       solid         TRUE
  SFBool   []       uClosed       FALSE 
  SFInt32  []       uDimension    0     [0,∞)
  MFDouble []       uKnot         []    (-∞,∞)
  SFInt32  []       uOrder        3     [2,∞)
  SFBool   []       vClosed       FALSE 
  SFInt32  []       vDimension    0     [0,∞)
  MFDouble []       vKnot         []    (-∞,∞)
  SFInt32  []       vOrder        3     [2,∞)
}

NurbsPositionInterpolator : X3DChildNode { 
  SFFloat  [in]     set_fraction       (-∞,∞)
  SFNode   [in,out] controlPoints []   [X3DCoordinateNode]
  MFDouble [in,out] knot          []   (-∞,∞) 
  SFNode   [in,out] metadata      NULL [X3DMetadataObject]
  SFInt32  [in,out] order         3    (2,∞)
  MFDouble [in,out] weight        []   (-∞,∞)
  SFVec3f  [out]    value_changed
}

NurbsSet : X3DChildNode : X3DBoundedObject {
  MFNode  [in]     addGeometry                [NurbsSurface]
  MFNode  [in]     removeGeometry             [NurbsSurface]
  MFNode  [in,out] geometry          []       [NurbsSurface]
  SFNode  [in,out] metadata          NULL     [X3DMetadataObject]
  SFFloat [in,out] tessellationScale 1.0      (0,∞)
  SFVec3f []       bboxCenter        0 0 0    (-∞,∞)
  SFVec3f []       bboxSize          -1 -1 -1 (0,∞) or -1 -1 -1
}

NurbsSurfaceInterpolator : X3DChildNode { 
  SFVec2f  [in]     set_fraction          (-∞,∞)
  SFNode   [in,out] controlPoints    []   [X3DCoordinateNode]
  SFNode   [in,out] metadata         NULL [X3DMetadataObject]
  MFDouble [in,out] weight           []   (-∞,∞)
  SFVec3f  [out]    position_changed
  SFVec3f  [out]    normal_changed
  SFInt32  []       uDimension       0    [0,∞)
  MFDouble []       uKnot            []   (-∞,∞)
  SFInt32  []       uOrder           3    [2,∞)
  SFInt32  []       vDimension       0    [0,∞)
  MFDouble []       vKnot            []   (-∞,∞)
  SFInt32  []       vOrder           3    [2,∞)
}

NurbsSweptSurface : X3DParametricGeometryNode { 
  SFNode [in,out] crossSectionCurve []   [X3DNurbsControlCurveNode]
  SFNode [in,out] metadata          NULL [X3DMetadataObject]
  SFNode [in,out] trajectoryCurve   []   [NurbsCurve]
  SFBool []       ccw               TRUE
  SFBool []       solid             TRUE
}

NurbsSwungSurface : X3DParametricGeometryNode { 
  SFNode [in,out] metadata        NULL [X3DMetadataObject]
  SFNode [in,out] profileCurve    []   [X3DNurbsControlCurveNode]
  SFNode [in,out] trajectoryCurve []   [X3DNurbsControlCurveNode]
  SFBool []       ccw             TRUE
  SFBool []       solid           TRUE
}

NurbsTextureCoordinate : X3DNode { 
  MFVec2f  [in,out] controlPoint []   (-∞,∞)
  SFNode   [in,out] metadata     NULL [X3DMetadataObject]
  MFFloat  [in,out] weight       []   (0,∞)
  SFInt32  []       uDimension   0    [0,∞)
  MFDouble []       uKnot        []   (-∞,∞)
  SFInt32  []       uOrder       3    [2,∞)
  SFInt32  []       vDimension   0    [0,∞)
  MFDouble []       vKnot        []   (-∞,∞)
  SFInt32  []       vOrder       3    [2,∞)
}

NurbsTrimmedSurface : X3DNurbsSurfaceGeometryNode { 
  MFNode   [in]     addTrimmingContour          [Contour2D]
  MFNode   [in]     removeTrimmingContour       [Contour2D]
  SFNode   [in,out] controlPoint          []    [X3DCoordinateNode]
  SFNode   [in,out] metadata              NULL  [X3DMetadataObject]
  SFNode   [in,out] texCoord              []    [X3DTextureCoordinateNode|NurbsTextureCoordinate]
  MFNode   [in,out] trimmingContour       []    [Contour2D]
  SFInt32  [in,out] uTessellation         0     (-∞,∞)
  SFInt32  [in,out] vTessellation         0     (-∞,∞)
  MFDouble [in,out] weight                []    (0,∞)
  SFBool   []       solid                 TRUE
  SFBool   []       uClosed               FALSE 
  SFInt32  []       uDimension            0     [0,∞)
  MFDouble []       uKnot                 []    (-∞,∞)
  SFInt32  []       uOrder                3     [2,∞)
  SFBool   []       vClosed               FALSE 
  SFInt32  []       vDimension            0     [0,∞)
  MFDouble []       vKnot                 []    (-∞,∞)
  SFInt32  []       vOrder                3     [2,∞)
}


28 - DIS component 

DISEntityManager : X3DChildNode {
  SFString   [in,out] address         "localhost"
  SFInt32    [in,out] applicationID   1           [0,65535]
  MFNode     [in,out] mapping         []          [DISEntityTypeMapping]
  SFNode     [in,out] metadata        NULL        [X3DMetadataObject]
  SFInt32    [in,out] port            0           [0,65535]
  SFInt32    [in,out] siteID          0           [0,65535]
  MFNode     [out]    addedEntities
  MFNode     [out]    removedEntities
}

DISEntityTypeMapping : X3DInfoNode, X3DUrlObject {
  SFNode     [in,out] metadata    NULL [X3DMetadataObject]
  MFString   [in,out] url         []
  SFInt32    []       category    0    [0,255]
  SFInt32    []       country     0    [0,65535]
  SFInt32    []       domain      0    [0,255]
  SFInt32    []       extra       0    [0,255]
  SFInt32    []       kind        0    [0,255]
  SFInt32    []       specific    0    [0,255]
  SFInt32    []       subcategory 0    [0,255]
}

EspduTransform : X3DGroupingNode, X3DSensorNode { 
  MFNode     [in]     addChildren
  MFNode     [in]     removeChildren
  SFFloat    [in]     set_articulationParameterValue0                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue1                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue2                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue3                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue4                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue5                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue6                      (-∞,∞)
  SFFloat    [in]     set_articulationParameterValue7                      (-∞,∞)
  SFString   [in,out] address                                    "localhost"
  SFInt32    [in,out] applicationID                              1         [0,65535]
  SFInt32    [in,out] articulationParameterCount                 0         [0,78]
  MFInt32    [in,out] articulationParameterDesignatorArray       []        [0,255]
  MFInt32    [in,out] articulationParameterChangeIndicatorArray  []        [0,255]
  MFInt32    [in,out] articulationParameterIdPartAttachedToArray []        [0,65535]
  MFInt32    [in,out] articulationParameterTypeArray             []     
  MFFloat    [in,out] articulationParameterArray                 []        (-∞,∞)
  SFVec3f    [in,out] center                                     0 0 0     (-∞,∞)
  MFNode     [in,out] children                                   []
  SFInt32    [in,out] collisionType                              0         [0,255]
  SFInt32    [in,out] deadReckoning                              0         [0,255]
  SFVec3f    [in,out] detonationLocation                         0 0 0     (-∞,∞)
  SFVec3f    [in,out] detonationRelativeLocation                 0 0 0     (-∞,∞)
  SFInt32    [in,out] detonationResult                           0         [0,255]
  SFBool     [in,out] enabled                                    TRUE
  SFInt32    [in,out] entityCategory                             0         [0,255]
  SFInt32    [in,out] entityCountry                              0         [0,65535]
  SFInt32    [in,out] entityDomain                               0         [0,255]
  SFInt32    [in,out] entityExtra                                0         [0,255]
  SFInt32    [in,out] entityID                                   0         [0,65535]
  SFInt32    [in,out] entityKind                                 0         [0,255]
  SFInt32    [in,out] entitySpecific                             0         [0,255]
  SFInt32    [in,out] entitySubCategory                          0         [0,255]
  SFInt32    [in,out] eventApplicationID                         1         [0,65535]
  SFInt32    [in,out] eventEntityID                              0         [0,65535]
  SFInt32    [in,out] eventNumber                                0         [0,65355]
  SFInt32    [in,out] eventSiteID                                0         [0,65535]
  SFBool     [in,out] fired1                                     FALSE
  SFBool     [in,out] fired2                                     FALSE
  SFInt32    [in,out] fireMissionIndex                           0         [0,65535]
  SFFloat    [in,out] firingRange                                0.0       (0,∞)
  SFInt32    [in,out] firingRate                                 0         [0,65535]
  SFInt32    [in,out] forceID                                    0         [0,255]
  SFInt32    [in,out] fuse                                       0         [0,65535]
  SFVec3f    [in,out] linearVelocity                             0 0 0     (-∞,∞)
  SFVec3f    [in,out] linearAcceleration                         0 0 0     (-∞,∞)
  SFString   [in,out] marking                                    ""
  SFNode     [in,out] metadata                                   NULL      [X3DMetadataObject]
  SFString   [in,out] multicastRelayHost                         ""
  SFInt32    [in,out] multicastRelayPort                         0             
  SFInt32    [in,out] munitionApplicationID                      1         [0,65535]
  SFVec3f    [in,out] munitionEndPoint                           0 0 0     (-∞,∞)
  SFInt32    [in,out] munitionEntityID                           0         [0,65535]
  SFInt32    [in,out] munitionQuantity                           0         [0,65535]
  SFInt32    [in,out] munitionSiteID                             0         [0,65535]
  SFVec3f    [in,out] munitionStartPoint                         0 0 0     (-∞,∞)
  SFString   [in,out] networkMode                                "standAlone" ["standAlone"|"networkReader"|"networkWriter"]
  SFInt32    [in,out] port                                       0         [0,65535]
  SFTime     [in,out] readInterval                               0.1       [0,∞)
  SFRotation [in,out] rotation                                   0 0 1 0   (-∞,∞)|[-1,1]
  SFVec3f    [in,out] scale                                      1 1 1     (-∞,∞)
  SFRotation [in,out] scaleOrientation                           0 0 1 0   (-∞,∞)|[-1,1]
  SFInt32    [in,out] siteID                                     0         [0,65535]
  SFVec3f    [in,out] translation                                0 0 0     (-∞,∞)
  SFInt32    [in,out] warhead                                    0         [0,65535]
  SFTime     [in,out] writeInterval                              1.0       [0,∞)
  SFFloat    [out]    articulationParameterValue0_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue1_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue2_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue3_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue4_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue5_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue6_changed        0.0       (-∞,∞)
  SFFloat    [out]    articulationParameterValue7_changed        0.0       (-∞,∞)
  SFTime     [out]    collideTime                                0         [0,∞)
  SFTime     [out]    detonateTime                               0         [0,∞)
  SFTime     [out]    firedTime                                  0         [0,∞)
  SFBool     [out]    isActive                                   FALSE
  SFBool     [out]    isCollided                                 FALSE                     
  SFBool     [out]    isDetonated                                FALSE                    
  SFBool     [out]    isNetworkReader                            FALSE
  SFBool     [out]    isNetworkWriter                            FALSE
  SFBool     [out]    isRtpHeaderHeard                           FALSE
  SFBool     [out]    isStandAlone                               FALSE
  SFTime     [out]    timestamp                                  0         [0,∞)
  SFVec3f    []       bboxCenter                                 0 0 0     (-∞,∞)
  SFVec3f    []       bboxSize                                   -1 -1 -1  [0,∞) or −1 −1 −1
  SFBool     []       rtpHeaderExpected                          FALSE
}

ReceiverPdu: X3DSensorNode, X3DBoundedObject {
  SFString [in,out] address                  "localhost"
  SFInt32  [in,out] applicationID            1            [0,65535]
  SFBool   [in,out] enabled                  TRUE
  SFInt32  [in,out] entityID                 0            [0,65535]
  SFNode   [in,out] metadata                 NULL         [X3DMetadataObject]
  SFString [in,out] multicastRelayHost       ""
  SFInt32  [in,out] multicastRelayPort       0     
  SFString [in,out] networkMode              "standAlone" ["standAlone" "networkReader" "networkWriter"]
  SFInt32  [in,out] port                     0            [0,65535]
  SFInt32  [in,out] radioID                  0            [0,65535]
  SFFloat  [in,out] readInterval             0.1          [0,∞)
  SFFloat  [in,out] receivedPower            0.0          [0,∞)
  SFInt32  [in,out] receiverState            0            [0,65535]
  SFBool   [in,out] rtpHeaderExpected        FALSE
  SFInt32  [in,out] siteID                   0            [0,65535]
  SFInt32  [in,out] transmitterApplicationID 1            [0,65535]
  SFInt32  [in,out] transmitterEntityID      0            [0,65535]
  SFInt32  [in,out] transmitterRadioID       0            [0,65535]
  SFInt32  [in,out] transmitterSiteID        0            [0,65535]           
  SFInt32  [in,out] whichGeometry            1            [-1,∞)
  SFFloat  [in,out] writeInterval            1.0          [0,∞)
  SFBool   [out]    isActive                 FALSE
  SFBool   [out]    isNetworkReader          FALSE
  SFBool   [out]    isNetworkWriter          FALSE
  SFBool   [out]    isRtpHeaderHeard         FALSE
  SFBool   [out]    isStandAlone             FALSE
  SFTime   [out]    timestamp                0
  SFVec3f  []       bboxCenter               0 0 0        (-∞,∞)
  SFVec3f  []       bboxSize                 -1 -1 -1     [0,∞) [0,∞) [0,∞) or −1 −1 −1
}

SignalPdu: X3DSensorNode, X3DBoundedObject {
  SFString [in,out] address            "localhost"
  SFInt32  [in,out] applicationID      1            [0,65535]
  MFInt32  [in,out] data               []           [0,255]                  
  SFInt32  [in,out] dataLength         0            [0,65535]
  SFBool   [in,out] enabled            TRUE
  SFInt32  [in,out] encodingScheme     0            [0,65535]
  SFInt32  [in,out] entityID           0            [0,65535]
  SFNode   [in,out] metadata           NULL         [X3DMetadataObject]
  SFString [in,out] multicastRelayHost ""
  SFInt32  [in,out] multicastRelayPort 0           
  SFString [in,out] networkMode        "standAlone" ["standAlone" "networkReader" "networkWriter"]
  SFInt32  [in,out] port               0            [0,65535]
  SFInt32  [in,out] radioID            0            [0,65535]
  SFFloat  [in,out] readInterval       0.1          [0,∞)
  SFBool   [in,out] rtpHeaderExpected  FALSE
  SFInt32  [in,out] sampleRate         0            [0,65535]
  SFInt32  [in,out] samples            0            [0,65535]
  SFInt32  [in,out] siteID             0            [0,65535]
  SFInt32  [in,out] tdlType            0            [0,65535]
  SFInt32  [in,out] whichGeometry      1            [-1,∞)
  SFFloat  [in,out] writeInterval      1.0          [0,∞)
  SFBool   [out]    isActive
  SFBool   [out]    isNetworkReader
  SFBool   [out]    isNetworkWriter
  SFBool   [out]    isRtpHeaderHeard
  SFBool   [out]    isStandAlone
  SFTime   [out]    timestamp
  SFVec3f  []       bboxCenter         0 0 0        (-∞,∞)
  SFVec3f  []       bboxSize           -1 -1 -1     [0,∞) or −1 −1 −1
}

TransmitterPdu: X3DSensorNode, X3DBoundedObject { 
  SFString [in,out] address                            "localhost"
  SFVec3f  [in,out] antennaLocation                    0 0 0        (-∞,∞)
  SFInt32  [in,out] antennaPatternLength               0            [0,65535]
  SFInt32  [in,out] antennaPatternType                 0            [0,65535]
  SFInt32  [in,out] applicationID                      1            [0,65535]
  SFInt32  [in,out] cryptoKeyID                        0            [0,65535]           
  SFInt32  [in,out] cryptoSystem                       0            [0,65535]
  SFBool   [in,out] enabled                            TRUE
  SFInt32  [in,out] entityID                           0            [0,65535]
  SFInt32  [in,out] frequency                          0     
  SFInt32  [in,out] inputSource                        0            [0,255]
  SFInt32  [in,out] lengthOfModulationParameters       0            [0,255]
  SFNode   [in,out] metadata                           NULL         [X3DMetadataObject]
  SFInt32  [in,out] modulationTypeDetail               0            [0,65535]
  SFInt32  [in,out] modulationTypeMajor                0            [0,65535]
  SFInt32  [in,out] modulationTypeSpreadSpectrum       0            [0,65535]
  SFInt32  [in,out] modulationTypeSystem               0            [0,65535]
  SFString [in,out] multicastRelayHost                 ""
  SFInt32  [in,out] multicastRelayPort                 0           
  SFString [in,out] networkMode                        "standAlone" ["standAlone" "networkReader" "networkWriter"]
  SFInt32  [in,out] port                               0            [0,65535]
  SFFloat  [in,out] power                              0.0          [0,∞)
  SFInt32  [in,out] radioEntityTypeCategory            0            [0,255]
  SFInt32  [in,out] radioEntityTypeCountry             0            [0,65535]
  SFInt32  [in,out] radioEntityTypeDomain              0            [0,255]
  SFInt32  [in,out] radioEntityTypeKind                0            [0,255]
  SFInt32  [in,out] radioEntityTypeNomenclature        0            [0,255]
  SFInt32  [in,out] radioEntityTypeNomenclatureVersion 0            [0,65535]
  SFInt32  [in,out] radioID                            0            [0,255]
  SFFloat  [in,out] readInterval                       0.1          [0,∞)
  SFVec3f  [in,out] relativeAntennaLocation            0 0 0        (-∞,∞)
  SFBool   [in,out] rtpHeaderExpected                  FALSE
  SFInt32  [in,out] siteID                             0            [0,65535]
  SFFloat  [in,out] transmitFrequencyBandwidth         0.0          (-∞,∞)
  SFInt32  [in,out] transmitState                      0            [0,255]
  SFInt32  [in,out] whichGeometry                      1            [-1,∞)
  SFFloat  [in,out] writeInterval                      1.0          [0,∞)
  SFBool   [out]    isActive                           FALSE
  SFBool   [out]    isNetworkReader                    FALSE
  SFBool   [out]    isNetworkWriter                    FALSE
  SFBool   [out]    isRtpHeaderHeard                   FALSE
  SFBool   [out]    isStandAlone                       FALSE
  SFTime   [out]    timestamp                          0
  SFVec3f  []       bboxCenter                         0 0 0        (-∞,∞)
  SFVec3f  []       bboxSize                           -1 -1 -1     [0,∞) [0,∞) [0,∞) or −1 −1 −1
}


29 - Scripting component

X3DScriptNode : X3DChildNode, X3DUrlObject {
  SFNode    [in,out] metadata NULL [X3DMetadataObject]
  MFString  [in,out] url      []   [urn]
}
Services provided by script content: 
 initialize 
 prepareEvents 
 eventsProcessed 
 shutdown 

Script : X3DScriptNode {
  SFNode    [in,out] metadata     NULL  [X3DMetadataObject]
  MFString  [in,out] url          []    [urn]
  SFBool    []       directOutput FALSE
  SFBool    []       mustEvaluate FALSE
  # And any number of:
  fieldType [in]     fieldName
  fieldType [in,out] fieldName    initialValue
  fieldType [out]    fieldName
  fieldType []       fieldName    initialValue
  # Provides:
  initialize(){} 
  prepareEvents(){}
  eventsProcessed(){}
  shutdown(){}
}

30 - Event Utilities component

  Event Utilities Basic Concepts:
      Trigger event:
    SFTime => SFBool   Current Time 
    SFBool => SFInt32  Specific Integer
    SFBool => SFTime   Current Time
      Mutate event:
    SFBool => SFBool   Input Negate, True, False 
    SFBool => SFBool   Specific Negate 
      Sequence event from list: 
    SFFloat => discrete SFInt32
    SFFloat => discrete SFBool
    SFBool => discrete SFBool 
    SFBool => discrete SFInt32

X3DSequencerNode : X3DChildNode { 
  SFBool       [in]     next 
  SFBool       [in]     previous 
  SFFloat      [in]     set_fraction        (-∞,∞)
  MFFloat      [in,out] key           []    (-∞,∞)
  MF<type>     [in,out] keyValue      []
  SFNode       [in,out] metadata      NULL  [X3DMetadataObject]
  [S|M]F<type> [out]    value_changed
}

X3DTriggerNode : X3DChildNode { 
  SFNode [in,out] metadata NULL [X3DMetadataObject]
} 

BooleanFilter : X3DChildNode {
  SFBool [in]     set_boolean
  SFNode [in,out] metadata    NULL  [X3DMetadataObject]
  SFBool [out]    inputFalse
  SFBool [out]    inputNegate
  SFBool [out]    inputTrue
}
      SFBool => SFBool  
      Produce inputNegate and either inputTrue or inputFalse
      set_boolean|notset_boolean => negateset_boolean+(inputTrue|inputFalse)

BooleanSequencer : X3DSequencerNode {
  SFBool  [in]     next 
  SFBool  [in]     previous 
  SFFloat [in]     set_fraction 
  MFFloat [in,out] key           []   (-∞,∞)
  MFInt32 [in,out] keyValue      []   [0|1]
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFBool  [out]    value_changed
}
      SFBool|SFFloat => SFBool 
      Produce discrete keyValue from key.  
      next|previous|set_fraction => discrete value_changed

BooleanToggle : X3DChildNode {
  SFBool [in]     set_boolean
  SFNode [in,out] metadata     NULL  [X3DMetadataObject]
  SFBool [in,out] toggle       FALSE 
}
      SFBool => SFBool 
      set_boolean TRUE negates toggle, produces toggle. 
      set_boolean FALSE => ignored, toggle not issued

BooleanTrigger : X3DTriggerNode {
  SFTime [in]     set_triggerTime
  SFNode [in,out] metadata        NULL [X3DMetadataObject]
  SFBool [out]    triggerTrue 
}
      SFTime => SFBool 
      From Time, produce triggerTrue TRUE 
      set_triggerTime => triggerTrue

IntegerSequencer : X3DSequencerNode {
  SFBool  [in]     next 
  SFBool  [in]     previous 
  SFFloat [in]     set_fraction
  MFFloat [in,out] key           []   (-∞,∞)
  MFInt32 [in,out] keyValue      []   [-1|1,2E31)
  SFNode  [in,out] metadata      NULL [X3DMetadataObject]
  SFInt32 [out]    value_changed
}
      SFBool|SFFloat => SFInt32 
      Produce discrete keyValue from key.  
      next|previous|set_fraction => discrete value_changed

IntegerTrigger : X3DTriggerNode {
  SFBool  [in]     set_boolean
  SFBool  [in,out] integerKey        [-1|1,∞)
  SFNode  [in,out] metadata     NULL [X3DMetadataObject]
  SFInt32 [out]    triggerValue 
}
      SFBool => SFInt32 
      Produce triggerValue from integerKey.
      set_boolean  => triggerValue

TimeTrigger : X3DTriggerNode {
  SFBool [in]     set_boolean
  SFNode [in,out] metadata    NULL [X3DMetadataObject]
  SFTime [out]    triggerTime
}
      SFBool => SFTime 
      Produce Time.
      set_boolean => triggerTime


31 - Programmable shaders component

X3DProgrammableShaderObject {
}

X3DShaderNode : X3DAppearanceChildNode {
  SFBool   [in]     activate
  SFNode   [in,out] metadata   NULL [X3DMetadataObject]
  SFBool   [out]    isSelected
  SFBool   [out]    isValid
  SFString []       language   ""   ["CG"|"GLSL"|"HLSL"|...]
}

X3DVertexAttributeNode : X3DGeometricPropertyNode {
  SFNode   [in,out] metadata NULL [X3DMetadataObject]
  SFString []       name "" 
}
 
ComposedShader : X3DShaderNode, X3DProgrammableShaderObject {
  SFBool   [in]     activate
  SFNode   [in,out] metadata   NULL [X3DMetadataObject]
  MFNode   [in,out] parts      []   [ShaderPart]
  SFBool   [out]    isSelected
  SFBool   [out]    isValid
  SFString []       language   "" 
  # And any number of:
  fieldType [in]     fieldName
  fieldType [in,out] fieldName
  fieldType [out]    fieldName
  fieldType []       fieldName
}
 
FloatVertexAttribute : X3DVertexAttributeNode {
  SFNode   [in,out] metadata      NULL [X3DMetadataObject]
  MFFloat  [in,out] value         []   (-∞,∞)
  SFString []       name
  SFInt32  []       numComponents 4    [1..4]
}
 
Matrix3VertexAttribute : X3DVertexAttributeNode {
  SFNode     [in,out] metadata NULL [X3DMetadataObject]
  MFMatrix3f [in,out] value    []   (-∞,∞)
  SFString   []       name     ""
}

Matrix4VertexAttribute : X3DVertexAttributeNode {
  SFNode     [in,out] metadata NULL [X3DMetadataObject]
  MFMatrix4f [in,out] value    []   (-∞,∞)
  SFString   []       name     ""
}

PackagedShader : X3DShaderNode, X3DUrlObject, X3DProgrammableShaderObject {
  SFBool   [in]     activate
  SFNode   [in,out] metadata   NULL [X3DMetadataObject]
  MFString [in,out] url        []   [urn]
  SFBool   [out]    isSelected
  SFBool   [out]    isValid
  SFString []       language   ""
  # And any number of:
  fieldType [in]     fieldName
  fieldType [in,out] fieldName  
  fieldType [out]    fieldName
  fieldType []       fieldName 
}

ProgramShader : X3DShaderNode {
  SFBool   [in]     activate
  SFNode   [in,out] metadata   NULL [X3DMetadataObject]
  MFNode   [in,out] programs   []   [ShaderProgram]
  SFBool   [out]    isSelected
  SFBool   [out]    isValid
  SFString []       language   ""   ["CG"|"GLSL"|"HLSL"]
}

ShaderPart : X3DNode, X3DUrlObject {
  SFNode   [in,out] metadata NULL     [X3DMetadataObject]
  MFString [in,out] url      []       [urn]
  SFString []       type     "VERTEX" ["VERTEX","FRAGMENT"]
}

ShaderProgram : X3DNode, X3DUrlObject, X3DProgrammableShaderObject {
  SFNode   [in,out] metadata NULL     [X3DMetadataObject]
  MFString [in,out] url      []       [urn]
  SFString []       type     "VERTEX" ["VERTEX","FRAGMENT"]
  # And any number of:
  fieldType [in]     fieldName
  fieldType [in,out] fieldName  
  fieldType [out]    fieldName
  fieldType []       fieldName 
}


32 - CAD geometry component
 
X3DProductStructureChildNode : X3DChildNode {
  SFString [in,out] name ""
}

CADAssembly : X3DGroupingNode, X3DProductStructureChildNode {
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DProductStructureChildNode]
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  SFString [in,out] name           ""
  SFVec3f  []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}
 
CADFace : X3DProductStructureChildNode, X3DBoundedObject {
  SFNode   [in,out] metadata   NULL     [X3DMetadataObject]
  SFString [in,out] name       ""
  SFNode   [in,out] shape      NULL     [X3DShapeNode, LOD]
  SFVec3f  []       bboxCenter 0 0 0    (-∞, ∞)
  SFVec3f  []       bboxSize   -1 -1 -1 [0, ∞) or -1 -1 -1
}
 
CADLayer : X3DGroupingNode {
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DChildNode]
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  SFString [in,out] name           ""
  MFBool   [in,out] visible        []
  SFVec3f  []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}
 
CADPart : X3DGroupingNode, X3DProductStructureChildNode {
  MFNode     [in]     addChildren
  MFNode     [in]     removeChildren
  MFNode     [in,out] children        []        [CADFace]
  SFVec3f    [in,out] center          0 0 0     (-∞,∞)
  SFNode     [in,out] metadata        NULL      [X3DMetadataObject]
  SFString   [in,out] name ""
  SFRotation [in,out] rotation         0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] scale            1 1 1    (0,∞)
  SFRotation [in,out] scaleOrientation 0 0 1 0  [-1,1] or (-∞,∞)
  SFVec3f    [in,out] translation      0 0 0    (-∞,∞)
  SFVec3f    []       bboxCenter       0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize         -1 -1 -1 [0,∞) or -1 -1 -1
}
 
IndexedQuadSet : X3DComposedGeometryNode {
  MFInt32 [in]     set_index       []   [0,∞)
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
  MFInt32 []       index           []   [0,∞)
}
 
QuadSet : X3DComposedGeometryNode {
  MFNode  [in,out] attrib          []   [X3DVertexAttributeNode]
  SFNode  [in,out] color           NULL [X3DColorNode]
  SFNode  [in,out] coord           NULL [X3DCoordinateNode]
  SFNode  [in,out] fogCoord        []   [FogCoordinate]
  SFNode  [in,out] metadata        NULL [X3DMetadataObject]
  SFNode  [in,out] normal          NULL [X3DNormalNode]
  SFNode  [in,out] texCoord        NULL [X3DTextureCoordinateNode]
  SFBool  []       ccw             TRUE
  SFBool  []       colorPerVertex  TRUE
  SFBool  []       normalPerVertex TRUE
  SFBool  []       solid           TRUE
}


33 - 3D texturing component

X3DTexture3DNode : X3DTextureNode {
  SFNode [in,out] metadata          NULL  [X3DMetadataObject]
  SFBool []       repeatS           FALSE
  SFBool []       repeatT           FALSE
  SFBool []       repeatR           FALSE
  SFNode []       textureProperties NULL  [TextureProperties]
}

ComposedTexture3D : X3DTexture3DNode {
  SFNode [in,out] metadata NULL  [X3DMetadataObject]
  MFNode [in,out] texture  []    [X3DTexture2DNode]
  SFBool []       repeatS  FALSE
  SFBool []       repeatR  FALSE
  SFBool []       repeatT  FALSE
}

ImageTexture3D : X3DTexture3DNode, X3DUrlObject {
  SFNode   [in,out] metadata          NULL  [X3DMetadataObject]
  MFString [in,out] url               []    [urn]
  SFBool   []       repeatS           FALSE
  SFBool   []       repeatT           FALSE
  SFBool   []       repeatR           FALSE
  SFNode   []       textureProperties NULL  [TextureProperties]
}

PixelTexture3D : X3DTexture3DNode {
  SFNode  [in,out] metadata          NULL      [X3DMetadataObject]
  MFInt32 [in,out] image             [0 0 0 0]
  SFBool  []       repeatS           FALSE
  SFBool  []       repeatR           FALSE
  SFBool  []       repeatT           FALSE
  SFNode  []       textureProperties NULL      [TextureProperties]
}

TextureCoordinate3D : X3DTextureCoordinateNode {
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec3f [in,out] point    []   (-∞,∞)
}

TextureCoordinate4D : X3DTextureCoordinateNode {
  SFNode  [in,out] metadata NULL [X3DMetadataObject]
  MFVec4f [in,out] point    []   (-∞,∞)
}

TextureTransformMatrix3D : X3DTextureTransformNode {
  SFNode     [in,out] metadata    NULL                             [X3DMetadataObject]
  SFMatrix4f [in,out] matrix      1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1  (-∞,∞)
}

TextureTransform3D : X3DTextureTransformNode {
  SFVec3f    [in,out] center      0 0 0   (-∞,∞)
  SFNode     [in,out] metadata    NULL    [X3DMetadataObject]
  SFRotation [in,out] rotation    0 0 1 0 (-∞,∞)
  SFVec3f    [in,out] scale       1 1 1   (-∞,∞)
  SFVec3f    [in,out] translation 0 0 0   (-∞,∞)
}


34 - Cube map environmental texturing component

X3DEnvironmentTextureNode : X3DTextureNode {
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}
 
ComposedCubeMapTexture : X3DEnvironmentTextureNode {
  SFNode [in,out] back     NULL [X3DTexture2DNode]
  SFNode [in,out] bottom   NULL [X3DTexture2DNode]
  SFNode [in,out] front    NULL [X3DTexture2DNode]
  SFNode [in,out] left     NULL [X3DTexture2DNode]
  SFNode [in,out] metadata NULL [X3DMetadataObject]
  SFNode [in,out] right    NULL [X3DTexture2DNode]
  SFNode [in,out] top      NULL [X3DTexture2DNode]
}
 
GeneratedCubeMapTexture : X3DEnvironmentTextureNode {
  SFNode   [in,out] metadata          NULL   [X3DMetadataObject]
  SFString [in,out] update            "NONE" ["NONE"|"NEXT_FRAME_ONLY"|"ALWAYS"]
  SFInt32  []       size              128    (0,∞)
  SFNode   []       textureProperties NULL   [TextureProperties]
}
 
ImageCubeMapTexture : X3DEnvironmentTextureNode, X3DUrlObject {
  SFNode   [in,out] metadata          NULL [X3DMetadataObject]
  MFString [in,out] url               []   [urn]
  SFNode   []       textureProperties NULL [TextureProperties]
}


35 - Layering component
 X3DLayerNode : X3DNode {
  SFBool [in,out] isPickable TRUE
  SFNode [in,out] metadata   NULL [X3DMetadataObject]
  SFNode [in,out] viewport   NULL [X3DViewportNode]
}
 
X3DViewportNode : X3DGroupingNode {
  MFNode  [in]     addChildren             [X3DChildNode]
  MFNode  [in]     removeChildren          [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 (0,∞) or -1 -1 -1
}
 
Layer : X3DLayerNode { 
  MFNode [in]     addChildren    []    [X3DChildNode]
  MFNode [in]     removeChildren []    [X3DChildNode]
  MFNode [in,out] children       []    [X3DChildNode]
  SFBool [in,out] isPickable     TRUE
  SFNode [in,out] metadata       NULL  [X3DMetadataObject]
  SFNode [in,out] viewport       NULL  [X3DViewportNode]
}
 
LayerSet : X3DNode { 
  SFInt32 [in,out]  activeLayer 0    (-∞,∞)
  MFNode  [in,out]  layers      []   [X3DLayerNode]
  SFNode  [in,out]  metadata    NULL [X3DMetadataObject]
  MFInt32 [in,out]  order       [0]  (0,∞)
}
 
Viewport : X3DViewportNode {
  MFNode     [in]     addChildren                [X3DChildNode]
  MFNode     [in]     removeChildren             [X3DChildNode]
  MFNode     [in,out] children       []          [X3DChildNode]
  MFFloat    [in,out] clipBoundary   0 100 0 100 (0,100)
  SFNode     [in,out] metadata       NULL        [X3DMetadataObject]
  SFVec3f    []       bboxCenter     0 0 0       (-∞,∞)
  SFVec3f    []       bboxSize       -1 -1 -1    (0,∞) or -1 -1 -1
}


36 - Layout component
X3DLayoutNode : X3DChildNode {
  SFNode   [in,out] metadata     NULL [X3DMetadataObject]
}

Layout : X3DLayoutNode { 
  MFString [in,out] align       ["CENTER", "CENTER"] ["LEFT"|"CENTER"|"RIGHT"|"BOTTOM"|"CENTER"|"TOP"]
  SFNode   [in,out] metadata    NULL                 [X3DMetadataObject]
  MFFloat  [in,out] offset      [0,0]                (-∞,∞)
  MFString [in,out] offsetUnits ["WORLD", "WORLD"]   ["WORLD"|"FRACTION"|"PIXEL"]
  MFString [in,out] scaleMode   ["NONE", "NONE"]     ["NONE"|"FRACTION"|"STRETCH"|"PIXEL"]
  MFFloat  [in,out] size        [1,1]                (0,∞)
  MFString [in,out] sizeUnits   ["WORLD", "WORLD"]   ["WORLD"|"FRACTION"|"PIXEL"]
}

LayoutGroup : X3DGroupingNode {
  MFNode  [in]     addChildren         [X3DChildNode]
  MFNode  [in]     removeChildren      [X3DChildNode]
  MFNode  [in,out] children       []   [X3DChildNode]
  SFNode  [in,out] layout         NULL [X3DLayoutNode]
  SFNode  [in,out] metadata       NULL [X3DMetadataObject]
  SFNode  [in,out] viewport       NULL [X3DViewportNode]
}

LayoutLayer : X3DLayerNode { 
  MFNode  [in]     addChildren    []   [X3DChildNode]
  MFNode  [in]     removeChildren []   [X3DChildNode]
  MFNode  [in,out] children       []   [X3DChildNode]
  SFBool  [in,out] isPickable     TRUE
  SFNode  [in,out] layout         NULL [X3DLayoutNode]
  SFNode  [in,out] viewport       NULL [X3DViewportNode]
  SFNode  [in,out] metadata       NULL [X3DMetadataObject]
}

ScreenFontStyle : X3DFontStyleNode {
  SFNode   [in,out] metadata    NULL    [X3DMetadataObject]
  MFString []       family      "SERIF"
  SFBool   []       horizontal  TRUE
  MFString []       justify     "BEGIN" ["BEGIN"|"END"|"FIRST"|"MIDDLE"|""]
  SFString []       language    ""
  SFBool   []       leftToRight TRUE
  SFFloat  []       pointSize   12.0    (0,∞)
  SFFloat  []       spacing     1.0     [0,∞)
  SFString []       style       "PLAIN" ["PLAIN"|"BOLD"|"ITALIC"|"BOLDITALIC"|""]
  SFBool   []       topToBottom TRUE
}

ScreenGroup : X3DGroupingNode {
  MFNode  [in]     addChildren    []       [X3DChildNode]
  MFNode  [in]     removeChildren []       [X3DChildNode]
  MFNode  [in,out] children       []       [X3DChildNode]
  SFNode  [in,out] metadata       NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f []       bboxSize       -1 -1 -1 (0,∞) or -1 -1 -1
}


37 - Rigid body physics component
X3DNBodyCollidableNode : X3DChildNode, X3DBoundedObject {
  SFBool     [in,out] enabled     TRUE
  SFNode     [in,out] metadata    NULL     [X3DMetadataObject]
  SFRotation [in,out] rotation    0 0 1 0  [0,1]
  SFVec3f    [in,out] translation 0 0 0    (-∞,∞)
  SFVec3f    []       bboxCenter  0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize    -1 -1 -1 [0,∞) or -1 -1 -1
}

X3DNBodyCollisionSpaceNode : X3DNode, X3DBoundedObject {
  SFBool  [in,out] enabled    TRUE
  SFNode  [in,out] metadata   NULL     [X3DMetadataObject]
  SFVec3f []       bboxCenter 0 0 0    (-∞,∞)
  SFVec3f []       bboxSize   -1 -1 -1 [0,∞) or -1 -1 -1
}

X3DRigidJointNode : X3DNode {
  SFNode   [in,out] body1       NULL   [RigidBody]
  SFNode   [in,out] body2       NULL   [RigidBody]
  MFString [in,out] forceOutput "NONE" ["ALL","NONE",...]
  SFNode   [in,out] metadata    NULL   [X3DMetadataObject]
}

BallJoint : X3DRigidJointNode {
  SFVec3f  [in,out] anchorPoint      0 0 0
  SFNode   [in,out] body1            NULL   [RigidBody]
  SFNode   [in,out] body2            NULL   [RigidBody]
  SFNode   [in,out] metadata         NULL   [X3DMetadataObject]
  MFString [in,out] mustOutput       "NONE" ["ALL","NONE",...]
  SFVec3f  [out]    body1AnchorPoint
  SFVec3f  [out]    body2AnchorPoint
}

CollidableOffset : X3DNBodyCollidableNode {
  SFBool     [in,out] enabled     TRUE
  SFNode     [in,out] metadata    NULL     [X3DMetadataObject]
  SFRotation [in,out] rotation    0 0 1 0  [0,1]
  SFVec3f    [in,out] translation 0 0 0    (-∞,∞)
  SFVec3f    []       bboxCenter  0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize    -1 -1 -1 [0,∞) or -1 -1 -1
  SFNode     []       collidable  NULL     [X3DNBodyCollidableNode]
}

CollidableShape : X3DNBodyCollidableNode {
  SFBool     [in,out] enabled     TRUE
  SFNode     [in,out] metadata    NULL     [X3DMetadataObject]
  SFRotation [in,out] rotation    0 0 1 0  [0,1]
  SFVec3f    [in,out] translation 0 0 0    (-∞,∞)
  SFVec3f    []       bboxCenter  0 0 0    (-∞,∞)
  SFVec3f    []       bboxSize    -1 -1 -1 [0,∞) or -1 -1 -1
  SFNode     []       shape       NULL     [Shape]
}

CollisionCollection : X3DChildNode {
  MFString [in,out] appliedParameters        "BOUNCE" []
  SFFloat  [in,out] bounce                   0        [0,1]
  MFNode   [in,out] collidables              NULL     [X3DNBodyCollisionSpaceNode, X3DNBodyCollidableNode]
  SFBool   [in,out] enabled                  TRUE
  SFVec2f  [in,out] frictionCoefficients     0 0      [0,∞)
  SFNode   [in,out] metadata                 NULL     [X3DMetadataObject]
  SFFloat  [in,out] minBounceSpeed           0.1      [0,∞)
  SFVec2f  [in,out] slipFactors	             0 0      (-∞,∞)
  SFFloat  [in,out] softnessConstantForceMix 0.0001   [0,1]
  SFFloat  [in,out] softnessErrorCorrection  0.8      [0,1]
  SFVec2f  [in,out] surfaceSpeed             0 0      (-∞,∞)
}

CollisionSensor : X3DSensorNode {
  SFNode [in,out] collidables   NULL [CollisionCollection]
  SFBool [in,out] enabled       TRUE 
  SFNode [in,out] metadata      NULL [X3DMetadataObject]
  MFNode [out]    intersections      [X3DNBodyCollidableNode]
  MFNode [out]    contacts           [Contact]
  SFBool [out]    isActive
}

CollisionSpace : X3DNBodyCollisionSpaceNode {
  MFNode  [in,out] collidables NULL     [X3DNBodyCollisionSpaceNode, X3DNBodyCollidableNode]
  SFBool  [in,out] enabled     TRUE
  SFNode  [in,out] metadata    NULL     [X3DMetadataObject]
  SFBool  [in,out] useGeometry FALSE
  SFVec3f []       bboxCenter  0 0 0    (-∞,∞)
  SFVec3f []       bboxSize    -1 -1 -1 [0,∞) or -1 -1 -1
}

Contact : X3DNode {
  MFString [in,out] appliedParameters        "BOUNCE" []
  SFNode   [in,out] body1                    NULL     [RigidBody]
  SFNode   [in,out] body2                    NULL     [RigidBody]
  SFFloat  [in,out] bounce                   0        [0,1]
  SFVec3f  [in,out] contactNormal            0 1 0    (-∞,∞)
  SFFloat  [in,out] depth                    0        (-∞,∞)
  SFVec2f  [in,out] frictionCoefficients     0 0      [0,∞)
  SFVec3f  [in,out] frictionDirection        0 1 0    (-∞,∞)
  SFNode   [in,out] geometry1                NULL     [X3DNBodyCollidableNode]
  SFNode   [in,out] geometry2                NULL     [X3DNBodyCollidableNode]
  SFNode   [in,out] metadata                 NULL     [X3DMetadataObject]
  SFFloat  [in,out] minbounceSpeed           0        [0,∞)
  SFVec3f  [in,out] position                 0 0 0    (-∞,∞)
  SFVec2f  [in,out] slipCoefficients         0 0      (-∞,∞)
  SFFloat  [in,out] softnessConstantForceMix 0.0001   [0,1]
  SFFloat  [in,out] softnessErrorCorrection  0.8      [0,1]
  SFVec2f  [in,out] surfaceSpeed             0 0      (-∞,∞)
}

DoubleAxisHingeJoint : X3DRigidJointNode {
  SFVec3f  [in,out] anchorPoint               0 0 0
  SFVec3f  [in,out] axis1                     0 0 0
  SFVec3f  [in,out] axis2                     0 0 0
  SFNode   [in,out] body1                     NULL    [RigidBody]
  SFNode   [in,out] body2                     NULL    [RigidBody]
  SFFloat  [in,out] desiredAngularVelocity1   0       (-∞,∞)
  SFFloat  [in,out] desiredAngularVelocity2   0       (-∞,∞)
  SFFloat  [in,out] maxAngle1                 3.147   [-π,π]
  SFFloat  [in,out] maxTorque1                0       (-∞,∞)
  SFFloat  [in,out] maxTorque2                0       (-∞,∞)
  SFNode   [in,out] metadata                  NULL    [X3DMetadataObject]
  SFFloat  [in,out] minAngle1                 -3.147
  MFString [in,out] mustOutput                "NONE"  ["ALL","NONE",....]
  SFFloat  [in,out] stop1ounce                0       [0,1]
  SFFloat  [in,out] stop1ConstantForceMix     0.001   [0,∞)
  SFFloat  [in,out] stop1ErrorCorrection      0.8     [0,1]
  SFFloat  [in,out] suspensionErrorCorrection 0.8     [0,1]
  SFFloat  [in,out] suspensionForce           0       [0,∞)
  SFVec3f  [out]    body1AnchorPoint
  SFVec3f  [out]    body2AnchorPoint
  SFVec3f  [out]    body1Axis
  SFVec3f  [out]    body2Axis
  SFFloat  [out]    hinge1Angle
  SFFloat  [out]    hinge2Angle
  SFFloat  [out]    hinge1AngleRate
  SFFloat  [out]    hinge2AngleRate
}

MotorJoint : X3DRigidJointNode {
  SFFloat  [in,out] axis1Angle           0      [-π,π]
  SFFloat  [in,out] axis1Torque          0      (-∞,∞)
  SFFloat  [in,out] axis2Angle           0      [-π,π]
  SFFloat  [in,out] axis2Torque          0      (-∞,∞)
  SFFloat  [in,out] axis3Angle           0      [-π,π]
  SFFloat  [in,out] axis3Torque          0      (-∞,∞)
  SFNode   [in,out] body1                NULL   [RigidBody]
  SFNode   [in,out] body2                NULL   [RigidBody]
  SFInt32  [in,out] enabledAxes          1      [0,3]
  SFNode   [in,out] metadata             NULL   [X3DMetadataObject]
  SFVec3f  [in,out] motor1Axis           0 0 0
  SFVec3f  [in,out] motor2Axis           0 0 0
  SFVec3f  [in,out] motor3Axis           0 0 0
  MFString [in,out] mustOutput           "NONE" ["ALL","NONE",...]
  SFFloat  [in,out] stop1Bounce          0      [0,1]
  SFFloat  [in,out] stop1ErrorCorrection 0.8    [0,1]
  SFFloat  [in,out] stop2Bounce          0      [0,1]
  SFFloat  [in,out] stop2ErrorCorrection 0.8    [0,1]
  SFFloat  [in,out] stop3Bounce          0      [0,1]
  SFFloat  [in,out] stop3ErrorCorrection 0.8    [0,1]
  SFFloat  [out]    motor1Angle
  SFFloat  [out]    motor1AngleRate
  SFFloat  [out]    motor2Angle
  SFFloat  [out]    motor2AngleRate
  SFFloat  [out]    motor3Angle
  SFFloat  [out]    motor3AngleRate
  SFBool   []       autoCalc             FALSE
}

RigidBody : X3DNode {
  SFFloat    [in,out] angularDampingFactor 0.001   [0,1]
  SFVec3f    [in,out] angularVelocity      0 0 0   (-∞,∞)
  SFBool     [in,out] autoDamp             FALSE
  SFBool     [in,out] autoDisable          FALSE
  SFVec3f    [in,out] centerOfMass         0 0 0   (-∞,∞)
  SFFloat    [in,out] disableAngularSpeed  0       [0,∞)
  SFFloat    [in,out] disableLinearSpeed   0       [0,∞)
  SFFloat    [in,out] disableTime          0       [0,∞)
  SFBool     [in,out] enabled              TRUE
  SFVec3f    [in,out] finiteRotationAxis   0 1 0   [-1,1]
  SFBool     [in,out] fixed                FALSE
  MFVec3f    [in,out] forces               []
  MFNode     [in,out] geometry             []      [X3DNBodyCollidableNode]
  SFMatrix3f [in,out] inertia	           1 0 0 0 1 0 0 0 1
  SFFloat    [in,out] linearDampingFactor  0.001   [0,1]
  SFVec3f    [in,out] linearVelocity       0 0 0   (-∞,∞)
  SFFloat    [in,out] mass                 1       (0,∞)
  SFNode     [in,out] massDensityModel     NULL    [Sphere, Box, Cone]
  SFNode     [in,out] metadata             NULL    [X3DMetadataObject]
  SFRotation [in,out] orientation          0 0 1 0 [0,1]
  SFVec3f    [in,out] position             0 0 0   (-∞,∞)
  MFVec3f    [in,out] torques              []
  SFBool     [in,out] useFiniteRotation    FALSE
  SFBool     [in,out] useGlobalGravity     TRUE
}

RigidBodyCollection : X3DChildNode {
  MFNode  [in]     set_contacts            []        [Contact] 
  SFBool  [in,out] autoDisable             FALSE
  MFNode  [in,out] bodies                  []        [RigidBody]
  SFFloat [in,out] constantForceMix        0.0001    [0,∞)
  SFFloat [in,out] contactSurfaceThickness 0         [0,∞)
  SFFloat [in,out] disableAngularSpeed     0         [0,∞)
  SFFloat [in,out] disableLinearSpeed      0         [0,∞)
  SFFloat [in,out] disableTime             0         [0,∞)
  SFBool  [in,out] enabled                 TRUE
  SFFloat [in,out] errorCorrection         0.8       [0,1]
  SFVec3f [in,out] gravity                 0 -9.8 0
  SFInt32 [in,out] iterations              10	     [0,∞)
  MFNode  [in,out] joints                  []        [X3DRigidJointNode]
  SFFloat [in,out] maxCorrectionSpeed      -1        [0,∞) or -1
  SFNode  [in,out] metadata                NULL      [X3DMetadataObject]
  SFBool  [in,out] preferAccuracy          FALSE
  SFNode  []       collider                NULL      [CollisionCollection]
}

SingleAxisHingeJoint : X3DRigidJointNode {
  SFVec3f  [in,out] anchorPoint         0 0 0
  SFVec3f  [in,out] axis                0 0 0
  SFNode   [in,out] body1               NULL   [RigidBody]
  SFNode   [in,out] body2               NULL   [RigidBody]
  SFFloat  [in,out] maxAngle            π
  SFNode   [in,out] metadata            NULL   [X3DMetadataObject]
  SFFloat  [in,out] minAngle            -π
  MFString [in,out] mustOutput          "NONE" ["ALL","NONE",....]
  SFFloat  [in,out] stopBounce          0      [0,1]
  SFFloat  [in,out] stopErrorCorrection 0.8    [0,1]
  SFFloat  [out]    angle
  SFFloat  [out]    angleRate
  SFVec3f  [out]    body1AnchorPoint
  SFVec3f  [out]    body2AnchorPoint
}

SliderJoint : X3DRigidJointNode {
  SFVec3f  [in,out] axis                0 1 0
  SFNode   [in,out] body1               NULL   [RigidBody]
  SFNode   [in,out] body2               NULL   [RigidBody]
  SFFloat  [in,out] maxSeparation       1      [0,∞)
  SFNode   [in,out] metadata            NULL   [X3DMetadataObject]
  SFFloat  [in,out] minSeparation       0      [0,∞)
  MFString [in,out] mustOutput          "NONE" ["ALL","NONE",...]
  SFFloat  [in,out] sliderForce         0      (-∞,∞)
  SFFloat  [in,out] stopBounce          0      [0,1]
  SFFloat  [in,out] stopErrorCorrection 1      [0,1]
  SFFloat  [out]    separation
  SFFloat  [out]    separationRate
}

UniversalJoint : X3DRigidJointNode {
  SFVec3f  [in,out] anchorPoint          0 0 0
  SFVec3f  [in,out] axis1                0 0 0
  SFVec3f  [in,out] axis2                0 0 0
  SFNode   [in,out] body1                NULL   [RigidBody]
  SFNode   [in,out] body2                NULL   [RigidBody]
  SFNode   [in,out] metadata             NULL   [X3DMetadataObject]
  MFString [in,out] mustOutput           "NONE" ["ALL","NONE",...]
  SFFloat  [in,out] stop1Bounce          0      [0,1]
  SFFloat  [in,out] stop1ErrorCorrection 0.8    [0,1]
  SFFloat  [in,out] stop2Bounce          0      [0,1]
  SFFloat  [in,out] stop2ErrorCorrection 0.8    [0,1]
  SFVec3f  [out]    body1AnchorPoint
  SFVec3f  [out]    body1Axis
  SFVec3f  [out]    body2AnchorPoint
  SFVec3f  [out]    body2Axis
}


38 - Picking sensor component
X3DPickableObject {
  MFString [in,out] objectType "ALL" ["ALL"|"NONE"|"TERRAIN"|...]
  SFBool   [in,out] pickable
}

X3DPickSensorNode : X3DSensorNode { 
  SFBool   [in,out] enabled
  SFNode   [in,out] metadata         NULL      [X3DMetadataObject]
  MFString [in,out] objectType       "ALL"     ["ALL"|"NONE"|"TERRAIN"|...]
  SFNode   [in,out] pickingGeometry  NULL      [X3DGeometryNode]
  MFNode   [in,out] pickTarget       []        [X3DGroupingNode|X3DShapeNode]
  MFNode   [out]    pickedGeometry
  SFBool   [out]    isActive
  SFString []       intersectionType "BOUNDS"  ["GEOMETRY"|"BOUNDS"]
  SFString []       sortOrder        "CLOSEST" ["CLOSEST"|"ALL"|"ALL_SORTED"]
}

LinePickSensor : X3DPickSensorNode { 
  SFBool   [in,out] enabled                 TRUE
  SFNode   [in,out] metadata                NULL      [X3DMetadataObject]
  MFString [in,out] objectType              "ALL"     ["ALL"|"NONE"|"TERRAIN"|...]
  SFNode   [in,out] pickingGeometry         NULL      [IndexedLineSet|LineSet]
  MFNode   [in,out] pickTarget              []        [X3DGroupingNode|X3DShapeNode]
  SFBool   [out]    isActive
  MFNode   [out]    pickedGeometry
  MFVec3f  [out]    pickedNormal
  MFVec3f  [out]    pickedPoint
  MFVec2f  [out]    pickedTextureCoordinate
  SFString []       intersectionType        "BOUNDS"  ["GEOMETRY"|"BOUNDS"]
  SFString []       sortOrder               "CLOSEST" ["CLOSEST"|"ALL"|"ALL_SORTED"]
}

PickableGroup : X3DPickableObject, X3DGroupingNode { 
  MFNode   [in]     addChildren
  MFNode   [in]     removeChildren
  MFNode   [in,out] children       []       [X3DChildNode]
  SFNode   [in,out] metadata       NULL     [X3DMetadataObject]
  MFString [in,out] objectType     "ALL"    ["ALL"|"NONE"|"TERRAIN"|...]
  SFBool   [in,out] pickable       TRUE
  SFVec3f  []       bboxCenter     0 0 0    (-∞,∞)
  SFVec3f  []       bboxSize       -1 -1 -1 [0,∞) or -1 -1 -1
}

PointPickSensor : X3DPickSensorNode { 
  SFBool   [in,out] enabled          TRUE
  SFNode   [in,out] metadata         NULL      [X3DMetadataObject]
  MFString [in,out] objectType       "ALL"     ["ALL"|"NONE"|"TERRAIN"|...]
  SFNode   [in,out] pickingGeometry  NULL      [PointSet]
  MFNode   [in,out] pickTarget       []        [X3DGroupingNode|X3DShapeNode]
  SFBool   [out]    isActive
  MFNode   [out]    pickedGeometry
  MFVec3f  [out]    pickedPoint
  SFString []       intersectionType "BOUNDS"  ["GEOMETRY" | "BOUNDS"]
  SFString []       sortOrder        "CLOSEST" ["CLOSEST"|"ALL"|"ALL_SORTED"]
}

PrimitivePickSensor : X3DPickSensorNode { 
  SFBool   [in,out] enabled          TRUE
  SFNode   [in,out] metadata         NULL      [X3DMetadataObject]
  MFString [in,out] objectType       "ALL"     ["ALL"|"NONE"|"TERRAIN"|...]
  SFNode   [in,out] pickingGeometry  NULL      [Cone|Cylinder|Sphere|Box]
  MFNode   [in,out] pickTarget       []        [X3DGroupingNode | X3DShapeNode]
  SFBool   [out]    isActive
  MFNode   [out]    pickedGeometry
  SFString []       intersectionType "BOUNDS"  ["GEOMETRY"|"BOUNDS"]
  SFString []       sortOrder        "CLOSEST" ["CLOSEST"|"ALL"|"ALL_SORTED"]
}

VolumePickSensor : X3DPickSensorNode { 
  SFBool   [in,out] enabled          TRUE
  SFNode   [in,out] metadata         NULL      [X3DMetadataObject]
  MFString [in,out] objectType       "ALL"     ["ALL"|"NONE"|"TERRAIN"|...]
  SFNode   [in,out] pickingGeometry  NULL      [X3DGeometryNode]
  MFNode   [in,out] pickTarget       []        [X3DGroupingNode | X3DShapeNode]
  SFBool   [out]    isActive
  MFNode   [out]    pickedGeometry
  SFString []       intersectionType "BOUNDS"  ["GEOMETRY"|"BOUNDS"]
  SFString []       sortOrder        "CLOSEST" ["CLOSEST"|"ALL"|"ALL_SORTED"]
}


39 - Followers component
X3DChaserNode : X3DFollowerNode {
  [S|M]F<type> [in]     set_destination
  [S|M]F<type> [in]     set_value
  SFNode       [in,out] metadata           NULL   [X3DMetadataObject]
  SFBool       [out]    isActive
  [S|M]F<type> [out]    value_changed
  SFTime       []       duration           [0,∞)
  [S|M]F<type> []       initialDestination
  [S|M]F<type> []       initialValue
}

X3DDamperNode : X3DFollowerNode {
  [S|M]F<type> [in]     set_destination
  [S|M]F<type> [in]     set_value
  SFNode       [in,out] metadata           NULL [X3DMetadataObject]
  SFTime       [in,out] tau                [0,∞)
  SFFloat      [in,out] tolerance          -1 or [0,∞)
  SFBool       [out]    isActive
  [S|M]F<type> [out]    value_changed
  [S|M]F<type> []       initialDestination
  [S|M]F<type> []       initialValue
  SFInt32      []       order              [0..5]
}

X3DFollowerNode : X3DChildNode {
  [S|M]F<type> [in]     set_destination
  [S|M]F<type> [in]     set_value
  SFNode       [in,out] metadata           NULL [X3DMetadataObject]
  SFBool       [out]    isActive
  [S|M]F<type> [out]    value_changed
  [S|M]F<type> []       initialDestination
  [S|M]F<type> []       initialValue
}

ColorDamper : X3DDamperNode {
  SFColor [in]     set_destination
  SFColor [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFTime  [in,out] tau                0.0  [0,∞)
  SFFloat [in,out] tolerance          -1   -1 or [0,∞)
  SFBool  [out]    isActive
  SFColor [out]    value_changed
  SFColor []       initialDestination
  SFColor []       initialValue
  SFInt32 []       order                    [0..5]
}

CoordinateDamper : X3DDamperNode {
  MFVec3f [in]     set_destination
  MFVec3f [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFTime  [in,out] tau                0.0  [0,∞)
  SFFloat [in,out] tolerance          -1   -1 or [0,∞)
  SFBool  [out]    isActive
  MFVec3f [out]    value_changed
  MFVec3f []       initialDestination
  MFVec3f []       initialValue
  SFInt32 []       order                   [0..5]
}

OrientationChaser : X3DChaserNode {
  SFRotation [in]     set_destination
  SFRotation [in]     set_value
  SFNode     [in,out] metadata           NULL [X3DMetadataObject]
  SFBool     [out]    isActive
  SFRotation [out]    value_changed
  SFTime     []       duration                [0,∞)
  SFRotation []       initialDestination
  SFRotation []       initialValue
}

OrientationDamper : X3DDamperNode {
  SFRotation [in]     set_destination
  SFRotation [in]     set_value
  SFNode     [in,out] metadata           NULL [X3DMetadataObject]
  SFTime     [in,out] tau                0.0  [0,∞)
  SFFloat    [in,out] tolerance          -1   -1 or [0..∞]
  SFBool     [out]    isActive
  SFRotation [out]    value_changed
  SFRotation []       initialDestination
  SFRotation []       initialValue
  SFInt32    []       order                   [0..5]
}

PositionChaser : X3DChaserNode {
  SFVec3f [in]     set_destination
  SFVec3f [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFBool  [out]    isActive
  SFVec3f [out]    value_changed
  SFTime  []       duration           [0,∞)
  SFVec3f []       initialDestination
  SFVec3f []       initialValue
}

PositionChaser2D : X3DChaserNode {
  SFVec2f [in]     set_destination
  SFVec2f [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFBool  [out]    isActive
  SFVec2f [out]    value_changed
  SFTime  []       duration           [0,∞)
  SFVec2f []       initialDestination
  SFVec2f []       initialValue
}

PositionDamper : X3DDamperNode {
  SFVec3f [in]     set_destination
  SFVec3f [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFTime  [in,out] tau                0.0  [0,∞)
  SFFloat [in,out] tolerance          -1   -1 or [0,∞)
  SFBool  [out]    isActive
  SFVec3f [out]    value_changed
  SFVec3f []       initialDestination
  SFVec3f []       initialValue
  SFInt32 []       order              [0..5]
}

PositionDamper2D : X3DDamperNode {
  SFVec2f [in]     set_destination
  SFVec2f [in]     set_value
  SFNode  [in,out] metadata            NULL [X3DMetadataObject]
  SFTime  [in,out] tau                 0.0  [0,∞)
  SFFloat [in,out] tolerance           -1   -1 or [0..∞]
  SFBool  [out]    isActive
  SFVec2f [out]    value_changed
  SFVec2f []       initialDestination
  SFVec2f []       initialValue
  SFInt32 []       order              [0..5]
}

ScalarChaser : X3DChaserNode {
  SFFloat [in]     set_destination
  SFFloat [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFBool  [out]    isActive
  SFFloat [out]    value_changed
  SFTime  []       duration           [0,∞)
  SFFloat []       initialDestination
  SFFloat []       initialValue
}

TexCoordDamper : X3DDamperNode {
  MFVec2f [in]     set_destination
  MFVec2f [in]     set_value
  SFNode  [in,out] metadata           NULL [X3DMetadataObject]
  SFTime  [in,out] tau                0.0  [0,∞)
  SFFloat [in,out] tolerance          -1   -1 or [0..∞]
  SFBool  [out]    isActive
  MFVec2f [out]    value_changed
  MFVec2f []       initialDestination
  MFVec2f []       initialValue
  SFInt32 []       order              [0..5]
}


40 - Particle systems component

X3DParticleEmitterNode : X3DNode {
  SFNode  [in,out] metadata    NULL [X3DMetadataObject]
  SFFloat [in,out] speed       0    [0,∞)
  SFFloat [in,out] variation   0.25 [0,∞)
  SFFloat []       mass        0    [0,∞)
  SFFloat []       surfaceArea 0    [0,∞)
}

X3DParticlePhysicsModelNode : X3DNode { 
  SFBool [in,out] enabled  TRUE
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

BoundedPhysicsModel : X3DParticlePhysicsModelNode { 
  SFBool [in,out] enabled  TRUE
  SFNode [in,out] geometry NULL [X3DGeometryNode]
  SFNode [in,out] metadata NULL [X3DMetadataObject]
}

ConeEmitter : X3DParticleEmitterNode { 
  SFFloat [in,out] angle       π/4   [0,π]
  SFVec3f [in,out] direction   0 1 0 
  SFNode  [in,out] metadata    NULL  [X3DMetadataObject]
  SFVec3f [in,out] position    0 0 0
  SFFloat [in,out] speed       0     [0,∞)
  SFFloat [in,out] variation   0.25  [0,∞)
  SFFloat []       mass        0     [0,∞)
  SFFloat []       surfaceArea 0     [0,∞)
}

ExplosionEmitter : X3DParticleEmitterNode { 
  SFNode  [in,out] metadata    NULL  [X3DMetadataObject]
  SFVec3f [in,out] position    0 0 0
  SFFloat [in,out] speed       0     [0,∞)
  SFFloat [in,out] variation   0.25  [0,∞)
  SFFloat []       mass        0     [0,∞)
  SFFloat []       surfaceArea 0     [0,∞)
}

GravityPhysicsModel : X3DParticlePhysicsModelNode { 
  SFBool  [in,out] enabled  TRUE
  SFVec3f [in,out] gravity  0 -9.8 0 (∞,∞)
  SFNode  [in,out] metadata NULL     [X3DMetadataObject]
}

ParticleSystem : X3DShapeNode { 
  SFNode   [in,out] appearance        NULL      [X3DAppearanceNode]
  SFBool   [in,out] createParticles   TRUE
  SFNode   [in,out] geometry          NULL      [X3DGeometryNode]
  SFBool   [in,out] enabled           TRUE
  SFFloat  [in,out] lifetimeVariation 0.25      [0,1]
  SFInt32  [in,out] maxParticles      200       [0,∞)
  SFNode   [in,out] metadata          NULL      [X3DMetadataObject]
  SFFloat  [in,out] particleLifetime  5         [0,∞)
  SFVec2f  [in,out] particleSize      0.02 0.02 [0,∞)
  SFBool   [out]    isActive
  SFVec3f  []       bboxCenter        0 0 0
  SFVec3f  []       bboxSize          -1 -1 -1  (0,∞) or -1 -1 -1
  SFNode   []       colorRamp         NULL      [X3DColorNode]
  MFFloat  []       colorKey          NULL      [0,∞)
  SFNode   []       emitter           NULL      [X3DParticleEmitterNode]
  SFString []       geometryType      "QUAD"    ["LINE"|"POINT"|"QUAD"|"SPRITE"|"TRIANGLE"|"GEOMETRY"|...]
  MFNode   []       physics           []        [X3DParticlePhysicsModelNode]
  SFNode   []       texCoordRamp      NULL      [TextureCoordinate]
  MFFloat  []       texCoordKey       []        [0,∞)
}

PointEmitter : X3DParticleEmitterNode { 
  SFVec3f [in,out] direction   0 1 0
  SFNode  [in,out] metadata    NULL  [X3DMetadataObject]
  SFVec3f [in,out] position    0 0 0
  SFFloat [in,out] speed       0     [0,∞)
  SFFloat [in,out] variation   0.25  [0,∞)
  SFFloat []       mass        0     [0,∞)
  SFFloat []       surfaceArea 0     [0,∞)
}

PolylineEmitter : X3DParticleEmitterNode { 
  SFInt32 [in]     set_coordinate
  SFNode  [in,out] coords         NULL  [X3DCoordinateNodeType]
  SFVec3f [in,out] direction      0 1 0 [-1,1]
  SFNode  [in,out] metadata       NULL  [X3DMetadataObject]
  SFFloat [in,out] speed          0     [0,∞)
  SFFloat [in,out] variation      0.25  [0,∞)
  MFInt32 []       coordIndex     -1    [0,∞) or -1
  SFFloat []       mass           0     [0,∞)
  SFFloat []       surfaceArea    0     [0,∞)
}

SurfaceEmitter : X3DParticleEmitterNode { 
  SFInt32 [in]     set_coordinate
  SFNode  [in,out] metadata       NULL  [X3DMetadataObject]
  SFFloat [in,out] speed          0     [0,∞)
  SFFloat [in,out] variation      0.25  [0,∞)
  MFInt32 []       coordIndex     -1    [0,∞) or -1
  SFFloat []       mass           0     [0,∞)
  SFNode  []       surface        NULL  [X3DGeometryNode]
  SFFloat []       surfaceArea    0     [0,∞)
}

VolumeEmitter : X3DParticleEmitterNode { 
  SFInt32 [in]     set_coordinate
  SFNode  [in,out] coords         NULL  [X3DCoordinateNodeType]
  SFVec3f [in,out] direction      0 1 0 [-1,1]
  SFNode  [in,out] metadata       NULL  [X3DMetadataObject]
  SFFloat [in,out] speed          0     [0,∞)
  SFFloat [in,out] variation      0.25  [0,∞)
  MFInt32 []       coordIndex     -1    [0,∞) or -1
  SFBool  []       internal       TRUE
  SFFloat []       mass           0     [0,∞)
  SFFloat []       surfaceArea    0     [0,∞)
}

WindPhysicsModel : X3DParticlePhysicsModelNode { 
  SFVec3f [in,out] direction  0 0 0 (∞,∞)
  SFBool  [in,out] enabled    TRUE
  SFFloat [in,out] gustiness  0.1   [0,∞)
  SFNode  [in,out] metadata   NULL  [X3DMetadataObject]
  SFFloat [in,out] speed      0.1   [0,∞)
  SFFloat [in,out] turbulence 0     [0,1]
}


X3DField

SFBool
SFColor
SFColorRGBA
SFDouble
SFFloat
SFImage
SFInt32
SFMatrix3d
SFMatrix3f
SFMatrix4d
SFMatrix4f
SFNode
SFRotation
SFString
SFTime
SFVec2d
SFVec2f
SFVec3d
SFVec3f
SFVec4d
SFVec4f


X3DArrayField

MFBool
MFColor
MFColorRGBA
MFDouble
MFFloat
MFImage
MFInt32
MFMatrix3d 
MFMatrix3f 
MFMatrix4d 
MFMatrix4f 
MFNode
MFRotation
MFString
MFTime
MFVec2d
MFVec2f
MFVec3d
MFVec3f
SFVec4d
SFVec4f
     

Statement Objects


EXPORT {
  X3DNode [in,out] exportedDEF [NMTOKEN]
  X3DNode [in,out] localDEF    [IDREF]
}

IMPORT {
  X3DNode [in,out] inlineDEF   [IDREF]
  X3DNode [in,out] importedDEF [NMTOKEN]
  X3DNode [in,out] AS          [ID]
}  

ROUTE {
  X3DNode  [in,out] FromNode  [IDREF]
  X3DField [in,out] FromField [fieldName]
  X3DNode  [in,out] ToNode    [IDREF]
  X3DField [in,out] ToField   [fieldName]
}

component 
 name SFString
 level SFInt32

meta
 name SFString
 content SFString

Container Objects


X3D
 version SFString
 profile SFString profileNames
 head
 Scene

head 
 component 
 meta 

Scene
 SceneGraphStructureNodeType
 GroupingNodeChildContentModel



Description of Notation

  NodeName : AbstractionNode(s) {
  VarType [in,out|in|out] NodeOrFieldName 
                             NodeOrFieldDefault|NULL 
                                [valid range(s)]|[X3DObjectName]; 
  ...
  }

      NodeName = NodeName from official list

      AbstractionNode(s) = NodeName(s) of derivation 

      VarType = Node/Field Type from official list
    
  [in,out|in|out]  = [in,out] or [in] or [out] or [] access 
         []  =  initializeOnly = initialize Only = VRML field 
        [in] =  inputOnly = incoming event = VRML eventIn  
       [out] =  outputOnly = outgoing event = VRML eventOut 
    [in,out] =  inputOutput = in and out events = VRML exposedField 

      NodeOrFieldName = The official Node or field name, 

      NodeOrFieldDefault|NULL = Node/field initial or default value or NULL 
        Examples: 
          MFType = [] = empty
          SFType = NULL 
          SFType = 0 0 0 
          MFType = [NULL]
          MFType = [1 1, 1 -1, -1 -1, -1 1, 1  1] 
                   (comma separators optional)

      [valid Range(s)] = [min,max|list] = for fields, to show acceptable value  
          min,max = numeric range. Examples: 
              [0,1] specifies a closed interval that 
                    includes both 0 and 1.
              (0,1] specifies a semi-closed interval that is 
                    open at 0 and closed at 1.
              (-1,∞) = any number egt negative one  
              (-∞,∞) = any signed number 
          list = exclusive choice of values  Examples:
               = either TRUE or FALSE is accepted 
            ["quotedSting"] = SF = quoted sting is accepted
                              MF = ["quotedString" "quotedString"] 

      [X3DObjectName] = for SF/MFNodes, to show acceptable node type  

2005/10/05 utils 10/13 x3dinterp ColorRGBA
10/21 BooleanTrigger viewpoint navinfo VisibilitySensor X3DBackgroundNode 10/23 sync with CD preview spec
10/24 x3dbackground TimeTrigger
10/29 Anchor 10/31 fog texturebackground 11/02 StringSensor Cylinder X3DSequencerNode 11/4 utility nodes 11/7 ElevationGrid
11/11 Fill, Lineproperties, TextureCoordinateGenerator
11/11 X3DBackgroundNode Background Fog TextureBackground NavigationInfo, IndexedLineSet, X3DSensorNodes (enabled/isActive), 2D geoms, Disk2D
11/12 []() defs 12/26 match x3d fcd except x3dabstracts 01/04 sequencer next/prev 01/08 Hanim X3DBoundedObject 01/09 aded index to Triangle*Set, linewidthscalefactor default, ?X3DUrlObject for movietexture, remove url from x3DSoundSourceNode 01/10 X3DComposedGeometryNode, Inline, 01/12 linetype 01/13 creaseAngle in Trisets 01/22 MovieTexture soundsourcenode 01/23 extrusion, elevationgrid to x3dgeometerynode, LineProperties linetype 01/25 Contour2D children, HAnimHumanoid 01/26 geolod, hanim, GeoElevationGrid, geoviewpoint 01/27 coorddeformer 01/30 x3dboundednode updates 02/04 x3dgroupingnode, Dis rec, signal, trans , X3DShapeNode, sphere 02/10 colission reorder, GeoElevationGrid set_height instead of y-scale, GeoViewpoint moved description, MovieTexture changed order, StringSensor deletionAllowed Bool 02/15 X3DSoundSourceNode is x3durlobject X3DSoundSourceNode remove isActive GeoElevationGrid : X3DGeometryNode SFFloat [] creaseAngle 02/22 added faceset, lineset, indexedtri...set 02/23 updates to sets 02/26 X3DTextureCoordinateNode, GeoCoordinate 03/01 Audioclip Script GeoElevationGrid X3DSoundSourceNode Viewpoint 03/03 CoordinateDeformer NurbsPositionInterpolator 03/27 MovieTexture 04/02 X3DTimeDependentNode 04/05 multitexture, transform 04/18 new NURBS 04/23 Collision delete enabled and isActive, GeoLOD (Switch) 04/29 rendering, 11, indexed tri nodes 04/30 no faceset,. nurbs cleanup 05/02 x3dGeometryNode solid 05/05 solid for text and 2D, set_index for ITS, ITSS, ITFS; DIS nodes update, lineWidthScaleFactor 05/10 Collision, LineProperties 05/11 Metadata nodes 06/09 [NULL] in multitexturecoordinate and multitexturetransform
08/07 added metadata 09/01 x3dfield x3darrayfield, import/export
09/06 remove x3dobject
09/10 movietexture x3durlobject 10/15 proto, solid(s) 2004/09/14-15 spaces 09/19 HAnimDisplacer
2004/10/11 added Am1
20070121 added rev1 35,36,37,38,39,40
20070125 put this out there a bit early
20070126 many changes to catch up with revs to stufff i hadn't noticed had changed. like DIS
20070127 last pass through this for now. Found many details 20079128 some more details, some big 20070130 last var types ooow, SFTime [out] elapsedTime 40 <type>
20070217 update to latest r1, 0225 desc, ities, dcoord [NULL] (-∞,∞) 0228 WindPhysicsModel
20070428 added event util notes
0429 by: Rex Melton 24.3.1 X3DBackgroundNode 24.4.1 Background 24.4.5 TextureBackground All declare the field: MFFloat [in,out] transparency 0 [0,1] Should be an SFFloat. 0517 added script services 0610 various X3DUrlObject
20080721 updated links to latest standards, need to check rev1->ed2 changes to nodes. PickSensor names booleantoggle Rigid props LocalFog Fog X3DFogObject visibility range not neg