1 #include "vtkAutoInit.h"
2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
3 VTK_MODULE_INIT(vtkInteractionStyle);
4
5 #include <vtkSmartPointer.h>
6 #include <vtkSelectionNode.h>
7 #include <vtkInformation.h>
8 #include <vtkUnstructuredGrid.h>
9 #include <vtkPolyData.h>
10 #include <vtkPolyDataNormals.h>
11 #include <vtkPointData.h>
12 #include <vtkXMLPolyDataReader.h>
13 #include <vtkRenderWindoh>
14 #include <vtkRenderWindowInteractor.h>
15 #include <vtkRenderer.h>
16 #include <vtkSelection.h>
17 #include <vtkSelectionNode.h>
18 #include <vtkSphereSource.h>
19 #include <vtkPolyDataMapper.h>
20 #include <vtkActor.h>
21 #include <vtkCamera.h>
22 #include <vtkProperty.h>
23 #include <vtkIdTypeArray.h>
24 #include <vtkExtractSelection.h>
25 #include <vtkDataSetSurfaceFilter.h>
26 #include <vtkFeatureEdges.h>
27 #include <vtkFillHolesFilter.h>
28
29 void GenerateData(vtkSmartPointer<vtkPolyData> input)
30
65
66 int main(int argc, char *argv[])
67
86 else
87
91
92 vtkSmartPointer<vtkFillHolesFilter> fillHolesFilter =
93 vtkSmartPointer<vtkFillHolesFilter>::New();
94 fillHolesFilter>SetInputData(input);
95 fillHolesFilter>Update();
96
97 vtkSmartPointer<vtkPolyDataNormals> normals =
98 vtkSmartPointer<vtkPolyDataNormals>::New();
99 normals>SetInputConnection(fillHolesFilter>GetOutputPort());
100 normals>ConsistencyOn();
101 normals>SplittingOff();
102 normals>Update();
103
104 //
105 double leftViewport[4] = ;
106 double rightViewport[4] = ;
107
108 vtkSmartPointer<vtkPolyDataMapper> originalMapper =
109 vtkSmartPointer<vtkPolyDataMapper>::New();
110 originalMapper>SetInputData(input);
111
112 vtkSmartPointer<vtkProperty> backfaceProp =
113 vtkSmartPointer<vtkProperty>::New();
114 backfaceProp>SetDiffuseColor(0.89,0.81,0.34);
115
116 vtkSmartPointer<vtkActor> originalActor =
117 vtkSmartPointer<vtkActor>::New();
118 originalActor>SetMapper(originalMapper);
119 originalActor>SetBackfaceProperty(backfaceProp);
120 originalActor>GetProperty()>SetDiffuseColor(1.0, 0.3882, 0.2784);
121
122 vtkSmartPointer<vtkPolyDataMapper> edgeMapper =
123 vtkSmartPointer<vtkPolyDataMapper>::New();
124 edgeMapper>SetInputData(featureEdges>GetOutput());
125 vtkSmartPointer<vtkActor> edgeActor =
126 vtkSmartPointer<vtkActor>::New();
127 edgeActor>SetMapper(edgeMapper);
128 edgeActor>GetProperty()>SetEdgeColor(0.,0.,1.0);
129 edgeActor>GetProperty()>SetEdgeVisibility(1);
130 edgeActor>GetProperty()>SetLineWidth(5);
131
132 vtkSmartPointer<vtkPolyDataMapper> filledMapper =
133 vtkSmartPointer<vtkPolyDataMapper>::New();
134 filledMapper>SetInputData(normals>GetOutput());
135
136 vtkSmartPointer<vtkActor> filledActor =
137 vtkSmartPointer<vtkActor>::New();
138 filledActor>SetMapper(filledMapper);
139 filledActor>GetProperty()>SetDiffuseColor(1.0, 0.3882, 0.2784);
140
141 vtkSmartPointer<vtkRenderer> leftRenderer =
142 vtkSmartPointer<vtkRenderer>::New();
143 leftRenderer>SetViewport(leftViewport);
144 leftRenderer>AddActor(originalActor);
145 leftRenderer>AddActor(edgeActor);
146 leftRenderer>SetBackground(1.0, 1.0, 1.0);
147
148 vtkSmartPointer<vtkRenderer> rightRenderer =
149 vtkSmartPointer<vtkRenderer>::New();
150 rightRenderer>SetViewport(rightViewport);
151 rightRenderer>AddActor(filledActor);
152 rightRenderer>SetBackground(1.0, 1.0, 1.0);
153
154 vtkSmartPointer<vtkRenderWindow> renderWindow =
155 vtkSmartPointer<vtkRenderWindow>::New();
156 renderWindow>AddRenderer(leftRenderer);
157 renderWindow>AddRenderer(rightRenderer);
158 renderWindow>SetSize(640, 320);
159 renderWindow>Render();
160 renderWindow>SetWindowName("PolyDataClosed");
161
162 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
1 vtkSmartPointer<vtkRenderWindowInteractor>::New();
164 renderWindowInteractor>SetRenderWindow(renderWindow);
165
166 leftRenderer>GetActiveCamera()>SetPosition(0, 1, 0);
167 leftRenderer>GetActiveCamera()>SetFocalPoint(0, 0, 0);
168 leftRenderer>GetActiveCamera()>SetViewUp(0, 0, 1);
169 leftRenderer>GetActiveCamera()>Azimuth(30);
170 leftRenderer>GetActiveCamera()>Elevation(30);
171 leftRenderer>ResetCamera();
172 rightRenderer>SetActiveCamera(leftRenderer>GetActiveCamera());
173
174 renderWindow>Render();
175 renderWindowInteractor>Start();
176
177 return EXIT_SUCCESS;
178 }
左图为原始模型,右图为漏洞填补后的结果
上一篇:VTK 实例62:点云配准下一篇:ITK 实例4 访问像素数据
VTK