SoVolumeRenderingQuality Class Reference
[Nodes]

VolumeViz Volume rendering quality property mode More...

#include <VolumeViz/nodes/SoVolumeRenderingQuality.h>

Inheritance diagram for SoVolumeRenderingQuality:
SoVolumeShader SoShaderProgram SoNode SoFieldContainer SoBase SoRefCounter SoTypedObject

List of all members.

Public Types

enum  GradientQuality {
  LOW = SoVolumeShader::GRADIENT_FORWARD_DIFF,
  MEDIUM = SoVolumeShader::GRADIENT_CENTRAL_DIFF,
  HIGH = SoVolumeShader::GRADIENT_SOBEL
}
enum  LightingModel {
  OIV6 = SoVolumeShader::OIV6,
  OPENGL = SoVolumeShader::OPENGL
}
enum  EdgeDetect2DMethod {
  LUMINANCE = 1,
  DEPTH = 1 << 1,
  GRADIENT = 1 << 2
}

Public Member Functions

virtual SoType getTypeId () const
 SoVolumeRenderingQuality ()

Static Public Member Functions

static SoType getClassTypeId ()

Public Attributes

SoSFBool lighting
SoSFBool preIntegrated
SoSFBool jittering
SoSFFloat gradientThreshold
SoSFBool edgeColoring
SoSFColor edgeColor
SoSFFloat edgeThreshold
SoSFBool boundaryOpacity
SoSFFloat boundaryOpacityIntensity
SoSFFloat boundaryOpacityThreshold
SoSFBool edgeDetect2D
SoSFFloat edgeDetect2DInnerThreshold
SoSFFloat edgeDetect2DOuterThreshold
SoSFBitMask edgeDetect2DMethod
SoSFEnum gradientQuality
SoSFEnum lightingModel
SoSFBool colorInterpolation
SoSFFloat surfaceScalarExponent
SoSFFloat unnormalizedGradientExponent
SoSFBool segmentedInterpolation
SoSFFloat segmentedInterpolationThreshold
SoSFBool voxelizedRendering
SoSFBool voxelOutline
SoSFFloat voxelOutlineThreshold
SoSFFloat voxelOutlineWidth
SoSFColor voxelOutlineColor
SoSFBool ambientOcclusion
SoSFBool deferredLighting

Deprecated



SoDEPRECATED SoSFBool cubicInterpolation

Detailed Description

VolumeViz Volume rendering quality property mode

This property node causes subsequent SoVolumeRender nodes to be drawn with different rendering effects and/or levels of quality.

NOTE:

Pre-integrated and lighted rendering

Quality enhancement parameters

Image enhancement parameters

Volume projection

FILE FORMAT/DEFAULT

ACTION BEHAVIOR

SEE ALSO

SoVolumeRender, SoVolumeShader, SoVolumeIsosurface, SoTransferFunction

See related examples:

MedicalDentalCurveUnfolding, MedicalDicomReader, MedicalGLVolumeRender, MedicalAmbientOcclusion, MedicalCutting, MedicalDeferredLighting, MedicalEdge2D, MedicalSimpleLightedVolume, Medical4DVolumeRendering, MedicalAnatomicalViews, MedicalDTIViewer, MedicalFreeHandCutting, MedicalMarchingCubesSurface, MedicalSegmentation, MedicalBonesMuscles, MedicalVolumePickingGpu, MedicalMultiTransferFunctions, BonesMuscles, AmbientOcclusion, DeferredLighting, Edge2D, GL_VolumeRender, MultiChannel_ex2, GpuDataCompose, SegmentedInterpolation, SimpleClippingGroup, SimpleGridClipping, SimpleInteractiveParameters, SimpleLightedVolume, SurfaceScalar, VolRend


Member Enumeration Documentation

The edge detection algorithm used when edgeDetect2D is TRUE, can work on the image luminance, depth buffer and/or gradient.

These enums can be combined in the field edgeDetect2DMethod.

Enumerator:
LUMINANCE 

Edge detection will use the image's luminance.

