Medical Imaging Interaction Toolkit  2016.11.0
Medical Imaging Interaction Toolkit
mitk::PlaneGeometryDataVtkMapper3D Class Reference

Vtk-based mapper to display a PlaneGeometry in a 3D windowUses a PlaneGeometryDataToSurfaceFilter object to create a vtkPolyData representation of a given PlaneGeometry instance. PlaneGeometry may either contain a common flat plane or a curved plane (ThinPlateSplineCurvedGeometry). More...

#include <mitkPlaneGeometryDataVtkMapper3D.h>

Inheritance diagram for mitk::PlaneGeometryDataVtkMapper3D:
Collaboration diagram for mitk::PlaneGeometryDataVtkMapper3D:

Classes

class  ActorInfo
 

Public Types

typedef PlaneGeometryDataVtkMapper3D Self
 
typedef VtkMapper Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
- Public Types inherited from mitk::VtkMapper
typedef VtkMapper Self
 
typedef Mapper Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 
- Public Types inherited from mitk::Mapper
typedef Mapper Self
 
typedef itk::Object Superclass
 
typedef itk::SmartPointer< SelfPointer
 
typedef itk::SmartPointer< const SelfConstPointer
 

Public Member Functions

virtual std::vector< std::string > GetClassHierarchy () const override
 
virtual const char * GetClassName () const
 
Pointer Clone () const
 
virtual vtkProp * GetVtkProp (mitk::BaseRenderer *renderer) override
 
virtual void UpdateVtkTransform (mitk::BaseRenderer *renderer) override
 Set the vtkTransform of the m_Prop3D for the current time step of renderer. More...
 
virtual const PlaneGeometryDataGetInput ()
 Get the PlaneGeometryData to map. More...
 
virtual void SetDataStorageForTexture (mitk::DataStorage *storage)
 All images found when traversing the (sub-) tree starting at iterator which are resliced by an ImageVtkMapper2D will be mapped. This method is used to set the data storage to traverse. This offers the possibility to use this mapper for other data storages (not only the default data storage). More...
 
- Public Member Functions inherited from mitk::VtkMapper
virtual bool IsVtkBased () const override
 Returns whether this is an vtk-based mapper. More...
 
void MitkRender (mitk::BaseRenderer *renderer, mitk::VtkPropRenderer::RenderType type) override
 Determines which geometry should be rendered (opaque, translucent, volumetric, overlay) and calls the appropriate function. More...
 
virtual void MitkRenderOverlay (BaseRenderer *renderer)
 Checks visibility and renders the overlay. More...
 
virtual void MitkRenderOpaqueGeometry (BaseRenderer *renderer)
 Checks visibility and renders untransparent geometry. More...
 
virtual void MitkRenderTranslucentGeometry (BaseRenderer *renderer)
 Checks visiblity and renders transparent geometry. More...
 
virtual void MitkRenderVolumetricGeometry (BaseRenderer *renderer)
 Checks visibility and renders volumes. More...
 
virtual bool HasVtkProp (const vtkProp *prop, BaseRenderer *renderer)
 Returns true if this mapper owns the specified vtkProp for the given BaseRenderer. More...
 
virtual void ApplyProperties (vtkActor *actor, mitk::BaseRenderer *renderer)
 Apply color and opacity properties read from the PropertyList. More...
 
void ApplyShaderProperties (mitk::BaseRenderer *renderer)
 SHADERTODO. More...
 
virtual void ApplyColorAndOpacityProperties (mitk::BaseRenderer *renderer, vtkActor *actor) override
 Apply color and opacity properties read from the PropertyList. Called by mapper subclasses. More...
 
virtual void ReleaseGraphicsResources (mitk::BaseRenderer *)
 Release vtk-based graphics resources that are being consumed by this mapper. More...
 
- Public Member Functions inherited from mitk::Mapper
virtual void SetDataNode (DataNode *_arg)
 Set the DataNode containing the data to map. More...
 
virtual DataNodeGetDataNode () const
 Get the DataNode containing the data to map. Method only returns valid DataNode Pointer if the mapper belongs to a data node. Otherwise, the returned DataNode Pointer might be invalid. More...
 
