Python Matplotlib多个“plot_surface”,如何获得曲面的正确遮挡?

Python Matplotlib多个“plot_surface”,如何获得曲面的正确遮挡?,python,matplotlib,graphics,scientific-computing,occlusion,Python,Matplotlib,Graphics,Scientific Computing,Occlusion,我有两个Matplotlibplot\u曲面s相交。例如,两个足够近可以相交的球体 当我使用鼠标移动相机角度时,我期望正确的遮挡(即,看不到遮挡隐藏的球体部分) 取而代之的是,我看到一个对象总是完全呈现在另一个对象之上 我需要为一个重要的演示文稿渲染png文件。但是由于当前的遮挡是如此错误。。。我不能使用任何屏幕截图。 如何正确遮挡曲面? 非交互式后端和渲染器是否正确执行遮挡?(如果是,那么这将是一个前进的方向。尽管这是一个不理想、不雅观的前进方向……但至少我可以通过编程设置相机的仰角、方位角和

我有两个Matplotlib
plot\u曲面
s相交。例如,两个足够近可以相交的球体

当我使用鼠标移动相机角度时,我期望正确的遮挡(即,看不到遮挡隐藏的球体部分)

取而代之的是,我看到一个对象总是完全呈现在另一个对象之上

我需要为一个重要的演示文稿渲染png文件。但是由于当前的遮挡是如此错误。。。我不能使用任何屏幕截图。

如何正确遮挡曲面?

非交互式后端和渲染器是否正确执行遮挡?(如果是,那么这将是一个前进的方向。尽管这是一个不理想、不雅观的前进方向……但至少我可以通过编程设置相机的仰角、方位角和相机中心来保存在演示中可用的人物图片。)


最小、完整且可验证的示例代码:

#!/usr/bin/python2
# from: http://matplotlib.org/mpl_examples/mplot3d/surface3d_demo2.py
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

x = 1 * np.outer(np.cos(u), np.sin(v))
y = 1 * np.outer(np.sin(u), np.sin(v))
z = 1 * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b')
# modification from original code
ax.plot_surface(x+1.5, y, z, rstride=4, cstride=4, color='b')

plt.show()
截图:

由于某些原因,当旋转摄影机的方位角时,这会导致一个对象被绘制在另一个对象的顶部。这两个屏幕截图显示方位角为-88度,然后是-92度。所以问题可能是-90度。或者,无论什么
plot\u surface
对象的中心距摄影机较近,都可以在另一个对象的顶部进行渲染。

您可以使用透明度(alpha<1)?这并不能解决问题,但至少表面相交的错觉看起来更好。