In this section we will discuss a variety of techniques for displaying a subset of the volume.
Like all primitives in Open Inventor, volume primitives can be clipped against an arbitrary plane in 3D space using OpenGL clip planes. You can use SoClipPlane( C++ | Java | .NET ) nodes to define up to six clip planes. You can also use an SoOrthoSlice( C++ | Java | .NET ) node to define an OpenGL clip plane by setting the clipping field to TRUE. While clip planes can produce the desired visual result, they have some disadvantages for volume visualization. Because the clipping occurs in the rendering pipeline on the GPU, VolumeViz has to load data in system memory and in GPU memory that potentially is not needed for rendering. For large volumes it is usually more efficient to use one of the VolumeViz specific clipping nodes discussed in this section. For these nodes VolumeViz is aware of what data needs to be loaded and can optimize the use of system and GPU memory. For example the SoROI( C++ | Java | .NET ) node can be used to efficiently clip volume primitives against an axis aligned plane and the SoUniformGridClipping( C++ | Java | .NET ) node can be used to clip volume primitives against an arbitrary plane.
All the VolumeViz clipping nodes affect all the VolumeViz primitives, but do not affect core Open Inventor geometry. If the scene contains polygonal geometry like SoIndexedFaceSet( C++ | Java | .NET ), inside the volume (hybrid rendering), then using SoClipPlane( C++ | Java | .NET ) may be necessary because it affects both the polygonal geometry and the volume primitives.
All of the VolumeViz clipping nodes can do much more complex clipping (for volume primitives) than is possible with OpenGL clip planes. However the VolumeViz clipping nodes can also be combined to handle the most demanding segmentation and volume "sculpting" requirements. For example a seismic application extracting "geobodies" might use a height field clipping node to clip between two "horizon" surfaces, then additionally use a polygon clipping node to also clip against an extruded shape.
All the VolumeViz clipping node affect all the VolumeViz primitives, but there are some limitations for the SoVolumeSkin( C++ | Java | .NET ) node. SoVolumeSkin( C++ | Java | .NET ) works very well with SoROI( C++ | Java | .NET ). When clipping with a region of interest node, the volume skin will render the faces of the ROI (including the exclusion box region) making this combination an effective "volume probe". However the other clipping nodes (as well as SoClipPlane( C++ | Java | .NET )) will simply remove parts of the volume skin, potentially allowing the user to see "inside".