BaseDataGetData () const
 Get the data to map. More...
 
virtual bool GetColor (float rgb[3], BaseRenderer *renderer, const char *name="color") const
 Convenience access method for color properties (instances of ColorProperty) More...
 
virtual bool GetVisibility (bool &visible, BaseRenderer *renderer, const char *name="visible") const
 Convenience access method for visibility properties (instances of BoolProperty) More...
 
virtual bool GetOpacity (float &opacity, BaseRenderer *renderer, const char *name="opacity") const
 Convenience access method for opacity properties (instances of FloatProperty) More...
 
virtual bool GetLevelWindow (LevelWindow &levelWindow, BaseRenderer *renderer, const char *name="levelwindow") const
 Convenience access method for color properties (instances of LevelWindoProperty) More...
 
virtual bool IsVisible (BaseRenderer *renderer, const char *name="visible") const
 Convenience access method for visibility properties (instances of BoolProperty). Return value is the visibility. Default is visible==true, i.e., true is returned even if the property (propertyKey) is not found. More...
 
virtual void Update (BaseRenderer *renderer)
 Calls the time step of the input data for the specified renderer and checks whether the time step is valid and calls method GenerateDataForRenderer() More...
 
int GetTimestep () const
 Returns the current time step as calculated from the renderer. More...
 
virtual bool IsLODEnabled (BaseRenderer *) const
 

Static Public Member Functions

static const char * GetStaticNameOfClass ()
 
static Pointer New ()
 
- Static Public Member Functions inherited from mitk::VtkMapper
static const char * GetStaticNameOfClass ()
 
static void SetVtkMapperImmediateModeRendering (vtkMapper *mapper)
 Re-issues all drawing commands required to describe the entire scene each time a new frame is required, regardless of actual changes. More...
 
- Static Public Member Functions inherited from mitk::Mapper
static const char * GetStaticNameOfClass ()
 
static void SetDefaultProperties (DataNode *node, BaseRenderer *renderer=nullptr, bool overwrite=false)
 Set default values of properties used by this mapper to node. More...
 

Protected Types

typedef std::multimap< int, vtkActor * > LayerSortedActorList
 
typedef std::map< ImageVtkMapper2D *, ActorInfoActorList
 List holding the vtkActor to map the image into 3D for each ImageMapper. More...
 
typedef itk::MemberCommand< PlaneGeometryDataVtkMapper3DMemberCommandType
 

Protected Member Functions

 PlaneGeometryDataVtkMapper3D ()
 
virtual ~PlaneGeometryDataVtkMapper3D ()
 
virtual void GenerateDataForRenderer (BaseRenderer *renderer) override
 Generate the data needed for rendering into renderer. More...
 
void ProcessNode (DataNode *node, BaseRenderer *renderer, Surface *surface, LayerSortedActorList &layerSortedActors)
 
void ImageMapperDeletedCallback (itk::Object *caller, const itk::EventObject &event)
 
- Protected Member Functions inherited from mitk::VtkMapper
 VtkMapper ()
 
virtual ~VtkMapper ()
 
- Protected Member Functions inherited from mitk::Mapper
 Mapper ()
 explicit constructor which disallows implicit conversions More...
 
virtual ~Mapper ()
 virtual destructor in order to derive from this class More...
 
virtual void GenerateData ()
 Generate the data needed for rendering (independent of a specific renderer) More...
 
virtual void CalculateTimeStep (BaseRenderer *renderer)
 Updates the time step, which is sometimes needed in subclasses. More...
 
virtual void ResetMapper (BaseRenderer *)
 Reset the mapper (i.e., make sure that nothing is displayed) if no valid data is present. In most cases the reimplemented function disables the according actors (toggling visibility off) More...
 
virtual OverlayManagerGetOverlayManager () const
 

Protected Attributes

vtkAssembly * m_Prop3DAssembly
 general PropAssembly to hold the entire scene More...
 
vtkAssembly * m_ImageAssembly
 PropAssembly to hold the planes. More...
 
PlaneGeometryDataToSurfaceFilter::Pointer m_SurfaceCreator
 
