I'd prefer to use tvtk as it's much better integrated with numpy. It avoids all the for loops on points and cells which makes the code below likely to be slow.