Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkPlaneGeometryDataVtkMapper3D.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkPlaneGeometryDataVtkMapper3D_h
14 #define mitkPlaneGeometryDataVtkMapper3D_h
15 
16 #include <mitkDataStorage.h>
18 #include <mitkVtkMapper.h>
19 #include <mitkWeakPointer.h>
20 #include <MitkCoreExports.h>
21 
22 #include <vtkCleanPolyData.h>
23 #include <vtkSystemIncludes.h>
24 
25 class vtkActor;
26 class vtkPolyDataMapper;
27 class vtkAssembly;
28 class vtkFeatureEdges;
29 class vtkTubeFilter;
30 class vtkTransformPolyDataFilter;
31 class vtkHedgeHog;
32 
33 namespace mitk
34 {
35  class PlaneGeometryData;
36  class BaseRenderer;
37  class ImageVtkMapper2D;
38  class DataStorage;
39 
85  {
86  public:
88 
89  itkFactorylessNewMacro(Self);
90 
91  itkCloneMacro(Self);
92 
98  vtkProp *GetVtkProp(mitk::BaseRenderer *renderer) override;
100  void UpdateVtkTransform(mitk::BaseRenderer *renderer) override;
101 
106  virtual const PlaneGeometryData *GetInput();
107 
118 
119  protected:
120  typedef std::multimap<int, vtkActor *> LayerSortedActorList;
121 
123 
125 
127  void GenerateDataForRenderer(BaseRenderer *renderer) override;
128 
130  void ProcessNode(DataNode *node, BaseRenderer *renderer, Surface *surface, LayerSortedActorList &layerSortedActors);
131 
133  void ImageMapperDeletedCallback(itk::Object *caller, const itk::EventObject &event);
134 
136  vtkAssembly *m_Prop3DAssembly;
137 
139  vtkAssembly *m_ImageAssembly;
140 
141  PlaneGeometryDataToSurfaceFilter::Pointer m_SurfaceCreator;
142 
143  BoundingBox::Pointer m_SurfaceCreatorBoundingBox;
144 
145  BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer;
146 
148  vtkFeatureEdges *m_Edges;
149 
151  vtkTransformPolyDataFilter *m_EdgeTransformer;
152 
154  vtkTubeFilter *m_EdgeTuber;
155 
157  vtkPolyDataMapper *m_EdgeMapper;
158 
160  vtkActor *m_EdgeActor;
161 
163  vtkPolyDataMapper *m_BackgroundMapper;
164 
166  vtkActor *m_BackgroundActor;
167 
169  vtkTransformPolyDataFilter *m_NormalsTransformer;
170 
172  vtkPolyDataMapper *m_FrontNormalsMapper;
173  vtkPolyDataMapper *m_BackNormalsMapper;
174 
176  vtkHedgeHog *m_FrontHedgeHog;
177  vtkHedgeHog *m_BackHedgeHog;
178 
182 
184  vtkCleanPolyData *m_Cleaner;
185 
188 
191 
199  {
200  public:
201  vtkActor *m_Actor;
202  itk::Object *m_Sender;
203  unsigned long m_ObserverID;
206  void Initialize(vtkActor *actor, itk::Object *sender, itk::Command *command);
207 
210  };
211 
215  typedef std::map<ImageVtkMapper2D *, ActorInfo> ActorList;
217 
218  // responsibility to remove the observer upon its destruction
219  typedef itk::MemberCommand<PlaneGeometryDataVtkMapper3D> MemberCommandType;
220  MemberCommandType::Pointer m_ImageMapperDeletedCommand;
221  };
222 } // namespace mitk
223 #endif
#define MITKCORE_EXPORT
Organizes the rendering process.
Central node class of the MITK data tree, associating a data object with properties and mappers.
Definition: mitkDataNode.h:72
Abstract data management class that organizes DataNode objects in a directed acyclic graph.
Helper class that associates a vtkActor with an observer on a mapper object.
itk::Object * m_Sender
The observed mapper object (raw pointer, cleaned up via observer).
unsigned long m_ObserverID
The observer ID for the delete callback.
void Initialize(vtkActor *actor, itk::Object *sender, itk::Command *command)
Initialize with an actor, a sender object, and a delete command.
vtkActor * m_Actor
The VTK actor for the image texture.
Vtk-based mapper to display a PlaneGeometry in a 3D window.
vtkAssembly * m_Prop3DAssembly
general PropAssembly to hold the entire scene
vtkPolyDataMapper * m_BackgroundMapper
Mapper for black plane background.
void ProcessNode(DataNode *node, BaseRenderer *renderer, Surface *surface, LayerSortedActorList &layerSortedActors)
Process a single data node, creating texture actors for the plane surface.
std::multimap< int, vtkActor * > LayerSortedActorList
vtkHedgeHog * m_FrontHedgeHog
Generates lines for surface normals.
BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer
void ImageMapperDeletedCallback(itk::Object *caller, const itk::EventObject &event)
Callback invoked when an ImageVtkMapper2D is destroyed.
mitkClassMacro(PlaneGeometryDataVtkMapper3D, VtkMapper)
void GenerateDataForRenderer(BaseRenderer *renderer) override
Generate the VTK representation for the given renderer.
vtkActor * m_FrontNormalsActor
Actor to hold the normals arrows.
vtkTransformPolyDataFilter * m_NormalsTransformer
Transforms the surface before applying the glyph filter.
vtkFeatureEdges * m_Edges
Edge extractor for tube-shaped frame.
vtkPolyDataMapper * m_FrontNormalsMapper
Mapper for normals representation (thin lines)
std::map< ImageVtkMapper2D *, ActorInfo > ActorList
List holding the vtkActor to map the image into 3D for each ImageMapper.
vtkProp * GetVtkProp(mitk::BaseRenderer *renderer) override
virtual void SetDataStorageForTexture(mitk::DataStorage *storage)
Set the data storage used for traversing image nodes for texturing.
itk::MemberCommand< PlaneGeometryDataVtkMapper3D > MemberCommandType
vtkAssembly * m_ImageAssembly
PropAssembly to hold the planes.
mitk::WeakPointer< mitk::DataStorage > m_DataStorage
The DataStorage defines which part of the data tree is traversed for rendering.
vtkTransformPolyDataFilter * m_EdgeTransformer
Filter to apply object transform to the extracted edges.
PlaneGeometryDataToSurfaceFilter::Pointer m_SurfaceCreator
vtkActor * m_EdgeActor
Actor for the tube-shaped frame.
vtkPolyDataMapper * m_EdgeMapper
Mapper for the tube-shaped frame
void UpdateVtkTransform(mitk::BaseRenderer *renderer) override
Update the VTK transform for the given renderer.
vtkActor * m_BackgroundActor
Actor for black plane background.
virtual const PlaneGeometryData * GetInput()
Get the PlaneGeometryData that is being mapped.
vtkTubeFilter * m_EdgeTuber
Source to create the tube-shaped frame
Data class containing PlaneGeometry objects.
Data class for storing polygonal surfaces (vtkPolyData).
Definition: mitkSurface.h:37
Base class of all VTK-based Mappers for displaying primitives using VTK functionality.
Definition: mitkVtkMapper.h:53
Find image slices visible on a given plane.