Dear Sebastian,

I'm sorry that your email has remained unanswered over the holiday season. 
Below is a code snippet with the PointSetToCurveGeometryFilter as it usually 
would be used. Particularly, you may try to explicitly create an instance of 
Geometry2DDataVtkMapper3D and set it as mapper for the new MPR node.

The filter merely encapsulates the MPR functionality, which you also may use 
more directly, as described in a previous users-list posting:

  http://www.mail-archive.com/[email protected]/msg00810.html


Currently, there is unfortunately no open-source example in MITK which explains 
how to used curved MPRs, but we plan to integrate curved MPRs in a future 
release of the 3M3 application, hopefully later this year.


Please let us know if you run into further issues.


Regards,
Mathias




// Create and initialize filter instance
m_PointSetToCurvedGeometryFilter = mitk::PointSetToCurvedGeometryFilter::New();

m_PointSetToCurvedGeometryFilter->SetInput ( currentPointSet );
m_PointSetToCurvedGeometryFilter->SetImageToBeMapped ( currentImage );
m_PointSetToCurvedGeometryFilter->SetProjectionMode ( 
  mitk::PointSetToCurvedGeometryFilter::YZPlane );
m_PointSetToCurvedGeometryFilter->Update();

mitk::GeometryData::Pointer geometryData = 
m_PointSetToCurvedGeometryFilter->GetOutput();

this->SetCurrentCurvedGeometryData ( geometryData.GetPointer() );


/* ... */


// Create a node for the curved geometry
mitk::DataTreeNode::Pointer node = mitk::DataTreeNode::New();
node->SetData ( geometryData );
mitk::PointSetToCurvedGeometryFilter::SetDefaultCurvedGeometryProperties ( 
node.GetPointer() );

node->SetProperty ( "name", mitk::StringProperty::New ( "Deformable Plane" ) );
node->SetColor ( 0.0f, 1.0f, 0.0f );
node->SetVisibility ( true );
node->SetVisibility( true, m_MultiWidget->GetRenderWindow4()->GetRenderer() );
node->Modified();
node->GetData()->Modified();

mitk::Geometry2DDataVtkMapper3D::Pointer mapper = 
mitk::Geometry2DDataVtkMapper3D::New();
mapper->SetDataIteratorForTexture ( this->GetDataTreeIterator() );
node->SetMapper ( 2, mapper );

this->GetDataStorage()->Add ( node, currentImageNode );




> -----Original Message-----
> From: sebastian ordas [mailto:[email protected]]
> Sent: Wednesday, December 16, 2009 12:17 AM
> To: [email protected]
> Subject: [mitk-users] curved MPR
> 
> Hello List,
> 
> I wanted to try the curved MPR component in MITK. I followed some
> previous posts and found that PointSetToCurvedGeometryFilter does the
> same.
> Here“s the code. Am I missing anything? It crashes when rendering the
> curved plane at the end (my system, Windows XP, MITK svn, vtk 5.4.2,
> itk 3.16)
> 
>     mitk::DataTreeNode* node =
> m_Controls->m_TreeNodeSelector->GetSelectedNode();
>     if (!node)
>     {
>     // Nothing selected. Inform the user and return
>     return;
>     }
> 
>     mitk::Image::Pointer image = dynamic_cast<mitk::Image*>( node->GetData()
> );
>     if ( image.IsNull() ) return;
> 
>     if ( m_PointSet->GetSize() == 0 )
>     {
>         // no points set. return
>         return;
>     }
> 
>    mitk::PointSetToCurvedGeometryFilter::Pointer filter =
> mitk::PointSetToCurvedGeometryFilter::New();
>     int selection = m_Controls->m_ProjectionSelect->currentIndex();
>     if (selection == 0)
>         filter-
> >SetProjectionMode(mitk::PointSetToCurvedGeometryFilter::Sphere);
>     else if (selection == 1)
>         filter-
> >SetProjectionMode(mitk::PointSetToCurvedGeometryFilter::XYPlane);
>     else if (selection == 2)
>         filter-
> >SetProjectionMode(mitk::PointSetToCurvedGeometryFilter::XZPlane);
>     else if (selection == 3)
>         filter-
> >SetProjectionMode(mitk::PointSetToCurvedGeometryFilter::YZPlane);
>     filter->SetImageToBeMapped(image);
>     filter->SetSigma(1000);
>     filter->SetInput(m_PointSet);
>     try
>     {
>         this->BusyCursorOn();
>         filter->UpdateLargestPossibleRegion();
>         this->BusyCursorOff();
>     }
>     catch(itk::ExceptionObject& exception)
>     {
>         exception.Print(std::cout);
>         this->BusyCursorOff();
>         return;
>     }
> 
>     mitk::GeometryData::Pointer tpsGeometry = filter->GetOutput();
>     tpsGeometry->DisconnectPipeline();
> 
>     mitk::DataTreeNode::Pointer tpsNode = mitk::DataTreeNode::New();
>     tpsNode->SetData( tpsGeometry );
> 
> mitk::PointSetToCurvedGeometryFilter::SetDefaultCurvedGeometryProperties(tpsNo
> de);
> 
>     mitk::BaseRenderer* mappingRenderer =
> mitk::BaseRenderer::GetInstance(m_MultiWidget->mitkWidget4-
> >GetRenderWindow());
>     mappingRenderer->SetWorldGeometry(
> tpsGeometry->GetTimeSlicedGeometry()->GetGeometry3D(0) );
> 
>     // add result to data tree
>     this->GetDefaultDataStorage()->Add( tpsNode );
>     mitk::RenderingManager::GetInstance()->RequestUpdateAll();
> 
> thank you,
> sebastian
> 
> ------------------------------------------------------------------------------
> This SF.Net email is sponsored by the Verizon Developer Community
> Take advantage of Verizon's best-in-class app development support
> A streamlined, 14 day to market process makes app distribution fast and easy
> Join now and get one step closer to millions of Verizon customers
> http://p.sf.net/sfu/verizon-dev2dev
> _______________________________________________
> mitk-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/mitk-users

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to