VTK-vtkPolyDataNormals[2]

前書き: このブログ投稿は主に、他の小規模パートナーがピットインするために、vtkPolyDataNormals を使用して法線 (AutoOrientNormals) 関数を自動的に調整する場合の問題と解決策を記録します。

vtkPolyDataNormals インターフェイスの説明VTK-vtkPolyDataNormals_Xueyi のブログ - CSDN ブログ

目次

問題の説明

解決:


 

問題の説明

初期データに方向の問題がある場合は、AutoOrientationNormals を使用して調整します。調整された結果は次のようになります。

          

 

 

             初期データ AutoOrientationNormals 調整データ クリーンデータ

初期データ 

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

 クリーンアップ後のデータ

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