diff --git a/Modules/IGT/IGTFilters/mitkTrackingVolumeGenerator.cpp b/Modules/IGT/IGTFilters/mitkTrackingVolumeGenerator.cpp index 71b227d47e..06b3376e5d 100644 --- a/Modules/IGT/IGTFilters/mitkTrackingVolumeGenerator.cpp +++ b/Modules/IGT/IGTFilters/mitkTrackingVolumeGenerator.cpp @@ -1,104 +1,105 @@ /*========================================================================= Program: Medical Imaging & Interaction Toolkit Language: C++ Date: $Date: 2011-01-18 13:22:38 +0100 (Di, 18 Jan 2011) $ Version: $Revision: 28959 $ Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #include "mitkTrackingVolumeGenerator.h" #include "mitkSTLFileReader.h" #include "mitkStandardFileLocations.h" #include "mitkConfig.h" #include #include #include #include #include #include mitk::TrackingVolumeGenerator::TrackingVolumeGenerator() { std::string volumeDir = MITK_ROOT; volumeDir += "Modules/IGT/IGTTrackingDevices/TrackingVolumeData"; //folder which contains the trackingdevices configs mitk::StandardFileLocations::GetInstance()->AddDirectoryForSearch( volumeDir.c_str(), false ); //add this directory to StdFileLocations for the search m_TrackingDeviceType = mitk::TrackingSystemNotSpecified; } void mitk::TrackingVolumeGenerator::SetTrackingDevice (mitk::TrackingDevice::Pointer tracker) { this->m_TrackingDeviceType = tracker->GetType(); } void mitk::TrackingVolumeGenerator::GenerateData() { mitk::Surface::Pointer output = this->GetOutput();//the surface wich represents the tracking volume std::string filename = ""; switch(m_TrackingDeviceType) { case mitk::ClaronMicron: filename = mitk::StandardFileLocations::GetInstance()->FindFile("ClaronMicron.stl"); break; case mitk::IntuitiveDaVinci: filename = mitk::StandardFileLocations::GetInstance()->FindFile("IntuitiveDaVinci.stl"); break; case mitk::NDIPolaris: filename = mitk::StandardFileLocations::GetInstance()->FindFile("NDIPolaris.stl"); break; case mitk::NDIAurora: filename = mitk::StandardFileLocations::GetInstance()->FindFile("NDIAurora.stl"); break; + case mitk::TrackingSystemNotSpecified: case mitk::VirtualTracker: { vtkSmartPointer cubeSource = vtkSmartPointer::New(); double bounds[6]; bounds[0] = bounds[2] = bounds[4] = -400.0; // initialize bounds to -400 ... +400 cube. This is the default value of the bounds[1] = bounds[3] = bounds[5] = 400.0; // virtual tracking device, but it can be changed. In that case, // the tracking volume polydata has be updated manually cubeSource->SetBounds(bounds); cubeSource->GetOutput()->Update(); output->SetVtkPolyData(cubeSource->GetOutput()); //set the vtkCubeSource as polyData of the surface return; } default: { MITK_ERROR<< "No STL to given TrackingDevice found"; return; } } if (filename.empty()) { MITK_ERROR << "Filename is empty"; return; } mitk::STLFileReader::Pointer stlReader = mitk::STLFileReader::New(); stlReader->SetFileName( filename.c_str() ); stlReader->Update(); if ( stlReader->GetOutput() == NULL) { MITK_ERROR << "Error while reading file"; return ; } output->SetVtkPolyData( stlReader->GetOutput()->GetVtkPolyData());//set the visible trackingvolume } diff --git a/Modules/IGT/Testing/files.cmake b/Modules/IGT/Testing/files.cmake index 57ee977f72..af664c0a69 100644 --- a/Modules/IGT/Testing/files.cmake +++ b/Modules/IGT/Testing/files.cmake @@ -1,46 +1,46 @@ SET(MODULE_TESTS mitkCameraVisualizationTest.cpp mitkClaronInterfaceTest.cpp mitkClaronToolTest.cpp mitkClaronTrackingDeviceTest.cpp mitkInternalTrackingToolTest.cpp mitkNavigationDataDisplacementFilterTest.cpp mitkNavigationDataLandmarkTransformFilterTest.cpp mitkNavigationDataObjectVisualizationFilterTest.cpp mitkNavigationDataTest.cpp mitkNavigationDataRecorderTest.cpp mitkNavigationDataReferenceTransformFilterTest.cpp mitkNavigationDataSequentialPlayerTest.cpp mitkNavigationDataToMessageFilterTest.cpp mitkNavigationDataToNavigationDataFilterTest.cpp mitkNavigationDataToPointSetFilterTest.cpp mitkNavigationDataTransformFilterTest.cpp mitkNDIPassiveToolTest.cpp mitkNDIProtocolTest.cpp mitkNDITrackingDeviceTest.cpp mitkTimeStampTest.cpp - mitkTrackingVolumeTest.cpp + mitkTrackingVolumeGeneratorTest.cpp mitkTrackingDeviceTest.cpp mitkTrackingToolTest.cpp mitkVirtualTrackingDeviceTest.cpp mitkTrackingDeviceSourceTest.cpp # ------------------ Navigation Tool Management Tests ------------------- mitkNavigationToolStorageTest.cpp #mitkNavigationToolStorageSerializerAndDeserializerTest.cpp mitkNavigationToolTest.cpp mitkNavigationToolReaderAndWriterTest.cpp #deactivated, see bug #3461 # ----------------------------------------------------------------------- # ------------------ Deavtivated Tests ---------------------------------- #mitkNavigationDataPlayerTest.cpp # deactivated, see bug 3073 #mitkNavigationDataSourceTest.cpp # deactivated because of bug #2323 # ----------------------------------------------------------------------- ) SET(MODULE_CUSTOM_TESTS mitkNDIAuroraHardwareTest.cpp mitkNDIPolarisHardwareTest.cpp mitkClaronTrackingDeviceHardwareTest.cpp -) \ No newline at end of file +) diff --git a/Modules/IGT/Testing/mitkTrackingVolumeGeneratorTest.cpp b/Modules/IGT/Testing/mitkTrackingVolumeGeneratorTest.cpp new file mode 100644 index 0000000000..fb7b67ca43 --- /dev/null +++ b/Modules/IGT/Testing/mitkTrackingVolumeGeneratorTest.cpp @@ -0,0 +1,119 @@ +/*==================================================================== +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include +#include "mitkCommon.h" +#include "mitkTestingMacros.h" +#include "vtkPolyData.h" +#include +#include + +class mitkTrackingVolumeGeneratorTestClass +{ +public: + + static void TestInstantiation() + { + // let's create an object of our class + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New(); + MITK_TEST_CONDITION_REQUIRED(myTVGenerator.IsNotNull(),"Testing instantiation"); + + } + + static void TestTrackingSystemNotSpecified() + { + MITK_TEST_OUTPUT(<<"---- Testing Trackingsystem not specified ----"); + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New(); + MITK_TEST_CONDITION((myTVGenerator->GetTrackingDeviceType() == mitk::TrackingSystemNotSpecified), "Tracking System not specified:"); + myTVGenerator->Update(); + mitk::Surface::Pointer volume = myTVGenerator->GetOutput(); + MITK_TEST_CONDITION((volume->IsEmpty(0) == false),"Output contains data"); + } + + static void TestClaronTrackingVolume() + { + MITK_TEST_OUTPUT(<< "---- Testing MicronTracker 2 Tracking Volume ----"); + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New (); + myTVGenerator->SetTrackingDeviceType(mitk::ClaronMicron); + MITK_TEST_CONDITION((myTVGenerator->GetTrackingDeviceType() == mitk::ClaronMicron),"loading MicronTracker Volume data:"); + myTVGenerator->Update(); + mitk::Surface::Pointer volume = myTVGenerator->GetOutput(); + MITK_TEST_CONDITION((volume->IsEmpty(0) == false),"Output contains data"); + } + + static void TestNDIAuroraTrackingVolume() + { + MITK_TEST_OUTPUT(<< "---- Testing NDI Aurora Tracking Volume ----"); + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New (); + myTVGenerator->SetTrackingDeviceType(mitk::NDIAurora); + MITK_TEST_CONDITION((myTVGenerator->GetTrackingDeviceType() == mitk::NDIAurora),"loading Aurora Volume data:"); + myTVGenerator->Update(); + mitk::Surface::Pointer volume = myTVGenerator->GetOutput(); + MITK_TEST_CONDITION((volume->IsEmpty(0) == false),"Output contains data"); + } + + static void TestNDIPolarisTrackingVolume() + { + MITK_TEST_OUTPUT(<< "---- Testing NDI Polaris Tracking Volume ----"); + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New (); + myTVGenerator->SetTrackingDeviceType(mitk::NDIPolaris); + MITK_TEST_CONDITION((myTVGenerator->GetTrackingDeviceType() == mitk::NDIPolaris),"loading Polaris Volume data:"); + myTVGenerator->Update(); + mitk::Surface::Pointer volume = myTVGenerator->GetOutput(); + MITK_TEST_CONDITION((volume->IsEmpty(0) == false),"Output contains data"); + } + + static void TestIntuitiveDaVinciTrackingVolume() + { + MITK_TEST_OUTPUT(<< "---- Testing Intuitive Da Vinci Tracking Volume ----"); + mitk::TrackingVolumeGenerator::Pointer myTVGenerator = mitk::TrackingVolumeGenerator::New (); + myTVGenerator->SetTrackingDeviceType(mitk::IntuitiveDaVinci); + MITK_TEST_CONDITION((myTVGenerator->GetTrackingDeviceType() == mitk::IntuitiveDaVinci),"loading Da Vinci Volume data:"); + myTVGenerator->Update(); + mitk::Surface::Pointer volume = myTVGenerator->GetOutput(); + MITK_TEST_CONDITION((volume->IsEmpty(0) == false),"Output contains data"); + } + + + /* The isInside() method is not implemented so far. So please activate is as soon as this is done. Then we could load + * the different Trackingvolumens (Polaris, MicronTracker, etc) and test different points inside and outside in this method. + static void TestIsInside() + { + MITK_TEST_OUTPUT(<< "---- Testing IsInside-Method ----") + mitk::TrackingVolume::Pointer myTrackingVolume = mitk::TrackingVolume::New(); + + mitk::Point3D p1; + mitk::FillVector3D(p1,(float)0,(float)0,(float)0); + MITK_TEST_CONDITION(myTrackingVolume->IsInside(p1)==false,"... successfull") + } + */ + + +}; + +/** This function is testing the TrackingVolume class. */ +int mitkTrackingVolumeGeneratorTest(int /* argc */, char* /*argv*/[]) +{ + MITK_TEST_BEGIN("TrackingVolumeGenerator"); + + mitkTrackingVolumeGeneratorTestClass::TestInstantiation(); + mitkTrackingVolumeGeneratorTestClass::TestTrackingSystemNotSpecified (); + mitkTrackingVolumeGeneratorTestClass::TestClaronTrackingVolume(); + mitkTrackingVolumeGeneratorTestClass::TestNDIAuroraTrackingVolume(); + mitkTrackingVolumeGeneratorTestClass::TestNDIPolarisTrackingVolume(); + mitkTrackingVolumeGeneratorTestClass::TestIntuitiveDaVinciTrackingVolume(); + //mitkTrackingVolumeTestClass::TestIsInside(); Activate this code when method isInside() is implemented! + + MITK_TEST_END() ; +} + + +