Class SoVolumeGroup
- java.lang.Object
-
- All Implemented Interfaces:
SafeDisposable
public class SoVolumeGroup extends SoSeparator
Groups multiple volumes to be volume rendered in the same scene. TheSoVolumeGroupnode allows multiple volumes to be volume rendered (SoVolumeRender) correctly in the same scene. AllSoVolumeRendernodes that are under an activeSoVolumeGroupnode (multiVolumes=true) are rendered together with correct blending, subject to some limitations. Other VolumeViz geometry objects, for exampleSoOrthoSlice, are not affected bySoVolumeGroup.The
SoVolumeRendernodes can represent different volume data sets (seeSoVolumeData) or different subvolumes (seeSoROI) of the same volume data set.This node forces the use of view-aligned slices for
SoVolumeRendernodes that will be composed. It doesn't, however, actually modify theSoVolumeRender.samplingAlignmentfields. Rather the values of these fields are ignored during traversal.The
multiVolumesfield (true by default) controls whether theSoVolumeGroup's special handling ofSoVolumeRendernodes is applied. If the (sub)volumes being rendered do not overlap in 3D space or only one of the volumes is transparent, thenSoVolumeGroupspecial handling is automatically disabled.SoVolumeGroupis 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 anSoDataCompositororSoVolumeShadernode.Since OIV 9.3, EdgeDetection (Gradient, Luminance, Depth) and LowResMode (DECREASE_SCREEN_RESOLUTION) effects are supported. These post process effects need to be applied to all or none of the volumes. If all fields corresponding to an effect are the same for each volume, the effect is activated. If fields are different then default value is used.
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 currentSoVolumeData.SoGetBoundingBoxAction
Computes the bounding box that encloses the volume.- See Also:
SoVolumeRender,SoSeparator,SoDataCompositor,SoVolumeShader
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoSeparator
SoSeparator.Cachings, SoSeparator.FastEditings, SoSeparator.RenderUnitIds
-
Nested classes/interfaces inherited from class com.openinventor.inventor.nodes.SoNode
SoNode.RenderModes
-
Nested classes/interfaces inherited from class com.openinventor.inventor.Inventor
Inventor.ConstructorCommand
-
-
Field Summary
Fields Modifier and Type Field Description SoSFBoolmultiVolumesActivates the multi-volumes feature.-
Fields inherited from class com.openinventor.inventor.nodes.SoSeparator
boundingBoxCaching, fastEditing, pickCulling, renderCaching, renderCulling, renderUnitId
-
Fields inherited from class com.openinventor.inventor.nodes.SoGroup
boundingBoxIgnoring
-
Fields inherited from class com.openinventor.inventor.Inventor
VERBOSE_LEVEL, ZeroHandle
-
-
Constructor Summary
Constructors Constructor Description SoVolumeGroup()Constructor.
-
Method Summary
-
Methods inherited from class com.openinventor.inventor.nodes.SoGroup
addChild, findChild, getChild, getNumChildren, insertChild, removeAllChildren, removeChild, removeChild, replaceChild, replaceChild
-
Methods 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, write
-
Methods inherited from class com.openinventor.inventor.fields.SoFieldContainer
copyFieldValues, copyFieldValues, enableNotify, fieldsAreEqual, get, getAllFields, getEventIn, getEventOut, getField, getFieldName, hasDefaultValues, isNotifyEnabled, set, setToDefaults
-
Methods inherited from class com.openinventor.inventor.misc.SoBase
dispose, getName, isDisposable, isSynchronizable, setName, setSynchronizable
-
Methods inherited from class com.openinventor.inventor.Inventor
getNativeResourceHandle
-
-