vtkClipDataSet returns many smaller subpart types

Why does the vtkClipDataSet break up the original vtkHexahedron types from the vtkStructuredGrid into many smaller subpart types in the resulting vtkUnstructuredGrid? I expected the hexahedron cell types to be retained and for clipped partial cells to be a single subtype and that the difference in numbers would be small. My implicit functions are morphing every iteration. If this is how it is, what in an alternate preferred method or best practice to choose and retain the hexahedron cells inside the implicit surface with queries or another method? Thanks.

PS: I extracted the output code from the ClipDataSetWithPolyData.cxx example.

The original dataset(inside) contains a

vtkStructuredGrid that has 9614 cells

Cell type vtkHexahedron occurs 9614 times.


A series of smaller implicit surfaces within the grid above.

The clipped dataset(inside) contains a

vtkUnstructuredGrid that has 56340 cells

Cell type vtkTetra occurs 54995 times.

Cell type vtkWedge occurs 1345 times.


The clipped dataset(inside) contains a

vtkUnstructuredGrid that has 56250 cells

Cell type vtkTetra occurs 54773 times.

Cell type vtkWedge occurs 1477 times.


The clipped dataset(inside) contains a

vtkUnstructuredGrid that has 55915 cells

Cell type vtkTetra occurs 54327 times.

Cell type vtkWedge occurs 1588 times.


The clipped dataset(inside) contains a

vtkUnstructuredGrid that has 55135 cells

Cell type vtkTetra occurs 53267 times.

Cell type vtkWedge occurs 1868 times.


The clipped dataset(inside) contains a

vtkUnstructuredGrid that has 56055 cells

Cell type vtkTetra occurs 54563 times.

Cell type vtkWedge occurs 1492 times.

If your datasets have only linear elements, such as wedge, tetra, pyramids or hexa, prefer to use vtkTableBasedClipDataSet. vtkTableBasedClipDataSet handles most linear cells just fine and it’s way faster. vtkTableBasedClipDataSet will delegate to to vtkClipDataSet only if it can’t handle all the cell types. Be sure to use the latest VTK from master.