BoundingBox::Pointer m_SurfaceCreatorBoundingBox
 
BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer
 
vtkFeatureEdges * m_Edges
 Edge extractor for tube-shaped frame. More...
 
vtkTransformPolyDataFilter * m_EdgeTransformer
 Filter to apply object transform to the extracted edges. More...
 
vtkTubeFilter * m_EdgeTuber
 Source to create the tube-shaped frame. More...
 
vtkPolyDataMapper * m_EdgeMapper
 Mapper for the tube-shaped frame. More...
 
vtkActor * m_EdgeActor
 Actor for the tube-shaped frame. More...
 
vtkPolyDataMapper * m_BackgroundMapper
 Mapper for black plane background. More...
 
vtkActor * m_BackgroundActor
 Actor for black plane background. More...
 
vtkTransformPolyDataFilter * m_NormalsTransformer
 Transforms the suface before applying the glyph filter. More...
 
vtkPolyDataMapper * m_FrontNormalsMapper
 Mapper for normals representation (thin lines) More...
 
vtkPolyDataMapper * m_BackNormalsMapper
 
vtkHedgeHog * m_FrontHedgeHog
 Generates lines for surface normals. More...
 
vtkHedgeHog * m_BackHedgeHog
 
vtkActor * m_FrontNormalsActor
 Actor to hold the normals arrows. More...
 
vtkActor * m_BackNormalsActor
 
vtkCleanPolyData * m_Cleaner
 
bool m_NormalsActorAdded
 
mitk::WeakPointer< mitk::DataStoragem_DataStorage
 The DataStorage defines which part of the data tree is traversed for renderering. More...
 
ActorList m_ImageActors
 
MemberCommandType::Pointer m_ImageMapperDeletedCommand
 
- Protected Attributes inherited from mitk::Mapper
mitk::DataNodem_DataNode
 

Additional Inherited Members

- Public Attributes inherited from mitk::VtkMapper
mitk::LocalStorageHandler< VtkMapperLocalStoragem_VtkMapperLSH
 

Detailed Description

Vtk-based mapper to display a PlaneGeometry in a 3D window

Uses a PlaneGeometryDataToSurfaceFilter object to create a vtkPolyData representation of a given PlaneGeometry instance. PlaneGeometry may either contain a common flat plane or a curved plane (ThinPlateSplineCurvedGeometry).

The vtkPolyData object is then decorated by a colored tube on the edges and by image textures if possible (currently this requires that there is a 2D render window rendering the same geometry as this mapper).

Properties that influence rendering are:

  • "draw edges": (Bool) Toggle display of the tubed frame
  • "color": (ColorProperty) Color of the tubed frame.
  • "xresolution": (FloatProperty) Resolution (=number of tiles) in x direction. Only relevant for ThinPlateSplineCurvedGeometry
  • "yresolution": (FloatProperty) Resolution (=number of tiles) in y direction. Only relevant for ThinPlateSplineCurvedGeometry
  • "draw normals 3D": (BoolProperty) If true, a vtkHedgeHog is used to display normals for the generated surface object. Useful to distinguish front and back of a plane. Hedgehogs are colored according to "front color" and "back color"
  • "color two sides": (BoolProperty) If true, front and back side of the plane are colored differently ("front color" and "back color")
  • "invert normals": (BoolProperty) Inverts front/back for display.
  • "front color": (ColorProperty) Color for front side of the plane
  • "back color": (ColorProperty) Color for back side of the plane
  • "material.representation": (BoolProperty) Choose the representation to draw the mesh in (Surface, Wireframe, Point Cloud)
  • "surfacegeometry": TODO: Add documentation
  • "LookupTable": (LookupTableProperty) Set the lookuptable to render with.

Note: The following properties are set for each image individually, and thus, also influence the rendering of this mapper:

  • "texture interpolation": (BoolProperty) Turn on/off the texture interpolation of each image
  • "use color": (BoolProperty) Decide whether we want to use the color property or a lookuptable.
  • "binary": (BoolProperty) Binary image handling: Color the value=1.0 with the color property and make the background (value=0.0) of the image translucent.
  • "layer": (IntProperty) Controls what image is considered "on top" of another. In the case that two should inhabit the same space, higher layer occludes lower layer.
  • "opacity": (FloatProperty) Set the opacity for each rendered image.
  • "color": (FloatProperty) Set the color for each rendered image.

