0

我为玛雅制作了一个屏幕截图脚本。所以,我处理 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,所以它不能工作。

4

2 回答 2

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)

如您所知,您可以将像素图保存到文件中或直接将其用于另一个 QWidget。奇怪的是,结果似乎一团糟(或至少难以预测),我建议使用 Nathan Horne 的解决方案。

于 2012-02-23T16:36:46.887 回答
0

你的脚本对我来说很好,在 OSX、Maya 2012 x64 上运行

脚本的输出

或者,如果您的目标是仅截屏 3d 视口,您可以尝试使用播放预览:

cmds.playblast( frame=cmds.currentTime(q=True),
                f="/tmp/test.png", 
                fo=True, fmt="image", viewer=False,
                c="PNG", quality=70 )
于 2011-12-11T18:59:39.407 回答