X3DAppearanceChildNode : X3DNode {
}

X3DAppearanceNode : X3DNode {
}

X3DMaterialNode : X3DAppearanceChildNode {
}

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

  # EXTENSIONS:
  SFString [in,out]    shading            "DEFAULT" # ["DEFAULT"|"PHONG"|"WIREFRAME"]
  SFNode  []           octreeTriangles    NULL    # only KambiOctreeProperties node
  # InstantReality extension, http://doc.instantreality.org/documentation/nodetype/Shape/
  SFBool  [in,out]     render             TRUE

}

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

  # EXTENSIONS:
  MFNode     []            receiveShadows  []          # [X3DLightNode] list
  SFBool     [in,out]      shadowCaster     TRUE
  SFNode     [in,out]      normalMap        NULL        # only texture nodes (ImageTexture, MovieTexture, PixelTexture) allowed
  SFNode     [in,out]      heightMap        NULL        # only texture nodes (ImageTexture, MovieTexture, PixelTexture) allowed
  SFFloat    [in,out]      heightMapScale   0.01        # must be > 0, meaningful only if heightMap specified
  SFNode     [in,out]      blendMode        NULL        # [BlendMode]
  MFNode     []            effects          []          # [Effect]
}

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,Inf)
}

LineProperties : X3DAppearanceChildNode {
  SFBool  [in,out] applied              TRUE
  SFInt32 [in,out] linetype             1    [1,Inf)
  SFFloat [in,out] linewidthScaleFactor 0    (-Inf,Inf)
}

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]
  SFFloat [in,out] shininess        0.2         [0,1]
  SFColor [in,out] specularColor    0 0 0       [0,1]
  SFFloat [in,out] transparency     0           [0,1]

  # EXTENSIONS:
  SFFloat    [in,out]      mirror      0.0         # [0.0; 1.0]
  MFColor    [in,out]      reflSpecular          []          # specular reflectance
  MFColor    [in,out]      reflDiffuse           []          # diffuse reflectance
  MFColor    [in,out]      transSpecular         []          # specular transmittance
  MFColor    [in,out]      transDiffuse          []          # diffuse transmittance
  SFFloat    [in,out]      reflSpecularExp       1000000     # specular reflectance exponent
  SFFloat    [in,out]      transSpecularExp      1000000     # specular transmittance exponent
}

Shape : X3DShapeNode {
}

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]
  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]
}
