Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://coin3d.github.io
https://www.kongsberg.com/en/kogt/
SoVolumeDetail Class Reference

The SoVolumeDetail stores ray intersection information through a volume. More...

#include <VolumeViz/details/SoVolumeDetail.h>

Inheritance diagram for SoVolumeDetail:
SoDetail SoVolumeRenderDetail SoVolumeSkinDetail

Public Member Functions

virtual SoDetailcopy (void) const
 
void getProfileObjectPos (SbVec3f profile[2]) const
 
int getProfileDataPos (SbVec3s profile[2]=0) const
 
unsigned int getProfileValue (int index, SbVec3s *pos=0, SbVec3f *objpos=0, SbBool flag=FALSE) const
 
SbBool getFirstNonTransparentValue (unsigned int *value, SbVec3s *pos=0, SbVec3f *objpos=0, SbBool flag=FALSE) const
 
void setDetails (const SbVec3f raystart, const SbVec3f rayend, SoState *state, SoNode *caller)
 
- Public Member Functions inherited from SoDetail
virtual SoType getTypeId (void) const=0
 
SbBool isOfType (const SoType type) const
 

Static Public Member Functions

static void initClass (void)
 
- Static Public Member Functions inherited from SoDetail
static void initClass (void)
 
static void initClasses (void)
 
static SoType getClassTypeId (void)
 

Friends

class SoVolumeDetailP
 

Detailed Description

The SoVolumeDetail stores ray intersection information through a volume.

An SoVolumeDetail contains the information about a ray intersecting a volume rendered with the SoVolumeRender node.

The detail contains a "profile" of voxel values through the volume, where the profile is defined by a start point and an end point.

Member Function Documentation

◆ getProfileObjectPos()

void SoVolumeDetail::getProfileObjectPos ( SbVec3f  profile[2]) const

Sets start and end points of ray intersecting the volume in the profile argument. The points returned are in object space coordinates (i.e. in the same geometry unit system as polygon-based geometry in a scene).

◆ getProfileDataPos()

int SoVolumeDetail::getProfileDataPos ( SbVec3s  profile[2] = 0) const

Sets start and end points of ray intersecting the volume in the profile argument. The points returned are in voxel-space coordinates (i.e. within the dimensions of the voxel block).

Returns total number of voxels intersected and stored in the profile. This can be used to iterate over the full profile with the getProfileValue() method.

If profile is NULL, the points will not be set, but the correct number of total profile points will still be returned.

◆ getProfileValue()

unsigned int SoVolumeDetail::getProfileValue ( int  index,
SbVec3s pos = 0,
SbVec3f objpos = 0,
SbBool  flag = FALSE 
) const

Returns voxel value at the given index along the ray intersection profile.

If pos is not NULL, sets pos argument to voxel-space coordinates for voxel.

If objpos is not NULL, sets objpos argument to object space coordinates for voxel.

The flag argument is unused and only included for compatibility with TGS Inventor's VolumeViz extension. (Where it seems to be undocumented.)

◆ getFirstNonTransparentValue()

SbBool SoVolumeDetail::getFirstNonTransparentValue ( unsigned int *  value,
SbVec3s pos = 0,
SbVec3f objpos = 0,
SbBool  flag = FALSE 
) const

Fills in the information about the first voxel along the pick ray intersection which is not completely transparent.

Returns FALSE if all voxels along pick ray were fully transparent, otherwise TRUE.

Sets value to the value of the voxel.

If pos is not NULL, sets pos argument to voxel space coordinates for the first voxel with some opaqueness.

If objpos is not NULL, sets objpos argument to object space coordinates for the first voxel with some opaqueness.

The flag argument is unused and only included for compatibility with TGS Inventor's VolumeViz extension. (Where it seems to be undocumented.)

◆ setDetails()

void SoVolumeDetail::setDetails ( const SbVec3f  raystart,
const SbVec3f  rayend,
SoState state,
SoNode caller 
)

This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.

Used to set ray pick details.
NOTE: This method takes different arguments than the TGS equivalent.

References SoRayPickAction::addIntersection(), SoAction::apply(), SoState::getAction(), SbBox3f::getBounds(), SoBase::getClassTypeId(), SoPickedPoint::getPath(), SoSearchAction::getPath(), SoPath::getTail(), SbBox3s::intersect(), SoRayPickAction::isBetweenPlanes(), SbVec3f::length(), SoDebugError::postInfo(), SoRayPickAction::reset(), SoPickedPoint::setDetail(), SoSearchAction::setInterest(), SoSearchAction::setType(), and SoBase::touch().

Referenced by SoVolumeRender::rayPick().


The documentation for this class was generated from the following files: