wxVtkMPR3DView.cxx

Go to the documentation of this file.
00001 #include "wxVtkMPR3DView.h"
00002 
00003 #include "vtkDataSetMapper.h"
00004 #include "vtkPlaneSource.h"
00005 #include "vtkProbeFilter.h"
00006 #include "vtkStructuredPoints.h"
00007 #include "vtkMetaImageWriter.h"
00008 #include "vtkDataSetMapper.h"
00009 #include "vtkImageChangeInformation.h"
00010 #include "vtkPointData.h"
00011 #include "vtkWindowLevelLookupTable.h"
00012 #include "vtkPlane.h"
00013 #include "vtkCutter.h"
00014 #include "vtkTransform.h"
00015 #include "vtkmyPWCallback_3DPointWidget.h"
00016 #include "vtkProperty.h"
00017 #include "vtkCellPicker.h"
00018 
00019 wxVtkMPR3DView::wxVtkMPR3DView( wxVtk3DBaseView *wxvtk3Dbaseview )
00020 {
00021         _wxvtk3Dbaseview                        =       wxvtk3Dbaseview;
00022         _vtkmpr3Ddataviewer                     =       NULL;
00023         _wxvtkmpr3DviewCntrlPanel       =       NULL;   
00024         //_myCallback                           =       NULL;
00025         _pointWidget                            =       NULL;
00026         _planeWidget                            =       NULL;
00027         _vtkplane                                       =       NULL;
00028         _probe                                          =       NULL;
00029         _contourMapper                          =       NULL;
00030         
00031         _planeWidgetX = 0;
00032         _planeWidgetY = 0;
00033         _planeWidgetZ = 0;
00034         //EED Fev 3 2010
00035         //Free Planes 
00036 }
00037 
00038 
00039 //-------------------------------------------------------------------
00040 wxVtkMPR3DView::~wxVtkMPR3DView()
00041 {
00042         VisiblePointWidget( false );
00043         VisiblePlaneWidget( false );
00044         
00045         if(_pointWidget!=NULL){
00046                 _pointWidget->Delete();
00047         }
00048         if(_planeWidget!=NULL){
00049                 _planeWidget->Delete();
00050         }
00051         
00052         if(_vtkplane!=NULL){
00053                 _vtkplane->Delete();            
00054                 _probe->Delete();
00055                 _contourMapper->Delete();                       
00056                 _contourPlaneActor->Delete();           
00057         }
00058         
00059 }
00060 
00061 //-------------------------------------------------------------------
00062 void wxVtkMPR3DView::RemoveActor(vtkActor* actor)
00063 {       
00064         _wxvtk3Dbaseview->GetRenderer()->RemoveActor(actor);    
00065 }
00066 
00067 //-------------------------------------------------------------------
00068 void wxVtkMPR3DView::ResetCamera(int* ext, double* origin,double* spc)
00069 {
00070         if(ext == NULL){
00071                 _wxvtk3Dbaseview->GetRenderer()->ResetCamera ();        
00072                 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5);      
00073         }else{
00074                 /*double x = (spc[0])*(origin[0]+(((double)ext[1]-(double)ext[0])/2.0));                
00075                 double y = (spc[1])*(origin[1]+(double)ext[3]);
00076                 double z = (spc[2])*(origin[2]+(((double)ext[5]-(double)ext[4])/2.0));*/
00077                 /*double x0=(spc[0])*((double)ext[0]+origin[0]);
00078                 double x1=(spc[0])*((double)ext[1]+origin[0]);
00079                 double y0=(spc[1])*((double)ext[2]+origin[1]);
00080                 double y1=(spc[1])*((double)ext[3]+origin[1]);
00081                 double z0=(spc[2])*((double)ext[4]+origin[2]);
00082                 double z1=(spc[2])*((double)ext[5]+origin[2]);*/
00083                 double x0=(spc[0])*((double)ext[0]);
00084                 double x1=(spc[0])*((double)ext[1]);
00085                 double y0=(spc[1])*((double)ext[2]);
00086                 double y1=(spc[1])*((double)ext[3]);
00087                 double z0=(spc[2])*((double)ext[4]);
00088                 double z1=(spc[2])*((double)ext[5]);
00089                 
00090                 _wxvtk3Dbaseview->GetRenderer()->ResetCamera(x0,x1,y0,y1,z0,z1);
00091                 //_wxvtk3Dbaseview->GetCamera()->SetPosition(x,y,z);
00092                 _wxvtk3Dbaseview->GetCamera()->Dolly(1.5);      
00093         }
00094 }
00095 
00096 //-------------------------------------------------------------------
00097 void wxVtkMPR3DView::Configure(){
00098         
00099         
00100         vtkImageData *imageData = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00101 
00102         _wxvtk3Dbaseview->Configure();
00103         _wxvtkmpr3DviewCntrlPanel->UpdateControlPanel();
00104         
00105 //EED 27 Mai 2009 
00106 //      _wxvtk3Dbaseview->GetRenderer()->Clear();    
00107         
00108         // Actors are added to the renderer. 
00109         vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
00110         _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );                     
00111 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(0)  );    // _saggital
00112 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(1)  );    // _axial
00113 //      _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(2)  );    // _coronal
00114 
00115 
00116         // An initial camera view is created.  The Dolly() method moves 
00117         // the camera towards the FocalPoint, thereby enlarging the image.      
00118         _wxvtk3Dbaseview->GetRenderer()->SetActiveCamera(_wxvtk3Dbaseview->GetCamera());
00119         this->ResetCamera();
00120         
00121 
00122         // Set a background color for the renderer and set the size of the
00123         // render window (expressed in pixels).
00124         _wxvtk3Dbaseview->GetRenderer()->SetBackground( 0.36 , 0.36 , 0.36 );
00125         _wxvtk3Dbaseview->GetRenWin()->SetSize(400, 400);
00126 
00127         // Note that when camera movement occurs (as it does in the Dolly()
00128         // method), the clipping planes often need adjusting. Clipping planes
00129         // consist of two planes: near and far along the view direction. The 
00130         // near plane clips out objects in front of the plane; the far plane
00131         // clips out objects behind the plane. This way only what is drawn
00132         // between the planes is actually rendered.
00133         _wxvtk3Dbaseview->GetRenderer()->ResetCameraClippingRange();
00134 
00135 
00136         // vtkPointWidget
00137         //if(_myCallback!=NULL){
00138                 //_myCallback->Delete();
00139 
00140         //}
00141         vtkmyPWCallback_3DPointWidget *_myCallback = vtkmyPWCallback_3DPointWidget::New();
00142         _myCallback->SetWxVtkMPR3DView(this);
00143         
00144         
00145         if(imageData){
00146                 if(_pointWidget==NULL){
00147                         _pointWidget = vtkPointWidget::New();
00148                 }
00149                 _pointWidget->SetInput( imageData );
00150                 _myCallback->SetVtkPointWidget(_pointWidget);
00151                 _pointWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() ); 
00152                 _pointWidget->AllOff();
00153                 _pointWidget->PlaceWidget();
00154                 
00155                 _pointWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
00156                 
00157                 
00158                 if(_planeWidget==NULL)
00159                 {
00160                         _planeWidget = vtkPlaneWidget::New();
00161                 }
00162                 _planeWidget->SetInput( imageData );
00163                 
00164                 _myCallback->SetVtkPlaneWidget(_planeWidget);
00165 
00166                 _planeWidget->NormalToXAxisOn();
00167                 _planeWidget->SetResolution(50);
00168                 _planeWidget->SetRepresentationToOutline();
00169                 
00170                 int dim[3];
00171         
00172                 imageData->GetDimensions(dim);
00173                 int px=(dim[0]/2);
00174                 int py=(dim[1]/2);
00175                 int pz=(dim[2]/2);
00176                 int dd=20;
00177                 _planeWidget->PlaceWidget( px-dd , px+dd , py-dd , py+dd , pz-dd , pz+dd );
00178                 
00179                 if(_vtkplane==NULL){
00180                         _vtkplane = vtkPolyData::New();
00181                         
00182                         _probe = vtkProbeFilter::New();
00183                         _probe->SetInput(_vtkplane);
00184 
00185                         _contourMapper = vtkPolyDataMapper::New();
00186                         
00187                         _contourMapper->SetInput( _probe->GetPolyDataOutput() );
00188 
00189                         _contourPlaneActor = vtkActor::New();
00190                         _contourPlaneActor->SetMapper(_contourMapper);
00191 
00192                         _contourPlaneActor->VisibilityOff();
00193 
00194                         _planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
00195                         _planeWidget->AddObserver(vtkCommand::InteractionEvent,_myCallback);
00196 
00197                         _planeWidget->Off();
00198                         _wxvtk3Dbaseview->GetRenderer()->AddActor( _contourPlaneActor );        
00199 
00200                 }
00201 
00202                 _planeWidget->GetPolyData(_vtkplane);
00203                 _probe->SetSource( imageData );
00204                 _contourMapper->SetScalarRange( imageData->GetScalarRange() );
00205                 
00206                 
00207                 ConfigureFreePlanes();
00208         }
00209         
00210 //      _pointWidget->SetPosition( x,y,z ); 
00211         
00212 //EED01 29Mars2009
00213 // MACOS probleme vtk-window out of wx-window   
00214 //      _pointWidget->On();
00215         
00216         
00217 
00218 
00219 // PlaneWidget
00220         
00221         
00222         
00223         
00224         
00225         
00226 
00227 
00228         
00229 }
00230 
00231 //-------------------------------------------------------------------
00232 void wxVtkMPR3DView::ConfigureFreePlanes()
00233 {
00234 
00235         // The shared picker enables us to use 3 planes at one time
00236         // and gets the picking order right
00237         vtkCellPicker* picker = vtkCellPicker::New();
00238         picker->SetTolerance(0.005);
00239 
00240         // The 3 image plane widgets 
00241         _planeWidgetX = GetPlaneWidget('x', 1, 0, 0, picker);
00242         _planeWidgetY = GetPlaneWidget('y', 1, 1, 0, picker);
00243         _planeWidgetZ = GetPlaneWidget('z', 0, 0, 1, picker);     
00244         
00245         _planeWidgetY->SetLookupTable(_planeWidgetX->GetLookupTable());
00246         _planeWidgetZ->SetLookupTable(_planeWidgetX->GetLookupTable());
00247         
00248         picker->UnRegister(NULL);
00249         
00250 }
00251 
00252 //-------------------------------------------------------------------
00253 vtkImagePlaneWidget* wxVtkMPR3DView::GetPlaneWidget(unsigned char activationkey, double r, double g, double b, vtkCellPicker* picker)
00254 {
00255         vtkProperty* prop1 = 0;         
00256         vtkImagePlaneWidget* planeWidget = 0;
00257         planeWidget = vtkImagePlaneWidget::New();
00258         planeWidget->EnabledOff();
00259         planeWidget->SetInteractor( GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor() );
00260         vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00261         int xMin = 0, xMax = 0, yMin = 0, yMax = 0, zMin = 0, zMax = 0;
00262         double xSpacing = 0, ySpacing = 0, zSpacing = 0;
00263         if(image){
00264                 planeWidget->SetInput( image );
00265                 image->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax);   
00266                 image->GetSpacing(xSpacing, ySpacing, zSpacing);
00267         }
00268 
00269         
00270         
00271         
00272                 
00273         
00274         if (activationkey=='x')
00275         {
00276                 planeWidget->SetPlaneOrientationToXAxes();       
00277                 planeWidget->SetSlicePosition((xMax+xMin)/2.*xSpacing);
00278         }
00279         
00280         if (activationkey=='y')
00281         {
00282                 planeWidget->SetPlaneOrientationToYAxes();
00283                 planeWidget->SetSlicePosition((yMax+yMin)/2.*ySpacing);
00284         }
00285                 
00286         if (activationkey=='z')
00287         {
00288                 planeWidget->SetPlaneOrientationToZAxes();
00289                 planeWidget->SetSlicePosition((zMax+zMin)/2.*zSpacing);
00290         }
00291         
00292         planeWidget->DisplayTextOn();
00293         planeWidget->SetPicker(picker);
00294         planeWidget->SetKeyPressActivationValue(activationkey);
00295         prop1 = planeWidget->GetPlaneProperty();
00296         prop1->SetColor(r, g, b);
00297         return planeWidget;
00298 }
00299 
00300 //-------------------------------------------------------------------
00301 void wxVtkMPR3DView::FreePlaneVisible(int plane, bool ok)
00302 {
00303         if(_planeWidgetX){
00304                 if ((plane==1) && (ok==true)) _planeWidgetX->EnabledOn();
00305                 if ((plane==2) && (ok==true)) _planeWidgetY->EnabledOn();
00306                 if ((plane==3) && (ok==true)) _planeWidgetZ->EnabledOn();
00307                 if ((plane==1) && (ok==false)) _planeWidgetX->EnabledOff();
00308                 if ((plane==2) && (ok==false)) _planeWidgetY->EnabledOff();
00309                 if ((plane==3) && (ok==false)) _planeWidgetZ->EnabledOff();
00310         }
00311 }
00312 
00313 //-------------------------------------------------------------------
00314 void wxVtkMPR3DView::FreePlaneInteraction(bool ok)
00315 {
00316         if(_planeWidgetX){
00317                 if (ok==true)
00318                 {
00319                         _planeWidgetX->InteractionOn();
00320                         _planeWidgetY->InteractionOn();
00321                         _planeWidgetZ->InteractionOn();
00322                 } else {
00323                         _planeWidgetX->InteractionOff();
00324                         _planeWidgetY->InteractionOff();
00325                         _planeWidgetZ->InteractionOff();
00326                 }
00327         }
00328 }
00329 
00330 
00331 //-------------------------------------------------------------------
00332 void wxVtkMPR3DView::setColorTransferFunction(vtkColorTransferFunction* colortable)
00333 {
00334         GetVtkMPR3DDataViewer ()->setColorTransferFunction(colortable); 
00335 }
00336 
00337 //-------------------------------------------------------------------
00338 void wxVtkMPR3DView::Refresh()   // virtual
00339 {
00340         _vtkmpr3Ddataviewer     ->      Refresh();
00341         if (_wxvtkmpr3DviewCntrlPanel!=NULL)
00342         {
00343                 _wxvtkmpr3DviewCntrlPanel->Refresh();
00344         }
00345 
00346 }
00347 
00348 //-------------------------------------------------------------------
00349 void wxVtkMPR3DView::RefreshView()   // virtual
00350 {
00351         double spc[3];
00352         vtkImageData *image = GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00353         
00354         if(image){
00355                 image->GetSpacing(spc);
00356         }else{
00357                 spc[0] = 0;
00358                 spc[1] = 0;
00359                 spc[2] = 0;
00360         }
00361         //this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData()->GetSpacing(spc);
00362 
00363         //double nx=1,ny=0,nz=0; // JPRx
00364         Refresh();
00365         double x=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetX();
00366         double y=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetY();
00367         double z=GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetZ();
00368 
00369         x=x*spc[0];
00370         y=y*spc[1];
00371         z=z*spc[2];
00372 
00373         if(_pointWidget){
00374                 _pointWidget->SetPosition( x,y,z ); 
00375 
00376 
00377                 double in[3]; 
00378                 double normal[3];
00379                 vtkTransform *transform = GetVtkMPR3DDataViewer ()->GetVtkMPRBaseData()->GetTransformOrientation();
00380                 in[0]=1;                in[1]=0;                        in[2]=0;
00381                 transform->TransformPoint(in,normal);
00382                 _planeWidget->SetNormal( normal[0],normal[1],normal[2] );
00383 
00384 
00385                 _planeWidget->SetCenter( x,y,z );
00386                 _planeWidget->UpdatePlacement();
00387                 _planeWidget->GetPolyData(_vtkplane);
00388         }
00389 }
00390 //-------------------------------------------------------------------
00391 wxPanel* wxVtkMPR3DView::CreateControlPanel(wxWindow *parent, bool align)
00392 {
00393         _wxvtkmpr3DviewCntrlPanel = new wxVtkMPR3DViewCntrlPanel(parent,this, align);
00394         return _wxvtkmpr3DviewCntrlPanel;
00395 }
00396 //-------------------------------------------------------------------
00397 vtkMPR3DDataViewer* wxVtkMPR3DView::GetVtkMPR3DDataViewer() 
00398 {
00399         return _vtkmpr3Ddataviewer; 
00400 }
00401 //-------------------------------------------------------------------
00402 wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() throw (char*)
00403 {
00404         if(_wxvtk3Dbaseview==NULL){
00405                 throw "wxVtk3DBaseView* wxVtkMPR3DView::GetWxvtk3Dbaseview() _wxvtk3Dbaseview=NULL";
00406         }
00407         return _wxvtk3Dbaseview;
00408 }
00409 //-------------------------------------------------------------------
00410 
00411 //-------------------------------------------------------------------
00412 void wxVtkMPR3DView::VisibleImageActor(int idPosition, bool visible){
00413         /*if(visible == false)
00414                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == false \n");
00415         else
00416         {
00417                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> visibleActor == true\n");
00418                 printf("CPR: wxVtkMPR3DView::VisibleImageActor-> idPosition == %d\n", idPosition);
00419         }
00420         */
00421         if (visible!=_vtkmpr3Ddataviewer->GetVisiblePosition(idPosition)){
00422                 if (visible==false){
00423                         _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );        
00424                 } else {
00425                         _wxvtk3Dbaseview->GetRenderer()->AddActor( _vtkmpr3Ddataviewer->GetImageActor(idPosition)  );   
00426                 }
00427                 _vtkmpr3Ddataviewer->SetVisiblePosition(idPosition,visible);
00428         }
00429 }
00430 
00431 
00432 //-------------------------------------------------------------------
00433 void wxVtkMPR3DView::VisiblePointWidget( bool visible )
00434 {
00435         if(_pointWidget){
00436                 if (visible==true)
00437                 {
00438                         _pointWidget->On();
00439                 } else {
00440                         _pointWidget->Off();
00441                 }
00442         }
00443 }
00444 
00445 //-------------------------------------------------------------------
00446 void wxVtkMPR3DView::VisiblePlaneWidget( bool visible )
00447 {
00448         if(_planeWidget){
00449                 if (visible==true)
00450                 {
00451                         _planeWidget->On();
00452                         _contourPlaneActor->VisibilityOn();
00453 
00454                 } else {
00455                         _planeWidget->Off();
00456                         _contourPlaneActor->VisibilityOff();
00457                 }
00458         }
00459 }
00460 
00461 //CPR: Method added 30 Nov 2009
00462 void wxVtkMPR3DView::showOutlineActor(bool value)
00463 {
00464         vtkActor* _outlineActor = _vtkmpr3Ddataviewer->GetOutlineActor();
00465         if(value == true)
00466         {
00467                 _wxvtk3Dbaseview->GetRenderer()->AddActor( _outlineActor );     
00468         }
00469         else
00470         {
00471                 _wxvtk3Dbaseview->GetRenderer()->RemoveActor( _outlineActor );  
00472         }
00473 }
00474 
00475 //-------------------------------------------------------------------
00476 void wxVtkMPR3DView::SetVtkMPR3DDataViewer(vtkMPR3DDataViewer *vtkmpr3Ddataviewer)
00477 {
00478         _vtkmpr3Ddataviewer = vtkmpr3Ddataviewer;
00479 }
00480 
00481 //-------------------------------------------------------------------
00482 void wxVtkMPR3DView::InitOrientationPointWidget()
00483 {
00484         this->_planeWidget->SetNormal(1,0,0);           
00485 }
00486 
00487 
00488 
00489 
00490 //-------------------------------------------------------------------
00491 // EED 25 Janvier 2007 testLoic
00492 void wxVtkMPR3DView::TestLoic1()
00493 {
00494 
00495         int sizeIma     = 128;
00496   double dimIma = sizeIma*2;
00497 
00498         vtkImageData *vtkimagedata =  this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00499 
00500         double spc[3];
00501         vtkimagedata->GetSpacing(spc);
00502 
00503         vtkimagedata->Update();
00504 
00505 
00506          double p[3], n[3];
00507      this->_planeWidget->GetOrigin(p);
00508      this->_planeWidget->GetNormal(n);
00509 
00510 
00511 
00512     vtkPlaneSource* pSource = vtkPlaneSource::New( );
00513     pSource->SetResolution( sizeIma - 1, sizeIma - 1 );
00514     pSource->SetOrigin( p[ 0 ], p[ 1 ], p[ 2 ] );
00515     pSource->SetPoint1( p[ 0 ] + dimIma - 1.0, p[ 1 ], p[ 2 ] );
00516     pSource->SetPoint2( p[ 0 ], p[ 1 ]+ dimIma - 1.0 , p[ 2 ] );
00517     pSource->Update( );
00518     pSource->SetCenter( p[ 0 ], p[ 1 ], p[ 2 ] );
00519     pSource->SetNormal( n[ 0 ], n[ 1 ], n[ 2 ] );
00520     pSource->Update( );
00521 
00522     vtkProbeFilter* slices = vtkProbeFilter::New();
00523     slices->SetInput( ( vtkDataSet* )pSource->GetOutput( ) );
00524     slices->SetSource( vtkimagedata );
00525     slices->Update( );
00526     pSource->Delete( );
00527 
00528         vtkStructuredPoints   *stPoints = vtkStructuredPoints::New();
00529         stPoints -> GetPointData( )->SetScalars(  slices->GetOutput()->GetPointData()->GetScalars()  );
00530         stPoints -> SetDimensions( sizeIma, sizeIma, 1 );
00531         stPoints -> SetScalarType( vtkimagedata->GetScalarType() );
00532         stPoints -> SetScalarTypeToShort();
00533         stPoints -> Update();
00534 
00535         vtkImageChangeInformation  *change = vtkImageChangeInformation ::New();
00536         change    -> SetInput( stPoints );  
00537         change    -> Update();    //important
00538 
00539         double _range[2];
00540         vtkimagedata->GetScalarRange(_range);
00541    vtkWindowLevelLookupTable *_bwlookup = vtkWindowLevelLookupTable::New( );
00542    _bwlookup->SetHueRange( 0 , 1 );
00543    _bwlookup->SetNumberOfColors( (int)(_range[1] - _range[0] + 1) );
00544    _bwlookup->SetTableRange( _range[0] , _range[1] );
00545    _bwlookup->SetSaturationRange( 0 , 0 );
00546    _bwlookup->SetValueRange( 0 , 1 );
00547    _bwlookup->SetAlphaRange( 1 , 1 );
00548    _bwlookup->Build( );
00549  
00550    vtkLookupTable * _collookup = vtkLookupTable::New( );
00551    _collookup->SetNumberOfColors( 256 );
00552    _collookup->SetTableRange( 0 , 255 );
00553    _collookup->Build( );
00554    _collookup->SetTableValue( 0  , 1 , 0 , 0 , 1 );
00555    _collookup->SetTableValue(128 , 0 , 0 , 1 , 1 );
00556    _collookup->SetTableValue(255 , 0 , 1 , 0 , 1 );
00557 
00558 
00559         vtkMetaImageWriter *writer = vtkMetaImageWriter::New( );
00560         writer->SetInput( stPoints );
00561         writer->SetFileName( "C:/Users/Images/temp_EED/image.mhd" );
00562         writer->SetFileDimensionality( 2 );
00563         writer->Write( );
00564 
00565 
00566 
00567         vtkDataSetMapper *_3DSliceMapper = vtkDataSetMapper::New( );
00568         _3DSliceMapper->SetInput(change->GetOutput( ) );
00569         _3DSliceMapper->SetLookupTable( _bwlookup );
00570         _3DSliceMapper->SetScalarRange( _range );
00571         _3DSliceMapper->ImmediateModeRenderingOn( );
00572 
00573         vtkActor *_3DSliceActor = vtkActor::New( );
00574         _3DSliceActor->SetMapper( _3DSliceMapper );
00575 
00576  // The usual rendering stuff.
00577   vtkCamera *camera = vtkCamera::New();
00578       camera->SetPosition(1,1,1);
00579       camera->SetFocalPoint(0,0,0);
00580 
00581   vtkRenderer *renderer = vtkRenderer::New();
00582   vtkRenderWindow *renWin = vtkRenderWindow::New();
00583     renWin->AddRenderer(renderer);
00584 
00585   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00586     iren->SetRenderWindow(renWin);
00587 
00588   renderer->AddActor( _3DSliceActor );
00589       renderer->SetActiveCamera(camera);
00590       renderer->ResetCamera();
00591       renderer->SetBackground(1,1,1);
00592   
00593   renWin->SetSize(300,300);
00594 
00595   // interact with data
00596   renWin->Render();
00597   iren->Start();
00598 
00599 
00600 
00601 
00602 
00603 }
00604 
00605 //-------------------------------------------------------------------
00606 // EED 25 Janvier 2007 testLoic
00607 void wxVtkMPR3DView::TestLoic2()
00608 {
00609 /*
00610  vtkVectorNorm *vecMagnitude = vtkVectorNorm::New();
00611                 vecMagnitude->SetInput(VtkMainGrid);
00612                 vecMagnitude->NormalizeOff();
00613                 vecMagnitude->Update();
00614 */
00615 
00616         vtkPlane *slicePlane = vtkPlane::New();
00617                                 this->_planeWidget->GetPlane( slicePlane );
00618 
00619                 
00620         vtkCutter* sliceCutter = vtkCutter::New();
00621                 vtkImageData *vtkimagedata =  this->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetImageData();
00622                 sliceCutter->SetInput( vtkimagedata );
00623                 sliceCutter->SetCutFunction( slicePlane );
00624 
00625 //EED
00626 //        vtkLookupTable *lut = BuildHueWeightBaseMap();
00627 
00628 
00629         vtkPolyDataMapper *slice = vtkPolyDataMapper::New();
00630                 slice->SetInput( sliceCutter->GetOutput() );
00631         double range[2];
00632 // EED
00633 //                slice->Update();
00634                                   vtkimagedata->GetScalarRange(range);
00635 //                vecMagnitude->GetOutput()->GetScalarRange( range );
00636 //                range[1] *= 0.7; // reduce the upper range by 30%
00637 //                slice->SetScalarRange( range );
00638 //                slice->SetLookupTable( lut );
00639 
00640 //       vtkActor *sliceActor = vtkActor::New();
00641 //                sliceActor->SetMapper( slice );
00642 
00643         vtkPolyDataMapper *contourMapper = vtkPolyDataMapper::New();
00644                 contourMapper->SetInput( sliceCutter->GetOutput() );
00645                 contourMapper->SetScalarRange( range );
00646   //              contourMapper->SetLookupTable( lut );
00647 
00648                 
00649         vtkActor *contourActor = vtkActor::New();
00650                 contourActor->SetMapper( contourMapper );
00651 
00652 
00653 
00654  // The usual rendering stuff.
00655   vtkCamera *camera = vtkCamera::New();
00656       camera->SetPosition(1,1,1);
00657       camera->SetFocalPoint(0,0,0);
00658 
00659   vtkRenderer *renderer = vtkRenderer::New();
00660   vtkRenderWindow *renWin = vtkRenderWindow::New();
00661     renWin->AddRenderer(renderer);
00662 
00663   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
00664     iren->SetRenderWindow(renWin);
00665 
00666   renderer->AddActor( contourActor );
00667 //  renderer->AddActor(cubeActor);
00668       renderer->SetActiveCamera(camera);
00669       renderer->ResetCamera();
00670       renderer->SetBackground(1,1,1);
00671   
00672   renWin->SetSize(300,300);
00673 
00674   // interact with data
00675   renWin->Render();
00676   iren->Start();
00677 
00678 
00679 }
00680 

Generated on 20 Oct 2010 for creaMaracasVisu_lib by  doxygen 1.6.1