task1.cpp

来自「本程序完成任务并行等值面提取功能」· C++ 代码 · 共 88 行

CPP
88
字号
#include "programme.h"
#include "vtkVolume16Reader.h"
#include "vtkContourFilter.h"
#include "vtkAppendPolyData.h"
#include "vtkImageData.h"
#include "vtkInputPort.h"
#include "vtkPolyData.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkProperty.h"
#include "vtkRenderWindowInteractor.h"

void task1()
{
 // double extent = data;
 // int iextent = static_cast<int>(data);  
    vtkVolume16Reader *v16 = vtkVolume16Reader::New();
    v16->SetDataDimensions(64,64);
    v16->SetDataByteOrderToLittleEndian();
	v16->SetFilePrefix ("D:/headsq/quarter");
    v16->SetImageRange(1, 93);
    v16->SetDataSpacing (3.2, 3.2, 1.5);
  

  // Iso-surfacing.
  vtkContourFilter* contour = vtkContourFilter::New();
  contour->SetInput(v16->GetOutput());
  contour->SetNumberOfContours(1);
  contour->SetValue(0, 500);

  // Input port
  vtkInputPort* ip = vtkInputPort::New();
  ip->SetRemoteProcessId(1);
  ip->SetTag(11);

  // Append the local and remote data
  vtkAppendPolyData* append = vtkAppendPolyData::New();
  //append->AddInput(contour->GetPolyDataOutput());
  append->AddInput(contour->GetOutput());
  append->AddInput(ip->GetPolyDataOutput());
  

  // Rendering objects.
  vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
  mapper->SetInput(append->GetOutput());
  mapper->SetScalarRange(50, 180);
  mapper->ImmediateModeRenderingOn();

  vtkActor* actor = vtkActor::New();
  actor->SetMapper(mapper);

 // vtkProperty *prop =  actor->GetProperty();
  //prop->SetColor(1, 0.9, 0);
  //actor->GetProperty()->SetDiffuseColor(1, .49, .25);
    //   actor->GetProperty()->SetSpecular(.3);
     //  actor->GetProperty()->SetSpecularPower(20);

  // Create the render objects
  vtkRenderWindow* renWin = vtkRenderWindow::New();
  renWin->SetSize( 600, 600 );

  vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
  iren->SetRenderWindow(renWin);

  vtkRenderer* ren = vtkRenderer::New();
  renWin->AddRenderer(ren);

  ren->AddActor(actor);

  iren->Initialize();
  iren->Start();

  // Tell the other process we are done
  ip->GetController()->TriggerRMI(1, 
                                  vtkMultiProcessController::BREAK_RMI_TAG); 

  // Cleanup
  iren->Delete();
  renWin->Delete();
  ip->Delete();
  append->Delete();
  v16->Delete();
  contour->Delete();
  actor->Delete();
  ren->Delete();
  mapper->Delete();

}

⌨️ 快捷键说明

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