The internal filter pipeline which combines a (sometimes deformed) 2D surface with a nice frame and image textures is illustrated in the following sketch:

mitkPlaneGeometryDataVtkMapper3D.png
Internal filter pipeline

Definition at line 98 of file mitkPlaneGeometryDataVtkMapper3D.h.

Member Typedef Documentation

List holding the vtkActor to map the image into 3D for each ImageMapper.

Definition at line 215 of file mitkPlaneGeometryDataVtkMapper3D.h.

typedef std::multimap<int, vtkActor *> mitk::PlaneGeometryDataVtkMapper3D::LayerSortedActorList
protected

Definition at line 128 of file mitkPlaneGeometryDataVtkMapper3D.h.

Constructor & Destructor Documentation

Member Function Documentation

Pointer mitk::PlaneGeometryDataVtkMapper3D::Clone ( ) const
virtual std::vector<std::string> mitk::PlaneGeometryDataVtkMapper3D::GetClassHierarchy ( ) const
inlineoverridevirtual

Reimplemented from mitk::VtkMapper.

Definition at line 101 of file mitkPlaneGeometryDataVtkMapper3D.h.

virtual const char* mitk::PlaneGeometryDataVtkMapper3D::GetClassName ( ) const
virtual

Reimplemented from mitk::VtkMapper.

const PlaneGeometryData * mitk::PlaneGeometryDataVtkMapper3D::GetInput ( void  )
virtual
static const char* mitk::PlaneGeometryDataVtkMapper3D::GetStaticNameOfClass ( )
inlinestatic

Definition at line 101 of file mitkPlaneGeometryDataVtkMapper3D.h.

vtkProp * mitk::PlaneGeometryDataVtkMapper3D::GetVtkProp ( mitk::BaseRenderer renderer)
overridevirtual

Overloaded since the displayed color-frame of the image mustn't be transformed after generation of poly data, but before (vertex coordinates only)

Implements mitk::VtkMapper.

Definition at line 156 of file mitkPlaneGeometryDataVtkMapper3D.cpp.

References mitk::Mapper::GetDataNode(), m_ImageAssembly, and m_Prop3DAssembly.

void mitk::PlaneGeometryDataVtkMapper3D::ImageMapperDeletedCallback ( itk::Object *  caller,
const itk::EventObject &  event 
)
protected

Definition at line 188 of file mitkPlaneGeometryDataVtkMapper3D.cpp.

References m_ImageActors.

Referenced by PlaneGeometryDataVtkMapper3D().

static Pointer mitk::PlaneGeometryDataVtkMapper3D::New ( )
static
void mitk::PlaneGeometryDataVtkMapper3D::SetDataStorageForTexture ( mitk::DataStorage storage)
virtual

All images found when traversing the (sub-) tree starting at iterator which are resliced by an ImageVtkMapper2D will be mapped. This method is used to set the data storage to traverse. This offers the possibility to use this mapper for other data storages (not only the default data storage).

Definition at line 179 of file mitkPlaneGeometryDataVtkMapper3D.cpp.

References m_DataStorage.

void mitk::PlaneGeometryDataVtkMapper3D::UpdateVtkTransform ( mitk::BaseRenderer renderer)
overridevirtual

Set the vtkTransform of the m_Prop3D for the current time step of renderer.

Called by mitk::VtkPropRenderer::Update before rendering. This method will transform all actors (e.g. of an vtkAssembly) according the geometry.

Warning
This method transforms only props which derive from vtkProp3D. Make sure to use vtkAssembly, if you have multiple props. vtkPropAssembly does not work, since it derives from vtkProp.

Reimplemented from mitk::VtkMapper.

Definition at line 169 of file mitkPlaneGeometryDataVtkMapper3D.cpp.

References mitk::Mapper::GetDataNode(), mitk::Mapper::GetTimestep(), and m_ImageAssembly.

Member Data Documentation

vtkActor* mitk::PlaneGeometryDataVtkMapper3D::m_BackgroundActor
protected

Actor for black plane background.

Definition at line 171 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkPolyDataMapper* mitk::PlaneGeometryDataVtkMapper3D::m_BackgroundMapper
protected
vtkHedgeHog* mitk::PlaneGeometryDataVtkMapper3D::m_BackHedgeHog
protected
vtkActor* mitk::PlaneGeometryDataVtkMapper3D::m_BackNormalsActor
protected
vtkPolyDataMapper* mitk::PlaneGeometryDataVtkMapper3D::m_BackNormalsMapper
protected
vtkCleanPolyData* mitk::PlaneGeometryDataVtkMapper3D::m_Cleaner
protected

Cleans the polyline in order to avoid phantom boundaries

Definition at line 189 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

mitk::WeakPointer<mitk::DataStorage> mitk::PlaneGeometryDataVtkMapper3D::m_DataStorage
protected

The DataStorage defines which part of the data tree is traversed for renderering.

Definition at line 195 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), SetDataStorageForTexture(), and ~PlaneGeometryDataVtkMapper3D().

vtkActor* mitk::PlaneGeometryDataVtkMapper3D::m_EdgeActor
protected

Actor for the tube-shaped frame.

Definition at line 165 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkPolyDataMapper* mitk::PlaneGeometryDataVtkMapper3D::m_EdgeMapper
protected
vtkFeatureEdges* mitk::PlaneGeometryDataVtkMapper3D::m_Edges
protected

Edge extractor for tube-shaped frame.

Definition at line 153 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkTransformPolyDataFilter* mitk::PlaneGeometryDataVtkMapper3D::m_EdgeTransformer
protected

Filter to apply object transform to the extracted edges.

Definition at line 156 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkTubeFilter* mitk::PlaneGeometryDataVtkMapper3D::m_EdgeTuber
protected

Source to create the tube-shaped frame.

Definition at line 159 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkHedgeHog* mitk::PlaneGeometryDataVtkMapper3D::m_FrontHedgeHog
protected

Generates lines for surface normals.

Definition at line 181 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkActor* mitk::PlaneGeometryDataVtkMapper3D::m_FrontNormalsActor
protected

Actor to hold the normals arrows.

Definition at line 185 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkPolyDataMapper* mitk::PlaneGeometryDataVtkMapper3D::m_FrontNormalsMapper
protected

Mapper for normals representation (thin lines)

Definition at line 177 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

ActorList mitk::PlaneGeometryDataVtkMapper3D::m_ImageActors
protected
vtkAssembly* mitk::PlaneGeometryDataVtkMapper3D::m_ImageAssembly
protected
MemberCommandType::Pointer mitk::PlaneGeometryDataVtkMapper3D::m_ImageMapperDeletedCommand
protected
bool mitk::PlaneGeometryDataVtkMapper3D::m_NormalsActorAdded
protected

Internal flag, if actors for normals are already added to m_Prop3DAssembly

Definition at line 192 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer().

vtkTransformPolyDataFilter* mitk::PlaneGeometryDataVtkMapper3D::m_NormalsTransformer
protected

Transforms the suface before applying the glyph filter.

Definition at line 174 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

vtkAssembly* mitk::PlaneGeometryDataVtkMapper3D::m_Prop3DAssembly
protected

general PropAssembly to hold the entire scene

Definition at line 141 of file mitkPlaneGeometryDataVtkMapper3D.h.

Referenced by GenerateDataForRenderer(), GetVtkProp(), PlaneGeometryDataVtkMapper3D(), and ~PlaneGeometryDataVtkMapper3D().

PlaneGeometryDataToSurfaceFilter::Pointer mitk::PlaneGeometryDataVtkMapper3D::m_SurfaceCreator
protected
BoundingBox::Pointer mitk::PlaneGeometryDataVtkMapper3D::m_SurfaceCreatorBoundingBox
protected
BoundingBox::PointsContainer::Pointer mitk::PlaneGeometryDataVtkMapper3D::m_SurfaceCreatorPointsContainer
protected

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