This method has a very little impact on speed.

DEPTH 

Edge detection will use the image's depth buffer.

GRADIENT 

Edge detection will use the volume's gradient.

These gradients are affected by the surfaceScalarExponent fied. This method is the most computationally expensive.

Gradient Quality mode.

Enumerator:
LOW 

Use the forward difference technique to compute the gradient.

This is a fast technique but it gives a lower quality gradient.

MEDIUM 

Use the central difference technique to compute the gradient.

This is a compromise between quality and speed.

HIGH 

Use a Sobel filter to compute the gradient.

This gives hiqh quality gradients at the expense of speed.

Available Lighting Model mode.

Enumerator:
OIV6 

Use Open Inventor 6 lighting model for volume and isosurface lighting.

OPENGL 

Use the equation specified by OpenGL to do volume and isosurface lighting.

This model should be preferred because it responds to SoMaterial in the usual Open Inventor way.


Constructor & Destructor Documentation

SoVolumeRenderingQuality::SoVolumeRenderingQuality (  ) 

Constructor.


Member Function Documentation

static SoType SoVolumeRenderingQuality::getClassTypeId (  )  [static]

Returns the type identifier for this class.

Reimplemented from SoVolumeShader.

virtual SoType SoVolumeRenderingQuality::getTypeId (  )  const [virtual]

Returns the type identifier for this specific instance.

Reimplemented from SoVolumeShader.


Member Data Documentation

If true, apply an ambient occlusion effect (default is FALSE).

Ambient occlusion is an shading effect that approximates attenuation of light due to neighboring voxels. It works best when the volume data contains surfaces (region boundaries with relatively sharp gradients), or in voxelized rendering mode, and those voxels are opaque.

If you use ambientOcclusion, you should set the SoVolumeRender::samplingAlignment field to BOUNDARY_ALIGNED to reduce "slicing" artifacts.

NOTE: Only available in raycasting mode. NOTE: field available since Open Inventor 9.1

Enable boundary opacity.


If TRUE, increases boundary opacity based on the gradient magnitude. Default is FALSE.

This effect has a significant performance penalty.

SoVolumeRender::subdivideTile will be disabled if set to TRUE.
NOTE: field available since Open Inventor 7.0

Applies when boundaryOpacity is TRUE.

If > 1, this increases the boundary opacity globally. If < 1, decreases it. Default is 1.5.
NOTE: field available since Open Inventor 7.0

Applies when boundaryOpacity is TRUE.

If this value is low (near 0), only regions with a high gradient will be enhanced. Default is 1.5.
NOTE: field available since Open Inventor 7.0

Controls interpolation of data values used for color lookup.


If FALSE, interpolation is not done on data values used to access the colormap but is still done when computing gradient for lighting. This may be used to render a segmented dataset where interpolation is not appropriate. Default is TRUE. Only affects gradient based lighting (lighting field).

Generally it's better to set the SoVolumeRender::interpolation field to NEAREST, unless you really want to use gradient based lighting.

NOTE: field available since Open Inventor 7.2

Enable cubic interpolation of data values.


Warning:
Heavy GPU usage. Primarily useful for still image rendering. Default is FALSE.
NOTE: field available since Open Inventor 7.0
Deprecated:

Deprecated since Open Inventor 9300
Use SoVolumeShape::interpolation field instead.

Enable screen space lighting (computed on the GPU).

Default is FALSE. Deferred lighting is computed based on the final image depth buffer instead using the data gradients. It is much faster than gradient based lighting (see the lighting field) and supports multiple light sources (up to 8). Because it is not based on data gradients, it does not have problems with small/random gradients and it gives a much better result when using clipping nodes like SoVolumeClippingGroup or SoUniformGridClipping. Light sources are defined by Open Inventor SoDirectionalLight nodes.

Notes:

  • Since Open Inventor 9.3, deferred lighting supports up to 8 light sources.
  • Both deferred lighting and gradient lighting may be enabled at the same time, but the intent is that the application should use one or the other.
  • Gradient related fields, e.g. surfaceScalarExponent, have no effect on deferred lighting.

