VTK:设置透明渲染器背景
VTK: setting transparent renderer background
我可以通过调用
来定义渲染器的背景颜色
renderer = vtk.vtkRenderer()
renderer.SetBackground(0,255,0)
[![在此处输入图片描述][1]][1]
我的问题:
是否可以设置背景的不透明度?
您可以在我的示例图像中看到我的问题(具有多个视口)。我可以通过简单地使用透明背景来摆脱这个 "cutting"...
提前致谢!
我终于找到了解决办法:
您可以为每个渲染器设置一个图层。默认为第 0 层(不透明)。大于第 0 层的所有内容都是透明的。但请记住,在第 0 层上至少设置一个带有 background-color 的空渲染器(无体积或对象)以避免难看的反射。
renderer.SetBackground(255,255,255)
renderer.SetLayer(0)
# transparency layer
renderer.SetLayer(1)
renderer.addVolume(....)
结果:
对于那些想在屏幕截图中使用透明度的人。
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。
编辑:此外,如果上述方法不起作用(例如背景是透明的但演员 white/not 渲染正确),您可以尝试启用深度剥离。
在上面的代码片段之前你应该添加
# the renderer, as in the question
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(0,255,0)
renderer.SetBackgroundAlpha(0.2) # add background opacity value
renderer.SetUseDepthPeeling(1) # only works with current GPUs
renderer.SetOcclusionRatio(0.2) # 0. is better, but much slower
您可能还需要增加最大剥离数(默认为 4)。检查 this VTK Wiki page for more details.
用于在 vtkFullScreenRenderWindow 函数上设置背景,
您可以使用 File 找到您理想的颜色。
我可以通过调用
来定义渲染器的背景颜色renderer = vtk.vtkRenderer()
renderer.SetBackground(0,255,0)
[![在此处输入图片描述][1]][1]
我的问题:
是否可以设置背景的不透明度?
您可以在我的示例图像中看到我的问题(具有多个视口)。我可以通过简单地使用透明背景来摆脱这个 "cutting"...
提前致谢!
我终于找到了解决办法:
您可以为每个渲染器设置一个图层。默认为第 0 层(不透明)。大于第 0 层的所有内容都是透明的。但请记住,在第 0 层上至少设置一个带有 background-color 的空渲染器(无体积或对象)以避免难看的反射。
renderer.SetBackground(255,255,255)
renderer.SetLayer(0)
# transparency layer
renderer.SetLayer(1)
renderer.addVolume(....)
结果:
对于那些想在屏幕截图中使用透明度的人。
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。
编辑:此外,如果上述方法不起作用(例如背景是透明的但演员 white/not 渲染正确),您可以尝试启用深度剥离。
在上面的代码片段之前你应该添加
# the renderer, as in the question
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(0,255,0)
renderer.SetBackgroundAlpha(0.2) # add background opacity value
renderer.SetUseDepthPeeling(1) # only works with current GPUs
renderer.SetOcclusionRatio(0.2) # 0. is better, but much slower
您可能还需要增加最大剥离数(默认为 4)。检查 this VTK Wiki page for more details.
用于在 vtkFullScreenRenderWindow 函数上设置背景, 您可以使用 File 找到您理想的颜色。