46 mitk::StandaloneDataStorage::Pointer dataStorage = mitk::StandaloneDataStorage::New();
47 mitk::RenderWindow::Pointer renderWindow = mitk::RenderWindow::New();
48 mitk::DataNode::Pointer dataNode = mitk::DataNode::New();
51 renderWindow->GetRenderer()->SetMapperID(mitk::BaseRenderer::Standard3D);
52 renderWindow->GetVtkRenderWindow()->SetSize(500, 500);
53 renderWindow->GetRenderer()->Resize(500, 500);
55 renderWindow->GetRenderer()->SetDataStorage(dataStorage);
61 mitk::VirtualTrackingDevice::Pointer tracker = mitk::VirtualTrackingDevice::New();
64 mitk::ScalarType bounds[] = { -bound, bound, -bound, bound, -bound, bound };
65 tracker->SetBounds(bounds);
66 tracker->AddTool(
"tool1");
69 mitk::TrackingDeviceSource::Pointer source = mitk::TrackingDeviceSource::New();
70 source->SetTrackingDevice(tracker);
81 mitk::Cone::Pointer cone = mitk::Cone::New();
82 dataNode->SetData(cone);
83 dataNode->SetName(
"My tracked object");
84 dataNode->SetColor(0.0, 1.0, 1.0);
85 dataStorage->Add(dataNode);
88 mitk::NavigationDataObjectVisualizationFilter::Pointer visualizer = mitk::NavigationDataObjectVisualizationFilter::New();
89 visualizer->SetInput(0, source->GetOutput());
90 visualizer->SetRepresentationObject(0, cone.GetPointer());
95 mitk::DataNode::Pointer cylinderNode = mitk::DataNode::New();
96 mitk::Cylinder::Pointer cylinder = mitk::Cylinder::New();
97 cylinderNode->SetData(cylinder);
98 cylinderNode->SetName(
"My fixed object");
99 cylinderNode->SetColor(1.0, 0.0, 0.0);
100 dataStorage->Add(cylinderNode);
103 mitk::Matrix3D rotationMatrix;
104 rotationMatrix.SetIdentity();
106 rotationMatrix[1][1] = cos(alpha);
107 rotationMatrix[1][2] = -sin(alpha);
108 rotationMatrix[2][1] = sin(alpha);
109 rotationMatrix[2][2] = cos(alpha);
111 mitk::Vector3D offset;
114 mitk::AffineTransform3D::Pointer affineTransform3D = mitk::AffineTransform3D::New();
115 affineTransform3D->SetOffset(offset);
116 affineTransform3D->SetMatrix(rotationMatrix);
119 mitk::NavigationData::Pointer fixedNavigationData = mitk::NavigationData::New(affineTransform3D);
120 cylinder->GetGeometry()->SetIndexToWorldTransform(fixedNavigationData->GetAffineTransform3D());
129 auto timeGeometry = dataStorage->ComputeBoundingGeometry3D(dataStorage->GetAll());
130 mitk::BaseGeometry::Pointer geometry = timeGeometry->GetGeometryForTimeStep(0);
131 geometry->SetBounds(bounds);
133 mitk::RenderingManager::GetInstance()->InitializeViews(geometry);
135 source->StartTracking();
140 for (
int i = 0; i < 75; ++i)
143 visualizer->Update();
146 renderWindow->GetVtkRenderWindow()->Render();
147 mitk::RenderingManager::GetInstance()->RequestUpdateAll();
149 MITK_INFO <<
"Position " << source->GetOutput()->GetPosition();
151 itksys::SystemTools::Delay(100);
155 source->StopTracking();
156 source->Disconnect();
167 fixedNavigationData->Compose(source->GetOutput(),
false);
170 cylinder->GetGeometry()->SetIndexToWorldTransform(fixedNavigationData->GetAffineTransform3D());
173 renderWindow->GetVtkRenderWindow()->Render();
174 mitk::RenderingManager::GetInstance()->RequestUpdateAll();
177 itksys::SystemTools::Delay(2000);