#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系列目录:
实例68:体绘制透明度调整#include <vtkAutoInit.h>VTK_MODULE_INIT(vtkRenderingOpenGL2);VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);VTK_MODULE_INIT(vtkRenderingFreeType);VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkSmartPointer.h>#include <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 的文档和示例代码,以帮助了解具体实现方法。