⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iosurface.cpp

📁 VTK是一个可视化工具包
💻 CPP
字号:
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkVolume16Reader.h"
#include "vtkVolumeReader.h"
#include "vtkObject.h"
//#include "vtkMarchingCubes.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
 
int main (int argc, char **argv)
{
  if (argc < 2)
    {
      cout << "Usage: " << argv[0] << " DATADIR/cube/slice" << endl;
    return 1;
    }
 
 
  vtkRenderer *ren = vtkRenderer::New();
  vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren);
  vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);
  
  vtkVolume16Reader *volReader = vtkVolume16Reader::New();
    volReader->SetImageRange (1,5);
    volReader->SetFilePrefix (argv[1]);
    volReader->SetDataSpacing (1,1,1);
    volReader->Update();
 
  // An isosurface, or contour value of 1 is known to correspond to the object. 
/*  vtkMarchingCubes *iso =vtkMarchingCubes::New();
     iso->SetInput(volReader->GetOutput() );
     iso->SetValue(0,1);  
*/ 
  vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();
      isoMapper->SetInput(iso->GetOutput() );
      isoMapper->ScalarVisibilityOff();
             
  vtkActor *isoActor = vtkActor::New();
      isoActor->SetMapper(isoMapper);
  
  vtkOutlineFilter *outline = vtkOutlineFilter::New();
      outline->SetInput( (vtkDataSet *) volReader->GetOutput() );
     
   vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
      outlineMapper->SetInput(outline->GetOutput() );
   
   vtkActor *outlineActor = vtkActor::New();
      outlineActor->SetMapper(outlineMapper);
      outlineActor->VisibilityOff();
      
   //
   // Add the actors to the renderer, set the background and size
   //
   ren->AddActor(outlineActor);
   ren->AddActor(isoActor);
   ren->SetBackground(0.2,0.3,0.4);
   renWin->SetSize(450,450);
   ren->GetActiveCamera()->Elevation(90);
   ren->GetActiveCamera()->SetViewUp(0,0,-1);
   
   iren->Initialize();
   
   // render the image
   iren->Start();
   
 
   return 0;
}
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -