1 #include <vtkAutoInit.h>
2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
3 VTK_MODULE_INIT(vtkRenderingFreeType);
4 VTK_MODULE_INIT(vtkInteractionStyle);
5
6 #include <vtkSmartPointer.h>
7 #include <vtkPolyDataReader.h>
8 #include <vtkPolyData.h>
9 #include <vtkLinearSubdivisionFilter.h>
10 #include <vtkLoopSubdivisionFilter.h>
11 #include <vtkButterflySubdivisionFilter.h>
12 #include <vtkPolyDataMapper.h>
13 #include <vtkActor.h>
14 #include <vtkRenderer.h>
15 #include <vtkRenderWindoh>
16 #include <vtkCamera.h>
17 #include <vtkRenderWindowInteractor.h>
18
19 int main()
20 ;
96 double rtView[4] = ;
97 double lbView[4] = ;
98 double rbView[4] = ;
99
100 vtkSmartPointer<vtkRenderer> origRender =
101 vtkSmartPointer<vtkRenderer>::New();
102 origRender>SetViewport(ltView);
103 origRender>AddActor(origActor);
104 origRender>SetBackground(1, 0, 0);
105
106 vtkSmartPointer<vtkRenderer> linearRender =
107 vtkSmartPointer<vtkRenderer>::New();
108 linearRender>SetViewport(rtView);
109 linearRender>AddActor(linearActor);
110 linearRender>SetBackground(0, 1, 0);
111
112 vtkSmartPointer<vtkRenderer> loopRender =
113 vtkSmartPointer<vtkRenderer>::New();
114 loopRender>SetViewport(lbView);
115 loopRender>AddActor(loopActor);
116 loopRender>SetBackground(0, 0, 1);
117
118 vtkSmartPointer<vtkRenderer> butterflyRender =
119 vtkSmartPointer<vtkRenderer>::New();
120 butterflyRender>SetViewport(rbView);
121 butterflyRender>AddActor(butterflyActor);
122 butterflyRender>SetBackground(0, 0, 0);
123 //
124 vtkSmartPointer<vtkRenderWindow> rw =
125 vtkSmartPointer<vtkRenderWindow>::New();
126 rw>AddRenderer(origRender);
127 rw>AddRenderer(linearRender);
128 rw>AddRenderer(loopRender);
129 rw>AddRenderer(butterflyRender);
130 rw>SetSize(640, 640);
131 rw>SetWindowName("PolyData Subdivision");
132
133 origRender>GetActiveCamera()>SetPosition(0, 1, 0);
134 origRender>GetActiveCamera()>SetFocalPoint(0, 0, 0);
135 origRender>GetActiveCamera()>SetViewUp(0, 0, 1);
136 origRender>GetActiveCamera()>Azimuth(30);
137 origRender>GetActiveCamera()>Elevation(30);
138 origRender>ResetCamera();//刷新照相机
139 linearRender>SetActiveCamera(origRender>GetActiveCamera());
140 loopRender>SetActiveCamera(origRender>GetActiveCamera());
141 butterflyRender>SetActiveCamera(origRender>GetActiveCamera());
142
143 vtkSmartPointer<vtkRenderWindowInteractor> rwi =
144 vtkSmartPointer<vtkRenderWindowInteractor>::New();
145 rwi>SetRenderWindow(rw);
146 rwi>Start();
147 rw>Render();
148
149 return 0;
150 }
放大细节
红色视窗为原始三角网格模型,绿色视窗采用了线性细分算法;蓝色视窗采用Loop细分算法;黑色视窗采用了Butterfly细分算法。可见Loop细分、Butterfly细分能够得到较为光滑的效果;效果优于线性细分算法。
上一篇:VTK 实例65:最大密度投影法体绘制下一篇:VTK 实例66:GPU加速光线投影体绘制
VTK