Maya python gui 中的渐变和纹理缩略图视图

maya python ramp and texture thumbnail views in gui

我正在为 Maya 编写 python 脚本,想使用小纹理 缩略图 Maya 显示渐变纹理,但在我的脚本的 GUI 中。有没有办法利用这些图像,或者我是否必须在我的脚本运行时即时生成新的缩略图并管理这些图像?

https://help.autodesk.com/cloudhelp/2018/CHS/Maya-Tech-Docs/CommandsPython/show.html?swatchDisplayPort.html&cat=Windows

根据上面的文档,我认为你可以使用这个命令:

cmds.window()
cmds.columnLayout('r')
myShader = 'ramp2'
cmds.swatchDisplayPort('slPP', wh=(256, 256), sn=myShader)
cmds.showWindow()

如果您使用的是 PySide 或 PyQt,这有点棘手,您可能需要使用 mayaAPI 来查找此命令的指针。

from PyQt5 import QtWidgets, QtGui, QtCore
from sip import wrapinstance
import maya.cmds as cmds
import maya.OpenMayaUI as omui

def mayaToQT( name ):
    # Maya -> QWidget
    ptr = omui.MQtUtil.findControl( name )
    if ptr is None:         ptr = omui.MQtUtil.findLayout( name )
    if ptr is None:         ptr = omui.MQtUtil.findMenuItem( name )
    if ptr is not None:     return wrapinstance( long( ptr ), QtWidgets.QWidget )

myShader = 'ramp2'
control = cmds.swatchDisplayPort('slPP', wh=(256, 256), sn=myShader)

swatchQT_ramp2 = mayaToQT(control)

然后添加到您的 pyside/pyqt 这个对象转换回您的 ui !