Data set node. More...
#include <LDM/nodes/SoDataSet.h>
Public Types | |
enum | ValueInterpretation { CONTINUOUS = 0 , DISCRETE = 1 } |
Specifies an image type: segmented or not segmented. More... | |
enum | DataType { UNSIGNED_BYTE = SbDataType::UNSIGNED_BYTE , UNSIGNED_SHORT = SbDataType::UNSIGNED_SHORT , UNSIGNED_INT32 = SbDataType::UNSIGNED_INT32 , SIGNED_BYTE = SbDataType::SIGNED_BYTE , SIGNED_SHORT = SbDataType::SIGNED_SHORT , SIGNED_INT32 = SbDataType::SIGNED_INT32 , FLOAT = SbDataType::FLOAT , DOUBLE = SbDataType::DOUBLE } |
Supported data type. More... | |
typedef SbBool | SaveEditingCB(SoDataSet *dataSet, SoVolumeWriter *writer, int tilesRemaining, int totalTiles) |
This is the declaration to use for saveEditing callback functions. | |
Public Member Functions | |
virtual SoType | getTypeId () const |
Returns the type identifier for this specific instance. | |
const SbVec3i32 & | getDimension () |
Returns the data set dimension. | |
SbVec3i32 | getTileDimension () |
Returns the tile dimension. | |
unsigned int | getDatumSize () |
Returns the number of bytes per voxel. | |
virtual size_t | readTile (SoBufferObject *&bufferObject, SoLDMTileID tileID, bool transform) |
Copies the specified tile into the provided buffer. | |
virtual void | readTile (SoLDMTileID tileID, SoBufferObject *buffer, bool transform) |
Copies the specified tile into the provided buffer. | |
virtual void | writeTile (SoLDMTileID tileID, SoBufferObject *buffer, SoVolumeWriter *writer) |
Write the specified tile using the specified writer. | |
bool | isInMemory (SoLDMTileID tileID) const |
Indicates whether a tile is in main memory. | |
bool | isDataInMemory (const SoLDMTileID &tileID) const |
Indicates whether the data attached to a tile is in main memory. | |
void | getTileIDInMemory (std::vector< LDM_TILE_ID_TYPE > &tilesInMemory) const |
Debug purpose only. | |
SoLDMDataAccess & | getLdmDataAccess () |
Returns a reference to the SoLDMDataAccess object. | |
virtual SbBool | startEditing (int &transactionId) |
Initiate an editing transaction. | |
virtual SbBool | finishEditing (int transactionId) |
Terminates an editing transaction. | |
virtual int | editTile (const SoLDMTileID &tileId, SoBufferObject *userData) |
Replaces the contents of a tile with the given data. | |
virtual int | editSubVolume (const SbBox3i32 &subVolume, SoBufferObject *userData) |
Replaces the contents of a subvolume with the given data. | |
virtual int | editTile (const SoLDMTileID &tileId, const double &value) |
Replaces the contents of a tile with the specified value. | |
virtual int | editSubVolume (const SbBox3i32 &subVolume, const double &value) |
Replaces the contents of a subvolume with the specified value. | |
virtual int | editSurfaceShape (const SoNode *surfaceShape, const float &thickness, const double &value) |
Replaces all voxels intersecting the polygons or lines defined by the surfaceShape and given thickness with the specified value. | |
virtual int | editSolidShape (const SoNode *solidShape, const double &value) |
Replaces all voxels intersecting the given shape with the specified value. | |
virtual int | editBoxes (const std::vector< SbVec3i32 > &boxCenters, const int &boxSize, const double &newValue) |
Replace all voxels in the region defined by a list of boxes with the specified value. | |
virtual SbBool | undoEditing (int transactionId) |
Undo all modifications associated with the specified transaction id. | |
virtual SbBool | redoEditing (int transactionId) |
Redo all modifications associated with the specified transaction id. | |
virtual SbBool | saveEditing (bool recomputeLowerResolution, const std::vector< char * > conversionParameters=std::vector< char * >(), SaveEditingCB *callback=NULL) |
Commit all transactions. | |
SbBool | saveEditing () |
Commit all transactions. | |
virtual bool | hasEditedTile () |
Returns true if DataSet has edited tiles. | |
SoLDMReader * | getLDMReader () |
Returns a pointer to the current data set reader object. | |
void | setLDMReader (SoLDMReader *reader) |
Sets the LDM volume reader object to use. | |
SoVolumeReader * | getReader () |
Returns the current data set reader object. | |
SoVolumeReader * | getReader () const |
Returns the current data set reader object. | |
int | numSigBits () const |
Returns the number of significant bits. | |
virtual SbBool | getMinMax (int64_t &min, int64_t &max) |
Returns min and max values of the data set data. | |
virtual SbBool | getMinMax (double &min, double &max) |
Returns min and max values of the data set. | |
DataType | getDataType () const |
Returns the data type. | |
int | getDataSize () |
Returns the number of bytes per voxel in VolumeViz. | |
void | setReader (SoVolumeReader &reader, SbBool takeOwnership=FALSE) |
This method allows the data to be read directly from the disk using the specified subclass of SoVolumeReader. | |
virtual SbVec3f | voxelToXYZ (const SbVec3f &dataPosition) const |
Converts the specified point in voxel coordinates (I,J,K) to geometric coordinates (X,Y,Z). | |
virtual SbBox3f | voxelToXYZ (const SbBox3f &box) const |
Converts the specified box in voxel coordinates (I,J,K) to geometric coordinates (X,Y,Z). | |
virtual SbVec3f | XYZToVoxel (const SbVec3f &dataPosition) const |
Converts the specified point in geometric coordinates (X,Y,Z) to voxel coordinates (I,J,K). | |
virtual SbBox3f | XYZToVoxel (const SbBox3f &xyzBox) const |
Converts the specified box in geometric coordinates to voxel coordinates. | |
void | resetReader () |
Resets previously set custom reader setup by setReader call. | |
const SoLDMTopoOctree * | getLDMTopoOctree () const |
Returns the LDMTopoOctree used by this SoDataSet. | |
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 int | dataSize (DataType dataType) |
Returns the number of bytes per voxel of the specified data type. | |
static SbBool | isDataSigned (DataType dataType) |
Returns TRUE if the given data type is a signed integer data type. | |
static SbBool | isDataFloat (DataType dataType) |
Returns TRUE if the given data type is a float data type. | |
static int | getMaxNumDataSets () |
Returns the maximum number of data sets that can be render composited on the current hardware (essentially the number of texture units - 1). | |
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 | |
SoSFInt32 | dataSetId |
When using multiple SoDataSet nodes, the dataSetId field uniquely identifies each data set used in the compositing. | |
SoSFFilePathString | fileName |
Indicates the file location containing the data set. | |
SoSFBool | useCompressedTexture |
Controls use of OpenGL lossy texture compression for RGBA data (if available). | |
SoSFUShort | texturePrecision |
For scalar (non-RGBA) data, specifies the size of voxel values on the GPU in bits. | |
SoSFBox3f | extent |
The real size (extent) of the volume in modeling coordinates. | |
SoSFLDMDataTransform | dataTransform |
If set to an appropriate SoLDMDataTransform object, the object's transformFunction method is called after each tile is loaded, but before it is stored in main memory. | |
SoSFBool | allocateResourceOnRender |
Indicates if resource allocation is done only on first render traversal or as soon as the node is created. | |
SoSFDouble | undefinedValue |
Data with this value won't be rendered. | |
SoSFEnum | valueInterpretation |
Specifies if this dataset corresponds or does not correspond to a segmented image. | |
SoSFLDMResourceParameters | ldmResourceParameters |
Contains an SoLDMResourceParameters object which allows you to set LDM resource parameters. | |
Friends | |
class | SoLdmValuationAction |
class | SoLDMGeometry |
Deprecated | |
typedef void | SoLDMDataTransformFunction(SoDataSet *ds, const SbVec3i32 &bufferDimension, void *bufferToTransform, const SbBox3i32 &dataBox, int resolutionLevel, void *userData) |
virtual SoDEPRECATED void | readTile (SoLDMTileID tileID, unsigned char *buffer, bool transform) |
SoDEPRECATED void | setLDMDataTransformFunction (SoLDMDataTransformFunction *func, void *userData=NULL) |
If set, the user-defined function is called after each tile is loaded, but before it is stored in main memory. | |
SoDEPRECATED int | getOverlapping () |
Returns the tile border (overlap) in voxels. | |
This class specifies a data set and its properties, and also provides utilities for extracting a subset of the data set and for resampling the data set. The data can be read directly from a file or can be accessed via a user-defined volume reader. This class is the parent class of the VolumeViz data nodes: SoVolumeData, SoHeightFieldGeometry, SoHeightFieldProperty, etc. Those nodes provide the data for VolumeViz rendering nodes: SoVolumeRender, SoOrthoSlice, SoObliqueSlice, etc. See SoVolumeData for more details about loading and managing volume data.
The data set can be specified by:
SoDataSetId, SoDataCompositor, SoVolumeData, SoMeshGeometry, SoMeshProperty
Definition at line 138 of file SoDataSet.h.
typedef SbBool SoDataSet::SaveEditingCB(SoDataSet *dataSet, SoVolumeWriter *writer, int tilesRemaining, int totalTiles) |
This is the declaration to use for saveEditing callback functions.
These callbacks are called just before a tile is written. At the beginning of the saving process, the SaveEditingCB is called with tilesRemaining = totalTiles . Once the save process is done (all tiles written and finalized), the SaveEditingCB is called with tilesRemaining = 0.
dataSet | DataSet used. |
writer | Writer used. |
tilesRemaining | Remaining tiles to save |
totalTiles | Total tiles to save. |
Definition at line 551 of file SoDataSet.h.
typedef void SoDataSet::SoLDMDataTransformFunction(SoDataSet *ds, const SbVec3i32 &bufferDimension, void *bufferToTransform, const SbBox3i32 &dataBox, int resolutionLevel, void *userData) |
Deprecated since Open Inventor 8.0
Definition at line 863 of file SoDataSet.h.
enum SoDataSet::DataType |
Supported data type.
Definition at line 664 of file SoDataSet.h.
Specifies an image type: segmented or not segmented.
A segmented image only contains discrete values. Used with valueInterpretation field.
Enumerator | |
---|---|
CONTINUOUS | Specifies an image containing continuous scalar values (an image which is not a segmented image or a label field). Continuous values mean that doing an average of 2 different values makes sense. NOTE: enumeration value available since Open Inventor 2024.2 |
DISCRETE | Specifies an image containing discrete values that represent labels. These types of image are usualy called a segmented image or a label field. Discrete values mean that doing an interpolation between 2 different values of the dataset does not make sense. NOTE: enumeration value available since Open Inventor 2024.2 |
Definition at line 296 of file SoDataSet.h.
|
static |
Returns the number of bytes per voxel of the specified data type.
|
virtual |
Replace all voxels in the region defined by a list of boxes with the specified value.
boxCenter and boxSize are defined in ijk (voxel) space.
Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData.
|
virtual |
Replaces all voxels intersecting the given shape with the specified value.
The geometry defined under solidShape must represent a list of closed surfaces otherwise the result is unpredictable. solidShape must not contain any lines or open polyhedrons (polyhedron with shapes). The result is based on the odd-winding rule, so the result is not necessarily the union or the intersection of the closed surfaces. If you want to voxelize lines or single polygons, see also the editSurfaceShape method.
If the goal is to define a shape which is the result of the intersection/union of multiple closed surfaces, see the SoCSGShape node.
solidShape is defined in the same 3D space as the dataSet. The solidShape can be deleted after calling this function.
Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData, and SoVolumeMask.
|
virtual |
Replaces the contents of a subvolume with the specified value.
The subvolume is specified in voxel/cell coordinates. Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData, and SoVolumeMask.
|
virtual |
Replaces the contents of a subvolume with the given data.
The buffer size (in bytes) must match the subvolume size (in bytes) exactly. The subvolume is specified in voxel/cell coordinates. Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData, and SoVolumeMask.
|
virtual |
Replaces all voxels intersecting the polygons or lines defined by the surfaceShape and given thickness with the specified value.
surfaceShape is defined in the same 3D space as the dataSet. thickness is defined in voxels. The surfaceShape can be deleted after calling this function.
Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData, and SoVolumeMask.
|
virtual |
Replaces the contents of a tile with the specified value.
Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData.
|
virtual |
Replaces the contents of a tile with the given data.
The buffer size (in bytes) must match the tile size (in bytes) exactly. Call startEditing() before calling this method. Returns 0 if successful.
Reimplemented in SoVolumeData.
|
virtual |
Terminates an editing transaction.
Returns true if successful. May only be called with a valid transaction id returned by the startEditing() method. On error does nothing. The finish method will schedule a redraw so the correct data is displayed. To commit the edits, in other words to save the edited data back to the data source, call saveEditing().
Reimplemented in SoVolumeData.
|
static |
Returns the type identifier for this class.
int SoDataSet::getDataSize | ( | ) |
Returns the number of bytes per voxel in VolumeViz.
DataType SoDataSet::getDataType | ( | ) | const |
Returns the data type.
unsigned int SoDataSet::getDatumSize | ( | ) |
Returns the number of bytes per voxel.
const SbVec3i32 & SoDataSet::getDimension | ( | ) |
Returns the data set dimension.
SoLDMDataAccess & SoDataSet::getLdmDataAccess | ( | ) |
Returns a reference to the SoLDMDataAccess object.
This object can be used to query data from the volume.
SoLDMReader * SoDataSet::getLDMReader | ( | ) |
Returns a pointer to the current data set reader object.
The actual type will be a subclass of SoVolumeReader, either one of the predefined subclasses or an application-defined subclass. Returns NULL if no reader is currently being used (for example if setVolumeData() was called).
const SoLDMTopoOctree * SoDataSet::getLDMTopoOctree | ( | ) | const |
Returns the LDMTopoOctree used by this SoDataSet.
The LDMTopoOctree is initialized at the initialization of the reader.
|
static |
Returns the maximum number of data sets that can be render composited on the current hardware (essentially the number of texture units - 1).
|
virtual |
Returns min and max values of the data set.
Returns FALSE if the requested data is not available (for example, if no data set exists).
NOTE: This method might force LDM to load the entire data set if the volume reader does not respond to the getMinMax query. Normally for an LDM format data set, the min and max values are stored in the LDM header. For a non-LDM data set, if a filename and/or reader have been specified and the data set has not yet been loaded, LDM will load the entire data set to compute the min and max values. For a large data set this may take a long time.
Reimplemented in SoVolumeData.
|
virtual |
Returns min and max values of the data set data.
Returns FALSE if the requested data is not available (for example, if no data set exists).
NOTE: This method might force LDM to load the entire data set if the volume reader does not respond to the getMinMax query. Normally for an LDM format data set, the min and max values are stored in the LDM header. For a non-LDM data set, if a filename and/or reader have been specified and the data set has not yet been loaded, LDM will load the entire data set to compute the min and max values. For a large data set this may take a long time.
Reimplemented in SoVolumeData.
SoDEPRECATED int SoDataSet::getOverlapping | ( | ) |
Returns the tile border (overlap) in voxels.
Since OIV 9.0 always returns 0.
|
inline |
Returns the current data set reader object.
The actual type will be a subclass of SoVolumeReader, either one of the predefined subclasses or an application-defined subclass. Returns null if no reader is currently set. Applications should always verify the class type before using the returned object as a specific sub-class of SoVolumeReader.
Definition at line 646 of file SoDataSet.h.
SoVolumeReader * SoDataSet::getReader | ( | ) | const |
Returns the current data set reader object.
The actual type will be a subclass of SoVolumeReader, either one of the predefined subclasses or an application-defined subclass. Returns null if no reader is currently set. Applications should always verify the class type before using the returned object as a specific sub-class of SoVolumeReader.
SbVec3i32 SoDataSet::getTileDimension | ( | ) |
Returns the tile dimension.
void SoDataSet::getTileIDInMemory | ( | std::vector< LDM_TILE_ID_TYPE > & | tilesInMemory | ) | const |
Debug purpose only.
Used for visual feedback to highlight tiles in main memory. Only called if the SoVolumeRendering::DRAW_TOPOLOGY flag is true.
|
virtual |
Returns the type identifier for this specific instance.
Reimplemented from SoNode.
Reimplemented in SoHeightFieldGeometry, SoHeightFieldProperty, SoHeightFieldPropertyMask, SoVolumeData, and SoVolumeMask.
|
virtual |
Returns true if DataSet has edited tiles.
Returns TRUE if the given data type is a float data type.
bool SoDataSet::isDataInMemory | ( | const SoLDMTileID & | tileID | ) | const |
Indicates whether the data attached to a tile is in main memory.
Called when the node front manager evaluates the texture front.
This allows to manage data that implements SoBufferAsyncInterface. If the specified tile does not implement SoBufferAsyncInterface then this method always returns true. So effectively it always returns true for non-LDM volumes.
Returns TRUE if the given data type is a signed integer data type.
bool SoDataSet::isInMemory | ( | SoLDMTileID | tileID | ) | const |
Indicates whether a tile is in main memory.
Called when the node front manager evaluates the texture front.
int SoDataSet::numSigBits | ( | ) | const |
Returns the number of significant bits.
|
virtual |
Copies the specified tile into the provided buffer.
Applies the data transformation (set in dataTransform field) if transform is true. Returns the size, in bytes, copied in the buffer. If size == 0 nothing was written (probably due to a memory allocation error).
|
virtual |
Copies the specified tile into the provided buffer.
Applies the data transformation (set in dataTransform field) if transform is true.
|
virtual |
|
virtual |
Redo all modifications associated with the specified transaction id.
Returns true if successful. On error does nothing. May only be called after the specified transaction has been terminated (see finishEditing() method) and undone (see undoEditing() method). Schedules a redraw so the correct data is displayed.
Note: Redo is no longer available after transactions are saved. After calling saveEditing(), the transaction ids are no longer valid and the modified data is the new reference.
Reimplemented in SoVolumeData.
void SoDataSet::resetReader | ( | ) |
Resets previously set custom reader setup by setReader call.
Reference counting:
SbBool SoDataSet::saveEditing | ( | ) |
Commit all transactions.
All modified tiles are written back to the data source using the current reader format. May only be called when no threads are editing, i.e. after all threads that called startEditing have called finishEditing.
Returns true if successful. On error does nothing returns false. Returns false if:
Warning: Effectively, saveEditing currently only works for data loaded using an SoVRLDMFileReader (an LDM format tiled data set) or an SoVRMemoryReader (data set completely in memory).
|
virtual |
Commit all transactions.
All modified tiles are written back to the data source using the current reader format. May only be called when no threads are editing, i.e. after all threads that called startEditing have called finishEditing.
Returns true if successful. On error does nothing returns false. Returns false if:
Warning: Effectively, saveEditing currently only works for data loaded using an SoVRLDMFileReader (an LDM format tiled data set) or an SoVRMemoryReader (data set completely in memory).
You can specify a callback (see SaveEditingCB) that will be called before saving each tile (even if the data uses a sliced format it is saved tile by tile). If this callback returns FALSE, the saving process is aborted. Warning: In such a case, lower resolutions are not updated and the result will be undefined.
Conversion Parameters:
Reimplemented in SoVolumeData.
SoDEPRECATED void SoDataSet::setLDMDataTransformFunction | ( | SoLDMDataTransformFunction * | func, |
void * | userData = NULL |
||
) |
If set, the user-defined function is called after each tile is loaded, but before it is stored in main memory.
This allows you to modify the original data (for example, scaling or filtering) before it is displayed.
void SoDataSet::setLDMReader | ( | SoLDMReader * | reader | ) |
Sets the LDM volume reader object to use.
This method allows the data to be read directly from the disk using the specified subclass of SoVolumeReader.
void SoDataSet::setReader | ( | SoVolumeReader & | reader, |
SbBool | takeOwnership = FALSE |
||
) |
This method allows the data to be read directly from the disk using the specified subclass of SoVolumeReader.
If the takeOwnership parameter is FALSE (default), LDM will not delete the specified instance. Otherwise, LDM will automatically delete the specified instance, for example, when the SoDataSet node is deleted. If filename is not set before setting the reader, LDM will display an error message just to warn that the reader has not opened any file yet. LDM continues to work as expected.
Note: When using a custom reader, any reader method that changes the volume properties (dimension, size, data type, etc) should notify the SoVolumeData node by calling the reader's touch() method. If this notification is not done, SoDataSet fields, for example SoDataSet::extent, won't be updated correctly.
|
virtual |
Initiate an editing transaction.
Returns true if successful and also returns a unique transaction id. This value is required for finishing the edit transaction (see finishEditing()) and for undo/redo (see undoEditing() and redoEditing()). Multiple transactions may be active at the same time.
Reimplemented in SoVolumeData.
|
virtual |
Undo all modifications associated with the specified transaction id.
Returns true if successful. On error does nothing. May only be called after the specified transaction has been terminated (see finishEditing() method). Schedules a redraw so the correct data is displayed.
Note: Undo is no longer available after transactions are saved. After calling saveEditing(), the transaction ids are no longer valid and the modified data is the new reference.
Reimplemented in SoVolumeData.
Converts the specified box in voxel coordinates (I,J,K) to geometric coordinates (X,Y,Z).
The geometric coordinates are expressed in "extent" space, where voxel coordinates are mapped to the box defined by the volume extent.
Correctly converts coordinates that are outside the volume dimensions, but the resulting geometric coordinate is outside the volume extent.
Converts the specified point in voxel coordinates (I,J,K) to geometric coordinates (X,Y,Z).
The geometric coordinates are expressed in "extent" space, where voxel coordinates are mapped to the box defined by the volume extent.
The left bottom coordinate of the voxel is returned. Correctly converts coordinates that are outside the volume dimensions, but the resulting geometric coordinate is outside the volume extent.
|
virtual |
Write the specified tile using the specified writer.
No operations are done on buffer (dataTransform or edition), the buffer is written as is. The writer must be initialized and handles must be properly set (see SoVolumeReader::closeAllHandles and SoVolumeWriter::restoreAllHandles), ie. the current reader's handles must be closed, and the specified writer's handles must be opened.
Converts the specified box in geometric coordinates to voxel coordinates.
The geometric coordinates are expressed in "extent" space, where voxel coordinates are mapped to the box defined by the volume extent.
Correctly converts coordinates that are outside the volume extent, but the resulting voxel coordinate is outside the volume dimensions.
Converts the specified point in geometric coordinates (X,Y,Z) to voxel coordinates (I,J,K).
The geometric coordinates are expressed in "extent" space, where voxel coordinates are mapped to the box defined by the volume extent.
Correctly converts coordinates that are outside the volume extent, but the resulting voxel coordinate is outside the volume dimensions.
|
friend |
Definition at line 1355 of file SoDataSet.h.
|
friend |
Definition at line 1354 of file SoDataSet.h.
SoSFBool SoDataSet::allocateResourceOnRender |
Indicates if resource allocation is done only on first render traversal or as soon as the node is created.
Default is TRUE. It must be set to FALSE if the dataset is not inserted in a scene graph but will be used for data access for example. Otherwise, memory resources will still remain on default value.
Definition at line 270 of file SoDataSet.h.
SoSFInt32 SoDataSet::dataSetId |
When using multiple SoDataSet nodes, the dataSetId field uniquely identifies each data set used in the compositing.
It also specifies the OpenGL texture unit in which the textures for this data set will be stored when doing render compositing. It is 1 by default (texture unit 0 is reserved for the color lookup table by default). The number of available texture units depends on your hardware. You can query this number using getMaxNumDataSets.
Note: The SoDataSetId node can also be used to define dataSetId. If an SoDataSetId node is traversed before the SoDataSet node, the id from the SoDataSetId node is used and this field is ignored.
NOTE: field available since Open Inventor 6.0
Definition at line 161 of file SoDataSet.h.
SoSFLDMDataTransform SoDataSet::dataTransform |
If set to an appropriate SoLDMDataTransform object, the object's transformFunction method is called after each tile is loaded, but before it is stored in main memory.
This allows you to modify the original data (for example, scaling or filtering) before it is displayed. Default is no transform.
Note: Before Open Inventor 8.0, the data transformFunction was set using the setLDMDataTransformFunction method. That method is now deprecated.
NOTE: field available since Open Inventor 8.0
Definition at line 261 of file SoDataSet.h.
SoSFBox3f SoDataSet::extent |
The real size (extent) of the volume in modeling coordinates.
Default is -1,-1,-1 to 1,1,1.
Note this can be used to define a volume with non-uniform voxel spacing. For example, if the volume dimensions (voxels) are 64x64x64, but the voxel spacing in Z is twice the X and Y spacing, then you might specify the volume size as -1 to 1 for X and Y but -2 to 2 for Z.
Definition at line 239 of file SoDataSet.h.
SoSFFilePathString SoDataSet::fileName |
Indicates the file location containing the data set.
Default is an empty string. Depending on the file type, the corresponding SoVolumeReader (if it exists) is used.
File Extension | Loader Class | Description |
.am | SoVRAmFileReader | Amira Mesh file format |
.dc3, .dic, .dicom | SoVRDicomFileReader | Dicom file format |
.fld | SoVRAvsFileReader | AVS field file format |
.lda or .ldm | SoVRLdmFileReader | Large Data Management file format |
.sgy or .segy | SoVRSegyFileReader | SEG Y revision 1 file format |
.vol | SoVRVolFileReader | Vol file format |
.vox | SoVRVoxFileReader | Vox file format |
.lst | SoVRRasterStackReader | Lst file format |
The filename extension is not case sensitive.
Note: SoDataSet and its derived classes (SoVolumeData, etc) do not search the SoInput directory list to find files specified in this field. To check file existence and other properties the SbFileHelper class may be useful.
Definition at line 187 of file SoDataSet.h.
SoSFLDMResourceParameters SoDataSet::ldmResourceParameters |
Contains an SoLDMResourceParameters object which allows you to set LDM resource parameters.
Definition at line 399 of file SoDataSet.h.
SoSFUShort SoDataSet::texturePrecision |
For scalar (non-RGBA) data, specifies the size of voxel values on the GPU in bits.
The valid values are: 0 (default), 8 and 16.
When set to 0, LDM chooses the best precision based on the size of the data type (or if specified, the number of significant bits) - meaning that LDM will store 8-bit values on the GPU for 8-bit data and store 16-bit values for all other data types.
There are several trade-offs influenced by this value, including:
NOTE: field available since Open Inventor 6.0
Definition at line 228 of file SoDataSet.h.
SoSFDouble SoDataSet::undefinedValue |
Data with this value won't be rendered.
Default is NaN (Not a Number) which means that this value is not taken into account. Otherwise, value must be in agreement with data type. Limitations: There are several limitations in order for the undefined value to work :
NOTE: field available since Open Inventor 10.11
Definition at line 289 of file SoDataSet.h.
SoSFBool SoDataSet::useCompressedTexture |
Controls use of OpenGL lossy texture compression for RGBA data (if available).
Default is TRUE.
A significant advantage of compressed textures is that they conserve texture memory space. At the moment, the extension works on RGBA textures only, not on paletted textures. The compression factor is about 5.
A potential drawback of compressed textures is that lossy compression can result in values on the GPU that are slightly different from the actual value in the volume. For example "gray scale" colors could have a slight color in some cases. You should always set this option to false when using "RGBA" data to store 32-bit "id" values.
Definition at line 202 of file SoDataSet.h.
SoSFEnum SoDataSet::valueInterpretation |
Specifies if this dataset corresponds or does not correspond to a segmented image.
A segmented image contains only discrete values.
This field is only useful if the SoVolumeShape::interpolation type used by the rendering is either LINEAR or CUBIC. For other types of interpolation, this field is ignored and the data set is always considered as continuous. This field is also ignored for RGBA datasets (see SoVolumeData::dataRGBA).
Use enum ValueInterpretation. Default is CONTINUOUS.
NOTE: field available since Open Inventor 2024.2
Definition at line 329 of file SoDataSet.h.