vtkCellPicker Class Reference

#include <vtkCellPicker.h>

Inheritance diagram for vtkCellPicker:

Inheritance graph
[legend]
Collaboration diagram for vtkCellPicker:

Collaboration graph
[legend]

List of all members.


Detailed Description

ray-cast cell picker for all kinds of Prop3Ds

vtkCellPicker will shoot a ray into a 3D scene and return information about the first object that the ray hits. It works for all Prop3Ds. For vtkVolume objects, it shoots a ray into the volume and returns the point where the ray intersects an isosurface of a chosen opacity. For vtkImageActor objects, it intersects the ray with the displayed slice. For vtkActor objects, it intersects the actor's polygons. If the object's mapper has ClippingPlanes, then it takes the clipping into account, and will return the Id of the clipping plane that was intersected. For all prop types, it returns point and cell information, plus the normal of the surface that was intersected at the pick position. For volumes and images, it also returns (i,j,k) coordinates for the point and the cell that were picked.

See also:
vtkPicker vtkPointPicker vtkVolumePicker
Thanks:
This class was contributed to VTK by David Gobbi on behalf of Atamai Inc., as an enhancement to the original vtkCellPicker.
Examples:
vtkCellPicker (Examples)
Tests:
vtkCellPicker (Tests)

Definition at line 66 of file vtkCellPicker.h.


Public Types

typedef vtkPicker Superclass

Public Member Functions

virtual const char * GetClassName ()
virtual int IsA (const char *type)
void PrintSelf (ostream &os, vtkIndent indent)
void AddLocator (vtkAbstractCellLocator *locator)
void RemoveLocator (vtkAbstractCellLocator *locator)
void RemoveAllLocators ()
vtkTextureGetTexture ()
virtual int Pick (double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer)
virtual void SetVolumeOpacityIsovalue (double)
virtual double GetVolumeOpacityIsovalue ()
virtual void SetUseVolumeGradientOpacity (int)
virtual void UseVolumeGradientOpacityOn ()
virtual void UseVolumeGradientOpacityOff ()
virtual int GetUseVolumeGradientOpacity ()
virtual void SetPickClippingPlanes (int)
virtual void PickClippingPlanesOn ()
virtual void PickClippingPlanesOff ()
virtual int GetPickClippingPlanes ()
virtual int GetClippingPlaneId ()
virtual double * GetPickNormal ()
virtual void GetPickNormal (double data[3])
virtual double * GetMapperNormal ()
virtual void GetMapperNormal (double &, double &, double &)
virtual void GetMapperNormal (double[3])
virtual int * GetPointIJK ()
virtual void GetPointIJK (int &, int &, int &)
virtual void GetPointIJK (int[3])
virtual int * GetCellIJK ()
virtual void GetCellIJK (int &, int &, int &)
virtual void GetCellIJK (int[3])
virtual vtkIdType GetPointId ()
virtual vtkIdType GetCellId ()
virtual int GetSubId ()
virtual double * GetPCoords ()
virtual void GetPCoords (double &, double &, double &)
virtual void GetPCoords (double[3])
virtual void SetPickTextureData (int)
virtual void PickTextureDataOn ()
virtual void PickTextureDataOff ()
virtual int GetPickTextureData ()

Static Public Member Functions

static vtkCellPickerNew ()
static int IsTypeOf (const char *type)
static vtkCellPickerSafeDownCast (vtkObject *o)

Protected Member Functions

 vtkCellPicker ()
 ~vtkCellPicker ()
void Initialize ()
virtual void ResetPickInfo ()
virtual double IntersectWithLine (double p1[3], double p2[3], double tol, vtkAssemblyPath *path, vtkProp3D *p, vtkAbstractMapper3D *m)
virtual double IntersectActorWithLine (const double p1[3], const double p2[3], double t1, double t2, double tol, vtkProp3D *prop, vtkMapper *mapper)
virtual double IntersectVolumeWithLine (const double p1[3], const double p2[3], double t1, double t2, vtkProp3D *prop, vtkAbstractVolumeMapper *mapper)
virtual double IntersectImageActorWithLine (const double p1[3], const double p2[3], double t1, double t2, vtkImageActor *imageActor)
virtual double IntersectProp3DWithLine (const double p1[3], const double p2[3], double t1, double t2, double tol, vtkProp3D *prop, vtkAbstractMapper3D *mapper)
void SetImageDataPickInfo (const double x[3], const int extent[6])
double ComputeVolumeOpacity (const int xi[3], const double pcoords[3], vtkImageData *data, vtkDataArray *scalars, vtkPiecewiseFunction *scalarOpacity, vtkPiecewiseFunction *gradientOpacity)

