X3DLayerNode : X3DNode {
  default-container-field: layers
  SFBool [in,out] isPickable TRUE
  SFNode [in,out] viewport NULL
    range: X3DViewportNode
}

X3DViewportNode : X3DGroupingNode {
}

Layer : X3DLayerNode {
  MFNode [in]     addChildren    []
    range: X3DChildNode
  MFNode [in]     removeChildren []
    range: X3DChildNode
  MFNode [in,out] children       []
    range: X3DChildNode
}

LayerSet : X3DNode {
  default-container-field: children
  SFInt32 [in,out]  activeLayer 0
    range: (-Inf,Inf)
  MFNode  [in,out]  layers      []
    range: X3DLayerNode
  MFInt32 [in,out]  order       [0]
    range: (0,Inf)
}

Viewport : X3DGroupingNode, X3DBoundedObject {
  MFFloat [in,out] clipBoundary   [0, 1, 0, 1]
    range: [0,1]
}
