Volume rendering quality property mode More...
#include <VolumeViz/nodes/SoVolumeRenderingQuality.h>
Public Types | |
enum | GradientQuality { LOW = 0 , MEDIUM , HIGH } |
Gradient Quality mode. More... | |
enum | EdgeDetect2DMethod { LUMINANCE = 1 , DEPTH = 1 << 1 , GRADIENT = 1 << 2 } |
The edge detection algorithm used when edgeDetect2D is TRUE, can work on the image luminance, depth buffer and/or gradient. More... | |
Public Types inherited from SoVolumeShader | |
enum | ShaderPosition { GEOMETRY_MAIN =0 , DATA_COMBINE_FUNCTION , GET_DATA_FUNCTION , FRAGMENT_COMPUTE_COLOR , VERTEX_MAIN , FRAGMENT_MAIN , VERTEX_POSTPROCESSING , CLIPPING_FUNCTION , TESS_VERTEX_SHIFT , CUSTOM_SHADER = 64 } |
Specifies the position of the shader pipeline stages in the field shaderObject. More... | |
Public Types inherited from SoShaderProgram | |
enum | GeometryInputType { POINTS_INPUT = GL_POINTS , LINES_INPUT = GL_LINES , TRIANGLES_INPUT = GL_TRIANGLES } |
Geometry input type. More... | |
enum | GeometryOutputType { POINTS_OUTPUT = GL_POINTS , LINE_STRIP_OUTPUT = GL_LINE_STRIP , TRIANGLE_STRIP_OUTPUT = GL_TRIANGLE_STRIP } |
Geometry ouput type. More... | |
Public Member Functions | |
virtual SoType | getTypeId () const |
Returns the type identifier for this specific instance. | |
SoVolumeRenderingQuality () | |
Constructor. | |
Public Member Functions inherited from SoVolumeShader | |
SoVolumeShader () | |
Constructor. | |
virtual SoFragmentShader * | setFragmentShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Creates a fragment shader with the given filename and add it at the given pos. | |
virtual SoVertexShader * | setVertexShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Creates a vertex shader with the given filename and adds it at the given pos. | |
Public Member Functions inherited from SoShaderProgram | |
SoShaderProgram () | |
Constructor. | |
SoFragmentShader * | getFragmentShader (int pos) const |
Returns the fragment shader at the specified position. | |
SoVertexShader * | getVertexShader (int pos) const |
Returns the vertex shader at the specified position. | |
SoGeometryShader * | getGeometryShader (int pos) const |
Returns the geometry shader at the specified position. | |
virtual SoGeometryShader * | setGeometryShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Convenience method to create a geometry shader with the specified filename and add it at the specified position. | |
virtual SoComputeShader * | setComputeShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Convenience method to create a compute shader with the specified filename and add it at the specified position. | |
SoTessellationControlShader * | getTessellationControlShader (int pos) const |
Returns the tessellation control shader at the specified position. | |
SoTessellationEvaluationShader * | getTessellationEvaluationShader (int pos) const |
Returns the tessellation evaluation shader at the specified position. | |
virtual SoTessellationControlShader * | setTessellationControlShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Convenience method to create a tessellation control shader with the specified filename and add it at the specified position. | |
virtual SoTessellationEvaluationShader * | setTessellationEvaluationShader (int pos, const SbString &filenameOrSource, SoShaderObject::SourceType sourceType=SoShaderObject::FILENAME) |
Convenience method to create a tessellation evaluation shader with the specified filename and add it at the specified position. | |
SoShaderParameterImage * | addShaderParameterImage (const SbString &name, SoTexture *tex) |
Convenience method to create an SoShaderParameterImage with the specified name and value and add it to this shader program. | |
Public Member Functions inherited from SoNode | |
virtual void | setOverride (const SbBool state) |
Turns the override flag on or off. | |
virtual SbBool | isOverride () const |
Returns the state of the override flag. | |
virtual SoNode * | copy (SbBool copyConnections=FALSE) const |
Creates and returns an exact copy of the node. | |
virtual SbBool | affectsState () const |
Returns TRUE if a node has an effect on the state during traversal. | |
virtual void | touch () |
Marks an instance as modified, simulating a change to it. | |
Public Member Functions inherited from SoFieldContainer | |
void | setToDefaults () |
Sets all fields in this object to their default values. | |
SbBool | hasDefaultValues () const |
Returns TRUE if all of the object's fields have their default values. | |
SbBool | fieldsAreEqual (const SoFieldContainer *fc) const |
Returns TRUE if this object's fields are exactly equal to fc's fields. | |
void | copyFieldValues (const SoFieldContainer *fc, SbBool copyConnections=FALSE) |
Copies the contents of fc's fields into this object's fields. | |
SoNONUNICODE SbBool | set (const char *fieldDataString) |
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
SbBool | set (const SbString &fieldDataString) |
Sets one or more fields in this object to the values specified in the given string, which should be a string in the Open Inventor file format. | |
void | get (SbString &fieldDataString) |
Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
virtual int | getFields (SoFieldList &list) const |
Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
virtual int | getAllFields (SoFieldList &list) const |
Returns a list of fields, including the eventIn's and eventOut's. | |
virtual SoField * | getField (const SbName &fieldName) const |
Returns a the field of this object whose name is fieldName. | |
virtual SoField * | getEventIn (const SbName &fieldName) const |
Returns a the eventIn with the given name. | |
virtual SoField * | getEventOut (const SbName &fieldName) const |
Returns the eventOut with the given name. | |
SbBool | getFieldName (const SoField *field, SbName &fieldName) const |
Returns the name of the given field in the fieldName argument. | |
SbBool | enableNotify (SbBool flag) |
Notification at this Field Container is enabled (if flag == TRUE) or disabled (if flag == FALSE). | |
SbBool | isNotifyEnabled () const |
Notification is the process of telling interested objects that this object has changed. | |
virtual void | setUserData (void *data) |
Sets application data. | |
void * | getUserData (void) const |
Gets user application data. | |
Public Member Functions inherited from SoBase | |
virtual SbName | getName () const |
Returns the name of an instance. | |
virtual void | setName (const SbName &name) |
Sets the name of an instance. | |
void | setSynchronizable (const bool b) |
Sets this to be a ScaleViz synchronizable object. | |
bool | isSynchronizable () const |
Gets the ScaleViz synchronizable state of this object. | |
Public Member Functions inherited from SoRefCounter | |
void | ref () const |
Adds a reference to an instance. | |
void | unref () const |
Removes a reference from an instance. | |
void | unrefNoDelete () const |
unrefNoDelete() should be called when it is desired to decrement the reference count, but not delete the instance if this brings the reference count to zero. | |
int | getRefCount () const |
Returns current reference count. | |
void | lock () const |
lock this instance. | |
void | unlock () const |
unlock this instance. | |
Public Member Functions inherited from SoTypedObject | |
SbBool | isOfType (const SoType &type) const |
Returns TRUE if this object is of the type specified in type or is derived from that type. | |
template<typename TypedObjectClass > | |
SbBool | isOfType () const |
Returns TRUE if this object is of the type of class TypedObjectClass or is derived from that class. | |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Static Public Member Functions inherited from SoVolumeShader | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static SbBool | isSupported (SoState *state=NULL) |
Returns TRUE if SoVolumeShader is supported by the current graphics board. | |
Static Public Member Functions inherited from SoShaderProgram | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static unsigned int | getNumReservedTextures () |
Returns the number of reserved texture units. | |
Static Public Member Functions inherited from SoNode | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
static SoNode * | getByName (const SbName &name) |
A node's name can be set using SoBase::setName(). | |
static int | getByName (const SbName &name, SoNodeList &list) |
A node's name can be set using SoBase::setName(). | |
Static Public Member Functions inherited from SoFieldContainer | |
static SoType | getClassTypeId () |
Returns the type of this class. | |
Static Public Member Functions inherited from SoBase | |
static SoType | getClassTypeId () |
Returns type identifier for this class. | |
Static Public Member Functions inherited from SoTypedObject | |
static SoType | getClassTypeId () |
Returns the type identifier for this class. | |
Public Attributes | |
SoSFBool | lighting |
Enable gradient based lighting (computed on the GPU). | |
SoSFBool | preIntegrated |
Enable pre-integrated volume rendering. | |
SoSFBool | jittering |
Enable jittering. | |
SoSFFloat | gradientThreshold |
Ignore all gradients with a magnitude less than the specified threshold. | |
SoSFBool | edgeColoring |
Enable edge coloring. | |
SoSFColor | edgeColor |
Color used to draw edges when edgeColoring or edgeDetect2D is TRUE. | |
SoSFFloat | edgeThreshold |
If this value is low, more edges will be detected. | |
SoSFBool | boundaryOpacity |
Enable boundary opacity. | |
SoSFFloat | boundaryOpacityIntensity |
Applies when boundaryOpacity is TRUE. | |
SoSFFloat | boundaryOpacityThreshold |
Applies when boundaryOpacity is TRUE. | |
SoSFBool | edgeDetect2D |
Enable 2D edge detection. | |
SoSFFloat | edgeDetect2DInnerThreshold |
Increase this value to decrease noise on silhouette edges. | |
SoSFFloat | edgeDetect2DOuterThreshold |
Increase this value to decrease noise on edges in the volume. | |
SoSFBitMask | edgeDetect2DMethod |
Method used for 2D edge detection. | |
SoSFEnum | gradientQuality |
Specifies the algorithm used to compute gradients, for example, normals for lighting. | |
SoSFBool | colorInterpolation |
Controls interpolation of data values used for color lookup. | |
SoSFFloat | surfaceScalarExponent |
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. | |
SoSFFloat | unnormalizedGradientExponent |
When unnormalizedGradientExponent is not 0, surfaces with high gradients will be more lighted than surfaces with small gradients. | |
SoSFBool | segmentedInterpolation |
Allow correct interpolation when rendering segmented data. | |
SoSFFloat | segmentedInterpolationThreshold |
Defines the iso distance used when segmentedInterpolation is true. | |
SoSFBool | voxelizedRendering |
If true, SoVolumeRender displays voxels as individual cubes. | |
SoSFBool | voxelOutline |
If true, draw the outline of voxels (default is false). | |
SoSFFloat | voxelOutlineThreshold |
When voxelOutline is TRUE, this threshold specifies the minimum size of a voxel, in screen pixels, for the voxel outline to be visible. | |
SoSFFloat | voxelOutlineWidth |
When voxelOutline is TRUE, this value specifies the voxel outline width in pixels. | |
SoSFColor | voxelOutlineColor |
When voxelOutline is TRUE, this value specifies the voxel outline color. | |
SoSFBool | ambientOcclusion |
If true, apply an ambient occlusion effect (default is FALSE). | |
SoSFBool | deferredLighting |
Enable screen space lighting (computed on the GPU). | |
Public Attributes inherited from SoVolumeShader | |
SoSFBool | forVolumeOnly |
Set to TRUE if the shader should be called for volume rendering (SoVolumeRender). | |
SoSFBool | interpolateOnMove |
When set to FALSE, interpolation between LDM tiles (across the tile boundary) is not done when rendering in interactive mode. | |
Public Attributes inherited from SoShaderProgram | |
SoMFNode | shaderObject |
Specifies the list of shader objects (i.e., vertex shaders, geometry and fragment shaders) which form the shader program. | |
SoSFEnum | geometryInputType |
Specifies the input primitive type of the current geometry shader if any (not used otherwise). | |
SoSFEnum | geometryOutputType |
Specifies the output primitive type of the current geometry shader if any (not used otherwise). | |
SoSFBool | vertexProgramTwoSide |
If set to TRUE, vertex shaders will operate in two-sided color mode. | |
SoSFBool | shadowShader |
Only used when an SoShadowGroup is active. | |
SoSFInt32 | maxGeometryOutputVertices |
Set the maximum number of vertices the geometry shader will emit in one invocation. | |
SoSFBool | generateTransparency |
If set to TRUE, then shapes affected by this shader will be considered transparent. | |
SoSFInt32 | patchLength |
Set the length of the fixed-size collection of vertices used by tessellation shaders. | |
SoMFNode | bufferObjects |
Specifies a list of SoShaderParameterBufferObject to use with this shader. | |
SoMFNode | images |
Specifies a list of SoShaderParameterImage nodes to use with this shader. | |
Deprecated | |
enum | LightingModel { OIV6 , OPENGL } |
Available Lighting Model mode. More... | |
SoDEPRECATED SoSFBool | cubicInterpolation |
Enable cubic interpolation of data values. | |
SoDEPRECATED SoSFEnum | lightingModel |
Sets the lighting model. | |
Volume rendering quality property mode
This property node causes subsequent SoVolumeRender nodes to be drawn with different rendering effects and/or levels of quality.
Various enhanced rendering modes for volume rendering are available:
The pre-integrated mode (preIntegrated field) generally provides higher image quality for the same number of slices. Most applications should enable this field. However, note that pre-integration integrates between color map values. For typical scalar data containing sampled values, this provides a beneficial smoothing. It is especially useful when the color changes sharply between adjacent color map entries. However, 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 undesirable for some data, for example "label" volumes resulting from segmentation. Pre-integration is not recommended for such data.
Also note:
When lighting is enabled for volume rendering, VolumeViz applies the same lighting equation used for polygonal geometry, including (optionally) specular highlights. The base voxel color comes from the SoTransferFunction node or (optionally) from a custom shader function provided by the application. This color is modified using the current material (SoMaterial), a vector simulating a "normal vector" and one or more directional light nodes (SoDirectionalLight) found in the scene graph. Voxels can also cast and receive shadows (see SoShadowGroup).
Limitation: Pre-integrated and lighted rendering are not supported if using custom fragment shaders and redefining FRAGMENT_COMPUTE_COLOR slot.
VolumeViz supports two lighting modes using either the lighting field or the deferredLighting field. In both cases lighting is computed on the GPU as part of the rendering process.
Unlike other primitives (including other VolumeViz primitives), volume lighting is not affected by an SoLightModel node. Also unlike other primitives, if lighting is enabled and there are no light nodes in the scene graph, the voxel color is taken from the transfer function or custom shader function "as is" (other primitives would be black in this case).
Each light node's direction and intensity fields are used, but the color field is not currently used. The current SoMaterial specifies the ambient, specular, diffuse, and emissive color values for the lighting equation. Note that the default diffuse color is "light gray" (0.8), not full white. This allows specular lighting to push the color toward full white (as expected). If specular lighting is not desired, then changing this to full white (1.0) is recommended in order to see the true colors specified in the transfer function.
The following figures show the same volume data:
Default volume rendering | Pre-integrated volume rendering | Lighted pre-integrated volume rendering |
|
|
|
Jittering
When jittering is set to true, a random offset is added to texture coordinates in order to decrease "ring" 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.
No Jittering | With Jittering |
|
|
Gradient quality
When gradient lighting (lighting field) is enabled, the gradientQuality field allows you to choose between various gradient computation techniques. The computational cost increases with the quality. Has no effect on deferred lighting.
Low quality | Medium quality | High quality |
|
|
|
Surface scalar
When gradient lighting (lighting field) is enabled or edgeDetect2DMethod is GRADIENT, the surfaceScalarExponent field disables lighting (or edge detection) on uniform surfaces in order to avoid noise in these area. This field should not be mixed with unnormalizedGradientExponent. The default value is zero, but a small value, for example 2.0, is recommended. Has no effect on deferred lighting.
Surface Scalar disabled | Surface Scalar enabled |
|
|
Gradient threshold
When gradient lighting is enabled, gradients with a length less than gradientThreshold are ignored during the lighting computation. This avoids doing lighting on noise while still lighting important data. In the following screenshots, setting a threshold of 0.1 removed lighting on the noise surrounding the spheres. Has no effect on deferred lighting.
With gradientThreshold set to 0 | With gradientThreshold set to 0.1 |
|
|
Various image enhancement techniques are available in this node and in SoTransferFunction.
Ambient occlusion
The ambientOcclusion field enables a rendering technique that simulates self-shadowing of the volume. In other words, the amount of ambient (global) light in the scene reaching each sample is reduced by neighboring voxels. This effect makes it much easier to see the relative depth of features in the volume. Generally we recommend using this effect rather than the following effects.
Both lighting and/or shadow casting may also be enabled, but neither is required to use ambient occlusion. This effect works best when the volume data contains surfaces (region boundaries with relatively sharp gradients) or in voxelized rendering mode. In both cases it works best when voxels are either transparent or nearly opaque. If you use ambientOcclusion, you should set the SoVolumeRender::samplingAlignment field to BOUNDARY_ALIGNED to reduce "slicing" artifacts.
Edge detection
When edgeDetect2D is enabled, an image space filter is applied on the volume rendering image in order to detect edges, which will be highlighted. The results are affected by the edgeDetect2DInnerThreshold and edgeDetect2DOuterThreshold fields. The edgeDetect2DMethod bitmask allows to apply the edge detection on the image's luminance, depth and/or gradient. The gradient method may give noisy result, the surfaceScalarExponent may help to improve the result in this case. The gradient method has a significant performance penalty.
The following table shows the available edge detection techniques (explanation of faux shading is in SoTransferFunction):
No Edges | Boundary Opacity | Edge 2D |
|
|
|
Edge Coloring | Faux Shading (see SoTransferFunction) | |
|
|
Because this node is derived from SoVolumeShader, IVVR_FIRST_RESERVED_TEXTURE_UNIT applies to it. See SoVolumeShader for more information.
Volume projection (SoProjection or derived classes) is incompatible with some options enabled by this node.
Do not enable the preIntegrated, jittering or edgeDetect2D fields when using projection.
lighting | FALSE |
preIntegrated | TRUE |
jittering | FALSE |
gradientThreshold | 0.0001 |
edgeColoring | FALSE |
edgeColor | (0, 0, 0) |
edgeThreshold | 0.2 |
boundaryOpacity | FALSE |
boundaryOpacityIntensity | 1.5 |
boundaryOpacityThreshold | 1.5 |
edgeDetect2D | FALSE |
edgeDetect2DInnerThreshold | 0.1 |
edgeDetect2DOuterThreshold | 0.1 |
edgeDetect2DMethod | LUMINANCE |
gradientQuality | MEDIUM |
colorInterpolation | TRUE |
unnormalizedGradientExponent | 0 |
surfaceScalarExponent | 5 |
segmentedInterpolation | FALSE |
segmentedInterpolationThreshold | 0.5 |
voxelizedRendering | FALSE |
voxelOutline | FALSE |
voxelOutlineThreshold | 2. |
voxelOutlineWidth | 2. |
voxelOutlineColor | (0, 0, 0) |
ambientOcclusion | FALSE |
deferredLighting | TRUE |
interpolateOnMove | TRUE |
SoVolumeRender, SoVolumeShader, SoVolumeIsosurface, SoTransferFunction
Definition at line 326 of file SoVolumeRenderingQuality.h.
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. |
Definition at line 364 of file SoVolumeRenderingQuality.h.
Gradient Quality mode.
Definition at line 332 of file SoVolumeRenderingQuality.h.
Available Lighting Model mode.
Enumerator | |
---|---|
OIV6 | |
OPENGL |
Definition at line 757 of file SoVolumeRenderingQuality.h.
SoVolumeRenderingQuality::SoVolumeRenderingQuality | ( | ) |
Constructor.
|
static |
Returns the type identifier for this class.
|
virtual |
Returns the type identifier for this specific instance.
Reimplemented from SoVolumeShader.
SoSFBool SoVolumeRenderingQuality::ambientOcclusion |
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.
Notes:
NOTE: field available since Open Inventor 9.1
Definition at line 694 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::boundaryOpacity |
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
Definition at line 498 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::boundaryOpacityIntensity |
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
Definition at line 506 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::boundaryOpacityThreshold |
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
Definition at line 515 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::colorInterpolation |
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
Definition at line 579 of file SoVolumeRenderingQuality.h.
SoDEPRECATED SoSFBool SoVolumeRenderingQuality::cubicInterpolation |
Enable cubic interpolation of data values.
Definition at line 750 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::deferredLighting |
Enable screen space lighting (computed on the GPU).
Default is TRUE. 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:
LIMITATIONS
NOTE: field available since Open Inventor 9.2
Definition at line 738 of file SoVolumeRenderingQuality.h.
SoSFColor SoVolumeRenderingQuality::edgeColor |
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
Definition at line 475 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::edgeColoring |
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
Definition at line 467 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::edgeDetect2D |
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
Definition at line 524 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::edgeDetect2DInnerThreshold |
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
Definition at line 533 of file SoVolumeRenderingQuality.h.
SoSFBitMask SoVolumeRenderingQuality::edgeDetect2DMethod |
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
Definition at line 554 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::edgeDetect2DOuterThreshold |
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
Definition at line 542 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::edgeThreshold |
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
Definition at line 485 of file SoVolumeRenderingQuality.h.
SoSFEnum SoVolumeRenderingQuality::gradientQuality |
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
Definition at line 564 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::gradientThreshold |
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
Definition at line 454 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::jittering |
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
Definition at line 444 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::lighting |
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:
LIMITATIONS
Definition at line 410 of file SoVolumeRenderingQuality.h.
SoDEPRECATED SoSFEnum SoVolumeRenderingQuality::lightingModel |
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
Definition at line 772 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::preIntegrated |
Enable pre-integrated volume rendering.
Pre-integrated rendering can significantly increase image quality (at the cost of slightly lower performance). Default is TRUE.
Limitations:
Definition at line 430 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::segmentedInterpolation |
Allow correct interpolation when rendering segmented data.
NOTE: Only available on SoVolumeIsosurface.
NOTE: field available since Open Inventor 8.5
Definition at line 613 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::segmentedInterpolationThreshold |
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
Definition at line 621 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::surfaceScalarExponent |
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 5.
Only affects gradient based lighting (lighting field). NOTE: field available since Open Inventor 8.1
Definition at line 591 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::unnormalizedGradientExponent |
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
Definition at line 606 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::voxelizedRendering |
If true, SoVolumeRender displays voxels as individual cubes.
Default is false.
Limitations:
NOTE: field available since Open Inventor 9.0
Definition at line 633 of file SoVolumeRenderingQuality.h.
SoSFBool SoVolumeRenderingQuality::voxelOutline |
If true, draw the outline of voxels (default is false).
Notes:
NOTE: field available since Open Inventor 9.0
Definition at line 650 of file SoVolumeRenderingQuality.h.
SoSFColor SoVolumeRenderingQuality::voxelOutlineColor |
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
Definition at line 676 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::voxelOutlineThreshold |
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
Definition at line 660 of file SoVolumeRenderingQuality.h.
SoSFFloat SoVolumeRenderingQuality::voxelOutlineWidth |
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
Definition at line 668 of file SoVolumeRenderingQuality.h.