1 #include <vtkAutoInit.h>
2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
3 VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); //错误:no override found for 'vtkRayCastImageDisplayHelper'.
4 VTK_MODULE_INIT(vtkRenderingFreeType);
5 VTK_MODULE_INIT(vtkInteractionStyle);
6
7 #include <vtkSmartPointer.h>
8 #include <vtkImageData.h>
9 #include <vtkStructuredPoints.h>
10 #include <vtkStructuredPointsReader.h>
11 #include <vtkFixedPointVolumeRayCastMIPHelper.h>
12 #include <vtkFixedPointVolumeRayCastMapper.h>
13 #include <vtkColorTransferFunction.h>
14 #include <vtkPiecewiseFunction.h>
15 #include <vtkRenderer.h>
16 #include <vtkRenderWindow.h>
17 #include <vtkRenderWindowInteractor.h>
18 #include <vtkVolumeProperty.h>
19 #include <vtkAxesActor.h>
20 #include <vtkImageShiftScale.h>
21 #include <vtkImageCast.h>
22
23 //测试:../data/mummy.128.vtk
24 int main(int argc, char *argv[])
25 {
26 vtkSmartPointer<vtkStructuredPointsReader> reader =
27 vtkSmartPointer<vtkStructuredPointsReader>::New();
28
29 reader->SetFileName("C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第七章_VTK体绘制\\data\\mummy.128.vtk");
30 reader->Update();
31
32 vtkSmartPointer<vtkFixedPointVolumeRayCastMIPHelper> rayCastFun =
33 vtkSmartPointer<vtkFixedPointVolumeRayCastMIPHelper>::New();
34
35 vtkSmartPointer<vtkFixedPointVolumeRayCastMapper> volumeMapper =
36 vtkSmartPointer<vtkFixedPointVolumeRayCastMapper>::New();
37 volumeMapper->SetInputData(reader->GetOutput());
38 //volumeMapper->Set
39 //SetVolumeRayCastMapperFunction(rayCastFun);//必须设置,否则出错
40
41 vtkSmartPointer<vtkVolumeProperty> volumeProperty =
42 vtkSmartPointer<vtkVolumeProperty>::New();
43 volumeProperty->SetInterpolationTypeToLinear();
44 volumeProperty->ShadeOn();
45 volumeProperty->SetAmbient(0.4);
46 volumeProperty->SetDiffuse(0.6);
47 volumeProperty->SetSpecular(0.2);
48
49 vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity =
50 vtkSmartPointer<vtkPiecewiseFunction>::New();
51 compositeOpacity->AddPoint(70, 0.00);
52 compositeOpacity->AddPoint(90, 0.40);
53 compositeOpacity->AddPoint(180, 0.60);
54 volumeProperty->SetScalarOpacity(compositeOpacity);
55
56 vtkSmartPointer<vtkColorTransferFunction> color =
57 vtkSmartPointer<vtkColorTransferFunction>::New();
58 color->AddRGBPoint(0.000, 0.00, 0.00, 0.00);
59 color->AddRGBPoint(64.00, 1.00, 0.52, 0.30);
60 color->AddRGBPoint(190.0, 1.00, 1.00, 1.00);
61 color->AddRGBPoint(220.0, 0.20, 0.20, 0.20);
62 volumeProperty->SetColor(color);
63
64 vtkSmartPointer<vtkVolume> volume =
65 vtkSmartPointer<vtkVolume>::New();
66 volume->SetMapper(volumeMapper);
67 volume->SetProperty(volumeProperty);
68
69 vtkSmartPointer<vtkRenderer> ren = vtkSmartPointer<vtkRenderer>::New();
70 ren->SetBackground(1.0, 1.0, 1.0);
71 ren->AddVolume( volume );
72
73 vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
74 renWin->AddRenderer(ren);
75 renWin->SetSize(640, 480);
76 renWin->Render();
77 renWin->SetWindowName("MIPVolRenderingApp");
78
79 vtkSmartPointer<vtkRenderWindowInteractor> iren =
80 vtkSmartPointer<vtkRenderWindowInteractor>::New();
81 iren->SetRenderWindow(renWin);
82 ren->ResetCamera();
83
84 renWin->Render();
85 iren->Start();
86
87 return EXIT_SUCCESS;
88 }