#include <vtkHardwareSelector.h>
vtkHardwareSelector is a helper that orchestrates color buffer based selection. This relies on OpenGL. vtkHardwareSelector can be used to select visible cells or points within a given rectangle of the RenderWindow. To use it, call in order:
Currently only cells from PolyDataMappers can be selected from. When vtkRenderer::Selector is non-null vtkPainterPolyDataMapper uses the vtkHardwareSelectionPolyDataPainter which make appropriate calls to BeginRenderProp(), EndRenderProp(), RenderAttributeId() to render colors correctly. Until alternatives to vtkHardwareSelectionPolyDataPainter exist that can do a similar coloration of other vtkDataSet types, only polygonal data can be selected. If you need to select other data types, consider using vtkDataSetMapper and turning on it's PassThroughCellIds feature, or using vtkFrustumExtractor.
Only Opaque geometry in Actors is selected from. Assemblies and LODMappers are not currently supported.
During selection, visible datasets that can not be selected from are temporarily hidden so as not to produce invalid indices from their colors.
Definition at line 72 of file vtkHardwareSelector.h.
vtkRenderer * | Renderer |
unsigned int | Area [4] |
int | FieldAssociation |
vtkIdType | MaxAttributeId |
void | ReleasePixBuffers () |
Public Types | |
enum | PassTypes { PROCESS_PASS, ACTOR_PASS, ID_LOW24, ID_MID24, ID_HIGH16, MAX_KNOWN_PASS = ID_HIGH16, MIN_KNOWN_PASS = PROCESS_PASS } |
typedef vtkObject | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
void | PrintSelf (ostream &os, vtkIndent indent) |
vtkSelection * | Select () |
void | RenderAttributeId (vtkIdType attribid) |
int | Render (vtkRenderer *renderer, vtkProp **propArray, int propArrayCount) |
void | SetRenderer (vtkRenderer *) |
virtual vtkRenderer * | GetRenderer () |
virtual void | SetArea (unsigned int, unsigned int, unsigned int, unsigned int) |
virtual void | SetArea (unsigned int[4]) |
virtual unsigned int * | GetArea () |
virtual void | GetArea (unsigned int &, unsigned int &, unsigned int &, unsigned int &) |
virtual void | GetArea (unsigned int[4]) |
virtual void | SetFieldAssociation (int) |
virtual int | GetFieldAssociation () |
bool | CaptureBuffers () |
bool | GetPixelInformation (unsigned int display_position[2], int &processId, vtkIdType &attrId, vtkProp *&prop) |
void | ClearBuffers () |
void | BeginRenderProp () |
void | EndRenderProp () |
virtual void | SetProcessID (int) |
virtual int | GetProcessID () |
virtual int | GetCurrentPass () |
Static Public Member Functions | |
static vtkHardwareSelector * | New () |
static int | IsTypeOf (const char *type) |
static vtkHardwareSelector * | SafeDownCast (vtkObject *o) |
Protected Member Functions | |
vtkHardwareSelector () | |
~vtkHardwareSelector () | |
int | Convert (unsigned long offset, unsigned char *pb) |
int | Convert (int xx, int yy, unsigned char *pb) |
vtkIdType | GetID (int low24, int mid24, int high16) |
virtual bool | PassRequired (int pass) |
bool | IsPropHit (int propid) |
virtual vtkSelection * | GenerateSelection () |
virtual void | BeginSelection () |
virtual void | EndSelection () |
void | SavePixelBuffer (int passNo) |
void | BuildPropHitList (unsigned char *rgbData) |
virtual int | GetPropID (int idx, vtkProp *vtkNotUsed(prop)) |
Static Protected Member Functions | |
static void | Convert (int id, float tcoord[3]) |
Protected Attributes | |
unsigned char * | PixBuffer [10] |
int | ProcessID |
int | CurrentPass |
Definition at line 149 of file vtkHardwareSelector.h.
vtkHardwareSelector::vtkHardwareSelector | ( | ) | [protected] |
vtkHardwareSelector::~vtkHardwareSelector | ( | ) | [protected] |
static vtkHardwareSelector* vtkHardwareSelector::New | ( | ) | [static] |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkObject.
virtual const char* vtkHardwareSelector::GetClassName | ( | ) | [virtual] |
Reimplemented from vtkObject.
static int vtkHardwareSelector::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 vtkTypeRevisionMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
virtual int vtkHardwareSelector::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 vtkTypeRevisionMacro found in vtkSetGet.h.
Reimplemented from vtkObject.
static vtkHardwareSelector* vtkHardwareSelector::SafeDownCast | ( | vtkObject * | o | ) | [static] |
Reimplemented from vtkObject.
void vtkHardwareSelector::PrintSelf | ( | ostream & | os, | |
vtkIndent | indent | |||
) | [virtual] |
void vtkHardwareSelector::SetRenderer | ( | vtkRenderer * | ) |
Get/Set the renderer to perform the selection on.
virtual vtkRenderer* vtkHardwareSelector::GetRenderer | ( | ) | [virtual] |
Get/Set the renderer to perform the selection on.
virtual void vtkHardwareSelector::SetArea | ( | unsigned | int, | |
unsigned | int, | |||
unsigned | int, | |||
unsigned | int | |||
) | [virtual] |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
virtual void vtkHardwareSelector::SetArea | ( | unsigned | int[4] | ) | [virtual] |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
virtual unsigned int* vtkHardwareSelector::GetArea | ( | ) | [virtual] |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
virtual void vtkHardwareSelector::GetArea | ( | unsigned int & | , | |
unsigned int & | , | |||
unsigned int & | , | |||
unsigned int & | ||||
) | [virtual] |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
virtual void vtkHardwareSelector::GetArea | ( | unsigned | int[4] | ) | [virtual] |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
virtual void vtkHardwareSelector::SetFieldAssociation | ( | int | ) | [virtual] |
Set the field type to select. Valid values are
virtual int vtkHardwareSelector::GetFieldAssociation | ( | ) | [virtual] |
Set the field type to select. Valid values are
vtkSelection* vtkHardwareSelector::Select | ( | ) |
Perform the selection. Returns a new instance of vtkSelection containing the selection on success.
bool vtkHardwareSelector::CaptureBuffers | ( | ) |
It is possible to use the vtkHardwareSelector for a custom picking. (Look at vtkScenePicker). In that case instead of Select() on can use CaptureBuffers() to render the selection buffers and then get information about pixel locations suing GetPixelInformation(). Use ClearBuffers() to clear buffers after one's done with the scene.
bool vtkHardwareSelector::GetPixelInformation | ( | unsigned int | display_position[2], | |
int & | processId, | |||
vtkIdType & | attrId, | |||
vtkProp *& | prop | |||
) |
It is possible to use the vtkHardwareSelector for a custom picking. (Look at vtkScenePicker). In that case instead of Select() on can use CaptureBuffers() to render the selection buffers and then get information about pixel locations suing GetPixelInformation(). Use ClearBuffers() to clear buffers after one's done with the scene.
void vtkHardwareSelector::ClearBuffers | ( | ) | [inline] |
It is possible to use the vtkHardwareSelector for a custom picking. (Look at vtkScenePicker). In that case instead of Select() on can use CaptureBuffers() to render the selection buffers and then get information about pixel locations suing GetPixelInformation(). Use ClearBuffers() to clear buffers after one's done with the scene.
Definition at line 117 of file vtkHardwareSelector.h.
void vtkHardwareSelector::RenderAttributeId | ( | vtkIdType | attribid | ) |
int vtkHardwareSelector::Render | ( | vtkRenderer * | renderer, | |
vtkProp ** | propArray, | |||
int | propArrayCount | |||
) |
Called by vtkRenderer to render the selection pass. Returns the number of props rendered.
void vtkHardwareSelector::BeginRenderProp | ( | ) |
Called by the mapper (vtkHardwareSelectionPolyDataPainter) before and after rendering each prop.
void vtkHardwareSelector::EndRenderProp | ( | ) |
Called by the mapper (vtkHardwareSelectionPolyDataPainter) before and after rendering each prop.
virtual void vtkHardwareSelector::SetProcessID | ( | int | ) | [virtual] |
Get/Set the process id. If process id < 0 (default -1), then the PROCESS_PASS is not rendered.
virtual int vtkHardwareSelector::GetProcessID | ( | ) | [virtual] |
Get/Set the process id. If process id < 0 (default -1), then the PROCESS_PASS is not rendered.
virtual int vtkHardwareSelector::GetCurrentPass | ( | ) | [virtual] |
Get the current pass number.
static void vtkHardwareSelector::Convert | ( | int | id, | |
float | tcoord[3] | |||
) | [inline, static, protected] |
Definition at line 163 of file vtkHardwareSelector.h.
int vtkHardwareSelector::Convert | ( | unsigned long | offset, | |
unsigned char * | pb | |||
) | [inline, protected] |
Definition at line 170 of file vtkHardwareSelector.h.
int vtkHardwareSelector::Convert | ( | int | xx, | |
int | yy, | |||
unsigned char * | pb | |||
) | [inline, protected] |
Definition at line 191 of file vtkHardwareSelector.h.
vtkIdType vtkHardwareSelector::GetID | ( | int | low24, | |
int | mid24, | |||
int | high16 | |||
) | [inline, protected] |
Definition at line 211 of file vtkHardwareSelector.h.
virtual bool vtkHardwareSelector::PassRequired | ( | int | pass | ) | [protected, virtual] |
Returns is the pass indicated is needed.
bool vtkHardwareSelector::IsPropHit | ( | int | propid | ) | [protected] |
After the ACTOR_PASS this return true or false depending upon whether the prop was hit in the ACTOR_PASS. This makes it possible to skip props that are not involved in the selection after the first pass.
virtual vtkSelection* vtkHardwareSelector::GenerateSelection | ( | ) | [protected, virtual] |
Internal method that generates the vtkSelection from pixel buffers.
virtual int vtkHardwareSelector::GetPropID | ( | int | idx, | |
vtkProp * | vtkNotUsedprop | |||
) | [inline, protected, virtual] |
Return a unique ID for the prop.
Definition at line 235 of file vtkHardwareSelector.h.
virtual void vtkHardwareSelector::BeginSelection | ( | ) | [protected, virtual] |
virtual void vtkHardwareSelector::EndSelection | ( | ) | [protected, virtual] |
void vtkHardwareSelector::SavePixelBuffer | ( | int | passNo | ) | [protected] |
void vtkHardwareSelector::BuildPropHitList | ( | unsigned char * | rgbData | ) | [protected] |
void vtkHardwareSelector::ReleasePixBuffers | ( | ) | [protected] |
Clears all pixel buffers.
vtkRenderer* vtkHardwareSelector::Renderer [protected] |
Clears all pixel buffers.
Definition at line 248 of file vtkHardwareSelector.h.
unsigned int vtkHardwareSelector::Area[4] [protected] |
Clears all pixel buffers.
Definition at line 249 of file vtkHardwareSelector.h.
int vtkHardwareSelector::FieldAssociation [protected] |
Clears all pixel buffers.
Definition at line 250 of file vtkHardwareSelector.h.
vtkIdType vtkHardwareSelector::MaxAttributeId [protected] |
Clears all pixel buffers.
Definition at line 251 of file vtkHardwareSelector.h.
unsigned char* vtkHardwareSelector::PixBuffer[10] [protected] |
Definition at line 255 of file vtkHardwareSelector.h.
int vtkHardwareSelector::ProcessID [protected] |
Definition at line 256 of file vtkHardwareSelector.h.
int vtkHardwareSelector::CurrentPass [protected] |
Definition at line 257 of file vtkHardwareSelector.h.