Static Protected Member Functions

static int ClipLineWithPlanes (vtkPlaneCollection *planes, const double p1[3], const double p2[3], double &t1, double &t2, int &planeId)
static int ClipLineWithExtent (const int extent[6], const double x1[3], const double x2[3], double &t1, double &t2, int &planeId)
static int ComputeSurfaceNormal (vtkDataSet *data, vtkCell *cell, const double *weights, double normal[3])
static int ComputeSurfaceTCoord (vtkDataSet *data, vtkCell *cell, const double *weights, double tcoord[3])
static int HasSubCells (int cellType)
static int GetNumberOfSubCells (vtkIdList *pointIds, int cellType)
static void GetSubCell (vtkDataSet *data, vtkIdList *pointIds, int subId, int cellType, vtkGenericCell *cell)
static void SubCellFromCell (vtkGenericCell *cell, int subId)

Protected Attributes

vtkCollectionLocators
double VolumeOpacityIsovalue
int UseVolumeGradientOpacity
int PickClippingPlanes
int ClippingPlaneId
vtkIdType PointId
vtkIdType CellId
int SubId
double PCoords [3]
int PointIJK [3]
int CellIJK [3]
double PickNormal [3]
double MapperNormal [3]
vtkTextureTexture
int PickTextureData

Member Typedef Documentation

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

Definition at line 70 of file vtkCellPicker.h.


Constructor & Destructor Documentation

vtkCellPicker::vtkCellPicker (  )  [protected]

vtkCellPicker::~vtkCellPicker (  )  [protected]


Member Function Documentation

static vtkCellPicker* vtkCellPicker::New (  )  [static]

Create an object with Debug turned off, modified time initialized to zero, and reference counting on.

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

virtual const char* vtkCellPicker::GetClassName (  )  [virtual]

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

static int vtkCellPicker::IsTypeOf ( const char *  name  )  [static]

Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

virtual int vtkCellPicker::IsA ( const char *  name  )  [virtual]

Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

static vtkCellPicker* vtkCellPicker::SafeDownCast ( vtkObject o  )  [static]

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

void vtkCellPicker::PrintSelf ( ostream &  os,
vtkIndent  indent 
) [virtual]

Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkPicker.

Reimplemented in vtkVolumePicker.

virtual int vtkCellPicker::Pick ( double  selectionX,
double  selectionY,
double  selectionZ,
vtkRenderer renderer 
) [virtual]

Perform pick operation with selection point provided. Normally the first two values are the (x,y) pixel coordinates for the pick, and the third value is z=0. The return value will be non-zero if something was successfully picked.

Reimplemented from vtkPicker.

void vtkCellPicker::AddLocator ( vtkAbstractCellLocator locator  ) 

Add a locator for one of the data sets that will be included in the scene. You must set up the locator with exactly the same data set that was input to the mapper of one or more of the actors in the scene. As well, you must either build the locator before doing the pick, or you must turn on LazyEvaluation in the locator to make it build itself on the first pick. Note that if you try to add the same locator to the picker twice, the second addition will be ignored.

void vtkCellPicker::RemoveLocator ( vtkAbstractCellLocator locator  ) 

Remove a locator that was previously added. If you try to remove a nonexistent locator, then nothing will happen and no errors will be raised.

void vtkCellPicker::RemoveAllLocators (  ) 

Remove all locators associated with this picker.

virtual void vtkCellPicker::SetVolumeOpacityIsovalue ( double   )  [virtual]

Set the opacity isovalue to use for defining volume surfaces. The pick will occur at the location along the pick ray where the opacity of the volume is equal to this isovalue. If you want to do the pick based on an actual data isovalue rather than the opacity, then pass the data value through the scalar opacity function before using this method.

virtual double vtkCellPicker::GetVolumeOpacityIsovalue (  )  [virtual]

Set the opacity isovalue to use for defining volume surfaces. The pick will occur at the location along the pick ray where the opacity of the volume is equal to this isovalue. If you want to do the pick based on an actual data isovalue rather than the opacity, then pass the data value through the scalar opacity function before using this method.

virtual void vtkCellPicker::SetUseVolumeGradientOpacity ( int   )  [virtual]

Use the product of the scalar and gradient opacity functions when computing the opacity isovalue, instead of just using the scalar opacity. This parameter is only relevant to volume picking and is off by default.

virtual void vtkCellPicker::UseVolumeGradientOpacityOn (  )  [virtual]

