我为maya制作了一个屏幕截图脚本。 所以,我用QPixmap类处理这个工作。
我这样写剧本。
from PyQt4 import QtCore, QtGui
import sip
import maya.cmds as cmds
import maya.OpenMayaUI as mui
def getMayaWindow():
ptr = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(ptr), QtCore.QObject)
pm = QtGui.QPixmap.grabWindow(getMayaWindow().winId())
pm.save('c:/test.png')
但是,它无法抓取3Dview,因此无法正常工作。
答案 0 :(得分:1)
有同样的问题。 有Nathan Horne的解决方案可以正常工作。 但是,如果要获取某个M3dView使用的QWidget对象,请按照下列步骤操作:
import maya.OpenMayaUI as apiUI
from PyQt4 import QtGui, QtCore
import sip
view = apiUI.M3dView.active3dView()
widget_ptr = view.widget()
widget = sip.wrapinstance(long(widget_ptr), QtCore.QObject)
pixmap = QtGui.QPixmap.grabWidget(widget)
如您所知,您可以将pixmap保存到文件中或直接将其用于另一个QWidget。 奇怪的是,结果看起来很乱(或至少不太可预测),我建议使用Nathan Horne的解决方案。
答案 1 :(得分:0)
您的脚本适用于我,在OSX上运行,Maya 2012 x64
或者,如果你的目标是屏幕上只是三维视口,你可以尝试使用一个播放器:
cmds.playblast( frame=cmds.currentTime(q=True),
f="/tmp/test.png",
fo=True, fmt="image", viewer=False,
c="PNG", quality=70 )