vtk体绘制代码暂存

#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeType,vtkRenderingOpenGL) 
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

#include "vtkPiecewiseFunction.h"
#include "vtkColorTransferFunction.h"
#include "vtkGPUVolumeRayCastMapper.h"
#include "vtkSmartVolumeMapper.h"
#include "vtkImageData.h"
#include "vtkVolumeProperty.h"
#include "vtkVolume.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include <vtkNIFTIImageReader.h>
#include "vtkAutoInit.h" 
int main(int, char* [])
{
	
	vtkNIFTIImageReader* reader = vtkNIFTIImageReader::New();
	reader->SetFileName("D:/vtkdata/resource/295.nii");
	reader->Update();
	
	vtkGPUVolumeRayCastMapper* mapper = vtkGPUVolumeRayCastMapper::New();
	mapper->SetInputData(reader->GetOutput());

	vtkVolume* volume = vtkVolume::New();
	volume->SetMapper(mapper);

	vtkVolumeProperty* property = vtkVolumeProperty::New();


	vtkPiecewiseFunction* popacity = vtkPiecewiseFunction::New();
	popacity->AddPoint(1000, 0.0);
	popacity->AddPoint(4000, 0.68);
	popacity->AddPoint(7000, 0.83);

	vtkColorTransferFunction* color = vtkColorTransferFunction::New();
	color->AddHSVPoint(1000, 0.042, 0.73, 0.55);
	color->AddHSVPoint(2500, 0.042, 0.73, 0.55, 0.5, 0.92);
	color->AddHSVPoint(4000, 0.088, 0.67, 0.88);
	color->AddHSVPoint(5500, 0.088, 0.67, 0.88, 0.33, 0.45);
	color->AddHSVPoint(7000, 0.95, 0.063, 1.0);

	property->SetColor(color);
	property->SetScalarOpacity(popacity);
	property->ShadeOn();
	property->SetInterpolationTypeToLinear();
	property->SetShade(0, 1);
	property->SetDiffuse(0.9);
	property->SetAmbient(0.1);
	property->SetSpecular(0.2);
	property->SetSpecularPower(10.0);
	property->SetComponentWeight(0, 1);
	property->SetDisableGradientOpacity(1);
	property->DisableGradientOpacityOn();
	property->SetScalarOpacityUnitDistance(0.891927);

	volume->SetProperty(property);

	vtkRenderer* ren = vtkRenderer::New();
	ren->AddActor(volume);
	ren->SetBackground(0.1, 0.2, 0.4);

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

	vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
	iren->SetRenderWindow(renWin);
	renWin->SetSize(600, 600);
	renWin->Render();
	iren->Start();

	return 0;
}
//#include "vtkAutoInit.h"
//#include "vtkDICOMImageReader.h"
//#include <vtkSmartPointer.h>
//#include <vtkMetaImageReader.h>
//#include <vtkPiecewiseFunction.h>
//#include <vtkColorTransferFunction.h>
//#include <vtkVolumeProperty.h>
//#include <vtkVolumeRayCastCompositeFunction.h>
//#include <vtkVolumeRayCastMapper.h>
//#include <vtkVolume.h>
//#include <vtkRenderer.h>
//#include <vtkRenderWindow.h>
//#include <vtkRenderWindowInteractor.h>
//#include <vtkImageCast.h>
//#include <vtkInteractorStyleTrackballCamera.h>
//#include <vtkImageData.h>
//#include <vtkPNGReader.h>
//#include<vtkBMPReader.h>
//#include<vtkImageViewer2.h>
//
//
//void main()
//{
//	vtkRenderer* ren = vtkRenderer::New();
//	vtkRenderWindow* renWin = vtkRenderWindow::New();
//	renWin->AddRenderer(ren);
//	vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();
//	iren->SetRenderWindow(renWin);
//	vtkInteractorStyleTrackballCamera* style = vtkInteractorStyleTrackballCamera::New();
//	iren->SetInteractorStyle(style);
//	//设置数据读入
//	vtkSmartPointer<vtkMetaImageReader> reader =
//		vtkSmartPointer<vtkMetaImageReader>::New();
//	reader->SetFileName("D:/vtkdata/brain.mhd");
//	vtkSmartPointer<vtkBMPReader> reader1=
//		vtkSmartPointer<vtkBMPReader>::New();
//	//reader1->SetFileName("D:/data/2022-07-27-0001/d475066f-b214-4630-bd1c-bb3915273254/usimage202207270001154934207.bmp");
//	//reader->SetFileName("D:/data/2022-07-27-0001/d475066f-b214-4630-bd1c-bb3915273254/usimage202207270001154934207.cin");
//	//reader1->Update();
//	reader->Update();
//	//
//	//vtkSmartPointer<vtkImageViewer2>imageViewer =
//	//	vtkSmartPointer<vtkImageViewer2>::New();
//	//imageViewer->SetInputConnection(reader1->GetOutputPort());
//	//imageViewer->SetupInteractor(iren);
//	//imageViewer->Render();
//	//imageViewer->GetRenderer()->ResetCamera();
//	//imageViewer->Render();
//	//imageViewer->GetRenderWindow()->SetWindowName("read and show png test");
//	//
//	vtkImageCast* readerImageCast = vtkImageCast::New();
//	readerImageCast->SetInputConnection(reader->GetOutputPort());
//	readerImageCast->SetOutputScalarTypeToUnsignedShort();
//	readerImageCast->ClampOverflowOn();//设置阀值
//	//设置不透明度传递函数,此为一维分段传输函数
//	vtkPiecewiseFunction* opacityTransferFunction = vtkPiecewiseFunction::New();
//	opacityTransferFunction->AddPoint(20, 0.0);
//	opacityTransferFunction->AddPoint(255, 0.1);
//	opacityTransferFunction->AddPoint(1005, 0.6);
//
//	//设置颜色传递函数
//	vtkColorTransferFunction* colorTransferFunction = vtkColorTransferFunction::New();
//	colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.5, 0.0);
//	colorTransferFunction->AddRGBPoint(60.0, 1.0, 0.0, 0.0);
//	colorTransferFunction->AddRGBPoint(128.0, 0.2, 0.1, 0.9);
//	colorTransferFunction->AddRGBPoint(196.0, 0.27, 0.21, 0.1);
//	colorTransferFunction->AddRGBPoint(255.0, 0.8, 0.8, 0.8);
//	vtkVolumeProperty* volumeProperty = vtkVolumeProperty::New();
//	//设定渲染属性
//	volumeProperty->SetColor(colorTransferFunction);
//	volumeProperty->SetScalarOpacity(opacityTransferFunction);//传输函数不透明度
//	volumeProperty->ShadeOn();
//	volumeProperty->SetInterpolationTypeToLinear();
//	volumeProperty->SetAmbient(0.2);
//	volumeProperty->SetDiffuse(0.4);
//	volumeProperty->SetSpecular(0.6);
//	volumeProperty->SetSpecularPower(10); 
//	//定义光线投射方法为RayCasting体渲染方法
//	vtkVolumeRayCastCompositeFunction* compositeFunction = vtkVolumeRayCastCompositeFunction::New();
//	//定义渲染Mapper
//	vtkVolumeRayCastMapper* volumeMapper = vtkVolumeRayCastMapper::New();
//	volumeMapper->SetVolumeRayCastFunction(compositeFunction);
//	volumeMapper->SetInputConnection(readerImageCast->GetOutputPort());
//	volumeMapper->SetNumberOfThreads(3);
//	//定义Volume
//	vtkVolume* volume = vtkVolume::New();
//	volume->SetMapper(volumeMapper);
//	volume->SetProperty(volumeProperty);
//	//将Volume装载到渲染器中
//	ren->AddVolume(volume);
//	ren->SetBackground(1, 1, 1);
//	renWin->SetSize(600, 600);
//	renWin->Render();
//	iren->Initialize();
//	iren->Start();//初始化并进行交互绘制
//	ren->ResetCameraClippingRange();
//	//资源的删除和释放
//	volumeMapper->Delete();
//	readerImageCast->Delete();
//	iren->Delete();
//	ren->Delete();
//	renWin->Delete();
//	opacityTransferFunction->Delete();
//	volumeProperty->Delete();
//	compositeFunction->Delete();
//	volume->Delete();
//	colorTransferFunction->Delete();
//}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值