Best way to clip a volume with an arbitrarily shaped surface

I have a case where I want to cut off a certain part of the volume with an arbitrary surface. This surface is not a plane and currently represented by a vtkPolyData in my case.
What would be the best way of doing so?

  • The vtkClipVolume (used with an implicit function) does not seem to return a vtkVolume as an output.
  • zeroing out the values behind the plane when preparing the volume is not an option for me, because the user should be able to switch between different surfaces relatively quickly

There is the function SetMaskInput in vtkGPUVolumeRayCastMapper, which seems to do exactly what I want. Is this the best option? And if so, is there a way to use the vtkPolyData / implicit function which I already have to construct the vtkImageData label map?