VTK:设置透明渲染器背景

时间:2016-01-14 12:42:56

标签: transparency opacity vtk renderer

我可以通过调用

来定义渲染器的backgroundColor
renderer = vtk.vtkRenderer()
renderer.SetBackground(0,255,0)

[![在此处输入图像说明] [1]] [1]

我的问题:

是否可以设置背景的不透明度?

您可以在我的示例图片中看到我的问题(有多个视口)。我可以摆脱这种"切割"只需使用透明背景......

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我终于找到了解决方案:

您可以为每个渲染器设置一个图层。默认为第0层(不透明)。大于第0层的所有内容都是透明的。但请记住在0层设置至少一个带有背景颜色的空渲染器(无体积或对象)以避免难看的反射。

renderer.SetBackground(255,255,255)
renderer.SetLayer(0)

# transparency layer
renderer.SetLayer(1)
renderer.addVolume(....)

结果:

enter image description here

答案 1 :(得分:1)

对于那些想要在屏幕截图中使用透明度的人。

render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
render_window.SetAlphaBitPlanes(1)  # Enable usage of alpha channel
...
w2if = vtk.vtkWindowToImageFilter()
w2if.SetInput(render_win)
w2if.SetInputBufferTypeToRGBA()  # Also record the alpha (transparency) channel
...

official vtk example中的更多详细信息。