Paraview python使用屏幕外图像渲染

时间:2015-12-17 15:11:44

标签: python paraview

我正在尝试使用Paraview在远程linux机器上的非交互式PBS作业中生成图像。从命令行,如果我有一个名为cone.py的文件,其中包含以下内容

from paraview.simple import *
Cone()
Show()
SaveScreenshot('cone.png')

然后在命令行中键入pvpython cone.py,然后弹出一个窗口,显示锥形图像,并保存图像。我不希望窗口弹出。即使我使用pvbatch cone.pypvbatch cone.py --use-offscreen-rendering,也会这样做。如果我尝试从PBS作业中运行此代码,则不会生成图像(可能是因为它无法生成窗口),并生成以下错误消息:

ERROR: In /home/kitware/Dashboards/buildbot/paraview-debian4dash-linux-shared-release_qt4_superbuild/source-paraview/VTK/Rendering/OpenGL/vtkXOpenGLRenderWindow.cxx, line 542
vtkXOpenGLRenderWindow (0x139559c0): bad X server connection. DISPLAY=/var/spool/PBS/mom_priv/jobs/1443323.rrlogin.internal.SC: line 8: 21926 Aborted                 pvbatch cone.py

/home/kitware不是我计算机上的有效目录。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

如果远程Linux机器安装了X,则需要在运行pvbatch之前设置DISPLAY变量。如果远程Linux机器没有安装X,则需要使用OSMesa构建(信息和路线here)。

答案 1 :(得分:1)

您似乎正在使用官方ParaView二进制文件来处理非交互式PBS作业,该作业没有可访问的X服务器。您有两种选择:

  1. 与您的网站管理员联系,了解是否可以通过您的工作启动X服务器。如果您的远程计算机具有GPU,则通常就是这种情况。
  2. 使用OSMesa(代表offscreen-Mesa)支持从源代码构建ParaView。有关详细信息,请查看此wiki page。如果您正在使用OpenGL2后端构建ParaView 5.0或更高版本,请参阅此blog post。这将适用于没有可访问的X服务器的系统。
  3. 您不能在无X系统上使用paraview.org上分发的二进制文件。除非使用OSMesa支持构建(在这种情况下不需要命令行选项),Select t.Surname || ', ' || t.First_name AS Name, t.account_description from wgb_account t join ( select MIN(Balance) min_bal, account_type from wgb_account Group by account_type ) x on x.min_bal = t.Balance and x.account_type = t.account_type 仍然需要访问X服务器才能创建OpenGL上下文。如果你想知道为什么命令行选项呢?避免在启用X的系统上创建弹出窗口。