VTK-vtkPolyDataNormals[2]

Prólogo: Esta publicación de blog registra principalmente los problemas y las soluciones cuando se usa vtkPolyDataNormals para ajustar automáticamente la función Normals (AutoOrientNormals); para que otros socios pequeños se enfrenten.

Explicación de la interfaz vtkPolyDataNormals VTK-vtkPolyDataNormals_Xueyi's Blog-CSDN Blog

Tabla de contenido

Descripción del problema

Solución:


 

Descripción del problema

Cuando los datos iniciales tienen problemas de orientación, use AutoOrientationNormals para ajustar, y los resultados ajustados son los siguientes:

          

 

 

             Datos iniciales AutoOrientaciónNormals datos ajustados Limpiar datos

Datos iniciales 

vtkPolyData's Points 8
vtkPolyData's Vertexs 0
vtkPolyData's Lines 0
vtkPolyData's Polys 12
vtkPolyData's Strips 0
vtkPolyData's Cells 12
cell_0:0 1 2
cell_1:3 2 1
cell_2:4 5 6
cell_3:5 7 6
cell_4:2 0 6
cell_5:6 0 4
cell_6:0 1 4
cell_7:4 1 5
cell_8:1 3 5
cell_9:5 3 7
cell_10:3 2 7
cell_11:7 2 6

Datos ajustados de AutoOrientationNormals

vtkPolyData's Points 24
vtkPolyData's Vertexs 0
vtkPolyData's Lines 0
vtkPolyData's Polys 12
vtkPolyData's Strips 0
vtkPolyData's Cells 12
cell_0:2 1 0
cell_1:1 2 3
cell_2:4 5 6
cell_3:5 7 6
cell_4:12 8 20
cell_5:20 8 16
cell_6:9 10 17
cell_7:17 10 18
cell_8:11 14 19
cell_9:19 14 22
cell_10:15 13 23
cell_11:23 13 21

 Datos después de la limpieza

vtkPolyData's Points 8
vtkPolyData's Vertexs 0
vtkPolyData's Lines 0
vtkPolyData's Polys 12
vtkPolyData's Strips 0
vtkPolyData's Cells 12
cell_0:0 1 2
cell_1:1 0 3
cell_2:4 5 6
cell_3:5 7 6
cell_4:0 2 6
cell_5:6 2 4
cell_6:2 1 4
cell_7:4 1 5
cell_8:1 3 5
cell_9:5 3 7
cell_10:3 0 7
cell_11:7 0 6

La geometría y la topología de los datos guardados por STL permanecen sin cambios, pero no habrá fallas (visibles arriba, no visibles abajo).

Solución:

Simplemente reescriba los datos de vtkPolyData.

vtkPolyData* data = vtkPolyData::New();
data->SetPoints(clean->GetOutput()->GetPoints());
data->SetVerts(clean->GetOutput()->GetVerts());
data->SetLines(clean->GetOutput()->GetLines());
data->SetPolys(clean->GetOutput()->GetPolys());
data->SetStrips(clean->GetOutput()->GetStrips());
data->BuildLinks();

Análisis de causas: puede ser que los datos de PointData o CellData se agreguen a la salida de vtkCleanPolyData, lo que da como resultado el fenómeno anterior.

Supongo que te gusta

Origin blog.csdn.net/qq_40041064/article/details/131372819
Recomendado
Clasificación