Coin3D is Free Software, published under the BSD 3-clause license. |
https://bitbucket.org/Coin3D/ http://www.kongsberg.com/kogt/ |
Render the full volume. More...
#include <VolumeViz/nodes/SoVolumeRender.h>
Inherits SoShape.
Public Types | |
enum | Interpolation { NEAREST, LINEAR } |
enum | Composition { MAX_INTENSITY, SUM_INTENSITY, ALPHA_BLENDING } |
enum | NumSlicesControl { ALL, MANUAL, AUTOMATIC } |
enum | AbortCode { CONTINUE, ABORT, SKIP } |
typedef AbortCode | SoVolumeRenderAbortCB(int totalslices, int thisslice, void *userdata) |
Public Member Functions | |
void | setAbortCallback (SoVolumeRenderAbortCB *func, void *userdata=NULL) |
Static Public Member Functions | |
static void | initClass (void) |
Public Attributes | |
SoSFEnum | interpolation |
SoSFEnum | composition |
SoSFBool | lighting |
SoSFVec3f | lightDirection |
SoSFFloat | lightIntensity |
SoSFEnum | numSlicesControl |
SoSFInt32 | numSlices |
SoSFBool | viewAlignedSlices |
Protected Member Functions | |
virtual void | GLRender (SoGLRenderAction *action) |
virtual void | rayPick (SoRayPickAction *action) |
virtual void | generatePrimitives (SoAction *action) |
virtual void | computeBBox (SoAction *action, SbBox3f &box, SbVec3f ¢er) |
Friends | |
class | SoVolumeRenderP |
Render the full volume.
Insert a node of this type after an SoVolumeData node in the scene graph to render the full volume data set.
AbortCode SoVolumeRender::SoVolumeRenderAbortCB |
The function signature for callback function pointers to be passed in to SoVolumeRender::setAbortCallback().
totalslices is the total number of textured slices that is expected to be rendered, unless the callback choose to abort or skip any of them.
thisslice is the index number of the next slice to render. Note that they are rendered back-to-front, and that they are numbered from 1 to totalslices.
userdata is the second argument given to SoVolumeRender::setAbortCallback() when the callback was set up.
Enumeration of available types of voxel colors interpolation.
Enumeration of available types of composition for partly translucent volumes.
Enumeration of strategies for how to render the slices of the volume.
Enumerator | |
---|---|
ALL | Always render as many slices as there are voxels in the depth dimension. This is the default value. Please note that SoVolumeRender::NumSlicesControl will always be considered as SoVolumeRender::ALL if the SoVolumeRender::numSlices field is less or equal to 0. |
MANUAL | Render as many slices as given by the SoVolumeRender::numSlices field. |
AUTOMATIC | The number of slices to render will be calculated as follows: Where "complexity" is the current SoComplexity::value setting in the scene graph traversal state. The default complexity value for a scene graph with no SoComplexity node(s) is 0.5. For "this->numSlices", see SoVolumeRender::numSlices. |
The set of valid values that should be returned from a function set up in SoVolumeRender::setAbortCallback().
void SoVolumeRender::setAbortCallback | ( | SoVolumeRenderAbortCB * | func, |
void * | userdata = NULL |
||
) |
Lets the application programmer supply a callback function, by which it will be possible to either prematurely abort the rendering of a set of slices, or to skip certain slices.
Both of these measures are of course optimizations of rendering performance controlled from client code.
|
protectedvirtual |
Picking of a volume doesn't work in quite the same manner as picking polygon geometry: the SoPickedPoint set up in the SoRayPickAction class will only contain the entry point of the ray into the volume.
For further picking information, grab the detail object and cast it to an SoVolumeRenderDetail (after first checking that it is of this type, of course).
References SoVolumeDetail::setDetails().
SoSFEnum SoVolumeRender::interpolation |
How to interpolate color values when rendering "in between" voxels. See SoVolumeRender::Interpolation.
Default value is SoVolumeRender::LINEAR.
SoSFEnum SoVolumeRender::composition |
How to compose the projected volume rendering. See SoVolumeRender::Composition.
Default value is SoVolumeRender::ALPHA_BLENDING.
SoSFEnum SoVolumeRender::numSlicesControl |
Specifies a strategy to use for calculating the number of slices to use for the visualization. The more slicer, the better quality and more correct the visualization will be, but the trade-off is that it will also influence the rendering performance.
The default value is SoVolumeRender::ALL.
(The rendering performance can be severly improved by changing this field's value to either SoVolumeRender::MANUAL or SoVolumeRender::AUTOMATIC, and then tuning the SoVolumeRender::numSlices field.)
SoSFInt32 SoVolumeRender::numSlices |
Decides how many slices to render if SoVolumeRender::numSlicesControl is set to either SoVolumeRender::MANUAL or SoVolumeRender::AUTOMATIC.
For MANUAL
, it sets an absolute number. For AUTOMATIC
, a calculation will be done based on the value of this field and the current SoComplexity::value setting in the scene graph traversal state.
Note that the default value of the field is 0.