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

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       Pi/4   [0,Pi]
  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,Inf)
  SFFloat [in,out] variation   0.25  [0,Inf)
  SFFloat []       mass        0     [0,Inf)
  SFFloat []       surfaceArea 0     [0,Inf)
}

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

GravityPhysicsModel : X3DParticlePhysicsModelNode { 
  SFBool  [in,out] enabled  TRUE
  SFVec3f [in,out] force    0 -9.8 0 (Inf,Inf)
  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,Inf)
  SFNode   [in,out] metadata          NULL      [X3DMetadataObject]
  SFFloat  [in,out] particleLifetime  5         [0,Inf)
  SFVec2f  [in,out] particleSize      0.02 0.02 [0,Inf)
  SFBool   [out]    isActive
  SFVec3f  []       bboxCenter        0 0 0
  SFVec3f  []       bboxSize          -1 -1 -1  (0,Inf) or -1 -1 -1
  SFNode   []       colorRamp         NULL      [X3DColorNode]
  MFFloat  []       colorKey          NULL      [0,Inf)
  SFNode   []       emitter           NULL      [X3DParticleEmitterNode]
  SFString []       geometryType      "QUAD"    ["LINE"|"POINT"|"QUAD"|"SPRITE"|"TRIANGLE"|"GEOMETRY"|...]
  MFNode   []       physics           []        [X3DParticlePhysicsModelNode]
  SFNode   []       texCoordRamp      NULL      [TextureCoordinate]
  MFFloat  []       texCoordKey       []        [0,Inf)
}

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,Inf)
  SFFloat [in,out] variation   0.25  [0,Inf)
  SFFloat []       mass        0     [0,Inf)
  SFFloat []       surfaceArea 0     [0,Inf)
}

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

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

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

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

