添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkStructuredPointsReader.h>
#include <vtkStructuredPoints.h>
#include <vtkGPUVolumeRayCastMapper.h>
#include <vtkVolumeProperty.h>
#include <vtkPiecewiseFunction.h>
#include <vtkColorTransferFunction.h>
#include <vtkVolume.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkCamera.h>
int main()
	vtkSmartPointer<vtkStructuredPointsReader> reader =
		vtkSmartPointer<vtkStructuredPointsReader>::New();
	reader->SetFileName("C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第七章_VTK体绘制\\data\\mummy.128.vtk");
	reader->Update();
	vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper1 =
		vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New();
	volumeMapper1->SetInputData(reader->GetOutput());
	vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper2 =
		vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New();
	volumeMapper2->SetInputData(reader->GetOutput());
	/****************************************************************/
	vtkSmartPointer<vtkVolumeProperty> volumeProperty1 =
		vtkSmartPointer<vtkVolumeProperty>::New();
	volumeProperty1->SetInterpolationTypeToLinear(); //设置线性插值
	volumeProperty1->ShadeOn();//开启阴影功能 
	volumeProperty1->SetAmbient(0.4);//设置环境温度系数
	volumeProperty1->SetDiffuse(0.6);//设置漫反射系数
	volumeProperty1->SetSpecular(0.2);//设置镜面反射系数
	vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity1 =
		vtkSmartPointer<vtkPiecewiseFunction>::New();
	compositeOpacity1->AddPoint(70, 0.0);
	compositeOpacity1->AddPoint(90, 0.4);
	compositeOpacity1->AddPoint(180, 0.6);
	volumeProperty1->SetScalarOpacity(compositeOpacity1);
	vtkSmartPointer<vtkVolumeProperty> volumeProperty2 =
		vtkSmartPointer<vtkVolumeProperty>::New();
	volumeProperty2->SetInterpolationTypeToLinear(); //设置线性插值
	volumeProperty2->ShadeOn();//开启阴影功能 
	volumeProperty2->SetAmbient(0.4);//设置环境温度系数
	volumeProperty2->SetDiffuse(0.6);//设置漫反射系数
	volumeProperty2->SetSpecular(0.2);//设置镜面反射系数
	vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity2 =
		vtkSmartPointer<vtkPiecewiseFunction>::New();
	compositeOpacity2->AddPoint(100, 0.0);
	compositeOpacity2->AddPoint(140, 0.4);
	compositeOpacity2->AddPoint(180, 0.6);
	volumeProperty2->SetScalarOpacity(compositeOpacity2);
	vtkSmartPointer<vtkPiecewiseFunction> gradientOpacity =
		vtkSmartPointer<vtkPiecewiseFunction>::New();
	gradientOpacity->AddPoint(10, 0.0);
	gradientOpacity->AddPoint(90, 0.5);
	gradientOpacity->AddPoint(100, 1.0);
	volumeProperty1->SetGradientOpacity(gradientOpacity);
	volumeProperty2->SetGradientOpacity(gradientOpacity);
	vtkSmartPointer<vtkColorTransferFunction> color =
		vtkSmartPointer<vtkColorTransferFunction>::New();
	color->AddRGBPoint(0, 0, 0, 0);
	color->AddRGBPoint(64, 1.0, 0.52, 0.3);
	color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);
	color->AddRGBPoint(220.0, 0.20, 0.20, 0.20);
	volumeProperty1->SetColor(color);
	volumeProperty2->SetColor(color);
	/****************************************************************/
	vtkSmartPointer<vtkVolume> volume1 =
		vtkSmartPointer<vtkVolume>::New();
	volume1->SetMapper(volumeMapper1);
	volume1->SetProperty(volumeProperty1);
	vtkSmartPointer<vtkVolume> volume2 =
		vtkSmartPointer<vtkVolume>::New();
	volume2->SetMapper(volumeMapper2);
	volume2->SetProperty(volumeProperty2);
	double View1[4] = { 0, 0, 0.5, 1 };
	double View2[4] = { 0.5, 0, 1, 1 };
	vtkSmartPointer<vtkRenderer> render1 =
		vtkSmartPointer<vtkRenderer>::New();
	render1->AddVolume(volume1);
	render1->SetViewport(View1);
	render1->SetBackground(1, 1, 0);
	vtkSmartPointer<vtkRenderer> render2 =
		vtkSmartPointer<vtkRenderer>::New();
	render2->AddVolume(volume2);
	render2->SetViewport(View2);
	render2->SetBackground(0, 1, 0);
	vtkSmartPointer<vtkRenderWindow> rw =
		vtkSmartPointer<vtkRenderWindow>::New();
	rw->AddRenderer(render1);
	rw->AddRenderer(render2);
	rw->SetSize(640, 320);
	rw->SetWindowName("Differ Gray Opacity Function");
	vtkSmartPointer<vtkRenderWindowInteractor> rwi =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	rwi->SetRenderWindow(rw);
	render1->GetActiveCamera()->SetPosition(0, -1, 0);
	render1->GetActiveCamera()->SetFocalPoint(0, 0, 0);
	render1->GetActiveCamera()->SetViewUp(0, 0, 1);
	render1->GetActiveCamera()->Azimuth(30);
	render1->GetActiveCamera()->Elevation(30);
	render1->ResetCamera();
	render2->SetActiveCamera(render1->GetActiveCamera());
	rw->Render();
	rwi->Start();
	return 0;