Use the product of the scalar and gradient opacity functions when computing the opacity isovalue, instead of just using the scalar opacity. This parameter is only relevant to volume picking and is off by default.

virtual void vtkCellPicker::UseVolumeGradientOpacityOff (  )  [virtual]

Use the product of the scalar and gradient opacity functions when computing the opacity isovalue, instead of just using the scalar opacity. This parameter is only relevant to volume picking and is off by default.

virtual int vtkCellPicker::GetUseVolumeGradientOpacity (  )  [virtual]

Use the product of the scalar and gradient opacity functions when computing the opacity isovalue, instead of just using the scalar opacity. This parameter is only relevant to volume picking and is off by default.

virtual void vtkCellPicker::SetPickClippingPlanes ( int   )  [virtual]

The PickClippingPlanes setting controls how clipping planes are handled by the pick. If it is On, then the clipping planes become pickable objects, even though they are usually invisible. This means that if the pick ray intersects a clipping plane before it hits anything else, the pick will stop at that clipping plane. The GetProp3D() and GetMapper() methods will return the Prop3D and Mapper that the clipping plane belongs to. The GetClippingPlaneId() method will return the index of the clipping plane so that you can retrieve it from the mapper, or -1 if no clipping plane was picked. The picking of vtkImageActors is not influenced by this setting, since they have no clipping planes.

virtual void vtkCellPicker::PickClippingPlanesOn (  )  [virtual]

The PickClippingPlanes setting controls how clipping planes are handled by the pick. If it is On, then the clipping planes become pickable objects, even though they are usually invisible. This means that if the pick ray intersects a clipping plane before it hits anything else, the pick will stop at that clipping plane. The GetProp3D() and GetMapper() methods will return the Prop3D and Mapper that the clipping plane belongs to. The GetClippingPlaneId() method will return the index of the clipping plane so that you can retrieve it from the mapper, or -1 if no clipping plane was picked. The picking of vtkImageActors is not influenced by this setting, since they have no clipping planes.

virtual void vtkCellPicker::PickClippingPlanesOff (  )  [virtual]

The PickClippingPlanes setting controls how clipping planes are handled by the pick. If it is On, then the clipping planes become pickable objects, even though they are usually invisible. This means that if the pick ray intersects a clipping plane before it hits anything else, the pick will stop at that clipping plane. The GetProp3D() and GetMapper() methods will return the Prop3D and Mapper that the clipping plane belongs to. The GetClippingPlaneId() method will return the index of the clipping plane so that you can retrieve it from the mapper, or -1 if no clipping plane was picked. The picking of vtkImageActors is not influenced by this setting, since they have no clipping planes.

virtual int vtkCellPicker::GetPickClippingPlanes (  )  [virtual]

The PickClippingPlanes setting controls how clipping planes are handled by the pick. If it is On, then the clipping planes become pickable objects, even though they are usually invisible. This means that if the pick ray intersects a clipping plane before it hits anything else, the pick will stop at that clipping plane. The GetProp3D() and GetMapper() methods will return the Prop3D and Mapper that the clipping plane belongs to. The GetClippingPlaneId() method will return the index of the clipping plane so that you can retrieve it from the mapper, or -1 if no clipping plane was picked. The picking of vtkImageActors is not influenced by this setting, since they have no clipping planes.

virtual int vtkCellPicker::GetClippingPlaneId (  )  [virtual]

Get the index of the clipping plane that was intersected during the pick. This will be set regardless of whether PickClippingPlanes is On, all that is required is that the pick intersected a clipping plane of the Prop3D that was picked. The result will be -1 if the Prop3D that was picked has no clipping planes, or if the ray didn't intersect the planes.

virtual double* vtkCellPicker::GetPickNormal (  )  [virtual]

Return the normal of the picked surface at the PickPosition. If no surface was picked, then a vector pointing back at the camera is returned.

virtual void vtkCellPicker::GetPickNormal ( double  data[3]  )  [virtual]

Return the normal of the picked surface at the PickPosition. If no surface was picked, then a vector pointing back at the camera is returned.

virtual double* vtkCellPicker::GetMapperNormal (  )  [virtual]

Return the normal of the surface at the PickPosition in mapper coordinates. The result is undefined if no prop was picked.

virtual void vtkCellPicker::GetMapperNormal ( double &  ,
double &  ,
double &   
) [virtual]

Return the normal of the surface at the PickPosition in mapper coordinates. The result is undefined if no prop was picked.

virtual void vtkCellPicker::GetMapperNormal ( double  [3]  )  [virtual]

Return the normal of the surface at the PickPosition in mapper coordinates. The result is undefined if no prop was picked.

