Maya Python рампа и текстуры миниатюр в графическом интерфейсе

Я работаю над сценарием Python для Maya и хотел бы использовать небольшие эскизы текстур, которые Maya отображает для текстур рампы, но в графическом интерфейсе моего сценария. Есть ли способ использовать эти изображения, или мне нужно будет создавать новые эскизы на лету, когда мой скрипт запускается, и управлять этими изображениями?

1 ответ

Решение

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 этот объект, преобразованный обратно в ваш пользовательский интерфейс!

Другие вопросы по тегам