mayavi深度剥落

时间:2017-12-10 11:14:11

标签: python vtk mayavi

我试图在depth peeling中使用Mayavi,但我没有成功。原则上我认为深度剥离应该在我的系统中起作用,因为我在" vtk depth peeling issue doing multiple renders"尝试了python样本。并且它不仅显示一个漂亮的圆柱体(虽然它也没有深度剥离),但ren.GetLastRenderingUsedDepthPeeling()输出1(和0没有)。这就是我和Mayavi一起尝试过的事情:

import numpy
import mayavi.mlab as mlab
x, y, z = numpy.ogrid[-5:5:20j, -5:5:20j, -5:5:20j]
scalars = x * x * 0.5 + y * y + z * z * 2.0
fig = mlab.figure()
mlab.clf()
if (True): # enable depth peeling
    renderer = fig.scene.renderer
    window = renderer.render_window
    window.alpha_bit_planes_on()
    window.multi_samples = 0
    renderer.use_depth_peeling = 1
    renderer.maximum_number_of_peels = 20
    renderer.occlusion_ratio = 0.002
obj = mlab.contour3d(scalars, contours=[20,50], transparent=True)
print obj.scene.renderer.use_depth_peeling
print obj.scene.renderer.last_rendering_used_depth_peeling
mlab.show()

但我只获得0作为最后一个输出。另外,我看到了我试图用深度剥离精确解决的常见文物:

左:正确渲染,底部绿色表面通过顶部可见。 中心:相机穿过z = 0平面时的图层瑕疵。 右:透明度错误,顶部表面现在完全遮挡底部。

我在Ubuntu 16.04上使用默认的Mayavi(4.4.3)和libVTK(6.2.0)

1 个答案:

答案 0 :(得分:0)

我不确定,是否可以在Mayavi 4.4.3中修复此问题,但较新的版本Mayavi  4.6.2(Python 3.6.6,vtk 8.1.1,Windows 10)不会产生任何这些伪像。

mayavi 4.6.2

尽管如此,它仍将0打印为最后一个输出。