32 <<
"Null Node passed to NodeDisplacementFilter. Ignoring Node....";
35 if (node->GetData() ==
nullptr)
38 <<
"Empty Node passed to NodeDisplacementFilter. Ignoring Node....";
44 <<
"Cannot add nodes before input Stream was selected";
45 mitkThrow() <<
"Cannot add nodes before input Stream was selected";
49 mitk::NavigationData::Pointer reference;
55 if (! reference->IsDataValid())
58 <<
"Cannot add node while selected tool is not tracked. Ignoring Node....";
63 mitk::AffineTransform3D::Pointer inverseAffineTransform = mitk::AffineTransform3D::New();
64 if ( ! reference->GetAffineTransform3D()->GetInverse(inverseAffineTransform) )
67 <<
"Could not get the inverse transformation of the navigation data transformation.";
68 mitkThrow() <<
"Could not get the inverse transformation of the navigation data transformation.";
71 inverseAffineTransform->Compose(node->GetData()->GetGeometry()->GetIndexToWorldTransform(),
true);
80 if ( i >=
m_Nodes.size() ) {
return false; }
95 else {
return nullptr; }
105 if (i < 0) {
mitkThrow() <<
"Negative Input selected in NodeDisplacementFilter"; }
106 if (! (static_cast<unsigned int>(i) < this->GetInputs().size()))
109 <<
"Selected input index is larger than actual number of inputs.";
110 mitkThrow() <<
"Selected input index is larger than actual number of inputs in NodeDisplacementFilter";
126 returnValue->SetDataValid(
false);
127 MITK_WARN <<
"Excetion while returning navigation data: " << e.GetDescription();
132 returnValue->SetDataValid(
false);
133 MITK_WARN <<
"Node Nr. " << i <<
" does not exist!";
148 <<
"No input has been selected. Only forwarding NavigationData...";
161 for (
unsigned int index=0; index <
m_Nodes.size(); index++)
167 transformGeometry->Compose(
m_Transforms.at(index),
true);
169 m_Nodes.at(index)->GetData()->SetGeometry(transformGeometry);
181 g3d->SetIndexToWorldTransform(transform);
virtual mitk::DataNode::Pointer GetNode(unsigned int i=0)
Returns the nth node that was added to this filter.
int m_SelectedInput
The Input that is used as a reference to orient the managed nodes.
NavigationData * GetOutput(void)
return the output (output with id 0) of the filter
void GenerateData() override
mitk::NavigationData::Pointer m_InitialReferencePose
bool AddNode(mitk::DataNode::Pointer node)
Adds a node to the filter. The position of which will then be continously update relatively to the se...
static void Update(vtkPolyData *)
virtual void ResetNodes()
Removes all added Nodes from the Filter but leaves all other configuration intact.
const NavigationData * GetInput(void) const
Get the input of this filter.
bool RemoveNode(unsigned int i)
Removes a node from the filter.
~NodeDisplacementFilter() override
mitk::Geometry3D::Pointer TransformToGeometry(mitk::AffineTransform3D::Pointer transform)
Creates an Geometry 3D Object from an AffineTransformation.
std::vector< mitk::DataNode::Pointer > m_Nodes
All Nodes that are being managed by this Filter.
An object of this class represents an exception of MITK. Please don't instantiate exceptions manually...
virtual int GetNumberOfNodes()
Returns the number of nodes that were added to this filter.
void GenerateData() override
Passes navigation data from all inputs to all outputs. If a subclass wants to implement its own versi...
std::vector< mitk::AffineTransform3D::Pointer > m_Transforms
The transformation that each node has to be reached from the selected navigation tool. The indexes correspond to indexes in the node vector.
virtual std::vector< mitk::DataNode::Pointer > GetNodes()
Returns a vector containing all nodes that have been added to this filter.
virtual mitk::NavigationData::Pointer GetRawDisplacementNavigationData(unsigned int i=0)
virtual void SelectInput(int i)
Selects an input stream as the reference stream.