我试图在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)