One idea: if you could specify the distortion as a vector field, you could use vtkWarpVector. You’d add the vector distortion to the point data and then operate on it. Barrel and pincushion vector fields could be simulated with something like this from SO.