注釈
Go to the end をクリックすると完全なサンプルコードをダウンロードできます.
トライアングル ストリップ#
この例では,トライアングル ストリップを使ったシンプルな pyvista.PolyData
を構築する方法を紹介します.
トライアングルストリップは,隣接する3角形の連結をより効率的に保存する方法です.
ストリップの連結を構築する#
最初の要素は帯の点の数で,次の3つの要素は最初の3角形で,残りの点は帯が伸びている場所です.
トライアングル ストリップをプロットする#
PolyData
をプロットし, add_point_labels()
を用いてポイントラベルを含めれば,トライアングル ストリップを用いて PolyData がどのように構築されるかが分かります.
pl = pv.Plotter()
pl.add_mesh(mesh, show_edges=True)
pl.add_point_labels(mesh.points, range(mesh.n_points))
pl.camera_position = 'yx'
pl.camera.zoom(1.2)
pl.show()
トライアングル ストリップに変換する#
triangulate
を使用すると,ストリップを3角形の面に変換することができます.
trimesh = mesh.triangulate()
trimesh
この新しい pyvista.PolyData
を使って,VTK がトライアングル ストリップを個々の面としてどのように表現するかを見ることができます.
同じデータであっても,この基本的な例では,顔の配列の方がはるかに大きい(〜3倍)ことがわかります.
注釈
VTK の面配列は,面配列の各面に対して必ずパディング(面の点の数)を含んでいます.これは,以下の面配列の初期値である 3
に相当します.
array([[3, 0, 1, 2],
[3, 2, 1, 3],
[3, 2, 3, 4],
[3, 4, 3, 5],
[3, 4, 5, 6],
[3, 6, 5, 7]])
3角形をストリップに変換する#
strip()
を使用して, pyvista.PolyData
からストリップに面を変換します.ここでは,デモンストレーションのために,3角形化されたメッシュをストリップされたメッシュに戻します.
restripped = trimesh.strip()
restripped
strip
フィルタの出力は,予想通り,元の mesh
と同じです.
restripped == mesh
True
Total running time of the script: (0 minutes 0.234 seconds)