VTK-vtkPolyDataNormals[2]

前言:本博文主要记录在使用vtkPolyDataNormals进行自动调整Normals(AutoOrientNormals)功能时存在的问题,以及解决方法;供其他小伙伴必坑。

关于vtkPolyDataNormals接口的讲解VTK-vtkPolyDataNormals_雪易的博客-CSDN博客

目录

问题描述

解决方法:


问题描述

当初始数据存在方向问题时,使用AutoOrientationNormals进行调整,调整后的结果如下:

          

             初始数据                AutoOrientationNormals调整后数据         clean后的数据

初始数据 

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

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

 clean后的数据

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

通过STL保存后的数据,几何结构和拓扑结构不变;但不会出现断层的现象(上面可见,下面不可见)。

解决方法:

重新写如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();

原因分析:可能是vtkCleanPolyData的输出结果添加了PointData或者CellData数据,导致的上述现象。

猜你喜欢

转载自blog.csdn.net/qq_40041064/article/details/131372819
今日推荐