virtual int* vtkCellPicker::GetPointIJK (  )  [virtual]

Get the structured coordinates of the point at the PickPosition. Only valid for image actors and volumes with vtkImageData.

virtual void vtkCellPicker::GetPointIJK ( int &  ,
int &  ,
int &   
) [virtual]

Get the structured coordinates of the point at the PickPosition. Only valid for image actors and volumes with vtkImageData.

virtual void vtkCellPicker::GetPointIJK ( int  [3]  )  [virtual]

Get the structured coordinates of the point at the PickPosition. Only valid for image actors and volumes with vtkImageData.

virtual int* vtkCellPicker::GetCellIJK (  )  [virtual]

Get the structured coordinates of the cell at the PickPosition. Only valid for image actors and volumes with vtkImageData. Combine this with the PCoords to get the position within the cell.

virtual void vtkCellPicker::GetCellIJK ( int &  ,
int &  ,
int &   
) [virtual]

Get the structured coordinates of the cell at the PickPosition. Only valid for image actors and volumes with vtkImageData. Combine this with the PCoords to get the position within the cell.

virtual void vtkCellPicker::GetCellIJK ( int  [3]  )  [virtual]

Get the structured coordinates of the cell at the PickPosition. Only valid for image actors and volumes with vtkImageData. Combine this with the PCoords to get the position within the cell.

virtual vtkIdType vtkCellPicker::GetPointId (  )  [virtual]

Get the id of the picked point. If PointId = -1, nothing was picked. This point will be a member of any cell that is picked.

virtual vtkIdType vtkCellPicker::GetCellId (  )  [virtual]

Get the id of the picked cell. If CellId = -1, nothing was picked.

virtual int vtkCellPicker::GetSubId (  )  [virtual]

Get the subId of the picked cell. This is useful, for example, if the data is made of triangle strips. If SubId = -1, nothing was picked.

virtual double* vtkCellPicker::GetPCoords (  )  [virtual]

Get the parametric coordinates of the picked cell. Only valid if a prop was picked. The PCoords can be used to compute the weights that are needed to interpolate data values within the cell.

virtual void vtkCellPicker::GetPCoords ( double &  ,
double &  ,
double &   
) [virtual]

Get the parametric coordinates of the picked cell. Only valid if a prop was picked. The PCoords can be used to compute the weights that are needed to interpolate data values within the cell.

virtual void vtkCellPicker::GetPCoords ( double  [3]  )  [virtual]

Get the parametric coordinates of the picked cell. Only valid if a prop was picked. The PCoords can be used to compute the weights that are needed to interpolate data values within the cell.

vtkTexture* vtkCellPicker::GetTexture (  )  [inline]

Get the texture that was picked. This will always be set if the picked prop has a texture, and will always be null otherwise.

Definition at line 199 of file vtkCellPicker.h.

virtual void vtkCellPicker::SetPickTextureData ( int   )  [virtual]

If this is "On" and if the picked prop has a texture, then the data returned by GetDataSet() will be the texture's data instead of the mapper's data. The GetPointId(), GetCellId(), GetPCoords() etc. will all return information for use with the texture's data. If the picked prop does not have any texture, then GetDataSet() will return the mapper's data instead and GetPointId() etc. will return information related to the mapper's data. The default value of PickTextureData is "Off".

virtual void vtkCellPicker::PickTextureDataOn (  )  [virtual]

If this is "On" and if the picked prop has a texture, then the data returned by GetDataSet() will be the texture's data instead of the mapper's data. The GetPointId(), GetCellId(), GetPCoords() etc. will all return information for use with the texture's data. If the picked prop does not have any texture, then GetDataSet() will return the mapper's data instead and GetPointId() etc. will return information related to the mapper's data. The default value of PickTextureData is "Off".

virtual void vtkCellPicker::PickTextureDataOff (  )  [virtual]

If this is "On" and if the picked prop has a texture, then the data returned by GetDataSet() will be the texture's data instead of the mapper's data. The GetPointId(), GetCellId(), GetPCoords() etc. will all return information for use with the texture's data. If the picked prop does not have any texture, then GetDataSet() will return the mapper's data instead and GetPointId() etc. will return information related to the mapper's data. The default value of PickTextureData is "Off".

virtual int vtkCellPicker::GetPickTextureData (  )  [virtual]

If this is "On" and if the picked prop has a texture, then the data returned by GetDataSet() will be the texture's data instead of the mapper's data. The GetPointId(), GetCellId(), GetPCoords() etc. will all return information for use with the texture's data. If the picked prop does not have any texture, then GetDataSet() will return the mapper's data instead and GetPointId() etc. will return information related to the mapper's data. The default value of PickTextureData is "Off".