LIMITATIONS

  • If you use deferredLighting, you should set the SoVolumeRender::samplingAlignment field to BOUNDARY_ALIGNED or SMOOTH_BOUNDARY_ALIGNED to reduce "slicing" artifacts.
  • The light color is taken into account, but not the light intensity field. You can get the same effect as reduced intensity by reducing the light color values.
  • Deferred lighting works best when
    • The volume data can be considered to contain "surfaces", for example bones (etc) in medical data or metal parts in NDT data, and
    • The transfer function makes the surface material relatively opaque and the surrounding material relatively transparent.
  • Only available in raycasting mode (the default).
NOTE: field available since Open Inventor 9.2

Color used to draw edges when edgeColoring or edgeDetect2D is TRUE.

Default is black (0,0,0).
NOTE: field available since Open Inventor 7.0

Enable edge coloring.


If TRUE, changes the color based on the gradient direction (normal). Edges will be highlighted with the color specified in edgeColor. Areas where the normal (computed from the gradient) is facing the camera will have an unmodified color, whereas areas where the normal is more perpendicular to the view direction will tend towards edgeColor. Default is FALSE.
NOTE: field available since Open Inventor 7.0

Enable 2D edge detection.


If this field is TRUE, a 2D edge detection algorithm is used to highlight edges in the rendered image of the volume. Default is FALSE.
NOTE: field available since Open Inventor 7.0

Increase this value to decrease noise on silhouette edges.

1 = remove all edges, 0 = remove nothing. Default is 0.1
NOTE: field available since Open Inventor 7.0

Method used for 2D edge detection.


Specifies the edge detection algorithm used when edgeDetect2D is TRUE. Edge detection can work on the image luminance, depth buffer and/or gradient. For example, gradients may be too noisy to give interesting edges and may be ignored with this field. The gradient method is also the slowest (luminance being the fastest) because it needs more texture fetchs. See EdgeDetect2DMethod. Default is LUMINANCE and GRADIENT.
NOTE: field available since Open Inventor 8.1

Increase this value to decrease noise on edges in the volume.

1 = remove all edges, 0 = remove nothing. Default is 0.1
NOTE: field available since Open Inventor 7.0

If this value is low, more edges will be detected.

Default is 0.2. Min value is 0. There is no max, but most of the time a value between 0 and 1 is good.
NOTE: field available since Open Inventor 7.0

Specifies the algorithm used to compute gradients, for example, normals for lighting.

Only affects gradient based lighting (lighting field).

Use enum GradientQuality. Default is MEDIUM.
NOTE: field available since Open Inventor 7.0

Ignore all gradients with a magnitude less than the specified threshold.


Default is 0.0001, meaning that all gradients are used in the lighting computation. Maximum useful value is 1.0, because gradient vectors are normalized. Only affects gradient based lighting (lighting field).
NOTE: field available since Open Inventor 7.0

Enable jittering.


If set to TRUE, a random offset is added to texture coordinates in order to decrease ringing artifacts (boundary edge artifacts) without the cost of drawing a higher number of slices. Note that this creates a "noisy" image. Instead we recommend setting the SoVolumeRender::samplingAlignment field to BOUNDARY_ALIGNED. Note: Jittering is only available when pre-integrated rendering is enabled. Default is FALSE.
NOTE: field available since Open Inventor 7.0

Enable gradient based lighting (computed on the GPU).

Default is FALSE. Gradient based lighting is computed using the direction and magnitude of gradient vectors computed from the data values in place of "normal vectors" in the lighting equation. A gradient vector is computed for each sample point along the rays cast through the volume.

VolumeViz also supports screen space lighting (see the deferredLighting field).

Notes:

  • The result of the gradient lighting computation is affected by how the gradient vectors are computed. See the gradientQuality field.
  • Gradient lighting may produce "noisy" results when the gradient magnitudes are small and/or the gradient directions are not consistent. This often happens, for example, in relatively homogeneous regions of a volume. Several fields are provided to compensate for this effect. See gradientThreshold and surfaceScalarExponent.
  • Both gradient lighting and deferred lighting may be enabled at the same time, but the intent is that the application should use one or the other.

