Extract data from an SoVolumeRender More...
#include <VolumeViz/nodes/SoOffscreenVolumeRender.h>
Public Types | |
enum | Components { ALPHA, RGBA } |
Public Member Functions | |
virtual SoType | getTypeId () const |
SoOffscreenVolumeRender () | |
SbVec3i32 | getMaxBoxSize (SoState *state=NULL) |
SbBox3d | ijkToXyzBox (const SbBox3i32 &ijkBox) |
bool | synchronousExtraction (SoSceneManager *sceneManager) |
Static Public Member Functions | |
static SoType | getClassTypeId () |
Public Attributes | |
SoSFNode | volumerenderSceneGraph |
SoSFNode | bboxSceneGraph |
SoSFVec3i32 | boxSize |
SoSFBool | trigger |
SoSFFloat | opacityThreshold |
SoSFEnum | components |
SoSFMatrix | dataSpaceMatrix |
The SoOffscreenVolumeRender node extracts data by rendering one or more volumes (via SoVolumeRender) into a buffer that can then be used for different computation tasks.
Volumes of interest are specified by a subscenegraph in volumerenderSceneGraph.
The region to be extracted is the bounding box of the scene graph specified in the bboxSceneGraph field.
To implement an extraction, the application must derive a new class from SoOffscreenVolumeRender and implement :
The resolution of the extraction is controlled by boxSize field. As extraction is done using GPU techniques, there is a size limit on the boxSize that can be extract in one call. This limit can be retreived through getMaxBoxSize call.
Limitations:
volumerenderSceneGraph | NULL |
bboxSceneGraph | NULL |
boxSize | (64, 64, 64) |
trigger | FALSE |
opacityThreshold | 0 |
components | ALPHA |
SoDataSet, SoVolumeData, SoVolumeRender
SoOffscreenVolumeRender::SoOffscreenVolumeRender | ( | ) |
Default constructor.
static SoType SoOffscreenVolumeRender::getClassTypeId | ( | ) | [static] |
Returns the type identifier for this class.
Reimplemented from SoNode.
Returns the maximum boxSize that can be extract in one boxComputed for the current state.
virtual SoType SoOffscreenVolumeRender::getTypeId | ( | ) | const [virtual] |
Returns the type identifier for this specific instance.
Reimplemented from SoNode.
Convert ijk box coordinates returned by boxComputed method to the bboxSceneGraph space.
bool SoOffscreenVolumeRender::synchronousExtraction | ( | SoSceneManager * | sceneManager | ) |
Does extraction synchronously, whereas using trigger field will execute extraction on next redraw.
sceneManager | the scene manager of the viewer scene to be extracted. |
Head of the scene graph that defines the 3D off-screen scene cube to consider in world coordinates.
Resolution of the output data in the off-screen box.
Components to get back from the offscreen render.
Use enum Components. Default is ALPHA.
This transformation is applied on the volume render texture coordinate during the extraction.
It allows to change the extraction frame. This matrix is applied on normalized texture coordinates all components are between 0-1 and must be in [0-1] after the transformation. So to inverse an axis, we must apply the following transformation: -1*u+1 (where u is a texture coordinate) and not just a simple negative scale.
To swap I and J axis, the matrix would be:
SbMatrix( 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
To reverse I axis, the matrix would be:
SbMatrix(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1);
To reverse J axis, the matrix would be:
SbMatrix( 1, 0, 0, 0, 0,-1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1);
To reverse K axis, the matrix would be:
SbMatrix( 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1);
During extraction, voxels with an opacity less than the specified value will be ignored Default is 0.
Valid range is [0-1].
Setting this field to TRUE will start the off-screen rendering process.
This field is set to FALSE when computation is finished. Default is FALSE.
Head of the scene graph that contains one or multiple VolumeRender node to render in 3D off-screen cube.