I have written an example based on WarpCombustor, it is working with no problems, but is there a better way of adding pipelines to a vtkAppendPolyData filter:
...
pl3d_output = pl3d.output.GetBlock(0)
# Planes are specified using a imin,imax, jmin,jmax, kmin,kmax coordinate
# specification. Min and max i,j,k values are clamped to 0 and maximum value.
planes = ((pl3d_output >> vtkStructuredGridGeometryFilter(extent=[10, 10, 1, 100, 1, 100])).update().output,
(pl3d_output >> vtkStructuredGridGeometryFilter(extent=[30, 30, 1, 100, 1, 100])).update().output,
(pl3d_output >> vtkStructuredGridGeometryFilter(extent=[45, 45, 1, 100, 1, 100])).update().output)
# We use an append filter because, in that way, we can do the warping, etc. just using a single pipeline and actor.
append_filter = vtkAppendPolyData()
for plane in planes:
append_filter.AddInputData(plane)
# Warp and generate the normals.
p = (
append_filter
>> vtkWarpScalar(use_normal=True, normal=[1.0, 0.0, 0.0], scale_factor=2.5)
>> vtkPolyDataNormals(feature_angle=60)
).update().output
...