LIMITATIONS

  • Only one light source, the first one traversed in the scene graph, is supported.

Sets the lighting model.

For backward compatibility with Open Inventor v6. Applications should set this field to OPENGL. Only affects gradient based lighting (lighting field).

Use enum LightingModel. Default is OIV6.
NOTE: field available since Open Inventor 7.0

Enable pre-integrated volume rendering.


Pre-integrated rendering can significantly increase image quality (at the cost of slightly lower performance). Default is FALSE.

Limitations:

  • Pre-integration integrates between color map values. For typical scalar data containing sampled values, this provides a beneficial smoothing. When the color changes sharply between adjacent voxels, it can can cause values that are not actually in the original data to be displayed. This is undesireable for some data, for example "label" volumes resulting from segmentation. Pre-integration is not recommended for such data.
  • The preIntegrated field is only considered when SoVolumeRendering::renderMode is set to VOLUME_RENDERING (the default).

Allow correct interpolation when rendering segmented data.

NOTE: Only available on SoVolumeIsosurface.
NOTE: field available since Open Inventor 8.5

Defines the iso distance used when segmentedInterpolation is true.


Default is 0.5. value must be in the range [0 .. 1] NOTE: Only available on SoVolumeIsosurface.
NOTE: field available since Open Inventor 8.6

If this field is greater than or equal to 1, a surface with a small gradient will be less lighted than a surface with a high gradient.

The resulting color is a mix between the lighted voxel color and the non-lighted voxel color (ie: the corresponding entry in the colormap). If the value is less than 1, the field is ignored. Values higher than 256 will apply lighting on almost all surfaces. For most datasets, values between 2 and 16 should be enough. Default is 0.
Only affects gradient based lighting (lighting field). NOTE: field available since Open Inventor 8.1

When unnormalizedGradientExponent is not 0, surfaces with high gradients will be more lighted than surfaces with small gradients.

Voxels with small gradients will have less diffuse and specular than other with high gradients (ie: ambient color will be the biggest contributor). This lighting contribution can be controlled with this field. If this value is high, smaller gradients will contribute to lighting. Values higher than 256 will apply lighting on almost all surfaces. For most dataset, values between 2 and 16 should be enough. Default is 0.
Only affects gradient based lighting (lighting field). NOTE: field available since Open Inventor 8.1

If true, SoVolumeRender displays voxels as individual cubes.

Default is false.

Setting true will force using the raycasting render mode (see SoVolumeShader::raycasting) for volume rendering (but that is the default mode anyway).

NOTE: field available since Open Inventor 9.0

If true, draw the outline of voxels (default is false).

Notes:

  • Since Open Inventor 9.6, this mode applies to volume slice primitives (SoOrthoSlice etc) in addition to volume rendering.
  • In the case of SoObliqueSlice, you may see triangles, quadrilaterals and even irregular pentagons in some cases. These lines are correct and correspond to the intersections between the voxels and the oblique slice. For example:
    outline_oblique_slice.jpg
NOTE: field available since Open Inventor 9.0

When voxelOutline is TRUE, this value specifies the voxel outline color.

Default is black : (0, 0, 0).

NOTE: field available since Open Inventor 9.6

When voxelOutline is TRUE, this threshold specifies the minimum size of a voxel, in screen pixels, for the voxel outline to be visible.

Default is 2, meaning that outline is visible only if a single voxel is bigger than 2 screen pixels.

NOTE: field available since Open Inventor 9.2

When voxelOutline is TRUE, this value specifies the voxel outline width in pixels.

Default is 2 pixels.

NOTE: field available since Open Inventor 9.6


The documentation for this class was generated from the following file:

Open Inventor Toolkit reference manual, generated on 12 Feb 2024
Copyright © Thermo Fisher Scientific All rights reserved.
http://www.openinventor.com/