1 // This example shows how to manually create vtkPolyData.
2 #include "vtkAutoInit.h"
3 VTK_MODULE_INIT(vtkRenderingOpenGL2);
4 VTK_MODULE_INIT(vtkInteractionStyle);
5
6 #include "vtkActor.h"
7 #include "vtkCamera.h"
8 #include "vtkCellArray.h" //基元数组类
9 #include "vtkFloatArray.h" //浮点型数组类
10 #include "vtkPointData.h"
11 #include "vtkPoints.h"
12 #include "vtkPolyData.h" //多边形数据类型类
13 #include "vtkPolyDataMapper.h"
14 #include "vtkRenderWindoh"
15 #include "vtkRenderWindowInteractor.h"
16 #include "vtkRenderer.h"
17
18 int main()
19 , , , ,
23 , , , };
24 //立方体的六个面(每个面由四个点的标号组成)
25 static vtkIdType pts[6][4]=, , ,
26 , , };
27
28 // We'll create the building blocks of polydata including data attributes.
29 //实例化一个多边形数据对象cube
30 vtkPolyData *cube = vtkPolyData::New();
31 //实例化一个点对象points
32 vtkPoints *points = vtkPoints::New();
33 //单元对象
34 vtkCellArray *polys = vtkCellArray::New();
35 //浮点数组对象
36 vtkFloatArray *scalars = vtkFloatArray::New();
37
38 // Load the point, cell, and data attributes.
39 for (i=0; i<8; i++) points>InsertPoint(i,x[i]);//加载立方体的8个顶点
40 for (i=0; i<6; i++) polys>InsertNextCell(4,pts[i]);//加载每个面由4个点组成的六个面
41 for (i=0; i<8; i++) scalars>InsertTuple1(i,i);//绑定标量数据
42
43 // We now assign the pieces to the vtkPolyData.
44 //与vtkPolyData型数据对象进行关联
45 cube>SetPoints(points);//进行点关联
46 points>Delete();
47 cube>SetPolys(polys);//进行面关联
48 polys>Delete();
49 cube>GetPointData()>SetScalars(scalars);//进行元组绑定
50 scalars>Delete();
51
52 // Now we'll look at it.
53 //多边形数据送入图像界面进行绘制
54
55 vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New();
56 cubeMapper>SetInputData(cube);//vtkPolyData数据输出给映射器输入
57 cubeMapper>SetScalarRange(0,7);//设置标量数据范围0~7
58
59 //实例化一个演员cubeActor
60 vtkActor *cubeActor = vtkActor::New();
61 cubeActor>SetMapper(cubeMapper);
62
vtkCamera* camera = vtkCamera::New();
64 camera>SetPosition(1, 1, 1);//设置相机位置为(1,1,1)
65 camera>SetFocalPoint(0, 0, 0);
66
67 vtkRenderer* renderer = vtkRenderer::New();
68 renderer>AddActor(cubeActor);
69 renderer>SetActiveCamera(camera);
70 renderer>ResetCamera();
71 renderer>SetBackground(1, 1, 1);
72
73 vtkRenderWindow *renWin = vtkRenderWindow::New();
74 renWin>AddRenderer(renderer);
75 renWin>SetSize(300, 300);
76
77 vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
78 iren>SetRenderWindow(renWin);
79
80 // interact with data
81 renWin>Render();//绘制舞台上的东西
82 iren>Start();//开始交互
83
84 // Clean up
85 cube>Delete();
86 cubeMapper>Delete();
87 cubeActor>Delete();
88 camera>Delete();
89 renderer>Delete();
90 renWin>Delete();
91 iren>Delete();
92
93 return 0;
94 }
上一篇:VTK 基础模块总结
下一篇:VTK 实例7:相机控制
VTK









