SoVolumeMask Class |
Volume mask.
Namespace: OIV.VolumeViz.Nodes
The SoVolumeMask type exposes the following members.
Name | Description | |
---|---|---|
SoVolumeMask | Constructor. |
Name | Description | |
---|---|---|
AffectsState | Returns true if a node has an effect on the state during traversal. | |
Callback | (Inherited from SoDataSet.) | |
Copy | Calls Copy(false). (Inherited from SoNode.) | |
Copy(Boolean) | Creates and returns an exact copy of the node. | |
CopyFieldValues(SoFieldContainer) | Calls CopyFieldValues(fc, false). (Inherited from SoFieldContainer.) | |
CopyFieldValues(SoFieldContainer, Boolean) | Copies the contents of fc's fields into this object's fields. | |
Dispose |
Releases all resources used by SoDisposable.
(Inherited from SoDisposable.) | |
Distribute | (Inherited from SoNode.) | |
DoAction | (Inherited from SoVolumeData.) | |
EditBoxes | Replace all voxels in the region defined by a list of boxes with the specified value. | |
EditSolidShape | Replace all voxels inside the given shape with the specified value. | |
EditSubVolume(SbBox3i32, SoBufferObject) | Replace the contents of a subvolume with the given data. | |
EditSubVolume(SbBox3i32, Double) | Replace the contents of a subvolume with the specified value. | |
EditSurfaceShape | Replace all voxels intersecting the polygons or lines defined by the surfaceShape and given thickness with the specified value. | |
EditTile(SoLDMTileID, SoBufferObject) | Replace the contents of a tile with the given data. | |
EditTile(SoLDMTileID, Double) | Replace the contents of a tile with the specified value. | |
EnableNotify | Notification at this Field Container is enabled (if flag == true) or disabled (if flag == false). | |
Equals | (Inherited from Object.) | |
FieldsAreEqual | Returns true if this object's fields are exactly equal to fc's fields. | |
FinishEditing | Terminate an editing transaction. | |
Get | Returns the values of the fields of this object in the Open Inventor ASCII file format in the given string. | |
GetAllFields | Returns a list of fields, including the eventIn's and eventOut's. | |
GetAlternateRep | This method is called by actions to allow the node to provide an "alternate representation" when appropriate (typically depending on the action type). | |
GetBoundingBox | (Inherited from SoDataSet.) | |
GetCenterVolumeBox | (Inherited from SoVolumeData.) | |
GetCoordinateType | (Inherited from SoVolumeData.) | |
GetDataSize | Returns the number of bytes per voxel in VolumeViz. | |
GetDataType | Returns the data type. | |
GetDatumSize | Returns the number of bytes per voxel. | |
GetDefaultValue | Returns default value of the volume mask. | |
GetDimension | Returns the data set dimension. | |
GetEventIn | Returns a the eventIn with the given name. | |
GetEventOut | Returns the eventOut with the given name. | |
GetField | Returns a the field of this object whose name is fieldName. | |
GetFieldName | Returns the name of the given field in the fieldName argument. | |
GetFields | Appends references to all of this object's fields to resultList, and returns the number of fields appended. | |
GetHashCode |
Overrides GetHashCode().
(Inherited from SoNetBase.) | |
GetHistogram |
Returns the histogram of the volume data.
Returns null reference if the requested data is not available.
(Inherited from SoVolumeData.) | |
GetLdmDataAccess | Returns a reference to the OIV.LDM.SoLDMDataAccess object. | |
GetLDMReader | Returns a pointer to the current data set reader object. | |
GetLDMTopoOctree | Return the LDMTopoOctree used by this OIV.LDM.Nodes.SoDataSet. | |
GetMatrix | (Inherited from SoNode.) | |
GetMinMax(Double, Double) | Returns min and max values of the data set. | |
GetMinMax(Int64, Int64) | Returns min and max values of the data set data. | |
GetName | Returns the name of an instance. | |
GetOverlapping | Obsolete. (Inherited from SoDataSet.) | |
GetPrimitiveCount | (Inherited from SoNode.) | |
GetReader | Obsolete. Returns the current data set reader object. | |
GetRectilinearCoordinates | Returns a vector describing mapping from uniform space to rectilinear space. | |
GetRenderEngineMode | Returns the supported Render engine mode. | |
GetRenderUnitID | (Inherited from SoVolumeData.) | |
GetSizeVolumeBox | (Inherited from SoVolumeData.) | |
GetStringName | (Inherited from SoBase.) | |
GetTexMemorySize | Obsolete. Returns the maximum texture memory size to use in mega texels. | |
GetTileDimension | Returns the tile dimension. | |
GetTileIDInMemory | Debug purpose only. | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
GetVolumeBox | (Inherited from SoVolumeData.) | |
GetVolumeData | ||
GLRender | (Overrides SoVolumeDataGLRender(SoGLRenderAction).) | |
GLRenderBelowPath | (Inherited from SoNode.) | |
GLRenderInPath | (Inherited from SoNode.) | |
GLRenderOffPath | (Inherited from SoNode.) | |
GrabEventsCleanup | (Inherited from SoNode.) | |
GrabEventsSetup | (Inherited from SoNode.) | |
HandleEvent | (Inherited from SoNode.) | |
HasDefaultValues | Returns true if all of the object's fields have their default values. | |
HasEditedTile | Returns true if DataSet has edited tiles. | |
IsBoundingBoxIgnoring | This method is used by getBoundingBox action traversal to know if the current node must be traversed or not, ie the bounding should be ignored. | |
IsDataInMemory | Indicates whether the data attached to a tile is in main memory. | |
IsInMemory | Indicates whether a tile is in main memory. | |
IsNotifyEnabled | Notification is the process of telling interested objects that this object has changed. | |
IsOverride | Returns the state of the override flag. | |
IsSynchronizable | Gets the ScaleViz synchronizable state of this object. | |
NumSigBits | Returns the number of significant bits. | |
Pick | (Inherited from SoDataSet.) | |
RayPick | (Inherited from SoNode.) | |
ReadTile(SoBufferObject, SoLDMTileID, Boolean) | Copies the specified tile into the provided buffer. | |
ReadTile(SoLDMTileID, SoBufferObject, Boolean) | Copies the specified tile into the provided buffer. | |
ReadTile(SoLDMTileID, Byte, Boolean) | Obsolete. Obsoletesince Open Inventor 8000. | |
RedoEditing | Redo all modifications associated with the specified transaction id. | |
ReSampling(SbVec3i32, SoVolumeDataSubMethods) | Obsolete. Calls ReSampling(dimension, subMethod, OIV.VolumeViz.Nodes.SoVolumeData.OverMethods( .SoVolumeData.NONE )). (Inherited from SoVolumeData.) | |
ReSampling(SbVec3i32, SoVolumeDataSubMethods, SoVolumeDataOverMethods) | Obsolete. Re-samples the volume down to or up to the given dimension using the sub-sampling method OIV.VolumeViz.Nodes.SoVolumeData.SubMethods and the over-sampling method OIV.VolumeViz.Nodes.SoVolumeData.OverMethods. | |
ResetReader | (Inherited from SoDataSet.) | |
SaveEditing |
Save modifications to a file.
(Inherited from SoDataSet.) | |
SaveEditing(Boolean) |
Save modifications to a file.
(Inherited from SoDataSet.) | |
SaveEditing(Boolean, IListString) |
Save modifications to a file.
(Inherited from SoDataSet.) | |
Search | (Inherited from SoNode.) | |
Set | 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. | |
SetDefaultValue | Set default value of the volume mask. | |
SetIsReadChar | ||
SetLDMReader | Sets the LDM volume reader object to use. | |
SetName | (Inherited from SoBase.) | |
SetOverride | Turns the override flag on or off. | |
SetProperties | ||
SetReader(SoVolumeReader) | Obsolete. Calls SetReader(reader, false). (Inherited from SoDataSet.) | |
SetReader(SoVolumeReader, Boolean) | Obsolete. This method allows the data to be read directly from the disk using the specified subclass of SoVolumeReader. | |
SetRGBAData | Force data to be considered as RGBA values. | |
SetSynchronizable | Sets this to be a ScaleViz synchronizable object. | |
SetTexMemorySize | Obsolete. Specifies the maximum texture memory size to use in mega texels. | |
SetToDefaults | Sets all fields in this object to their default values. | |
StartEditing | Initiate an editing transaction. | |
SubSetting | Obsolete. Extracts the data volume defined by region. | |
ToString |
Converts this SoBase structure to a human readable string.
(Inherited from SoBase.) | |
Touch | Marks an instance as modified, simulating a change to it. | |
UndoEditing | Undo all modifications associated with the specified transaction id. | |
UpdateRegions | Updates regions of the volume that have been modified. | |
UpdateTilesInTextureMemory | Reloads textures corresponding to the given tile IDs. | |
UseFakeData | Create fake data in buffer. | |
VoxelToXYZ(SbBox3f) | Converts the specified box in voxel coordinates to geometric coordinates. | |
VoxelToXYZ(SbVec3f) | Converts the specified point in voxel coordinates to geometric coordinates. | |
Write | (Inherited from SoDataSet.) | |
WriteTile | Write the specified tile using the specified writer. | |
XYZToVoxel(SbBox3f) | Converts the specified box in geometric coordinates to voxel coordinates. | |
XYZToVoxel(SbVec3f) | Converts the specified point in geometric coordinates to voxel coordinates. |
Name | Description | |
---|---|---|
allocateResourceOnRender | Indicates if resource allocation is done only on first render traversal or as soon as the node is created. | |
data | Specifies the volume data, including dimensions, data type and number of significant bits. | |
dataRGBA | Contains true if the volume contains RGBA values rather than scalar values. | |
dataSetId | When using multiple OIV.LDM.Nodes.SoDataSet nodes, the OIV.LDM.Nodes.SoDataSet.m_dataSetId field uniquely identifies each data set used in the compositing. | |
dataTransform | If set to an appropriate OIV.LDM.Nodes.SoLDMDataTransform object, the object's transformFunction method is called after each tile is loaded, but before it is stored in main memory. | |
extent | The real size (extent) of the volume in modeling coordinates. | |
fileName | Indicates the file location containing the data set. | |
IsDisposable | ISafeDisposable interface implementation.
(Inherited from SoDisposable.) | |
LDMDataTransformCallback | Obsolete. If set, the user-defined function is called after each tile is loaded, but before it is stored in main memory. | |
ldmResourceParameters | Contains an OIV.LDM.Nodes.SoLDMResourceParameters object which allows you to set LDM resource parameters. | |
Reader | Returns the current data set reader object. | |
texturePrecision | For scalar (non-RGBA) data, specifies the size of voxel values on the GPU in bits. | |
useCompressedTexture | Controls use of the OpenGL lossy texture compression extension (if available). | |
useExtendedData | If true, VolumeViz stores an additional copy of each loaded tile. | |
usePalettedTexture | For a volume containing scalar data values, controls whether scalar values (true) or RGBA values (false) are loaded on the GPU (the name is historical). | |
UserData |
Gets or sets the user data to be contained by the field container.
(Inherited from SoFieldContainer.) | |
useSharedPalettedTexture | Note: On graphics boards that support programmable shaders, this field is ignored (virtually all graphics boards support programmable shaders). |
This node specifies an arbitrary voxel-based region of a volume data set (OIV.VolumeViz.Nodes.SoVolumeData). A volume mask is itself a data volume consisting of binary values. Zero values are "false" and non-zero values are "true". A large number of masks may be defined simultaneously, using an OIV.VolumeViz.Nodes.SoVolumeMask node for each one, and mask regions may overlap if desired.
OIV.VolumeViz.Nodes.SoVolumeMask is derived from OIV.VolumeViz.Nodes.SoVolumeData. Like OIV.VolumeViz.Nodes.SoVolumeData it accesses its data through an SoVolumeReader class. I.e. the data may be in a file or in memory (or any data source using a custom volume reader). The mask volume can be any data type, but unsigned byte is currently the most memory efficient representation.
OIV.VolumeViz.Nodes.SoVolumeMask nodes must follow these rules:
Each mask volume must have exactly the same voxel dimensions and tile size value as the data volume it is applied to.
All OIV.VolumeViz.Nodes.SoVolumeMask nodes must be children of an OIV.VolumeViz.Nodes.SoVolumeMaskGroup node.
The OIV.VolumeViz.Nodes.SoVolumeData node and the OIV.VolumeViz.Nodes.SoVolumeMaskGroup nodes must be children of an OIV.LDM.Nodes.SoMultiDataSeparator node.
The OIV.VolumeViz.Nodes.SoVolumeData and associated OIV.VolumeViz.Nodes.SoVolumeMask nodes must each have a different value assigned to their dataSetId field (see OIV.LDM.Nodes.SoDataSet). Note that OIV.VolumeViz.Nodes.SoVolumeData and OIV.VolumeViz.Nodes.SoVolumeMask both have a default value of 1 for the dataSetId field, so some ids must be explicitly set.
Currently OIV.VolumeViz.Nodes.SoVolumeMask nodes only affect volume rendering (OIV.VolumeViz.Nodes.SoVolumeRender). They do not affect slice rendering or other VolumeViz primitives.
OIV.VolumeViz.Nodes.SoVolumeMask can be used to clip the data volume on a per-voxel basis. But the mask mechanism is much more powerful than that. Each region can have its own transfer function (color map) using OIV.LDM.Nodes.SoTransferFunction nodes. Each region can also have its own draw style (volume rendering, isosurface or boundary) using OIV.VolumeViz.Nodes.SoVolumeDataDrawStyle nodes. Each region, including the original unmasked volume, is only visible if there exists a transfer function (OIV.LDM.Nodes.SoTransferFunction) with the same id value.
Mask regions:
A single OIV.VolumeViz.Nodes.SoVolumeMask node effectively defines two regions:
False voxels (where the mask voxel = 0), and
True voxels (where is mask voxel != 0).
Because intersecting regions are allowed, two OIV.VolumeViz.Nodes.SoVolumeMask nodes define (up to) four regions:
False (where all masks are 0),
True only in mask 1,
True only in mask 2, and
True in more than one mask (intersection region).
Each additional mask defines one additional region (voxels that are true only in that mask).
In addition, if there exists a transfer function with the same id as the original volume (OIV.VolumeViz.Nodes.SoVolumeData node), the color value from that transfer function is combined with the color value from the mask region's transfer function.
Transfer functions:
A separate transfer function can be specified for each of these regions using OIV.LDM.Nodes.SoTransferFunction nodes. The transfer function nodes may be placed under the OIV.VolumeViz.Nodes.SoVolumeMaskGroup node, but this is not required.
NOTE: It is not currently possible to specify a different data range for each mask.
A transfer function is associated with a specific mask (i.e. with the voxels that are true only in that mask), by setting the OIV.LDM.Nodes.SoTransferFunction node's transferFunctionId equal to the mask's dataSetId . If there is no transfer function with the same id as the mask, then that mask is ignored.
A transfer function is associated with all "false" voxels (voxels that do not belong to any mask) by setting its transferFunctionId equal to zero. If there is no transfer function with id = 0, then "false" voxels are not rendered.
A transfer function is associated with all "intersection" voxels (voxels that belong to more than one mask) by setting its transferFunctionId equal to SoVolumeMaskGroup.TRANSFERFUNCTION_INTERSECTION_ID. If there is no transfer function with this id value, then intersection voxels (if any) are rendered using the default GRAY color map.
Draw Styles:
A separate draw style can be specified for each mask region and for the intersection voxels (but not for false voxels) using OIV.VolumeViz.Nodes.SoVolumeDataDrawStyle nodes:
Unlike transfer functions, a draw style is associated with a mask (voxels that are true only in that mask) by traversal order. In other words, each mask uses the draw style that is current when the mask is traversed. So you need to put OIV.VolumeViz.Nodes.SoVolumeDataDrawStyle nodes under the VolumeMaskGroup, alternating draw style, mask, draw style, mask.
A draw style is associated with all "intersection" voxels (voxels that belong to more than one mask) by placing it before the OIV.VolumeViz.Nodes.SoVolumeMaskGroup node in the scene graph.
Data Range:
OIV.VolumeViz.Nodes.SoVolumeMask currently does not support separate data ranges for each mask region. The same OIV.LDM.Nodes.SoDataRange will be applied on all regions.
VolumeMask { }