pyvista.DataSetFilters.transform#

DataSetFilters.transform(trans: vtkMatrix4x4 | vtkTransform | ndarray, transform_all_input_vectors=False, inplace=True, progress_bar=False)[ソース]#

このメッシュを4x4変換で変換します.

警告

transform_all_input_vectors=True を使用した場合,VTKでは3つの成分を持つベクターと配列の区別がありません. これは,3つの成分を持つスカラーデータ(RGBデータなど)がある場合に問題となることがあります. これは,スカラーデータではなくベクトルデータであるかのように,不適切に変換されます. 3つの成分を別々のスカラー配列として格納するという回避策が考えられます(醜いですが).

警告

一般的に,変換を行うと非整数の結果が得られます.このメソッドは,変換を行う前に整数型のベクトルデータを float に変換します.これは points 配列だけでなく,変換の影響を受けるすべてのベクトル値のデータにも適用されます.インプレース変換で結果が整数に切り捨てられることによる微妙なバグを防ぐために,この変換は常に入力メッシュに適用されます.

パラメータ:
transvtk.vtkMatrix4x4, vtk.vtkTransform, か numpy.ndarray

vtk変換オブジェクトまたは4 x 4変換行列を受け入れます.

transform_all_input_vectorsbool, default: False

True の場合,3つの成分を持つすべての配列が変換されます.それ以外の場合は,法線とベクトルのみが変換されます. 詳細は,警告を参照してください.

inplacebool, default: False

True の場合,データセットを直接変更します.

progress_barbool, default: False

進行状況を示す進行状況バーを表示します.

戻り値:
pyvista.DataSet

変換されたデータセットです. 入力データセットが pyvista.ImageData でない限り,リターンタイプは入力と一致します.その場合,出力データタイプは pyvista.StructuredGrid となります.

(50, 100, 200) によるメッシュの変換

>>> import numpy as np
>>> from pyvista import examples
>>> mesh = examples.load_airplane()

4x4 numpy.ndarray を使用していますが, vtk.vtkMatrix4x4 および vtk.vtkTransform も使用できます.

>>> transform_matrix = np.array(
...     [
...         [1, 0, 0, 50],
...         [0, 1, 0, 100],
...         [0, 0, 1, 200],
...         [0, 0, 0, 1],
...     ]
... )
>>> transformed = mesh.transform(transform_matrix)
>>> transformed.plot(show_edges=True)
../../../_images/pyvista-DataSetFilters-transform-1_00_00.png