1 #include <vtkAutoInit.h> 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2); 4 VTK_MODULE_INIT(vtkRenderingFreeType); 5 VTK_MODULE_INIT(vtkInteractionStyle); 6 7 #include <vtkSmartPointer.h> 8 #include <vtkStructuredPointsReader.h> 9 #include <vtkStructuredPoints.h> 10 #include <vtkGPUVolumeRayCastMapper.h> 11 #include <vtkVolumeProperty.h> 12 #include <vtkPiecewiseFunction.h> 13 #include <vtkColorTransferFunction.h> 14 #include <vtkVolume.h> 15 #include <vtkRenderer.h> 16 #include <vtkRenderWindow.h> 17 #include <vtkRenderWindowInteractor.h> 18 #include <vtkCamera.h> 19 20 int main() 21 { 22 vtkSmartPointer<vtkStructuredPointsReader> reader = 23 vtkSmartPointer<vtkStructuredPointsReader>::New(); 24 reader->SetFileName("C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第七章_VTK体绘制\\data\\mummy.128.vtk"); 25 reader->Update(); 26 27 vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper1 = 28 vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New(); 29 volumeMapper1->SetInputData(reader->GetOutput()); 30 31 vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper2 = 32 vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New(); 33 volumeMapper2->SetInputData(reader->GetOutput()); 34 /****************************************************************/ 35 vtkSmartPointer<vtkVolumeProperty> volumeProperty1 = 36 vtkSmartPointer<vtkVolumeProperty>::New(); 37 volumeProperty1->SetInterpolationTypeToLinear(); //设置线性插值 38 volumeProperty1->ShadeOn();//开启阴影功能 39 volumeProperty1->SetAmbient(0.4);//设置环境温度系数 40 volumeProperty1->SetDiffuse(0.6);//设置漫反射系数 41 volumeProperty1->SetSpecular(0.2);//设置镜面反射系数 42 43 vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity1 = 44 vtkSmartPointer<vtkPiecewiseFunction>::New(); 45 compositeOpacity1->AddPoint(70, 0.0); 46 compositeOpacity1->AddPoint(90, 0.4); 47 compositeOpacity1->AddPoint(180, 0.6); 48 volumeProperty1->SetScalarOpacity(compositeOpacity1); 49 50 vtkSmartPointer<vtkVolumeProperty> volumeProperty2 = 51 vtkSmartPointer<vtkVolumeProperty>::New(); 52 volumeProperty2->SetInterpolationTypeToLinear(); //设置线性插值 53 volumeProperty2->ShadeOn();//开启阴影功能 54 volumeProperty2->SetAmbient(0.4);//设置环境温度系数 55 volumeProperty2->SetDiffuse(0.6);//设置漫反射系数 56 volumeProperty2->SetSpecular(0.2);//设置镜面反射系数 57 58 vtkSmartPointer<vtkPiecewiseFunction> compositeOpacity2 = 59 vtkSmartPointer<vtkPiecewiseFunction>::New(); 60 compositeOpacity2->AddPoint(100, 0.0); 61 compositeOpacity2->AddPoint(140, 0.4); 62 compositeOpacity2->AddPoint(180, 0.6); 63 volumeProperty2->SetScalarOpacity(compositeOpacity2); 64 / 65 vtkSmartPointer<vtkPiecewiseFunction> gradientOpacity = 66 vtkSmartPointer<vtkPiecewiseFunction>::New(); 67 gradientOpacity->AddPoint(10, 0.0); 68 gradientOpacity->AddPoint(90, 0.5); 69 gradientOpacity->AddPoint(100, 1.0); 70 volumeProperty1->SetGradientOpacity(gradientOpacity); 71 volumeProperty2->SetGradientOpacity(gradientOpacity); 72 73 vtkSmartPointer<vtkColorTransferFunction> color = 74 vtkSmartPointer<vtkColorTransferFunction>::New(); 75 color->AddRGBPoint(0, 0, 0, 0); 76 color->AddRGBPoint(64, 1.0, 0.52, 0.3); 77 color->AddRGBPoint(190.0, 1.00, 1.00, 1.00); 78 color->AddRGBPoint(220.0, 0.20, 0.20, 0.20); 79 volumeProperty1->SetColor(color); 80 volumeProperty2->SetColor(color); 81 /****************************************************************/ 82 vtkSmartPointer<vtkVolume> volume1 = 83 vtkSmartPointer<vtkVolume>::New(); 84 volume1->SetMapper(volumeMapper1); 85 volume1->SetProperty(volumeProperty1); 86 87 vtkSmartPointer<vtkVolume> volume2 = 88 vtkSmartPointer<vtkVolume>::New(); 89 volume2->SetMapper(volumeMapper2); 90 volume2->SetProperty(volumeProperty2); 91 // 92 double View1[4] = { 0, 0, 0.5, 1 }; 93 double View2[4] = { 0.5, 0, 1, 1 }; 94 vtkSmartPointer<vtkRenderer> render1 = 95 vtkSmartPointer<vtkRenderer>::New(); 96 render1->AddVolume(volume1); 97 render1->SetViewport(View1); 98 render1->SetBackground(1, 1, 0); 99 100 vtkSmartPointer<vtkRenderer> render2 = 101 vtkSmartPointer<vtkRenderer>::New(); 102 render2->AddVolume(volume2); 103 render2->SetViewport(View2); 104 render2->SetBackground(0, 1, 0); 105 106 vtkSmartPointer<vtkRenderWindow> rw = 107 vtkSmartPointer<vtkRenderWindow>::New(); 108 rw->AddRenderer(render1); 109 rw->AddRenderer(render2); 110 rw->SetSize(640, 320); 111 rw->SetWindowName("Differ Gray Opacity Function"); 112 113 vtkSmartPointer<vtkRenderWindowInteractor> rwi = 114 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 115 rwi->SetRenderWindow(rw); 116 117 render1->GetActiveCamera()->SetPosition(0, -1, 0); 118 render1->GetActiveCamera()->SetFocalPoint(0, 0, 0); 119 render1->GetActiveCamera()->SetViewUp(0, 0, 1); 120 render1->GetActiveCamera()->Azimuth(30); 121 render1->GetActiveCamera()->Elevation(30); 122 render1->ResetCamera(); 123 render2->SetActiveCamera(render1->GetActiveCamera()); 124 125 rw->Render(); 126 rwi->Start(); 127 return 0; 128 }标签:VTK,vtkSmartPointer,实例,render1,volumeProperty1,68,New,volumeProperty2,include From: https://www.cnblogs.com/ybqjymy/p/17633024.html