Hi, I have an issue with rendering transparent objects with any version of VTK from 8.0 onwards (tested up to 9.0.0). I’m running CentOS 7 inside VirtualBox, and glxinfo
reports:
OpenGL version string: 3.3 (Compatibility Profile) Mesa 18.3.4
OpenGL renderer string: llvmpipe (LLVM 7.0, 256 bits)
This is the code that I’m using to test, which I picked up online from somewhere:
import vtk
def main():
cubeSource = vtk.vtkCubeSource()
cubeMapper = vtk.vtkPolyDataMapper()
cubeMapper.SetInputConnection(cubeSource.GetOutputPort())
cubeActor = vtk.vtkActor()
cubeActor.GetProperty().SetOpacity(0.5)
cubeActor.SetMapper(cubeMapper)
sphereSource = vtk.vtkSphereSource()
sphereMapper = vtk.vtkPolyDataMapper()
sphereMapper.SetInputConnection(sphereSource.GetOutputPort());
sphereActor = vtk.vtkActor()
sphereActor.GetProperty().SetColor(0.5,1,0.5);
sphereActor.SetMapper(sphereMapper);
renderer = vtk.vtkRenderer()
renderer.AddActor(cubeActor);
renderer.AddActor(sphereActor);
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer);
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderWindow);
renderer.SetBackground(0,0,0);
renderWindow.Render();
interactor.Start();
if __name__ == '__main__':
main()
So the code creates a sphere inside a transparent box. Result on Windows:
Result on Linux:
I’ve tried enabling depth peeling, it makes no different from what I can tell. The box also isn’t shown even if it’s the only actor on the scene. Is there anything else I can test, or any extra info I can provide? The code works as expected with VTK 7.1.1.
Thanks.