Computer Assited Medical Intervention Tool Kit
version 4.1
|
A 3D representation of a vtkPointSet to be displayed in a InteractiveViewer, this class implements the InterfaceGeometry. More...
#include <Geometry.h>
Inherits camitk::InterfaceGeometry.
Public Member Functions | |
Geometry (QString label, vtkSmartPointer< vtkPointSet > pointSet, const InterfaceGeometry::RenderingModes mode=InterfaceGeometry::Surface) | |
Instanciate a Geometry using existing stuff. More... | |
const QString | getLabel () const |
get the label of this Geometry instance More... | |
void | setLabel (QString newName) |
set the label of this Geometry instance More... | |
~Geometry () override | |
destructor More... | |
InterfaceGeometry Vtk related inherited methods | |
All the implemented InterfaceGeometry methods (Geometry is the adaptee of Component) | |
vtkSmartPointer< vtkPointSet > | getPointSet () |
void | setPointSet (vtkSmartPointer< vtkPointSet > ds) override |
set the input data of the Geometry, More... | |
void | setMeshWorldTransform (vtkSmartPointer< vtkTransform >) override |
Set the world transform (if the Geometry depends on another Frame) More... | |
vtkSmartPointer< vtkAlgorithmOutput > | getDataPort () const |
get the custom algorithm pipeline input. More... | |
void | setDataConnection (vtkSmartPointer< vtkAlgorithmOutput >) override |
call this method with the custom algorithm pipeline output More... | |
void | setPointData (vtkSmartPointer< vtkDataArray >) override |
set the point data (may contains a lookup table) More... | |
vtkSmartPointer< vtkActor > | getActor (const RenderingModes) override |
Return the actor representing this representation mode (return NULL if hightlight mode is Hidden). More... | |
vtkSmartPointer< vtkProp > | getProp (const QString &) override |
Return the vtkProp (actors, volumes and annotations) corresponding to the given name. More... | |
unsigned int | getNumberOfProp () const override |
return the number of additional prop More... | |
vtkSmartPointer< vtkProp > | getProp (unsigned int) override |
return an additional prop by its index More... | |
bool | addProp (const QString &, vtkSmartPointer< vtkProp >) override |
insert an additional prop, defining it by its name (default visibility = false) More... | |
bool | removeProp (const QString &) override |
remove a given additional prop. More... | |
void | setTexture (vtkSmartPointer< vtkTexture > texture) override |
Set a texture to this object. More... | |
void | pointPicked (vtkIdType, bool) |
a vtkPoint of the structured was picked (to be reimplemented in a Component inherited class if needed) More... | |
void | cellPicked (vtkIdType, bool) |
a vtkCell of the structured was picked (to be reimplemented in a Component inherited class if needed) More... | |
InterfaceGeometry Helpers inherited methods | |
void | getBounds (double *bounds) override |
compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax] More... | |
double | getBoundingRadius () override |
compute the object's bounding sphere radius More... | |
void | setPointPosition (const unsigned int orderNumber, const double x, const double y, const double z) override |
set a given point position More... | |
InterfaceGeometry rendering mode settings inherited methods | |
void | setRenderingModes (const RenderingModes rMode) |
Set the actor associated to a rendering mode visible or not. More... | |
const RenderingModes | getRenderingModes () const |
Return if the actor associated to a rendering mode is currently visible or not. More... | |
void | setEnhancedModes (const EnhancedModes) override |
set the enhanced mode More... | |
const EnhancedModes | getEnhancedModes () const |
get the current enhanced mode More... | |
void | setActorColor (const RenderingModes, double *) override |
Set the color of given representation modes. More... | |
void | setActorColor (const RenderingModes, const double, const double, const double) override |
Set the color of given representation modes. More... | |
void | getActorColor (const RenderingModes, double *) override |
Get the color of given representation modes in the second parameter, i.e. double[4] (r,g,b,a) More... | |
void | setColor (const double, const double, const double) override |
Set an (r,g,b) color to all representation modes, without changing the opacity. More... | |
void | setColor (const double, const double, const double, const double) override |
Set an (r,g,b,a) color to all representation modes. More... | |
void | setActorOpacity (const RenderingModes, const double) override |
Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified! More... | |
double | getActorOpacity (const RenderingModes) const override |
Return the opacity of a given renderng mode. More... | |
void | setOpacity (const double) override |
Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified! More... | |
void | setMapperScalarRange (double min, double max) override |
Set the mapper scalar range. More... | |
void | setGlyphType (const GlyphTypes type, const double size=0.0) override |
set the glyph information More... | |
void | setLinesAsTubes (bool tubes=false) override |
display lines as tubes (depeding of the boolean) (only work if the Geometry was defined using a vtkPolyData). More... | |
Public Member Functions inherited from camitk::InterfaceGeometry | |
virtual | ~InterfaceGeometry ()=default |
empty virtual destructor, to avoid memory leak More... | |
Protected Member Functions | |
vtkSmartPointer< vtkPointSet > | New () |
Private Attributes | |
VTK members (data, filters, actors, etc...) | |
vtkSmartPointer< vtkPointSet > | pointSet |
vtkSmartPointer< vtkAlgorithmOutput > | dataOutput |
to be able to set external custom pipeline More... | |
vtkSmartPointer< vtkAlgorithmOutput > | customPipelineOutput |
the external custom pipeline output (equals to dataOuput if no custom pipeline plugged) More... | |
vtkSmartPointer< vtkCastToConcrete > | concreteData |
the filter to convert the DataSet to get a correct vtkPipeline output port More... | |
vtkSmartPointer< vtkDataSetMapper > | mapper |
the VTK mapper More... | |
QMap< QString, vtkSmartPointer< vtkProp > > | extraProp |
The additional map for prop (include at least "label" and "glyph". More... | |
vtkSmartPointer< vtkTextMapper > | labelActorMapper |
the mapper to create the text More... | |
vtkSmartPointer< vtkActor > | surfaceActor |
the surface actor that manages the surfacic representation More... | |
vtkSmartPointer< vtkActor > | wireframeActor |
the wireframe actor that manages the representation as wireframe More... | |
vtkSmartPointer< vtkActor > | pointsActor |
the point actor that manages the representation as a set of points More... | |
vtkSmartPointer< vtkTexture > | texture |
texture of this object. More... | |
vtkSmartPointer< vtkTubeFilter > | tube |
the tube filter (creates tubes insead of lines) More... | |
vtkSmartPointer< vtkTransformFilter > | worldTransformFilter |
the transform filter to place the mesh correctly with respect to its Frame More... | |
vtkSmartPointer< vtkSphereSource > | sphereGeom |
the sphere glyph More... | |
actor colors | |
All Colors are decribed using r, g, b, alpha (Alpha is opacity 0 = transparent, 1 = opaque) | |
double | surfaceColor [4] |
double | wireframeColor [4] |
double | pointsColor [4] |
Backup states | |
double | oldAlphaSurface |
double | oldAlphaWireframe |
double | oldAlphaPoints |
double | oldPointsColor [4] |
Other members | |
Rendering mode options for this Geometry (which actors are visible/rendered) | |
InterfaceGeometry::RenderingModes | renderingModes |
InterfaceGeometry::EnhancedModes | enhancedModes |
Enhanced mode options (the way actors are rendered: normal, hidden, highlighted, shaded) More... | |
double | alphaShaded |
Opacity value when this object must be shaded. More... | |
QString | label |
the label More... | |
double | glyphSize |
current size of glyph (0.0 means no glyph) More... | |
void | buildLabel () |
build the label extra prop More... | |
void | updateLabel () |
update position and text of the label More... | |
void | buildGlyph (const GlyphTypes type) |
build the glyph extra prop (sphere glyph by default) More... | |
void | createPointCloudVisualization () |
force visualization of point cloud If the point set does only contains a point cloud, i.e., there is no cell to visualize the points, this method will add a default poly vertex cell that will enable default visualization. More... | |
Additional Inherited Members | |
Public Types inherited from camitk::InterfaceGeometry | |
enum | EnhancedMode { Normal = 0x0, Hidden = 0x1, Shaded = 0x2, Highlighted = 0x4 } |
(and QFlags EnhancedModes) handle the way the rendering actors will be enhanced or not (from completely hidden to highlighted) More... | |
enum | GlyphType { NoGlyph = 0x0, Sphere = 0x1 } |
(and QFlags GlyphTypes) is the type of glyph attached to the geometry representation More... | |
enum | RenderingMode { None = 0x0, Surface = 0x1, Wireframe = 0x2, Points = 0x4 } |
(and QFlags RenderingModes) handle actor rendering options (render this InterfaceGeometry as a surface, a wireframe and set of points). More... | |
A 3D representation of a vtkPointSet to be displayed in a InteractiveViewer, this class implements the InterfaceGeometry.
A Geometry is build out of a vtkPointSet. A single vtkDataSetMapper is created, with several associated vtkActors. Each actor has specific rendering properties: representation mode, color, ...
Available actors are: surface, wireframe and points.
An actor is visible or not according to the options of the RenderingModes associated to the Geometry as well as the highlight mode (from hidden to highlighted).
This class is used as a delegate by Component (who delegates all the InterfaceGeometry service implementation to Geometry), according to the Object Adapter Design Pattern (Component is the adaptor, Geometry is the adaptee concerning the InterfaceGeometry service).
If you need to add your own vtk filter/algorithm pipeline to pre-process the data, you need to write something like this:
The complete Vtk Pipeline looks like this:
* +-----> getDataPort() * +----------------+ +------------------+ +---------------------------+ / * | vtkPointSet | |vtkCastToConcrete | |vtkTransformPolyDataFilter |/ * | |----\| |----\ | |----\ your custom ----\ ... * | pointSet |----/| concreteData |----/ | data in world frame |----/ pipeline ----/ * +----------------+ +------------------+ +--------------------------+| * ^ | | * | | | * setPointSet() | | * | | * v v * getPointSet() getPointSetWorldCoords() * * * setDataConnection(..) * | * | +---OPTIONAL---+ +------------------+ * +->| vtkTubeFilter| | vtkDataSetMapper | *... ----\| |-----\ | | * ----/| tube |-----/ | mapper | * +--------------+ +------------------+ * ^ | * | V * setLinesAsTube() +------------------+ * | 3 actors: | * | surfaceActor | * | wireframeActor | * | pointsActor | * | | * +------------------+ * *
The other vtk (minor) ingredients not mentionned are specific vtkProp (actors, volumes and annotations) By default two props are defined: label and glyph. They can be accessed by getProp("label") and getProp("glyph"). You can also add your own additional custom props by using addProp(QString, vtkProp) and setPropVisible(QString, bool).
camitk::Geometry::Geometry | ( | QString | label, |
vtkSmartPointer< vtkPointSet > | pointSet, | ||
const InterfaceGeometry::RenderingModes | mode = InterfaceGeometry::Surface |
||
) |
Instanciate a Geometry using existing stuff.
label | name to display on the label |
pointSet | the vtkDataSet to take as the vtk object to display |
mode | the default rendering mode |
References alphaShaded, concreteData, createPointCloudVisualization(), customPipelineOutput, dataOutput, enhancedModes, label, mapper, camitk::InterfaceGeometry::Normal, pointsActor, pointsColor, pointSet, renderingModes, setGlyphType(), camitk::InterfaceGeometry::Sphere, surfaceActor, surfaceColor, texture, tube, wireframeActor, wireframeColor, and worldTransformFilter.
|
override |
destructor
References extraProp.
|
overridevirtual |
insert an additional prop, defining it by its name (default visibility = false)
Implements camitk::InterfaceGeometry.
References extraProp.
Referenced by buildGlyph(), and buildLabel().
|
private |
build the glyph extra prop (sphere glyph by default)
References addProp(), customPipelineOutput, extraProp, getActorColor(), glyphSize, camitk::InterfaceGeometry::Sphere, sphereGeom, camitk::InterfaceGeometry::Surface, and tube.
Referenced by getProp(), and setGlyphType().
|
private |
build the label extra prop
References addProp(), extraProp, labelActorMapper, and updateLabel().
Referenced by getProp().
|
inlinevirtual |
a vtkCell of the structured was picked (to be reimplemented in a Component inherited class if needed)
Implements camitk::InterfaceGeometry.
|
private |
force visualization of point cloud If the point set does only contains a point cloud, i.e., there is no cell to visualize the points, this method will add a default poly vertex cell that will enable default visualization.
Caveat: if the user save this component, this cell might be saved as well.
References pointSet.
Referenced by Geometry(), and setPointSet().
|
overridevirtual |
Return the actor representing this representation mode (return NULL if hightlight mode is Hidden).
If RenderingModes have a more than one possible representation, it returns in priority order: the surface, wireframe or points representation.
Implements camitk::InterfaceGeometry.
References enhancedModes, camitk::InterfaceGeometry::Hidden, mapper, camitk::InterfaceGeometry::Points, pointsActor, pointsColor, renderingModes, setActorColor(), camitk::InterfaceGeometry::Surface, surfaceActor, surfaceColor, texture, camitk::InterfaceGeometry::Wireframe, wireframeActor, and wireframeColor.
Referenced by ReorientImage::initInternalViewer(), and ReorientImage::modelChanged().
|
overridevirtual |
Get the color of given representation modes in the second parameter, i.e. double[4] (r,g,b,a)
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, pointsColor, camitk::InterfaceGeometry::Surface, surfaceColor, camitk::InterfaceGeometry::Wireframe, and wireframeColor.
Referenced by buildGlyph().
|
overridevirtual |
Return the opacity of a given renderng mode.
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, pointsColor, camitk::InterfaceGeometry::Surface, surfaceColor, camitk::InterfaceGeometry::Wireframe, and wireframeColor.
Referenced by setActorColor().
|
overridevirtual |
compute the object's bounding sphere radius
Implements camitk::InterfaceGeometry.
References getBounds(), and pointSet.
Referenced by setGlyphType().
|
overridevirtual |
compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax]
Implements camitk::InterfaceGeometry.
References pointSet.
Referenced by getBoundingRadius().
|
inlinevirtual |
get the custom algorithm pipeline input.
Implements camitk::InterfaceGeometry.
|
inlinevirtual |
get the current enhanced mode
Implements camitk::InterfaceGeometry.
|
inlinevirtual |
get the label of this Geometry instance
Implements camitk::InterfaceGeometry.
Referenced by VtkMeshUtil::saveGeometryToFile().
|
overridevirtual |
|
inlinevirtual |
Return the dataset associated to this object.
Implements camitk::InterfaceGeometry.
Referenced by VtkMeshUtil::saveGeometryToFile().
|
overridevirtual |
Return the vtkProp (actors, volumes and annotations) corresponding to the given name.
Implements camitk::InterfaceGeometry.
References buildGlyph(), buildLabel(), extraProp, and camitk::InterfaceGeometry::Sphere.
Referenced by setGlyphType().
|
overridevirtual |
|
inlinevirtual |
Return if the actor associated to a rendering mode is currently visible or not.
Implements camitk::InterfaceGeometry.
|
protected |
|
inlinevirtual |
a vtkPoint of the structured was picked (to be reimplemented in a Component inherited class if needed)
Implements camitk::InterfaceGeometry.
|
overridevirtual |
remove a given additional prop.
Implements camitk::InterfaceGeometry.
References extraProp.
|
overridevirtual |
Set the color of given representation modes.
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, pointsActor, pointsColor, camitk::InterfaceGeometry::Surface, surfaceActor, surfaceColor, camitk::InterfaceGeometry::Wireframe, wireframeActor, and wireframeColor.
Referenced by getActor(), setActorColor(), and setColor().
|
overridevirtual |
Set the color of given representation modes.
Implements camitk::InterfaceGeometry.
References getActorOpacity(), and setActorColor().
|
overridevirtual |
Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified!
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, pointsActor, pointsColor, pointSet, camitk::InterfaceGeometry::Surface, surfaceActor, surfaceColor, camitk::InterfaceGeometry::Wireframe, wireframeActor, and wireframeColor.
Referenced by setEnhancedModes(), and setOpacity().
|
overridevirtual |
Set an (r,g,b) color to all representation modes, without changing the opacity.
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, setActorColor(), camitk::InterfaceGeometry::Surface, and camitk::InterfaceGeometry::Wireframe.
Referenced by ReorientImage::buildGeometries().
|
overridevirtual |
Set an (r,g,b,a) color to all representation modes.
Implements camitk::InterfaceGeometry.
References a, camitk::InterfaceGeometry::Points, setActorColor(), camitk::InterfaceGeometry::Surface, and camitk::InterfaceGeometry::Wireframe.
|
overridevirtual |
call this method with the custom algorithm pipeline output
Implements camitk::InterfaceGeometry.
References customPipelineOutput, dataOutput, mapper, and tube.
|
overridevirtual |
set the enhanced mode
Implements camitk::InterfaceGeometry.
References alphaShaded, enhancedModes, camitk::InterfaceGeometry::Highlighted, oldAlphaPoints, oldAlphaSurface, oldAlphaWireframe, camitk::InterfaceGeometry::Points, pointsColor, renderingModes, setActorOpacity(), setOpacity(), camitk::InterfaceGeometry::Shaded, camitk::InterfaceGeometry::Surface, surfaceColor, camitk::InterfaceGeometry::Wireframe, and wireframeColor.
|
overridevirtual |
set the glyph information
Implements camitk::InterfaceGeometry.
References buildGlyph(), getBoundingRadius(), getProp(), glyphSize, and camitk::InterfaceGeometry::NoGlyph.
Referenced by Geometry(), and setPointSet().
|
inlinevirtual |
set the label of this Geometry instance
Implements camitk::InterfaceGeometry.
|
overridevirtual |
display lines as tubes (depeding of the boolean) (only work if the Geometry was defined using a vtkPolyData).
Implements camitk::InterfaceGeometry.
References customPipelineOutput, mapper, pointSet, and tube.
|
overridevirtual |
|
overridevirtual |
Set the world transform (if the Geometry depends on another Frame)
Implements camitk::InterfaceGeometry.
References worldTransformFilter.
|
overridevirtual |
Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified!
Implements camitk::InterfaceGeometry.
References camitk::InterfaceGeometry::Points, setActorOpacity(), camitk::InterfaceGeometry::Surface, and camitk::InterfaceGeometry::Wireframe.
Referenced by setEnhancedModes().
|
overridevirtual |
set the point data (may contains a lookup table)
Implements camitk::InterfaceGeometry.
|
overridevirtual |
|
overridevirtual |
set the input data of the Geometry,
Implements camitk::InterfaceGeometry.
References createPointCloudVisualization(), pointSet, setGlyphType(), and camitk::InterfaceGeometry::Sphere.
|
inlinevirtual |
Set the actor associated to a rendering mode visible or not.
Implements camitk::InterfaceGeometry.
Referenced by ReorientImage::buildGeometries().
|
overridevirtual |
Set a texture to this object.
Implements camitk::InterfaceGeometry.
References mapper, surfaceActor, and texture.
|
private |
update position and text of the label
References extraProp, glyphSize, label, labelActorMapper, and pointSet.
Referenced by buildLabel().
|
private |
Opacity value when this object must be shaded.
Referenced by Geometry(), and setEnhancedModes().
|
private |
the filter to convert the DataSet to get a correct vtkPipeline output port
Referenced by Geometry().
|
private |
the external custom pipeline output (equals to dataOuput if no custom pipeline plugged)
Referenced by buildGlyph(), Geometry(), setDataConnection(), and setLinesAsTubes().
|
private |
to be able to set external custom pipeline
Referenced by Geometry(), and setDataConnection().
|
private |
Enhanced mode options (the way actors are rendered: normal, hidden, highlighted, shaded)
Referenced by Geometry(), getActor(), and setEnhancedModes().
|
private |
The additional map for prop (include at least "label" and "glyph".
Referenced by addProp(), buildGlyph(), buildLabel(), getNumberOfProp(), getProp(), removeProp(), updateLabel(), and ~Geometry().
|
private |
current size of glyph (0.0 means no glyph)
Referenced by buildGlyph(), setGlyphType(), and updateLabel().
|
private |
the label
Referenced by Geometry(), and updateLabel().
|
private |
the mapper to create the text
Referenced by buildLabel(), and updateLabel().
|
private |
the VTK mapper
Referenced by Geometry(), getActor(), setDataConnection(), setLinesAsTubes(), setMapperScalarRange(), setPointData(), and setTexture().
|
private |
Referenced by setEnhancedModes().
|
private |
Referenced by setEnhancedModes().
|
private |
Referenced by setEnhancedModes().
|
private |
|
private |
the point actor that manages the representation as a set of points
Referenced by Geometry(), getActor(), setActorColor(), and setActorOpacity().
|
private |
Referenced by Geometry(), getActor(), getActorColor(), getActorOpacity(), setActorColor(), setActorOpacity(), and setEnhancedModes().
|
private |
The low-level VTK data
Referenced by createPointCloudVisualization(), Geometry(), getBoundingRadius(), getBounds(), setActorOpacity(), setLinesAsTubes(), setPointData(), setPointPosition(), setPointSet(), and updateLabel().
|
private |
Referenced by Geometry(), getActor(), and setEnhancedModes().
|
private |
the sphere glyph
Referenced by buildGlyph().
|
private |
the surface actor that manages the surfacic representation
Referenced by Geometry(), getActor(), setActorColor(), setActorOpacity(), and setTexture().
|
private |
Referenced by Geometry(), getActor(), getActorColor(), getActorOpacity(), setActorColor(), setActorOpacity(), and setEnhancedModes().
|
private |
texture of this object.
Referenced by Geometry(), getActor(), and setTexture().
|
private |
the tube filter (creates tubes insead of lines)
Referenced by buildGlyph(), Geometry(), setDataConnection(), and setLinesAsTubes().
|
private |
the wireframe actor that manages the representation as wireframe
Referenced by Geometry(), getActor(), setActorColor(), and setActorOpacity().
|
private |
Referenced by Geometry(), getActor(), getActorColor(), getActorOpacity(), setActorColor(), setActorOpacity(), and setEnhancedModes().
|
private |
the transform filter to place the mesh correctly with respect to its Frame
Referenced by Geometry(), and setMeshWorldTransform().