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

📄 jpegvolumerendering.cpp

📁 vtk中一些类的具体定义方法
💻 CPP
字号:


#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkPiecewiseFunction.h"
//#include "vtkColorTransferFunction.h"
#include "vtkVolumeProperty.h"
#include "vtkVolumeRayCastCompositeFunction.h"
#include "vtkVolumeRayCastMapper.h"
#include "vtkVolume.h"
#include "vtkVolume16Reader.h"
#include "vtkCamera.h"
#include "vtkDICOMImageReader.h"
#include "vtkImageCast.h"
#include "vtkJPEGReader.h"


int main()
{
	vtkRenderer *aRender = vtkRenderer::New();
	vtkRenderWindow *renWin = vtkRenderWindow::New();
		renWin->AddRenderer(aRender);
	vtkRenderWindowInteractor *iRen = vtkRenderWindowInteractor::New();
		iRen->SetRenderWindow(renWin);
		
		vtkJPEGReader *jpegReader = vtkJPEGReader::New();
		jpegReader->SetDataByteOrderToLittleEndian();
//		jpegReader->SetFilePattern("E://Data/Female");
		jpegReader->SetFilePrefix("E://Data/mycoral/Coral");
		jpegReader->SetDataExtent(0, 1280, 0, 1024, 1, 11);
		jpegReader->SetDataSpacing(3.2, 3.2, 20);
		jpegReader->SetDataOrigin(0, 0, 0);
		
	
		/*
			vtkDICOMImageReader *reader = vtkDICOMImageReader::New();
							reader->SetDataByteOrderToLittleEndian();
							reader->SetDirectoryName("E:\\Data\\CTHead");
							reader->SetDataSpacing(3.2, 3.2, 1.5);
		*/
		

				/*
					vtkImageCast *readerImageCast = vtkImageCast::New();
									readerImageCast->SetInput(reader->GetOutput());
									readerImageCast->SetOutputScalarTypeToUnsignedChar();
									readerImageCast->ClampOverflowOn();*/
		
		
	

		vtkPiecewiseFunction *opacityTransferFunction = vtkPiecewiseFunction::New();
		opacityTransferFunction->AddPoint(0, 0.0);
		opacityTransferFunction->AddSegment(30, 0.0, 100, 0.9);
		opacityTransferFunction->AddPoint(110, 2.0);
		opacityTransferFunction->ClampingOn();
		


	
		/*
		vtkColorTransferFunction *colorTransferFunction = vtkColorTransferFunction::New();
						colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.0, 0.0);
						colorTransferFunction->AddRGBPoint(64.0, 1.0, 0.0, 0.0);
						colorTransferFunction->AddRGBPoint(128.0, 0.0, 0.0, 1.0);
						colorTransferFunction->AddRGBPoint(192.0, 0.0, 1.0, 0.0);
						colorTransferFunction->AddRGBPoint(255.0, 0.0, 0.2, 0.0);
		*/
		
		

		vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
	//	volumeProperty->SetColor(colorTransferFunction);
		volumeProperty->SetScalarOpacity(opacityTransferFunction);
	//	volumeProperty->SetComponentWeight(0, 0.0);
	//	volumeProperty->SetDisableGradientOpacity(2);
		volumeProperty->ShadeOn();
		volumeProperty->SetInterpolationTypeToLinear();
		

		vtkVolumeRayCastCompositeFunction *compositeFunction = vtkVolumeRayCastCompositeFunction::New();
		vtkVolumeRayCastMapper *volumeMapper = vtkVolumeRayCastMapper::New();
		volumeMapper->SetVolumeRayCastFunction(compositeFunction);
		volumeMapper->SetInput(jpegReader->GetOutput());


		vtkVolume *volume = vtkVolume::New();
		volume->SetMapper(volumeMapper);
		volume->SetProperty(volumeProperty);
     
		vtkCamera *camera = vtkCamera::New();
		camera->SetViewUp(0,0,1);
        camera->SetPosition(0,2,0);
		camera->SetFocalPoint(0,0,0);
		camera->Dolly(0.8);

        //aRender->SetActiveCamera(camera);
		aRender->AddVolume(volume);
		aRender->SetBackground(0.5, 0.5, 0.5);

		renWin->SetSize(600, 600);
		renWin->Render();

		iRen->Initialize();
		iRen->Start();


		aRender->Delete();
		renWin->Delete();
		iRen->Delete();
//		reader->Delete();
		opacityTransferFunction->Delete();
	//	colorTransferFunction->Delete();
		volumeMapper->Delete();
		volumeProperty->Delete();
		compositeFunction->Delete();
		volume->Delete();
		camera->Delete();
		
		


		

		

		return 0;
		
}

⌨️ 快捷键说明

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