Class SoVolumeGroup
- All Implemented Interfaces:
SafeDisposable
SoVolumeGroup node allows multiple volumes to be volume rendered (SoVolumeRender) correctly in the same scene. All SoVolumeRender nodes that are under an active SoVolumeGroup node (multiVolumes=true) are rendered together with correct blending, subject to some limitations. Other VolumeViz geometry objects, for example SoOrthoSlice, are
not affected by SoVolumeGroup.
The SoVolumeRender nodes can represent different volume data sets (see SoVolumeData) or different subvolumes (see SoROI) of the same volume data set.
This node forces the use of view-aligned slices for SoVolumeRender nodes that will be composed. It doesn't, however, actually modify the SoVolumeRender.samplingAlignment fields. Rather the values of these fields are ignored during traversal.
The multiVolumes field (true by default) controls whether the SoVolumeGroup's special handling of SoVolumeRender nodes is applied. If the (sub)volumes being rendered do not overlap in 3D space or only one of the volumes is transparent, then SoVolumeGroup special handling is automatically disabled.
SoVolumeGroup is primarily intended for cases where the volumes are sampled on different grids. For example if the volume dimension, size (3D extent) or orientation are different. For volumes that are actually multiple data sets sampled on the same grid, for example seismic attribute volumes, it may be more appropriate to blend the volumes using an SoDataCompositor or SoVolumeShader node.
Since OIV 9.3, SoVolumeGroup supports EdgeDetection(Gradient, Luminance, Depth) and LowResMode (DECREASE_SCREEN_RESOLUTION). It can only apply these post process effects to either all or none of the volumes. If all fields corresponding to an effect are the same for all volumes, it activates the effect. If the fields are different, SoVolumeGroup uses the last value traversed.
Limitations:
- Performance:
There is a significant performance decrease whenmultiVolumesis enabled. - Shaders:
Using custom shaders (e.g.SoVolumeShaderorSoVolumeRenderingQuality) whenmultiVolumesis enabled gives incorrect lighting results. - Raycasting:
The volume raycasting render algorithm (SoVolumeShader.raycasting) is not supported whenmultiVolumesis enabled. This implies that ray-casting effects like voxelizedRendering, ambientOcclusion (SoVolumeRenderingQuality) and samplingAlignment = BOUNDARY_ALIGNED (SoVolumeRender) are not supported. WhenmultiVolumesis enabled, VolumeViz will automatically switch to "sliced" (texture mapped polygon) rendering. - Post process:
AmbientOcclusion and deferredLighting features are not supported when multiVolumes is enabled. - Shadows:
32-bit framebuffer options (see e.g. SoWinGLWidget.setFloatingColorBuffer) cannot be used if anSoVolumeGroupis inside anSoShadowGroup(request is ignored).
File format/default:
VolumeRender {
| multiVolumes | true |
Action behavior:
SoGLRenderAction
Draws a volume-rendered image based on current SoVolumeData.
SoGetBoundingBoxAction
Computes the bounding box that encloses the volume.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoSeparator
SoSeparator.Cachings, SoSeparator.FastEditings, SoSeparator.RenderUnitIdsNested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoNode
SoNode.RenderModesNested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand -
Field Summary
FieldsFields inherited from class com.openinventor.inventor.nodes.SoSeparator
boundingBoxCaching, fastEditing, pickCulling, renderCaching, renderCulling, renderUnitIdFields inherited from class com.openinventor.inventor.nodes.SoGroup
boundingBoxIgnoringFields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle -
Constructor Summary
Constructors -
Method Summary
Methods inherited from class com.openinventor.inventor.nodes.SoGroup
addChild, findChild, getChild, getNumChildren, insertChild, removeAllChildren, removeChild, removeChild, replaceChild, replaceChildMethods inherited from class com.openinventor.inventor.nodes.SoNode
affectsState, callback, copy, copy, distribute, doAction, getAlternateRep, getBoundingBox, getByName, getMatrix, getPrimitiveCount, getRenderEngineMode, getRenderUnitID, GLRender, GLRenderBelowPath, GLRenderInPath, GLRenderOffPath, grabEventsCleanup, grabEventsSetup, handleEvent, isBoundingBoxIgnoring, isOverride, pick, rayPick, search, setOverride, touch, writeMethods inherited from class com.openinventor.inventor.fields.SoFieldContainer
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaultsMethods inherited from class com.openinventor.inventor.misc.SoBase
dispose, getName, isDisposable, isSynchronizable, setName, setSynchronizableMethods inherited from class com.openinventor.inventor.Inventor
getNativeResourceHandle
-
Field Details
-
multiVolumes
Activates the multi-volumes feature. Default is true. If set to false, behaves as a regularSoGroup.
-
-
Constructor Details
-
SoVolumeGroup
public SoVolumeGroup()Constructor.
-