void vtkCellPicker::Initialize (  )  [protected, virtual]

Reimplemented from vtkPicker.

virtual void vtkCellPicker::ResetPickInfo (  )  [protected, virtual]

Reimplemented in vtkVolumePicker.

virtual double vtkCellPicker::IntersectWithLine ( double  p1[3],
double  p2[3],
double  tol,
vtkAssemblyPath path,
vtkProp3D p,
vtkAbstractMapper3D m 
) [protected, virtual]

Reimplemented from vtkPicker.

virtual double vtkCellPicker::IntersectActorWithLine ( const double  p1[3],
const double  p2[3],
double  t1,
double  t2,
double  tol,
vtkProp3D prop,
vtkMapper mapper 
) [protected, virtual]

virtual double vtkCellPicker::IntersectVolumeWithLine ( const double  p1[3],
const double  p2[3],
double  t1,
double  t2,
vtkProp3D prop,
vtkAbstractVolumeMapper mapper 
) [protected, virtual]

Reimplemented in vtkVolumePicker.

virtual double vtkCellPicker::IntersectImageActorWithLine ( const double  p1[3],
const double  p2[3],
double  t1,
double  t2,
vtkImageActor imageActor 
) [protected, virtual]

virtual double vtkCellPicker::IntersectProp3DWithLine ( const double  p1[3],
const double  p2[3],
double  t1,
double  t2,
double  tol,
vtkProp3D prop,
vtkAbstractMapper3D mapper 
) [protected, virtual]

static int vtkCellPicker::ClipLineWithPlanes ( vtkPlaneCollection planes,
const double  p1[3],
const double  p2[3],
double &  t1,
double &  t2,
int &  planeId 
) [static, protected]

static int vtkCellPicker::ClipLineWithExtent ( const int  extent[6],
const double  x1[3],
const double  x2[3],
double &  t1,
double &  t2,
int &  planeId 
) [static, protected]

static int vtkCellPicker::ComputeSurfaceNormal ( vtkDataSet data,
vtkCell cell,
const double *  weights,
double  normal[3] 
) [static, protected]

static int vtkCellPicker::ComputeSurfaceTCoord ( vtkDataSet data,
vtkCell cell,
const double *  weights,
double  tcoord[3] 
) [static, protected]

static int vtkCellPicker::HasSubCells ( int  cellType  )  [static, protected]

static int vtkCellPicker::GetNumberOfSubCells ( vtkIdList pointIds,
int  cellType 
) [static, protected]

static void vtkCellPicker::GetSubCell ( vtkDataSet data,
vtkIdList pointIds,
int  subId,
int  cellType,
vtkGenericCell cell 
) [static, protected]

static void vtkCellPicker::SubCellFromCell ( vtkGenericCell cell,
int  subId 
) [static, protected]

void vtkCellPicker::SetImageDataPickInfo ( const double  x[3],
const int  extent[6] 
) [protected]

double vtkCellPicker::ComputeVolumeOpacity ( const int  xi[3],
const double  pcoords[3],
vtkImageData data,
vtkDataArray scalars,
vtkPiecewiseFunction scalarOpacity,
vtkPiecewiseFunction gradientOpacity 
) [protected]


Member Data Documentation

Definition at line 278 of file vtkCellPicker.h.

Definition at line 280 of file vtkCellPicker.h.

Definition at line 281 of file vtkCellPicker.h.

Definition at line 282 of file vtkCellPicker.h.

Definition at line 283 of file vtkCellPicker.h.

Definition at line 285 of file vtkCellPicker.h.

Definition at line 286 of file vtkCellPicker.h.

int vtkCellPicker::SubId [protected]

Definition at line 287 of file vtkCellPicker.h.

double vtkCellPicker::PCoords[3] [protected]

Definition at line 288 of file vtkCellPicker.h.

int vtkCellPicker::PointIJK[3] [protected]

Definition at line 290 of file vtkCellPicker.h.

int vtkCellPicker::CellIJK[3] [protected]

Definition at line 291 of file vtkCellPicker.h.

double vtkCellPicker::PickNormal[3] [protected]

Definition at line 293 of file vtkCellPicker.h.

double vtkCellPicker::MapperNormal[3] [protected]

Definition at line 294 of file vtkCellPicker.h.

Definition at line 296 of file vtkCellPicker.h.

Definition at line 297 of file vtkCellPicker.h.


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

Generated on Mon Sep 27 18:19:27 2010 for VTK by  doxygen 1.5.6