Octree topology queries More...
#include <LDM/SoLDMTopoOctree.h>
Inherited by SoVRLdmFileBorderReader::SoLDMBorderTopoOctree.
Public Member Functions | |
SoLDMTopoOctree () | |
void | init (const SbVec3i32 &dimension, const int tileDim, const int border=0) |
SbBox3i32 | getTilePos (const SoLDMTileID &tileID) const |
SoLDMTileID | getTileID (const SbVec3i32 &cellPos, const int resolution) const |
int | getNumFileIDs () const |
int | getFileID (const SoLDMTileID &tileID) const |
SoLDMTileID | getTileID (const int fileID) const |
bool | isEmpty () const |
int | getLevelMax () const |
int | level (const SoLDMTileID &id) const |
SbVec3i32 | getTileSize () const |
The SoLDMTopoOctree class provides information about the hierarchy of LDM tiles used for a given dataset, based on the dataset dimensions.
For example you can query the total number of LDM tiles in the data set. You can also query the ID of the tile that contains a specified voxel/cell in the data set and conversely you can query the extent of a specified tile in voxel/cell coordinates.
In VolumeViz LDM every tile has both a tileID and a fileID. The tileID is the unique identifier of a tile in the (conceptual) complete, symmetrical hierarchy. The fileID is the index of a tile in a sequential numbering of all the tiles that actually contain data. The tileID is normally used to identify tiles in an application, but the fileID is used, for example, when calling the readTile method in an SoVolumeReader class. In a cubical volume (all three dimensions the same), there are equal numbers of tileIDs and fileIDs, but in most volumes there are many fewer fileIDs than tileIDs.
SoLDMTopoOctree::SoLDMTopoOctree | ( | ) |
Constructor.
int SoLDMTopoOctree::getFileID | ( | const SoLDMTileID & | tileID | ) | const [inline] |
Given a tileID, returns the corresponding fileID.
int SoLDMTopoOctree::getLevelMax | ( | ) | const |
Return the level max of the Octree.
Note: Octree must be initialized
int SoLDMTopoOctree::getNumFileIDs | ( | ) | const |
Returns the number of fileIDs in the volume.
Effectively this is the total number of tiles, including both full resolution and low resolution, required to store the data set.
SoLDMTileID SoLDMTopoOctree::getTileID | ( | const int | fileID | ) | const |
Given a fileID, returns the corresponding tileID.
SoLDMTileID SoLDMTopoOctree::getTileID | ( | const SbVec3i32 & | cellPos, | |
const int | resolution | |||
) | const |
Given the position of a voxel/cell (i,j,k) and the resolution level, returns the tile ID of the corresponding tile.
SbBox3i32 SoLDMTopoOctree::getTilePos | ( | const SoLDMTileID & | tileID | ) | const |
Returns the bounding box, in voxel/cell coordinates, of the specified tile.
SbVec3i32 SoLDMTopoOctree::getTileSize | ( | ) | const [inline] |
Return the tilesize used to setup this octree.
void SoLDMTopoOctree::init | ( | const SbVec3i32 & | dimension, | |
const int | tileDim, | |||
const int | border = 0 | |||
) |
Initialize with the properties of the data set.
Note: Since OIV 9.0, the border parameter is no longer used.
bool SoLDMTopoOctree::isEmpty | ( | ) | const [inline] |
Returns false if the octree is empty.
Note: Octree must be initialized.
int SoLDMTopoOctree::level | ( | const SoLDMTileID & | id | ) | const [inline] |
Returns the resolution level of the given tile Id Note: Octree must be initialized.