注釈
完全なサンプルコードをダウンロードしたり、Binderを使ってブラウザでこのサンプルを実行するには、 最後に進んでください 。
PyVistaとVTKの連携#
PyVistaは,使いやすいプロットAPIでよく知られており,Matplotlibのようなライブラリですでに経験を積んだほとんどのPythonユーザーにとってなじみ深いものです.多くの人が,データパイプラインにVTKのPythonバインディングの力を,3DレンダリングにPyVistaの柔軟性とシンプルさを組み合わせることで利益を得ています.次のセクションでは,この使用シナリオを説明します.
Tip
メッシュとは? のセクションで明確にされていないかもしれませんが,PyVistaのメッシュクラスはVTKの対応するクラスのサブクラスであり,これはPyVistaとVTKのワークフローを混在させることができることを意味しています.
VTKのクラスを使って,出力をPyVistaでラップして,効率的にプロットすることを止めるものはありません.例えば
import pyvista as pv
import vtk
from pyvista import examples
vtkを使用して円を作成する
polygonSource = vtk.vtkRegularPolygonSource() # noqa: N816
polygonSource.GeneratePolygonOff()
polygonSource.SetNumberOfSides(50)
polygonSource.SetRadius(5.0)
polygonSource.SetCenter(0.0, 0.0, 0.0)
polygonSource.Update()
Pyvistaを使ったラップとプロット
このようにして, PyVistaの柔軟性とVTKの原動力の両方を必要とする "best of both worlds" を得ることができるのです.
注釈
上記のVTKコードを1行で置き換えるために, pyvista.Polygon()
を使用することができます.
VTKアルゴリズム#
おそらく,PyVistaで(まだ)公開されていないVTKアルゴリズムで,使いたいものがあるのでしょう.PyVistaのオブジェクトはVTKのオブジェクトなので,これは十分に簡単に扱えます.PyVistaのメッシュをVTKアルゴリズムに渡して,出力をラップしてプロットしたり,さらにフィルタリングしたり,何でもできるのです.
mesh = examples.download_bunny_coarse()
VTKアルゴリズムの初期化
splatter = vtk.vtkGaussianSplatter()
VTKへの入力としてPyVistaオブジェクトを渡す
splatter.SetInputData(mesh)
パラメータの設定
PyVistaで出力とラップを取得する
PyVistaを使って輪郭線を作成する
cntrs = vol.contour([0.95 * splatter.GetRadius()])
PyVistaを使ってプロットする
p = pv.Plotter()
p.add_mesh(mesh, style="wireframe")
p.add_mesh(cntrs, color=True)
p.show()
注釈
上記の例は,VTKの Embed Points Into Volume から引用したものです.
Total running time of the script: (0 minutes 2.258 seconds)