VTK
|
manager for OpenGL-based selection. More...
#include <vtkHardwareSelector.h>
Classes | |
struct | PixelInformation |
Public Types | |
enum | PassTypes { PROCESS_PASS, ACTOR_PASS, COMPOSITE_INDEX_PASS, ID_LOW24, ID_MID24, ID_HIGH16, MAX_KNOWN_PASS = ID_HIGH16, MIN_KNOWN_PASS = PROCESS_PASS } |
typedef vtkObject | Superclass |
![]() | |
typedef vtkObjectBase | Superclass |
Public Member Functions | |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
void | PrintSelf (ostream &os, vtkIndent indent) |
vtkSelection * | Select () |
void | RenderCompositeIndex (unsigned int index) |
void | RenderAttributeId (vtkIdType attribid) |
int | Render (vtkRenderer *renderer, vtkProp **propArray, int propArrayCount) |
vtkProp * | GetPropFromID (int id) |
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 () |
virtual bool | CaptureBuffers () |
PixelInformation | GetPixelInformation (unsigned int display_position[2]) |
PixelInformation | GetPixelInformation (unsigned int display_position[2], int maxDist) |
void | ClearBuffers () |
bool | GetPixelInformation (unsigned int display_position[2], int &processId, vtkIdType &attrId, vtkProp *&prop) |
bool | GetPixelInformation (unsigned int display_position[2], int &processId, vtkIdType &attrId, vtkProp *&prop, int maxDist) |
void | BeginRenderProp () |
void | EndRenderProp () |
virtual void | SetProcessID (int) |
virtual int | GetProcessID () |
virtual int | GetCurrentPass () |
virtual vtkSelection * | GenerateSelection () |
virtual vtkSelection * | GenerateSelection (unsigned int r[4]) |
virtual vtkSelection * | GenerateSelection (unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2) |
![]() | |
virtual void | DebugOn () |
virtual void | DebugOff () |
unsigned char | GetDebug () |
void | SetDebug (unsigned char debugFlag) |
virtual void | Modified () |
virtual unsigned long | GetMTime () |
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
vtkCommand * | GetCommand (unsigned long tag) |
void | RemoveObserver (vtkCommand *) |
void | RemoveObservers (unsigned long event, vtkCommand *) |
void | RemoveObservers (const char *event, vtkCommand *) |
int | HasObserver (unsigned long event, vtkCommand *) |
int | HasObserver (const char *event, vtkCommand *) |
void | RemoveObserver (unsigned long tag) |
void | RemoveObservers (unsigned long event) |
void | RemoveObservers (const char *event) |
void | RemoveAllObservers () |
int | HasObserver (unsigned long event) |
int | HasObserver (const char *event) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
template<class U , class T > | |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
int | InvokeEvent (unsigned long event, void *callData) |
int | InvokeEvent (const char *event, void *callData) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
![]() | |
const char * | GetClassName () const |
virtual void | Delete () |
virtual void | FastDelete () |
void | Print (ostream &os) |
virtual void | Register (vtkObjectBase *o) |
virtual void | UnRegister (vtkObjectBase *o) |
void | SetReferenceCount (int) |
void | PrintRevisions (ostream &os) |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
int | GetReferenceCount () |
Static Public Member Functions | |
static vtkHardwareSelector * | New () |
static int | IsTypeOf (const char *type) |
static vtkHardwareSelector * | SafeDownCast (vtkObject *o) |
![]() | |
static void | BreakOnError () |
static void | SetGlobalWarningDisplay (int val) |
static void | GlobalWarningDisplayOn () |
static void | GlobalWarningDisplayOff () |
static int | GetGlobalWarningDisplay () |
Protected Member Functions | |
vtkHardwareSelector () | |
~vtkHardwareSelector () | |
int | Convert (unsigned long offset, unsigned char *pb) |
vtkIdType | GetID (int low24, int mid24, int high16) |
virtual bool | PassRequired (int pass) |
bool | IsPropHit (int propid) |
virtual void | BeginSelection () |
virtual void | EndSelection () |
void | SavePixelBuffer (int passNo) |
void | BuildPropHitList (unsigned char *rgbData) |
int | Convert (unsigned int pos[2], unsigned char *pb) |
int | Convert (int xx, int yy, unsigned char *pb) |
virtual int | GetPropID (int idx, vtkProp *vtkNotUsed(prop)) |
![]() | |
vtkObject () | |
virtual | ~vtkObject () |
virtual void | RegisterInternal (vtkObjectBase *, int check) |
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
void | InternalReleaseFocus () |
![]() | |
vtkObjectBase () | |
virtual | ~vtkObjectBase () |
virtual void | CollectRevisions (ostream &os) |
virtual void | ReportReferences (vtkGarbageCollector *) |
vtkObjectBase (const vtkObjectBase &) | |
void | operator= (const vtkObjectBase &) |
Static Protected Member Functions | |
static void | Convert (int id, float tcoord[3]) |
Protected Attributes | |
unsigned char * | PixBuffer [10] |
int | ProcessID |
int | CurrentPass |
int | InPropRender |
![]() | |
unsigned char | Debug |
vtkTimeStamp | MTime |
vtkSubjectHelper * | SubjectHelper |
![]() | |
int | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
vtkRenderer * | Renderer |
unsigned int | Area [4] |
int | FieldAssociation |
vtkIdType | MaxAttributeId |
void | ReleasePixBuffers () |
manager for OpenGL-based selection.
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:
Limitations: Antialiasing will break this class. If your graphics card settings force their use this class will return invalid results.
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.
Definition at line 96 of file vtkHardwareSelector.h.
PROCESS_PASS | |
ACTOR_PASS | |
COMPOSITE_INDEX_PASS | |
ID_LOW24 | |
ID_MID24 | |
ID_HIGH16 | |
MAX_KNOWN_PASS | |
MIN_KNOWN_PASS |
Definition at line 209 of file vtkHardwareSelector.h.
|
protected |
|
protected |
|
static |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
Reimplemented from vtkObject.
Reimplemented in vtkPHardwareSelector.
|
virtual |
Reimplemented from vtkObject.
Reimplemented in vtkPHardwareSelector.
|
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 vtkObject.
Reimplemented in vtkPHardwareSelector.
|
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 vtkObject.
Reimplemented in vtkPHardwareSelector.
|
static |
Reimplemented from vtkObject.
Reimplemented in vtkPHardwareSelector.
|
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 vtkObject.
Reimplemented in vtkPHardwareSelector.
void vtkHardwareSelector::SetRenderer | ( | vtkRenderer * | ) |
Get/Set the renderer to perform the selection on.
|
virtual |
Get/Set the renderer to perform the selection on.
|
virtual |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
|
virtual |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
|
virtual |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
|
virtual |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
|
virtual |
Get/Set the area to select as (xmin, ymin, xmax, ymax).
|
virtual |
Set the field type to select. Valid values are
|
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.
|
virtual |
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. The optional final parameter maxDist will look for a cell within the specified number of pixels from display_position.
Reimplemented in vtkPHardwareSelector.
|
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. The optional final parameter maxDist will look for a cell within the specified number of pixels from display_position.
Definition at line 136 of file vtkHardwareSelector.h.
PixelInformation vtkHardwareSelector::GetPixelInformation | ( | unsigned int | display_position[2], |
int | maxDist | ||
) |
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. The optional final parameter maxDist will look for a cell within the specified number of pixels from display_position.
|
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. The optional final parameter maxDist will look for a cell within the specified number of pixels from display_position.
Definition at line 140 of file vtkHardwareSelector.h.
bool vtkHardwareSelector::GetPixelInformation | ( | unsigned int | display_position[2], |
int & | processId, | ||
vtkIdType & | attrId, | ||
vtkProp *& | prop | ||
) |
bool vtkHardwareSelector::GetPixelInformation | ( | unsigned int | display_position[2], |
int & | processId, | ||
vtkIdType & | attrId, | ||
vtkProp *& | prop, | ||
int | maxDist | ||
) |
void vtkHardwareSelector::RenderCompositeIndex | ( | unsigned int | index | ) |
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 |
Get/Set the process id. If process id < 0 (default -1), then the PROCESS_PASS is not rendered.
|
virtual |
Get/Set the process id. If process id < 0 (default -1), then the PROCESS_PASS is not rendered.
|
virtual |
Get the current pass number.
|
inlinevirtual |
Generates the vtkSelection from pixel buffers. Requires that CaptureBuffers() has already been called. Optionally you may pass a screen region (xmin, ymin, xmax, ymax) to generate a selection from. The region must be a subregion of the region specified by SetArea(), otherwise it will be clipped to that region.
Definition at line 195 of file vtkHardwareSelector.h.
|
inlinevirtual |
Generates the vtkSelection from pixel buffers. Requires that CaptureBuffers() has already been called. Optionally you may pass a screen region (xmin, ymin, xmax, ymax) to generate a selection from. The region must be a subregion of the region specified by SetArea(), otherwise it will be clipped to that region.
Definition at line 197 of file vtkHardwareSelector.h.
|
virtual |
Generates the vtkSelection from pixel buffers. Requires that CaptureBuffers() has already been called. Optionally you may pass a screen region (xmin, ymin, xmax, ymax) to generate a selection from. The region must be a subregion of the region specified by SetArea(), otherwise it will be clipped to that region.
vtkProp* vtkHardwareSelector::GetPropFromID | ( | int | id | ) |
returns the prop associated with a ID. This is valid only until ReleasePixBuffers() gets called.
|
inlinestaticprotected |
Definition at line 224 of file vtkHardwareSelector.h.
|
inlineprotected |
Definition at line 231 of file vtkHardwareSelector.h.
|
inlineprotected |
pos
must be relative to the lower-left corner of this->Area.
Definition at line 254 of file vtkHardwareSelector.h.
|
inlineprotected |
pos
must be relative to the lower-left corner of this->Area.
Definition at line 256 of file vtkHardwareSelector.h.
|
inlineprotected |
Definition at line 277 of file vtkHardwareSelector.h.
|
protectedvirtual |
Returns is the pass indicated is needed.
|
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.
|
inlineprotectedvirtual |
Return a unique ID for the prop.
Definition at line 298 of file vtkHardwareSelector.h.
|
protectedvirtual |
|
protectedvirtual |
|
protected |
|
protected |
|
protected |
Clears all pixel buffers.
|
protected |
Clears all pixel buffers.
Definition at line 311 of file vtkHardwareSelector.h.
|
protected |
Clears all pixel buffers.
Definition at line 312 of file vtkHardwareSelector.h.
|
protected |
Clears all pixel buffers.
Definition at line 313 of file vtkHardwareSelector.h.
|
protected |
Clears all pixel buffers.
Definition at line 314 of file vtkHardwareSelector.h.
|
protected |
Definition at line 318 of file vtkHardwareSelector.h.
|
protected |
Definition at line 319 of file vtkHardwareSelector.h.
|
protected |
Definition at line 320 of file vtkHardwareSelector.h.
|
protected |
Definition at line 321 of file vtkHardwareSelector.h.