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

📄 headclip.cpp

📁 vtk中一些类的具体定义方法
💻 CPP
字号:
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkVolume16Reader.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkPolyDataMapper.h"
#include "vtkStripper.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
#include "vtkPlane.h"
#include "vtkClipPolyData.h"
#include "vtkCutter.h"
#include "vtkPolyData.h"
#include "vtkTriangleFilter.h"


int main ()
{
	vtkRenderer *ren1 = vtkRenderer::New();
	vtkRenderWindow *renWin = vtkRenderWindow::New();
    renWin->AddRenderer(ren1);
	vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
    iren->SetRenderWindow(renWin);
	


	vtkVolume16Reader *reader = vtkVolume16Reader::New();
	    reader->SetDataDimensions(64,64);
	    reader->SetDataByteOrderToLittleEndian();
	    reader->SetFilePrefix ("E://Data/head/half");       //64*64.dcm  1~93              //256*256.dcm   1~113
	    reader->SetImageRange(1, 93);
	    reader->SetDataSpacing (3.2, 3.2, 1.5);


	vtkPlane *plane=vtkPlane::New();   //plane位置由初始位置Origin和法线方向Normal确定
	plane->SetOrigin(95,1,0);      //设置plane的原始位置  参数:(x,y,z)
	plane->SetNormal(0,0,0);      //设置plane的法线方向  参数:(x,y,z)



	vtkContourFilter *boneExtractor = vtkContourFilter::New();
    boneExtractor->SetInput((vtkDataSet *) reader->GetOutput());
    boneExtractor->SetValue(0, 1150);
	
	vtkPolyDataNormals *boneNormals = vtkPolyDataNormals::New();
    boneNormals->SetInput(boneExtractor->GetOutput());
    boneNormals->SetFeatureAngle(60.0);
	
	vtkClipPolyData *clipper=vtkClipPolyData::New();
	clipper->SetInput(boneNormals->GetOutput());
	clipper->SetClipFunction(plane);
	clipper->GenerateClipScalarsOn();
	clipper->GenerateClippedOutputOn();
	clipper->SetValue(0.5);

	vtkPolyDataMapper *clipMapper=vtkPolyDataMapper::New();
	clipMapper->SetInput(clipper->GetOutput());
	clipMapper->ScalarVisibilityOff();
	
	vtkProperty *backProp=vtkProperty::New();
	backProp->SetDiffuseColor(50,50,50);

	vtkActor *clipActor=vtkActor::New();
	clipActor->SetMapper(clipMapper);
	clipActor->SetBackfaceProperty(backProp);
	clipActor->GetProperty()->SetDiffuseColor(1, 1, 0.9412);



	vtkCutter *cutEdges=vtkCutter::New();        
	cutEdges->SetInput(boneNormals->GetOutput());
	cutEdges->SetCutFunction(plane);
	cutEdges->GenerateCutScalarsOn();
	cutEdges->SetValue(0,0.5);
	
	vtkStripper *cutStrips=vtkStripper::New();
	cutStrips->SetInput(cutEdges->GetOutput());
	cutStrips->Update();
	
	vtkPolyData *cutPoly=vtkPolyData::New();      
	cutPoly->SetPoints((cutStrips->GetOutput())->GetPoints());
	cutPoly->SetPolys((cutStrips->GetOutput())->GetLines());
	
	
	vtkTriangleFilter *cutTriangles=vtkTriangleFilter::New();
	cutTriangles->SetInput(cutPoly);
				
	vtkPolyDataMapper *cutMapper=vtkPolyDataMapper::New();
	cutMapper->SetInput(cutPoly);
	cutMapper->SetInput(cutTriangles->GetOutput());
				
	vtkActor *cutActor=vtkActor::New();
	cutActor->SetMapper(cutMapper);
	cutActor->GetProperty()->SetColor(10,100,30);
				
								
	vtkPolyDataMapper *restMapper=vtkPolyDataMapper::New();
	restMapper->SetInput(clipper->GetOutput());
	restMapper->ScalarVisibilityOff();
	vtkActor *restActor=vtkActor::New();
	restActor->SetMapper(restMapper);
	restActor->GetProperty()->SetRepresentationToWireframe();
						
			vtkCamera *aCamera = vtkCamera::New();
			aCamera->SetViewUp (0, 0, -1);
			aCamera->SetPosition (0, 1, 0);
			aCamera->SetFocalPoint (0, 0, 0);
			aCamera->ComputeViewPlaneNormal();
			
			ren1->AddActor(clipActor);
			ren1->AddActor(cutActor);
			ren1->AddActor(restActor);
			ren1->SetActiveCamera(aCamera);
			ren1->ResetCamera ();
			aCamera->Azimuth(30);
			aCamera->Elevation(30);
		
			aCamera->Dolly(1.0);
			ren1->SetBackground(0,0,0);


			ren1->ResetCameraClippingRange();
					
			renWin->SetSize(600,600);
			renWin->Render();
			iren->Initialize();
			iren->Start();

			return 0;

}

⌨️ 快捷键说明

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