0

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 を取得できないため、機能しません。

4

2 に答える 2

1

同じ問題がありました。うまく機能するNathanHorneによる解決策があります。ただし、特定の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に直接使用できます。不思議なことに、結果は混乱しているように見えます(または少なくとも予測が難しい)ので、NathanHorneのソリューションを使用することをお勧めします。

于 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 に答える