-1

我在 python 中使用 Mayavi mlab 和 MNE-Python 环境中的 PyCharm IDE 时遇到了一些困难。我使用 xvnc 服务器从本地 MacOS 到 Linux 集群机器,通过 VNC 会话访问带有 Mayavi 和 VTK 的 Conda 环境。

打开 mlab 窗口时出现的错误是:

ERROR: In ../Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 754 
vtkXOpenGLRenderWindow (0x556e13b32670): Unable to find a valid OpenGL 3.2 or later implementation. Please update your video card driver to the latest version. If you are using Mesa please make sure you have version 11.2 or later and make sure your driver in Mesa supports OpenGL 3.2 such as llvmpipe or openswr. If you are on windows and using Microsoft remote desktop note that it only supports OpenGL 3.2 with nvidia quadro cards. You can use other remoting software such as nomachine to avoid this issue.

似乎使用 VirtualGL 来拦截 PyCharm 以实现 VTK 对 OpenGL 的调用是一种可能的解决方案。有没有人成功克服了在 VNC 会话上使用 Mayavi mlab 的问题?你的解决方案是什么?

4

2 回答 2

0

几天前我也遇到了同样的问题,在与 HPC 人员交换电子邮件后,我们的解决方案非常简单:

导出 MESA_GL_VERSION_OVERRIDE=3.2

我正在使用 RealVNC Viewer 访问 HPC,并通过 VSCode 运行 Mayavi API。

在此处输入图像描述

我还推荐 PyVista,它在很多方面似乎更 Pythonic。我能够将所有情节保存在 PyVista 中,而且情节很棒。

新问题是我无法使用 API 或交互式场景保存 mlab 图。到目前为止,我只得到了一个黑色的身影。

一些与保存相关的答案:mayavi mlab.savefig() 给出的空图像到目前为止在 VNC 中效果不佳。

于 2020-04-28T17:02:10.177 回答
0

我无法重现。您是否确保您正在访问的机器具有可用并加载了最新的图形驱动程序和/或 Mesa 软件?例如,我正在使用TurboVNC访问远程 Ubuntu 18.04 机器,并且我能够通过常规和设想的 Mayavi 后端生成Spherical Harmonics Gallery 示例。但是,使用 TurboVNC 的默认设置,渲染的场景有伪影,将场景保存为 png 会产生黑色图像,我猜这是使用 Mesa (llvmpipe) 的结果。如果我启动 TurboVNC-extension GLX或者我只是vglrun添加到python3命令之前,该命令调用VirtualGL,然后使用OpenGL,渲染的场景完美无缺。我附上下面的截图和保存的数字。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

于 2020-04-25T14:15:19.070 回答