VTK面绘制例子
这是我自己编的一个简单的例子,仅仅是为了方便初学者快速入门,谢谢!

Code
1
#include "vtkVolume16Reader.h"
2
#include "vtkRenderWindowInteractor.h"
3
#include "vtkRenderer.h"
4
#include "vtkRenderWindow.h"
5
#include "vtkMarchingCubes.h"
6
#include "vtkStripper.h"
7
#include "vtkActor.h"
8
#include "vtkPolyDataMapper.h"
9
#include "vtkProperty.h"
10
#include "vtkCamera.h"
11
int main()
12

{
13
vtkVolume16Reader *reader=vtkVolume16Reader ::New();//创建一个新的读取实例
14
reader->SetDataDimensions(64,64);//设置像素
15
reader->SetDataByteOrderToLittleEndian();
16
reader->SetFilePrefix("C://VTK//VTKDATA//Data//headsq//quarter");//设置读取路径
17
reader->SetImageRange(1,93);
18
reader->SetDataSpacing(3.2,3.2,1.5);
19
20
vtkMarchingCubes *boneExtractor=vtkMarchingCubes::New();//vtkMarchingCubes 为面绘制的经典算法
21
boneExtractor->SetInput((vtkDataObject *)reader->GetOutput());
22
boneExtractor->SetValue(0,500);
23
vtkStripper *boneStripper=vtkStripper::New();//三角带连接
24
boneStripper->SetInput(boneExtractor->GetOutput());
25
26
vtkPolyDataMapper *boneMapper=vtkPolyDataMapper::New();//建立映射
27
boneMapper->SetInput(boneStripper->GetOutput());
28
29
vtkActor *bone=vtkActor::New();//建立演员
30
bone->SetMapper(boneMapper);
31
32
bone->GetProperty()->SetDiffuseColor(.1,.94,.52);
33
bone->GetProperty()->SetSpecular(.3);
34
bone->GetProperty()->SetSpecularPower(20);
35
36
vtkRenderer *ren=vtkRenderer::New();//开始绘制
37
vtkRenderWindow *renWindow=vtkRenderWindow::New();//建立绘制窗口
38
renWindow->AddRenderer(ren);
39
vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();//绘制窗口交互
40
iren->SetRenderWindow(renWindow);
41
// create a camera with the correct view up
42
vtkCamera *aCamera = vtkCamera::New();//新建立一个照相机
43
aCamera->SetViewUp (0, 0, -1);
44
aCamera->SetPosition (0, 1, 0);
45
aCamera->SetFocalPoint (0, 0, 0);
46
47
ren->AddActor(bone);
48
ren->SetActiveCamera(aCamera);
49
ren->ResetCamera();
50
aCamera->Dolly(1.5);
51
ren->SetBackground(0,0,0);
52
ren->ResetCameraClippingRange();
53
54
55
ren->AddActor(bone);
56
57
iren->Initialize();//初始化
58
iren->Start();
59
reader->Delete();
60
iren->Delete();
61
62
return 0;
63
}
64
1
#include "vtkVolume16Reader.h"2
#include "vtkRenderWindowInteractor.h"3
#include "vtkRenderer.h"4
#include "vtkRenderWindow.h"5
#include "vtkMarchingCubes.h"6
#include "vtkStripper.h"7
#include "vtkActor.h"8
#include "vtkPolyDataMapper.h"9
#include "vtkProperty.h"10
#include "vtkCamera.h"11
int main()12


{13
vtkVolume16Reader *reader=vtkVolume16Reader ::New();//创建一个新的读取实例14
reader->SetDataDimensions(64,64);//设置像素15
reader->SetDataByteOrderToLittleEndian();16
reader->SetFilePrefix("C://VTK//VTKDATA//Data//headsq//quarter");//设置读取路径17
reader->SetImageRange(1,93);18
reader->SetDataSpacing(3.2,3.2,1.5);19

20
vtkMarchingCubes *boneExtractor=vtkMarchingCubes::New();//vtkMarchingCubes 为面绘制的经典算法21
boneExtractor->SetInput((vtkDataObject *)reader->GetOutput());22
boneExtractor->SetValue(0,500);23
vtkStripper *boneStripper=vtkStripper::New();//三角带连接24
boneStripper->SetInput(boneExtractor->GetOutput());25
26
vtkPolyDataMapper *boneMapper=vtkPolyDataMapper::New();//建立映射27
boneMapper->SetInput(boneStripper->GetOutput());28

29
vtkActor *bone=vtkActor::New();//建立演员30
bone->SetMapper(boneMapper);31

32
bone->GetProperty()->SetDiffuseColor(.1,.94,.52);33
bone->GetProperty()->SetSpecular(.3);34
bone->GetProperty()->SetSpecularPower(20);35

36
vtkRenderer *ren=vtkRenderer::New();//开始绘制37
vtkRenderWindow *renWindow=vtkRenderWindow::New();//建立绘制窗口38
renWindow->AddRenderer(ren);39
vtkRenderWindowInteractor *iren=vtkRenderWindowInteractor::New();//绘制窗口交互40
iren->SetRenderWindow(renWindow);41
// create a camera with the correct view up42
vtkCamera *aCamera = vtkCamera::New();//新建立一个照相机43
aCamera->SetViewUp (0, 0, -1);44
aCamera->SetPosition (0, 1, 0);45
aCamera->SetFocalPoint (0, 0, 0);46

47
ren->AddActor(bone);48
ren->SetActiveCamera(aCamera);49
ren->ResetCamera();50
aCamera->Dolly(1.5);51
ren->SetBackground(0,0,0);52
ren->ResetCameraClippingRange();53
54
55
ren->AddActor(bone);56

57
iren->Initialize();//初始化58
iren->Start();59
reader->Delete();60
iren->Delete();61

62
return 0;63
}64

浙公网安备 33010602011771号