14 #include <vtkPropAssembly.h> 15 #include <vtkPointData.h> 16 #include <vtkProperty.h> 17 #include <vtkCellArray.h> 18 #include <vtkColorTransferFunction.h> 19 #include <vtkPolyDataMapper.h> 20 #include <vtkPolyData.h> 51 bool isVisible =
true;
52 node->GetVisibility(isVisible, renderer);
64 || (localStorage->
m_LastUpdateTime < node->GetPropertyList(renderer)->GetMTime())
65 || outdatedRendererGeometry)
69 bool isGridActive =
false;
72 bool isGlyphActive =
false;
75 bool isPointsActive =
false;
78 bool showStartGrid =
false;
88 if (baseData.IsNull())
92 if (regWrapper ==
nullptr)
98 if (outdatedFOV ||isGridActiveOutdated || isGlyphActiveOutdated || isPointsActiveOutdated || outdatedRendererGeometry)
104 mitkThrow() <<
"No reg kernel for visualization";
108 unsigned int gridFrequ =5;
122 else if (isGlyphActive)
130 mitkThrow() <<
"No reg kernel visualization style activated.";
147 if(isColorStyleOutdated || isColorUniOutdated || isColor1Outdated ||
148 isColor2Outdated || isColor2MagOutdated || isColor3Outdated || isColor3MagOutdated ||
149 isColor4Outdated || isColor4MagOutdated || isColorInterpolateOutdated)
158 float color1[3] = {0.0,0.0,0.0};
160 float color2[3] = {0.25,0.25,0.25};
162 float color3[3] = {0.5,0.5,0.5};
164 float color4[3] = {1.0,1.0,1.0};
174 bool interpolate =
true;
181 localStorage->
m_LUT = vtkSmartPointer<vtkColorTransferFunction>::New();
183 if (!colorStyleProp || colorStyleProp->
GetValueAsId()==0)
185 float temprgb[3] = {1.0,1.0,1.0};
187 localStorage->
m_LUT->AddRGBSegment(0.0,temprgb[0],temprgb[1],temprgb[2],1.0,temprgb[0],temprgb[1],temprgb[2]);
188 localStorage->
m_LUT->Build();
193 localStorage->
m_LUT->AddRGBPoint(0.0,color1[0],color1[1],color1[2]);
194 localStorage->
m_LUT->AddRGBPoint(mag2,color2[0],color2[1],color2[2]);
195 localStorage->
m_LUT->AddRGBPoint(mag3,color3[0],color3[1],color3[2]);
196 localStorage->
m_LUT->AddRGBPoint(mag4,color4[0],color4[1],color4[2]);
199 localStorage->
m_LUT->AddRGBPoint(0.99*mag2,color1[0],color1[1],color1[2]);
200 localStorage->
m_LUT->AddRGBPoint(0.99*mag3,color2[0],color2[1],color2[2]);
201 localStorage->
m_LUT->AddRGBPoint(0.99*mag4,color3[0],color3[1],color3[2]);
205 localStorage->
m_LUT->Build();
212 if(isGridStartColorOutdated)
220 double trgb[3] = { (double) temprgb[0], (
double) temprgb[1], (double) temprgb[2] };
227 if(isGridActiveOutdated||isGlyphActiveOutdated||isPointsActiveOutdated||showStartGridOutdated)
229 localStorage->
m_RegAssembly = vtkSmartPointer<vtkPropAssembly>::New();
239 else if (isGlyphActive)
253 Superclass::SetDefaultProperties(node, renderer, overwrite);
258 return m_LSH.GetLocalStorage(renderer)->m_RegAssembly;
263 m_DeformedGridActor = vtkSmartPointer<vtkActor>::New();
264 m_DeformedGridMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
265 m_DeformedGridActor->SetMapper(m_DeformedGridMapper);
267 m_StartGridActor = vtkSmartPointer<vtkActor>::New();
268 m_StartGridMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
269 m_StartGridActor->SetMapper(m_StartGridMapper);
271 m_RegAssembly = vtkSmartPointer<vtkPropAssembly>::New();
273 m_LUT = vtkSmartPointer<vtkColorTransferFunction>::New();
275 m_DeformedGridData =
nullptr;
276 m_StartGridData =
nullptr;
virtual IdType GetValueAsId() const
vtkSmartPointer< vtkPolyData > m_StartGridData
const char *const nodeProp_RegVisGrid
MITKRegistrationWrapperMapperBase()
vtkSmartPointer< vtkActor > m_StartGridActor
virtual DataNode * GetDataNode() const
Get the DataNode containing the data to map. Method only returns valid DataNode Pointer if the mapper...
void GenerateDataForRenderer(mitk::BaseRenderer *renderer) override
Generate the data needed for rendering into renderer.
Organizes the rendering process.
const char *const nodeProp_RegVisColorInterpolate
MAPRegistrationWrapper Wrapper class to allow the handling of MatchPoint registration objects as mitk...
mitk::LocalStorageHandler< RegWrapperLocalStorage > m_LSH
This member holds all three LocalStorages for the 3D render window(s).
virtual bool RendererGeometryIsOutdated(mitk::BaseRenderer *renderer, const itk::TimeStamp &time) const =0
vtkSmartPointer< vtkPolyDataMapper > m_DeformedGridMapper
const char *const nodeProp_RegVisColorStyle
vtkSmartPointer< vtkPolyData > MITKMATCHPOINTREGISTRATION_EXPORT Generate3DDeformationGrid(const mitk::BaseGeometry *gridDesc, unsigned int gridFrequence, const map::core::RegistrationKernelBase< 3, 3 > *regKernel)
const char *const nodeProp_RegVisGridStartColor
const char *const nodeProp_RegVisColor3Value
vtkSmartPointer< vtkPolyData > m_DeformedGridData
bool PropertyIsOutdated(const mitk::DataNode *regNode, const std::string &propName, const itk::TimeStamp &reference)
vtkSmartPointer< vtkPolyDataMapper > m_StartGridMapper
bool GridIsOutdated(const mitk::DataNode *regNode, const itk::TimeStamp &reference)
vtkSmartPointer< vtkActor > m_DeformedGridActor
const char *const nodeProp_RegVisPoints
vtkSmartPointer< vtkPolyData > Generate3DDeformationGlyph(const mitk::BaseGeometry *gridDesc, const map::core::RegistrationKernelBase< 3, 3 > *regKernel)
const char *const nodeProp_RegVisColor1Value
const char *const nodeProp_RegVisColor2Value
const char *const nodeProp_RegVisColor4Magnitude
const char *const nodeProp_RegVisColor2Magnitude
const char *const nodeProp_RegVisGridShowStart
const char *const nodeProp_RegVisGlyph
RegWrapperLocalStorage()
Constructor of the local storage. Do as much actions as possible in here to avoid double executions...
vtkSmartPointer< vtkColorTransferFunction > m_LUT
const char *const nodeProp_RegVisColor4Value
~MITKRegistrationWrapperMapperBase() override
const char *const nodeProp_RegVisColor3Magnitude
const char *const nodeProp_RegVisColorUni
itk::TimeStamp m_LastUpdateTime
Timestamp of last update of stored data.
static void SetDefaultProperties(DataNode *node, BaseRenderer *renderer=nullptr, bool overwrite=false)
vtkProp * GetVtkProp(mitk::BaseRenderer *renderer) override
virtual bool GetGeometryDescription(mitk::BaseRenderer *renderer, mitk::BaseGeometry::ConstPointer &gridDesc, unsigned int &gridFrequ) const =0
vtkSmartPointer< vtkPropAssembly > m_RegAssembly
const char * GetName() const
get the name of the Renderer
Class for nodes of the DataTree.
const map::core::RegistrationKernelBase< 3, 3 > * GetRelevantRegKernelOfNode(const mitk::DataNode *regNode)