SoGVRVolumeRenderer
-
InventorModule
genre |
VolRend |
author |
Florian Link |
package |
MeVisLab/Standard |
dll |
SoGVR |
definition |
soGVR.def |
see also |
View3D, SoGVRTagVolume, SoGVRGradientVolume, SoGVRTagObjectStyle, SoGVRIlluminationSettings, SoGVRSubVolumeSettings, SoGVRQualitySettings, SoGVRIncrementalUpdater |
keywords |
rendering, maximum, minimum, intensity, projection, 3D |
Purpose
For general details about the GVR and its extensions, have a look at Giga Voxel Renderer.
The SoGVRVolumeRenderer is an octree-based render that allows high-quality Volume Rendering of 3D/4D images. The SoGVRVolumeRenderer is the main rendering module and is complemented with a set of extension modules that allow to customize the rendering. All extensions start with the SoGVR* prefix and are listed on the Giga Voxel Renderer page. The acronym GVR is used in the following text as substitute for Giga Voxel Render.
Usage
The SoGVRVolumeRenderer module is placed into an Open Inventor scene and accepts either an ML image or an octree (GVRVolume) as main volume dataset.
Tips
The same SoGVRVolumeRenderer can render its connected volume dataset with different render modes/shading, this is done by reusing the same volume renderer in different Open Inventor scenes and by customizing the rendering using the GVR extensions, e.g. the SoGVRIlluminationSettings. This allows to share the same textures/data structures and just apply different camera settings/shaders/clipping etc. to the rendering. A single renderer can thus drive multiple views of the same dataset, including mixed slab and 3D rendering. It is important to add a SoGVRIncrementalUpdater module to each separate scene to avoid that the incremental update feature of the GVR triggers repaints on all scenes.
Windows
Default Panel
Data Loading
- Load Volume - loads the given volume (if auto load is turned off)
- Auto load - set if the module should load the given input volume whenever it changes
- Force 8 Bit - If this flag is enabled, the input data is scaled to fit into 8 bit data (only of the image is given by the input image, not when given by the inVolume field)
View mode
- Render Mode - Sets the render mode that the renderer uses.
* Direct: Direct volume rendering (with optional mask volume and tag volume support)
* Illuminated: Illuminated volume rendering (with 3 directional light sources, tone shading, boundary and silhouette enhancement, optional mask volume and tag volume support and per tag shaders)
- Blend Mode
Quality
- Interactive/Static Quality
sets the interactive and the static quality of the rendering.
The quality value defines the percentage of the texture memory as given in GVRCacheManager that the GVR may use for the rendering. A value of 1 means that the whole texture memory will be used, smaller values will result in faster renderings on big volumes.
- Interactive/Static Sampling Rate
allows to set the sampling rate of the rendering (only in High Quality mode).
A value of 1 means that the complete volume is sampled with an internal sampling rate of 2 so that the Nyquist theorem is fullfilled and each voxel is sampled. Higher sampling rates can be set to archieve higher quality images, especially for low-res input images. Sampling rates lower than 1 lead to heavy artefacts but can be used to speed up rendering. You can also consider using a SoFrameBufferRender to reduce the sampling in the image place instead of changing the sampling rate. We discourage settings sampling rates below 1, better reduce the Interactive Quality instead. Note that the sampling rate is NOT used when the GVR renders slabs on a SoView2DScene, since it will render exactly the slices that the SoView2D would render for that slab.
- Incremental updates - this feature allows the GVR to schedule multiple incremental updates if the initial
static image is not of the desired image quality, because it still needs loading from disk.This should be turned on since it leads a very interactive user feeling
NOTE: Be careful when you want to use the same SoGVRVolumeRenderer with incremental updates in multiple viewers at the same point in time. This requires an individual SoGVRIncrementalUpdater for each of the Inventor scenes.
LUT
The SoGVRVolumeRenderer has an internal lookup table that is typically overwriten with a more advanced LUT module that is placed in front of the renderer module in the scene graph.
The internal LUT represents a simple grey and alpha ramp that can be multiplied by a color and an alpha factor. A typical LUT module that is placed in front of a SoGVRVolumeRenderer is the SoLUTEditor, which allows to interactively design a LUT.
Illumination
The Illumination settings are use when the Render Mode is set to "Illuminated". They are described in detail in the SoGVRIlluminationSettings. The Illumination settings require that the GVR calculates gradients. The gradients and the gradient strenght are calculated by a Sobel3D gradient estimator. Alternatively the gradients are calulated on-the-fly using central difference (when gradient quality is set to Highest or in some render modes, e.g. the Ray Caster). The gradients can also be supplied by the user using a SoGVRGradientVolume. The following settings affect the gradient quality and more importantly their memory consumption:
ROI/SubVolume
The subvolume that the renderer shows can be selected by three interval sliders. The rendered temporal position can be selected. When a ROI is selected, the renderer will automatically calculate the possible render resolution according to the quality settings depending on the size of the ROI. This means that even on a very large volume the renderer can render small ROIs in full resolution. When the data is stored in a cache file, the renderer can interactively load the required full resolution from disk whenever the ROI changes.
Select/Picking
The renderer supports selection aka picking via an Inventor Scene. The picking will only be active if there is a picking node in the scene, e.g. a SoSelection group.
- Selection active - enable picking
- Alpha threshold
defines the alpha threshold that should be used for picking, this means that for Direct rendering with Blending the renderer will cast a ray and report the first hit of a voxel whose opacity/alpha (according to the LUT) is above the given threshold
For the MIP rendering, the maximum hit voxel on the ray is returned.
- Voxel Position
gives the voxel coordinate of the hit voxel in sub-voxel precision (in voxel coordinates, from (0,0,0) to (volumeSizeX, Y,Z))
- World Position
gives the voxel coordinate of the hit voxel in sub-voxel precision (in world coordinates)
For advanced picking, have a look at the SoGVRPickResult, which provides complete picking profile curves of all involved volumes, including the mask, secondary, tag and transformed volumes.
Advanced
The advanced section contains features that are rarely used and have good default settings (this means, don't change them when you do not need to!):
- Filter Volume - switch between neighest neighbor (disabled) and trilinear volume filtering (enabled, strongly recommended)
- Filter LUT - switch between neighest neighbor (disabled) and trilinear LUT filtering (enabled, recommended)
- Use world coordinates - the renderer draws the volume at the correct postion given by the world matrix of the original image. If turned off, it will draw in voxel coordinates, from (0,0,0) to (volumeSizeX, Y,Z).
- Adapt quality to window size - the renderer calculates the footprint of the current bounding box on the rendered window and selects a low-res octree level if the projection results in heavy oversampling
- Enable Z buffer - leaves the Z buffer turned on, if disabled the renderer ignores the contents in the depth buffer
- Permit clipping - allows the Open Inventor clipping planes to clip the volume. If turned off, the clip planes do not affect the renderer
- Use Image Cache File - allows to bypass the input image and inVolume fields and directly loads a volume from a gvr cache file (it is preferred to use a GVRVolumeLoad module instead!)
- Image Cache File - sets the path to the gvr volume (it is preferred to use a GVRVolumeLoad module instead!)
Octree settings
The octree settings are only applied to volumes that are generated by the image input of the module, for details on the settings see the GVRVolumeSave module. The defaults are the best settings on current hardware.
Output Fields
outHistogram
-
name: outHistogram, type: MLBase
the histogram of the internally loaded volume to be used e.g. in a SoLUTEditor or Diagram2D
self
-
name: self, type: SoNode
the renderer node that should be placed into an Open Inventor scene e.g. into a SoExaminerViewer
Parameter Fields
Visible Fields
On
-
name: on, type: Bool, default: TRUE, deprecated name: onOff
Enables the renderer.
Auto Load
-
name: autoLoad, type: Bool, default: TRUE
defines if the renderer automatically loads its input volume when it changes
Load Volume
-
name: loadVolume, type: Trigger
Triggers loading of the volume if Auto Load is disabled.
Quality (interactiveQuality)
-
name: interactiveQuality, type: Float, default: 0.1, minimum: 0.01, maximum: 1
Defines the quality the renderer uses for interactive rendering.
Quality (staticQuality)
-
name: staticQuality, type: Float, default: 1, minimum: 0.01, maximum: 1
Defines the quality the renderer uses for static rendering.
Sampling Rate (interactiveSamplingRate)
-
name: interactiveSamplingRate, type: Float, default: 1, minimum: 0.01, maximum: 10
Defines the sampling rate for interactive rendering. A sampling rate of 1.0 means an internal sampling rate of 2.0 to fullfill the nyquist theorem.
Sampling Rate (staticSamplingRate)
-
name: staticSamplingRate, type: Float, default: 1, minimum: 0.01, maximum: 10
Defines the sampling rate for static rendering. A sampling rate of 1.0 means an internal sampling rate of 2.0 to fullfill the nyquist theorem.
Blend Mode
-
name: blendMode, type: Enum, default: Blend, deprecated name: gvrBlendMode
selects the blend mode that is used
Values:
Title |
Name |
Description |
Blend |
Blend |
Blending (c = (1-alpha)*c1 + (alpha)*c2) |
Add |
Add |
Add (c = c1 + c2) |
Mip |
MIP |
MIP (maximum intensity projection) |
Min IP |
MinIP |
MinIP (minimum intensity projection)
Keep in mind that you will need a white background to correctly render in this blend mode! |
Reverse Subtract |
ReverseSubtract |
ReverseSubtract |
Subtract |
Subtract |
Substract |
Octree Node Size
-
name: octreeNodeSize, type: Enum, default: NODE_SIZE_32, deprecated name: gvrNodeSize
Defines the node size of the Octree.
Values:
Title |
Name |
Description |
16 |
NODE_SIZE_16 |
16 |
32 |
NODE_SIZE_32 |
32 |
64 |
NODE_SIZE_64 |
64 |
Downsampling Method
-
name: octreeParentComputationMethod, type: Enum, default: Rank, deprecated name: gvrParentComputationMethod
Defines which filter the renderer uses for octree generation.
Values:
Title |
Name |
Description |
Average |
Average |
Averages 8 neighbor voxels. |
Rank |
Rank |
Ranks 8 neighbor voxels. |
Downsampling Rank
-
name: octreeParentComputationRank, type: Integer, default: 4, minimum: 0, maximum: 7, deprecated name: gvrParentComputationRank
Defines the rank of the Downsampling Method.
Temporal position
-
name: currentTimePoint, type: Integer, default: 0, minimum: 0, maximum: :field:`maxTimePoint`
Defines the temporal position that is renderer.
Force 8 bit
-
name: force8bit, type: Bool, default: FALSE
Forces the renderer to load the data as 8-bit textures.
Filter Volume Data
-
name: filterVolumeData, type: Enum, default: FilterLinear
Defines how the main volume is filtered.
Values:
Title |
Name |
Description |
Nearest |
FilterNearest |
Use nearest neighbor filtering. |
Linear |
FilterLinear |
Use linear filtering. |
Linear Pre Class |
FilterLinearPreClass |
Use pre-classified filtering, this is useful for rendering LUTs that contain trace colors that should not be interpolated. (It is an expensive rendermode, since it requires 16 texture fetches per voxel). |
Cubic |
FilterCubic |
Use cubic filtering for smoother volume rendering. Although the smoothing is done in the shader, this is an expensive filter mode. |
Filter Lut
-
name: filterLut, type: Bool, default: TRUE
Enables linear filtering of the LUT texture
Reset Subvolume
-
name: resetSubVolume, type: Trigger
Resets the sub volume to the complete volume.
X (subVolumeStartX)
-
name: subVolumeStartX, type: Integer, default: 0, minimum: 0, maximum: :field:`sizeOutputX`, deprecated name: subVolOriginX
Subvolume definition.
Y (subVolumeStartY)
-
name: subVolumeStartY, type: Integer, default: 0, minimum: 0, maximum: :field:`sizeOutputY`, deprecated name: subVolOriginY
Subvolume definition.
Z (subVolumeStartZ)
-
name: subVolumeStartZ, type: Integer, default: 0, minimum: 0, maximum: :field:`sizeOutputZ`, deprecated name: subVolOriginZ
Subvolume definition.
X (subVolumeEndX)
-
name: subVolumeEndX, type: Integer, default: 0, minimum: 1, maximum: :field:`sizeOutputX`
Subvolume definition.
Y (subVolumeEndY)
-
name: subVolumeEndY, type: Integer, default: 0, minimum: 1, maximum: :field:`sizeOutputY`
Subvolume definition.
Z (subVolumeEndZ)
-
name: subVolumeEndZ, type: Integer, default: 0, minimum: 1, maximum: :field:`sizeOutputZ`
Subvolume definition.
Enable Z buffer
-
name: zbuffer, type: Bool, default: TRUE
Enables the Z-buffer while rendering
Permit Clipping
-
name: permitClipping, type: Bool, default: TRUE
Enables clipping with the OpenGL clip planes.
Incremental Update
-
name: incrementalUpdate, type: Bool, default: TRUE
Enables incremental updating of the renderer by triggering a repaint via a timer. Make sure to add a SoGVRIncrementalUpdater to each viewer that shares the same renderer.
Adapt Quality To Window Size
-
name: adaptQualityToWindowSize, type: Bool, default: TRUE
if enabled, the renderer chooses an octree resolution that matches the projected screen size
Render Mode
-
name: renderMode, type: Enum, default: Direct, deprecated name: gvrRenderMode
Sets the used render mode.
Values:
Title |
Name |
Deprecated Name |
Description |
Direct |
Direct |
|
Direct Volume Rendering |
Illuminated |
Illuminated |
Surface |
Illuminated/Shaded Volume Rendering (see Illumination tab). |
Use Image Cache File
-
name: useImageCacheFile, type: Bool, default: FALSE
Enables the usage of Image Cache Filename (deprecated, don't use it)
Image Cache Filename
-
name: imageCacheFilename, type: String
Defines the volume data cache file that should be used (deprecated, should not be used any longer), use the module
s inputs instead.
Center (greyCenter)
-
name: greyCenter, type: Float, default: 0.5, minimum: 0, maximum: 1
center of grey LUT
Width (greyWidth)
-
name: greyWidth, type: Float, default: 0.5, minimum: 0, maximum: 1
Defines the grey ramp width (internal LUT).
Invert (greyInvert)
-
name: greyInvert, type: Bool, default: FALSE
Invert the grey ramp of the builtin LUT.
Center (alphaCenter)
-
name: alphaCenter, type: Float, default: 0.5, minimum: 0, maximum: 1
center of alpha LUT
Width (alphaWidth)
-
name: alphaWidth, type: Float, default: 0.5, minimum: 0, maximum: 1
Defines the alpha ramp width (internal LUT).
Invert (alphaInvert)
-
name: alphaInvert, type: Bool, default: FALSE
Invert the alpha ramp of the builtin LUT.
Color (colorFactor)
-
name: colorFactor, type: Color, default: 1 1 1
factor that is applied to the color if the internal LUT
Alpha
-
name: alphaFactor, type: Float, default: 1, minimum: 0, maximum: 1
defines the alpha factor of the builtin LUT
Add Original Alpha
-
name: enhancementAlphaMix, type: Float, default: 0.25, minimum: 0, maximum: 1
defines how much of the original alpha is mixed to the enhancement
Enabled (boundaryEnhancement)
-
name: boundaryEnhancement, type: Bool, default: FALSE
Enables boundary enhancement
Weight (boundaryEnhancementFactor)
-
name: boundaryEnhancementFactor, type: Float, default: 1, minimum: 0, maximum: 50
Defines the weight for the boundary enhancement.
Exponent (boundaryEnhancementExponent)
-
name: boundaryEnhancementExponent, type: Float, default: 1, minimum: 0.1, maximum: 50
defines the boundary enhancement exponent
Bias
-
name: boundaryEnhancementGradientBias, type: Float, default: 0, minimum: -1, maximum: 1
defines the bias for boundary enhancement
Enabled (silhouetteEnhancement)
-
name: silhouetteEnhancement, type: Bool, default: FALSE
enables silhouetteEnhancement
Exponent (silhouetteEnhancementExponent)
-
name: silhouetteEnhancementExponent, type: Float, default: 1, minimum: 0.1, maximum: 50
defines the silhouetteEnhancementExponent
Weight (silhouetteEnhancementFactor)
-
name: silhouetteEnhancementFactor, type: Float, default: 1, minimum: 0, maximum: 20
Defines the weight for the silhouette enhancement.
Enabled (toneShading)
-
name: toneShading, type: Bool, default: FALSE
enables tone shading
Warm Color
-
name: toneShadingWarmColor, type: Color, default: 0.674509823322296 0.533333361148834 0.141176477074623
Defines the warm color of the tone shading.
Cold Color
-
name: toneShadingColdColor, type: Color, default: 0 0 0.400000005960464
cold color of tone shading
Warm Diffuse
-
name: toneShadingWarmDiffuse, type: Float, default: 0.60000002, minimum: 0, maximum: 1
Defines the warm diffuse factor of the tone shading
Cold Diffuse
-
name: toneShadingColdDiffuse, type: Float, default: 0.2, minimum: 0, maximum: 1
diffuse light of cold color
Angle
-
name: toneShadingAngle, type: Float, default: 45, minimum: -180, maximum: 180
Defines the angle of the tone shading.
Ambient
-
name: materialAmbient, type: Float, default: 0.60000002, minimum: 0, maximum: 1
defines the ambient light
Diffuse
-
name: materialDiffuse, type: Float, default: 1, minimum: 0, maximum: 1
overall diffuse factor for all lights
Specular
-
name: materialSpecular, type: Float, default: 1, minimum: 0, maximum: 1
Defines the overall specular intensity for all lights.
Specularity
-
name: materialSpecularity, type: Float, default: 32, minimum: 1, maximum: 128
Defines the specularity exponent of the lights.
Reduce Lighting On Low Gradient Magnitude
-
name: reduceLightingOnLowGradientMagnitude, type: Bool, default: FALSE
Reduces the lighting on low gradient magnitudes.
Enabled (light1Enabled)
-
name: light1Enabled, type: Bool, default: TRUE
enables light1
Diffuse Intensity (light1DiffuseIntensity)
-
name: light1DiffuseIntensity, type: Float, default: 1, minimum: 0, maximum: 1
diffuse intensity of light1
Specular Intensity (light1SpecularIntensity)
-
name: light1SpecularIntensity, type: Float, default: 1, minimum: 0, maximum: 1
Defines the specular intensity for light1.
Color (light1Color)
-
name: light1Color, type: Color, default: 1 1 1
color of light1
Azimuth (light1PolarPhi)
-
name: light1PolarPhi, type: Float, default: 0, minimum: -180, maximum: 180
Defines the light angle.
Altitude (light1PolarRho)
-
name: light1PolarRho, type: Float, default: 0, minimum: -180, maximum: 180
Defines the light angle.
Enabled (light2Enabled)
-
name: light2Enabled, type: Bool, default: FALSE
enables light2
Diffuse Intensity (light2DiffuseIntensity)
-
name: light2DiffuseIntensity, type: Float, default: 1, minimum: 0, maximum: 1
diffuse intensity of light2
Specular Intensity (light2SpecularIntensity)
-
name: light2SpecularIntensity, type: Float, default: 1, minimum: 0, maximum: 1
Defines the specular intensity for light2.
Color (light2Color)
-
name: light2Color, type: Color, default: 1 1 1
color of light2
Azimuth (light2PolarPhi)
-
name: light2PolarPhi, type: Float, default: 45, minimum: -180, maximum: 180
Defines the light angle.
Altitude (light2PolarRho)
-
name: light2PolarRho, type: Float, default: 45, minimum: -180, maximum: 180
Defines the light angle.
Enabled (light3Enabled)
-
name: light3Enabled, type: Bool, default: FALSE
enables light3
Diffuse Intensity (light3DiffuseIntensity)
-
name: light3DiffuseIntensity, type: Float, default: 1, minimum: 0, maximum: 1
diffuse intensity of light3
Specular Intensity (light3SpecularIntensity)
-
name: light3SpecularIntensity, type: Float, default: 1, minimum: 0, maximum: 1
Defines the specular intensity for light3.
Color (light3Color)
-
name: light3Color, type: Color, default: 1 1 1
color of light3
Azimuth (light3PolarPhi)
-
name: light3PolarPhi, type: Float, default: -45, minimum: -180, maximum: 180
Defines the light angle.
Altitude (light3PolarRho)
-
name: light3PolarRho, type: Float, default: 0, minimum: -180, maximum: 180
Defines the light angle.
Gradient Quality
-
name: gradientQuality, type: Enum, default: GradientQualityAutomatic
Defines the gradient quality.
Values:
Title |
Name |
Description |
Automatic |
GradientQualityAutomatic |
Automatic gradient quality chooses the best tradeoff between speed and memory efficiency, depening on the render mode and the graphics card. |
Lowest |
GradientQualityLowest |
|
Low |
GradientQualityLow |
|
Medium |
GradientQualityMedium |
|
High |
GradientQualityHigh |
|
Highest |
GradientQualityHighest |
|
Alpha threshold
-
name: selectionAlphaThreshold, type: Float, default: 0.2, minimum: 0, maximum: 1, deprecated name: alphaThreshold
defines the alpha value for picking (if blending is used)
Voxel Position
-
name: selectedPoint1, type: Vector3, default: -1 -1 -1
Gives the picked point in voxel coordinates.
World Position
-
name: selectedWorldPoint1, type: Vector3, default: -1 -1 -1, deprecated name: selectedWPoint1
Defines the picked position in world coordinates.
Selection Active
-
name: selectionActive, type: Bool, default: FALSE
Enables picking.
Use world coordinates
-
name: useWorldCoords, type: Bool, default: TRUE
Enables rendering in world coordinates. Otherwise the rendering is done in voxel coordinates.
Hidden Fields
renderCaching
-
name: renderCaching, type: Enum, default: AUTO
Values:
Title |
Name |
On |
ON |
Off |
OFF |
Auto |
AUTO |
boundingBoxCaching
-
name: boundingBoxCaching, type: Enum, default: AUTO
Values:
Title |
Name |
On |
ON |
Off |
OFF |
Auto |
AUTO |
renderCulling
-
name: renderCulling, type: Enum, default: AUTO
Values:
Title |
Name |
On |
ON |
Off |
OFF |
Auto |
AUTO |
pickCulling
-
name: pickCulling, type: Enum, default: AUTO
Values:
Title |
Name |
On |
ON |
Off |
OFF |
Auto |
AUTO |
maxTimePoint
-
name: maxTimePoint, type: Integer, default: 0
has3DTextureSupport
-
name: has3DTextureSupport, type: Bool, persistent: no
hasGLSLSupport
-
name: hasGLSLSupport, type: Bool, persistent: no
drawOnPlanes
-
name: drawOnPlanes, type: Bool, default: TRUE
sizeOutputX
-
name: sizeOutputX, type: Integer, default: 0
sizeOutputY
-
name: sizeOutputY, type: Integer, default: 0
sizeOutputZ
-
name: sizeOutputZ, type: Integer, default: 0
highQualityStaticUpdate
-
name: highQualityStaticUpdate, type: Bool, default: FALSE
staticRenderingAfterInteractionOnly
-
name: staticRenderingAfterInteractionOnly, type: Bool, default: FALSE
rayCastTextureStorage
-
name: rayCastTextureStorage, type: Enum, default: RayCastTextureStorage_Auto
Values:
Title |
Name |
Auto |
RayCastTextureStorage_Auto |
Whole Volume |
RayCastTextureStorage_WholeVolume |
Bricked |
RayCastTextureStorage_Bricked |
lutInfo
-
name: lutInfo, type: String, persistent: no
localLutOn
-
name: localLutOn, type: Bool, persistent: no