pyvista.DataObjectFilters.transform#
- DataObjectFilters.transform(
- trans: TransformLike,
- transform_all_input_vectors: bool = False,
- inplace: bool | None = None,
- progress_bar: bool = False,
Transform this mesh with a 4x4 transform.
Warning
When using
transform_all_input_vectors=True
, there is no distinction in VTK between vectors and arrays with three components. This may be an issue if you have scalar data with three components (e.g. RGB data). This will be improperly transformed as if it was vector data rather than scalar data. One possible (albeit ugly) workaround is to store the three components as separate scalar arrays.Warning
In general, transformations give non-integer results. This method converts integer-typed vector data to float before performing the transformation. This applies to the points array, as well as any vector-valued data that is affected by the transformation. To prevent subtle bugs arising from in-place transformations truncating the result to integers, this conversion always applies to the input mesh.
Warning
Shear transformations are not supported for
ImageData
. If present, any shear component is removed by the filter.Note
Transforming
ImageData
modifies itsorigin
,spacing
, anddirection_matrix
properties.Deprecated since version 0.45.0: inplace was previously defaulted to True. In the future this will change to False.
- Parameters:
- trans
TransformLike
Accepts a vtk transformation object or a 4x4 transformation matrix.
- transform_all_input_vectorsbool, default:
False
When
True
, all arrays with three components are transformed. Otherwise, only the normals and vectors are transformed. See the warning for more details.- inplacebool, default:
True
When
True
, modifies the dataset inplace.- progress_barbool, default:
False
Display a progress bar to indicate progress.
- trans
- Returns:
DataSet
|MultiBlock
Transformed dataset. Return type matches input unless input dataset is a
RectilinearGrid
, in which case the output datatype is aStructuredGrid
.
See also
pyvista.Transform
Describe linear transformations via a 4x4 matrix.
pyvista.Prop3D.transform
Transform an actor.
Examples
Translate a mesh by
(50, 100, 200)
.>>> import numpy as np >>> from pyvista import examples >>> mesh = examples.load_airplane()
Here a 4x4
numpy.ndarray
is used, but anyTransformLike
is accepted.>>> 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, inplace=False) >>> transformed.plot(show_edges=True)