pyvista.PolyData#
- class PolyData(*args, **kwargs)[ソース]#
表面形状(頂点,線,ポリゴンなど)で構成されるデータセット.
いくつかの方法で初期化できます:
空のメッシュを作成する
vtk.vtkPolyDataから初期化する
頂点を使用する
頂点と面を使用する
ファイルから
バージョン 0.44.0 で非推奨: パラメーター
n_faces
,n_lines
,n_strips
, およびn_verts
は非推奨であり,もはや使用されていません.これらは以前,対応するセル配列の構築を高速化するために使用されていましたが,もはや何の利益も提供しません.- パラメータ:
- var_inp
vtk.vtkPolyData
,str
, sequence,optional
フレキシブル入力タイプ.
vtk.vtkPolyData
を指定できます.この場合,このPolyDataオブジェクトはdeep=True
の場合はコピーされ,deep=False
の場合はシャローコピーになります.'my_mesh.stl'
のようなローカルパスや,'/tmp/my_mesh.ply'
や'C:/Users/user/my_mesh.ply'
のようなグローバルパスも受け入れます.そうでなければ,これは1つ以上の点を含むポイント配列またはリストでなければなりません.各点は3つの次元を持たなければなりません。
faces
,lines
,strips
,およびverts
がすべてNone
である場合,PolyData
オブジェクトはpoints
の数とn_verts
が同じ数の頂点セルで作成されます.- facessequence[
int
],vtk.vtkCellArray
,CellArray
,optional
メッシュのポリゴン面.パディングされた連結配列か,明示的なセル配列オブジェクトのどちらかになります.
パディングされた配列形式では,面には面内の点の数を示すパディングが含まれている必要があります.たとえば,
[10, 11, 12]
と[20, 21, 22, 23]
の2つのフェースは[3, 10, 11, 12, 4, 20, 21, 22, 23]
として表されます.これにより,フェースごとに任意の数のポイントを持つことができます.面接続配列を含まない場合,各点は単一の頂点に割り当てられます.これは,接続性のない点群に使用されます.
- n_faces
int
,optional
非推奨.使用されません.
- linessequence[
int
],vtk.vtkCellArray
,CellArray
,optional
線の接続性.
faces
と同様に,このパディングされた接続性の配列か,明示的なセル配列オブジェクトのどちらかになります.パディングされた配列のフォーマットでは,線分の点の数を示すパディングを必要とします.例えば,2つのラインセグメント[0, 1]
および[1, 2, 3, 4]
は,[2, 0, 1, 4, 1, 2, 3, 4]
として表される.- n_lines
int
,optional
非推奨.使用されません.
- stripssequence[
int
],vtk.vtkCellArray
,CellArray
,optional
三角形ストリップの接続性.三角形ストリップには最初の三角形と,ストリップの次の点が必要です.各三角形は新しい点と前の2つの点で構築されます.
lines
やfaces``と同様に,この接続性はパディングされた配列または明示的なセル配列オブジェクトとして指定することができます.パディングされた配列では,ポイントの数を示すパディングが必要です.例えば,10個のポイントインデックスの単一の三角形ストリップ ``[0, 1, 2, 3, 6, 7, 4, 5, 0, 1]
は,10
のパディングが必要であり,[10, 0, 1, 2, 3, 6, 7, 4, 5, 0, 1]
として入力する必要があります.- n_strips
int
,optional
非推奨.使用されません.
- deepbool,
optional
入力をコピーするか,コピーせずに入力からメッシュを作成するかを指定します.
deep=True
を設定すると,メッシュに影響を与えずにメッシュの外部でオリジナルの配列を修正できます.デフォルトはFalse
です.- force_ext
str
,optional
ファイルから初期化する場合,リーダーはファイルの拡張子ではなく,この拡張子を持っているかのように扱わせます.
- force_floatbool,
optional
データ型が非浮動小数点型の場合に,そのデータ型を
float32
にキャストします.デフォルトはTrue
です.これをFalse
に設定すると,非浮動小数点型を許容することになりますが,データセットを変換する際に,中間の浮動小数点数が切り捨てられる可能性があります.- vertssequence[
int
],vtk.vtkCellArray
,CellArray
,optional
vertsの接続性.
faces
,lines
,およびstrips
のように,これはパディングされた配列または明示的なセル配列オブジェクトとして提供できます.パディングされた配列形式では,パディングは各セルの頂点数を示します.例えば,[1, 0, 1, 1, 1, 2]
は,1つのポイントを持つ3つの頂点セルを示し,[2, 0, 1, 2, 2, 3]
は,2つのポイントを持つ2つのポリ頂点セルを示しています.- n_verts
int
,optional
非推奨.使用されません.
- var_inp
例
>>> import vtk >>> import numpy as np >>> from pyvista import examples >>> import pyvista as pv
Seed random number generator for reproducible plots
>>> rng = np.random.default_rng(seed=0)
空のメッシュを作成する.
>>> mesh = pv.PolyData()
vtk.vtkPolyData
オブジェクトから初期化します.>>> vtkobj = vtk.vtkPolyData() >>> mesh = pv.PolyData(vtkobj)
点から初期化し,頂点を作成します.
>>> points = np.array([[0, 0, 0], [1, 0, 0], [1, 0.5, 0], [0, 0.5, 0]]) >>> mesh = pv.PolyData(points)
点と面から初期化し,多角形の面を作成します.
>>> faces = np.hstack([[3, 0, 1, 2], [3, 0, 3, 2]]) >>> mesh = pv.PolyData(points, faces)
点と線から初期化します.
>>> lines = np.hstack([[2, 0, 1], [2, 1, 2]]) >>> mesh = pv.PolyData(points, lines=lines)
点とトライアングル ストリップから初期化します.
>>> strips = np.hstack([[4, 0, 1, 3, 2]]) >>> mesh = pv.PolyData(points, strips=strips)
また,複数のセルタイプで作成することも可能です.
>>> verts = [1, 0] >>> lines = [2, 1, 2] >>> mesh = pv.PolyData(points, verts=verts, lines=lines)
ファイル名から初期化.
>>> mesh = pv.PolyData(examples.antfile)
ランダムな線分のセットを
pv.CellArray` を使用して構築します.この例では,すべての線分が同じサイズであるため, ``pv.CellArray.from_regular_cells
を使用してlines
セル配列を構築することができます.これはセル配列を構築するための最も効率的な方法です.>>> n_points = 20 >>> n_lines = n_points // 2 >>> points = rng.random((n_points, 3)) >>> lines = rng.integers(low=0, high=n_points, size=(n_lines, 2)) >>> mesh = pv.PolyData(points, lines=pv.CellArray.from_regular_cells(lines)) >>> mesh.cell_data['line_idx'] = np.arange(n_lines) >>> mesh.plot(scalars='line_idx')
pv.CellArray
を使用してランダムな三角形ストリップのセットを作成します.この例では,各ストリップには異なる数のポイントがあるため,pv.CellArray.from_irregular_cells
を使用してstrips
セル配列を構築します.>>> n_strips = 4 >>> n_verts_per_strip = rng.integers(low=3, high=7, size=n_strips) >>> n_points = 10 * sum(n_verts_per_strip) >>> points = rng.random((n_points, 3)) >>> strips = [ ... rng.integers(low=0, high=n_points, size=nv) for nv in n_verts_per_strip ... ] >>> mesh = pv.PolyData( ... points, strips=pv.CellArray.from_irregular_cells(strips) ... ) >>> mesh.cell_data['strip_idx'] = np.arange(n_strips) >>> mesh.plot(show_edges=True, scalars='strip_idx')
別のメッシュから
faces
のpv.CellArray
を再利用してメッシュを構築します.VTKのメソッドGetPolys
,GetLines
,GetStrips
, およびGetVerts
は,それぞれfaces
,lines
,strips
, およびverts
のプロパティの基礎となるCellArray
を返します.このようにセル配列を再利用することは,大きなメッシュのパフォーマンス最適化になります.新しい配列の割り当てを回避するためです.>>> small_sphere = pv.Sphere().compute_normals() >>> inflated_points = ( ... small_sphere.points + 0.1 * small_sphere.point_data['Normals'] ... ) >>> larger_sphere = pv.PolyData(inflated_points, faces=small_sphere.GetPolys()) >>> plotter = pv.Plotter() >>> _ = plotter.add_mesh(small_sphere, color='red', show_edges=True) >>> _ = plotter.add_mesh( ... larger_sphere, color='blue', opacity=0.3, show_edges=True ... ) >>> plotter.show()
その他の例については, PolyDataを作成 を参照してください.
メソッド
PolyData.from_irregular_faces
(points, faces)pyvista.PolyData の代替コンストラクタは,点配列と不規則的な面配列から構成されます.
PolyData.from_regular_faces
(points, faces[, ...])pyvista.PolyData の代替コンストラクタは,点配列と規則的な面配列から構成されます.
PolyData.save
(filename[, binary, texture, ...])サーフェスメッシュをディスクに書き込みます.
グローバルな n_faces の厳格なオプトイン.
アトリビュート
セルの法線を返します.
セルの法線を返します.
このPolyDataの面の接続性配列を返します.
面状配列のタプルを返します.
pyvista.PolyData
の全ての面が3角形であるかどうかを返します.メッシュが多様である(オープンエッジがない)場合に返します.
このPolyDataの線の接続性配列を返します.
セルの数を返します.
多角形の面の数を返します.
線の数を返します.
このメッシュ上の開いたエッジの数を返します.
ストリップを返します.
頂点数を返します.
polydataのobbTreeを返します.
ポイント法線を返します.
PolyData.regular_faces
すべての面が同じ大きさである場合,点のインデックスの面配列を返します.
ストリップへのポインタをnumpy配列として返します.
頂点セルを返します.
データセットのおおよその体積を返します.