Maya Python рампа и текстуры миниатюр в графическом интерфейсе - PullRequest
0 голосов
/ 26 сентября 2018

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

enter image description here

1 Ответ

0 голосов
/ 26 сентября 2018

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

...