IsoSurfaceVolumeData displays one or more surfaces extracted from a voxel dataset. A surface is defined as the boundary between regions in the volume where the voxel values are larger than a given value (the iso value) on one side of the boundary and smaller on the other side, and the gradient magnitude is larger than surfaceTolerance.

The IsoSurfaceVolumeData node belongs to the VolumeRendering component and requires at least level 2, its default container field is children. It is available from X3D version 3.3 or higher.


+ X3DNode
  + X3DChildNode
    + X3DVolumeDataNode (X3DBoundedObject)*
      + IsoSurfaceVolumeData

* Derived from multiple interfaces.


SFNode [in, out] metadata NULL [X3DMetadataObject]

Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node.


SFVec3f [in, out] dimensions 1 1 1 (0,∞)

Actual-size X-Y-Z dimensions of volume data in local coordinate system.

SFFloat [in, out] contourStepSize 0 (-∞,∞)

If contourStepSize is non-zero, also render all isosurfaces that are multiples of that step size from initial surface value.


  • contourStepSize can be negative so that steppping can proceed in a negative direction.

MFFloat [in, out] surfaceValues [ ] (-∞,∞)

If surfaceValues has one value defined, render corresponding isosurface plus any isosurfaces based on contourStepSize. If surfaceValues has more than one value defined, ignore contourStepSize and render surfaces corresponding to listed surfaceValues.

SFFloat [in, out] surfaceTolerance 0 [0,∞)

Threshold for gradient magnitude for voxel inolusion in isosurface.


  • Contained Texture3D node with containerField='gradients' can provide explicit per-voxel gradient direction information for determining surface boundaries.

SFBool [in, out] visible TRUE

Whether or not renderable content within this node is visually displayed.


  • The visible field has no effect on animation behaviors, event passing or other non-visual characteristics.
  • Content must be visible to be collidable and to be pickable.

SFBool [in, out] bboxDisplay FALSE

Whether to display bounding box for associated geometry, aligned with world coordinates.


  • The bounding box is displayed regardless of whether contained content is visible.

SFVec3f [ ] bboxSize -1 -1 -1 [0,∞) or −1 −1 −1

Bounding box size is usually omitted, and can easily be calculated automatically by an X3D player at scene-loading time with minimal computational cost. Bounding box size can also be defined as an optional authoring hint that suggests an optimization or constraint.


SFVec3f [ ] bboxCenter 0 0 0 (-∞,∞)

Bounding box center accompanies bboxSize and provides an optional hint for bounding box position offset from origin of local coordinate system.


MFNode [in, out] renderStyle [ ] [X3DVolumeRenderStyleNode]

Multiple contained X3DVolumeRenderStyleNode nodes corresponding to each isosurface that define specific rendering technique for this volumetric object.


  • If not defined, no default renderStyle is defined.

SFNode [in, out] gradients NULL [X3DTexture3DNode]

Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides explicit per-voxel gradient direction information for determining surface boundaries, rather than having it implicitly calculated by the implementation.

SFNode [in, out] voxels NULL [X3DTexture3DNode]

Single contained X3DTexture3DNode (ComposedTexture3D, ImageTexture3D, PixelTexture3D) that provides raw voxel information utilized by corresponding rendering styles. Any number of color components (1-4) may be defined.



  • IsoSurfaceVolumeData can contain a single Texture3D node with containerField='gradients' that is used to provide explicit per-voxel gradient direction information for determining surface boundaries, rather than having values implicitly calculated by the implementation.
  • IsoSurfaceVolumeData can contain another Texture3D node with containerField='voxels' containing voxel data.
  • IsoSurfaceVolumeData can contain multiple VolumeStyle nodes.


  • It is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
  • Requires X3D profile='Full' or else include <component name='VolumeRendering' level='2'/>


See Also

This post is licensed under CC BY 4.0 by the author.