VTK系列目录:

1 VTK基本概念

2 VTK图像处理

3 VTK图形处理

4 VTK体绘制

实例68:体绘制透明度调整#include &lt;vtkAutoInit.h&gt;VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);VTK_MODULE_INIT(vtkRenderingFreeType);VTK_MODULE_INIT(vtkInteractionStyle);#include &lt;vtkSmartPointer.h&gt;#include &lt;v
vtk中,显示样式的显示,是通过vtkProperty来控制的,这里介绍三种基本的属性设置方式, 点方式,网格方式和面方式, 这里以 头像三角网格的显示为例介绍其显示。其设置方法为 actor->GetProperty()->SetRepresentationToPoints() actor->GetProperty()->SetRepresentationToWireframe() actor->GetProperty()->SetRepresentationToSu
#include "vtkDICOMImageReader.h" #include "vtkRenderWindowInteractor.h" #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkMarchingCubes.h" #include "vtkStripper.h" #include "vtkActor.h" #include "vtkPolyDataMapper.h" #include "vt
看到3DSlicer和paraview中的颜色不透明度调整,你是否也有心动。经过多天摸索,发现这虽然是个小模块,可是如果真是自己做,还挺复杂(可能是自己VTK和QT学的还不够好)。 但是CTK已经为我门做好了,我试着编译和写了个Demo,但是最新的CTK只支持VTK8的版本,如果是用的VTK7也想做一个类似的东西怎么办?那就是把VTK8的东西添加到VTK7上然后修改。具如...
(一)下面这两个一起使用来改变actor的颜色: mapper->ScalarVisibilityOff(); actor->GetProperty()->SetColor(1, 0, 0); (二)下面这个用来设置透明度: actor1->GetProperty()->SetOpacity(0.5);//透明度 #include <vtkSTLReader.h...
VTK.js 是一个基于 Web 的三维可视化库,它可以帮助用户实现绘制。 为了实现绘制,首先需要获取包含三维数据的模型,例如医学影像数据或者 CT 扫描数据。然后,可以使用 VTK.js 中的算法,如 Marching Cubes 算法,对该模型进行处理,并使用渲染器在三维空间中绘制绘制。 如果不熟悉三维数据处理和渲染技术,可以参考 VTK.js 的文档和示例代码,以帮助了解具实现方法。