The SoObliqueSlice node defines an oblique (arbitrarily oriented) slice which is the intersection of the volume data defined by an SoVolumeData node and the plane defined by the plane field. The plane is defined by an SbPlane which allows the plane to be defined several different ways. As shown below, the standard definition is a normal vector and the distance from the origin (0,0,0). The normal vector does not need to be normalized (this is done internally). For example, if the 3D extent of the volume is centered on zero, then the plane defined by the vector (0,0,1) and the distance 0 is a Z axis slice at the center of the volume, approximately the same as the first example SoOrthoSlice. The difference is that ortho slices are positioned at a specified voxel and are drawn through the center of that voxel, but oblique slices are positioned in 3D coordinates and do not necessarily pass through the center of any voxel. Similarly if the Z extent of the volume is -1..1, then the plane defined by vector (0,0,1) and distance 1 specifies a Z axis slice on the front face of the volume, similar to (part of) what SoVolumeSkin would draw. The sample code below specifies an oblique slice at an arbitrary orientation within the volume.
C++ :
C# :
Java :
All the usual slice properties for appearance and clipping apply to oblique slices. Like other slices, SoObliqueSlice is rendered by extracting data values from the intersected voxels on the CPU and generating a 2D texture which is stored on the GPU. Unlike other slices, SoObliqueSlice supports the interpolation option TRILINEAR, which is used during the data extraction process. By interpolating from neighboring voxels along all three axes, this generally produces more accurate and higher quality UserGuide_Images when the slice is rotated away from the primary axes of the volume.
VolumeViz does not support thickness as a slice property. However a "thick slice" (also known as "thin slab") rendering equivalent to an oblique slice can be achieved using volume rendering (SoVolumeRender), a flat uniform clipping grid with thickness (SoUniformGridClipping) and a transform node (for example SoTransform) to position and orient the clipping grid. See Height field clipping
It is also possible to extract the voxel values intersected by an oblique slice. For example an application doing Multiplanar Reconstruction (MPR) could extract the voxel values corresponding to an oblique slice and display the slice as a 2D image in a separate window using SoColorMap and SoIndexedTexture2. SoLDMDataAccess provides a getData() method that takes an SbPlane and can be used to extract the data on an oblique slice. This is explained further in Data Access and Computing