To hide the “background”, set your scalar opacity transfer function’s value to 0 at the intensity.
However, the main challenge in rendering segmentations (multiple ROIs) from 3d labelmap volumes is that you need to have smooth edges if you want to be able to recognize shapes.
If you just volume render a labelmap volume with nearest neighbor interpolation then the rendering is very blocky, does not look nice and shape is not easily visible:
If you use linear interpolation then the surface is smooth but you get edge artifacts (at the boundary of each ROI, color of all the other ROI will appear that has lower voxel value):
The traditional solution is to render segmentations as surface mesh (extract surface using flying edges filter then apply windowed sinc smoothing to remove staircase artifacts). This is what we currently use in 3D Slicer:
Recently we’ve made multivolume rendering capable of rendering with shading, so now it is possible to use a separate volume renderer for each segment, and so there are no more edge artifacts:
This rendering method is useful because for complex segmentations, surface extraction and smoothing may take several seconds, while volume rendering is instantaneous. However, it need more memory, makes segmentation rendering very GPU-intensive, and when a segment changes it may still be necessary to apply Gaussian smoothing to remove staircase artifacts. So, most likely multi-volume rendering will not replace surface rendering in all use cases.