MetaBox/Scripts/Modeling/Edit/PlugIt/PlugIt_Creation/PlugIt_CameraThumb.py

298 lines
9.4 KiB
Python
Raw Permalink Normal View History

2025-01-14 02:17:16 +08:00
from PySide2 import QtWidgets, QtCore, QtGui
from maya import cmds as mc
import maya.mel as mel
import json
from ..Qt import QtWidgets, QtCore, QtCompat
import os
import maya.cmds as cmds
from maya import OpenMayaUI as omui
import importlib
# Special cases for different Maya versions
try:
from shiboken2 import wrapInstance
except ImportError:
from shiboken import wrapInstance
try:
from PySide2.QtGui import QIcon
from PySide2.QtWidgets import QWidget
except ImportError:
from PySide.QtGui import QIcon, QWidget
#PATHS
USERAPPDIR = mc.internalVar(userAppDir=True)
VERSION = mc.about(v=True)
from .. import PlugIt_Global
importlib.reload(PlugIt_Global)
from .. import PlugIt_CSS
importlib.reload(PlugIt_CSS)
##THEME_SET
IconPath = PlugIt_Global.IconsPathThemeClassic
PreferencePath = PlugIt_Global.PreferencePath
##GLOBAL VAR
WindowsTitle = "Thumbnail Framing"
SELECTION = []
WRESOLUTION = 0
HRESOLUTION = 0
ASPECTRATION = 1
def SEND_INFO(Selection):
global SELECTION
SELECTION = Selection
print ("SELECTION in ADD ASSET = " + str(SELECTION))
return SELECTION
#________________//
#___________________________________________
#________________//
class Thumb_Framing(QtWidgets.QDialog):
def __init__(self, parent=None):
super(Thumb_Framing, self).__init__()
self.setMinimumSize(410, 45)
self.buildUI()
def buildUI(self):
THUMBFRAMINGLayout = QtWidgets.QVBoxLayout(self)
self.setStyleSheet(PlugIt_CSS.PlugIt_CSS)
iconButtonSize = PlugIt_Global.IconButtonSize
global WRESOLUTION
WRESOLUTION = mc.getAttr("defaultResolution.width")
global HRESOLUTION
HRESOLUTION = mc.getAttr("defaultResolution.height")
global ASPECTRATION
ASPECTRATION = mc.getAttr("defaultResolution.deviceAspectRatio")
mc.setAttr("defaultResolution.width", 400)
mc.setAttr("defaultResolution.height", 400)
mc.setAttr("defaultResolution.deviceAspectRatio", 1)
mc.select(SELECTION)
self.FramingViewport = mc.modelEditor(camera="RenderThumbCamShape", vs=True, addSelected=True, ca= False, dim= True, da ="smoothShaded", dl= "all", dtx= True, gr= False, hud= True, lt= False, sdw= True, swf= False, th= True, tx= True, wos = False)
mc.viewFit("RenderThumbCamShape", all= False, f=1)
mc.select(SELECTION, d=True)
mel.eval("setCameraNamesVisibility 0;")
mel.eval("setViewAxisVisibility 0;")
#############################################
## TOOLBAR
TOOLBARLayout = QtWidgets.QHBoxLayout(self)
THUMBFRAMINGLayout.addLayout(TOOLBARLayout)
## CAMERA BTN
CameraFitBtn = QtWidgets.QPushButton()
CameraFitBtn.setFixedSize(iconButtonSize,iconButtonSize)
CameraFitBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
CameraFitBtn.setIcon(QtGui.QIcon(IconPath + "Camera2.png"))
CameraFitBtn.setToolTip(" Fit Object ")
CameraFitBtn.setShortcut(QtGui.QKeySequence("F"))
CameraFitBtn.clicked.connect(self.FitObject)
TOOLBARLayout.addWidget(CameraFitBtn)
## SEPARATOR
self.Separator = QtWidgets.QPushButton()
self.Separator.setObjectName("Separator")
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
self.Separator.setEnabled(0)
TOOLBARLayout.addWidget(self.Separator)
## LIGHTON BTN
LightOn = QtWidgets.QPushButton()
LightOn.setFixedSize(iconButtonSize,iconButtonSize)
LightOn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
LightOn.setIcon(QtGui.QIcon(IconPath + "LightOn.png"))
LightOn.setToolTip(" Light On ")
LightOn.clicked.connect(self.LightOn)
TOOLBARLayout.addWidget(LightOn)
## LIGHTOFF BTN
LightOff = QtWidgets.QPushButton()
LightOff.setFixedSize(iconButtonSize,iconButtonSize)
LightOff.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
LightOff.setIcon(QtGui.QIcon(IconPath + "LightOff.png"))
LightOff.setToolTip(" Light Off ")
LightOff.clicked.connect(self.LightOff)
TOOLBARLayout.addWidget(LightOff)
## SEPARATOR
self.Separator = QtWidgets.QPushButton()
self.Separator.setObjectName("Separator")
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
self.Separator.setEnabled(0)
TOOLBARLayout.addWidget(self.Separator)
## WIRE BTN
WireBtn = QtWidgets.QPushButton()
WireBtn.setFixedSize(iconButtonSize,iconButtonSize)
WireBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
WireBtn.setIcon(QtGui.QIcon(IconPath + "Wireframe.png"))
WireBtn.setToolTip(" Wireframe Override ")
WireBtn.clicked.connect(self.Wireframe)
TOOLBARLayout.addWidget(WireBtn)
## SHADE BTN
ShadeBtn = QtWidgets.QPushButton()
ShadeBtn.setFixedSize(iconButtonSize,iconButtonSize)
ShadeBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
ShadeBtn.setIcon(QtGui.QIcon(IconPath + "Shade2.png"))
ShadeBtn.setToolTip(" Shade Only ")
ShadeBtn.clicked.connect(self.Shade)
TOOLBARLayout.addWidget(ShadeBtn)
## TEXTURE BTN
TextureBtn = QtWidgets.QPushButton()
TextureBtn.setFixedSize(iconButtonSize,iconButtonSize)
TextureBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
TextureBtn.setIcon(QtGui.QIcon(IconPath + "TextureOn.png"))
TextureBtn.setToolTip(" Display Texture On ")
TextureBtn.clicked.connect(self.Texture)
TOOLBARLayout.addWidget(TextureBtn)
## SEPARATOR
self.Separator = QtWidgets.QPushButton()
self.Separator.setObjectName("Separator")
self.Separator.setFixedSize(iconButtonSize,iconButtonSize)
self.Separator.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
self.Separator.setIcon(QtGui.QIcon(IconPath + "SeparatorBtn.png"))
self.Separator.setEnabled(0)
TOOLBARLayout.addWidget(self.Separator)
## CALIDATE BTN
ValidateBtn = QtWidgets.QPushButton()
ValidateBtn.setFixedSize(iconButtonSize,iconButtonSize)
ValidateBtn.setIconSize(QtCore.QSize(iconButtonSize, iconButtonSize))
ValidateBtn.setIcon(QtGui.QIcon(IconPath + "Apply.png"))
ValidateBtn.setToolTip(" Validate Framing ")
ValidateBtn.setShortcut(QtGui.QKeySequence("Return"))
ValidateBtn.clicked.connect(self.Validate)
TOOLBARLayout.addWidget(ValidateBtn)
#TOOLBARLayout.addStretch()
def FitObject(self):
print ("Fit OBJECT")
mc.select(SELECTION)
mc.viewFit("RenderThumbCam", all= False, f=1)
mc.select(SELECTION, d=True)
def LightOn(self):
mc.modelEditor(self.FramingViewport, edit=True, dl= "all")
def LightOff(self):
mc.modelEditor(self.FramingViewport, edit=True, dl= "default")
def Wireframe(self):
mc.modelEditor(self.FramingViewport, edit=True, wos= True)
def Shade(self):
mc.modelEditor(self.FramingViewport, edit=True, displayAppearance='smoothShaded')
mc.modelEditor(self.FramingViewport, edit=True, displayTextures=False)
mc.modelEditor(self.FramingViewport, edit=True, wos= False)
def Texture(self):
mc.modelEditor(self.FramingViewport, edit=True, displayAppearance='smoothShaded')
mc.modelEditor(self.FramingViewport, edit=True, displayTextures=True)
def Validate(self):
mc.deleteUI("Thumbnail Framing")
def Dock(Widget, width=200, height=200, hp="fixed", show=True):
label = getattr(Widget, "label", WindowsTitle)
try:
cmds.deleteUI(WindowsTitle)
except RuntimeError:
pass
dockControl = cmds.workspaceControl(
WindowsTitle,
initialWidth=width,
minimumWidth=False,
initialHeight = height,
minimumHeight=False,
widthProperty=hp,
heightProperty=hp,
label=label
)
dockPtr = omui.MQtUtil.findControl(dockControl)
dockWidget = QtCompat.wrapInstance(int(dockPtr), QtWidgets.QWidget)
dockWidget.setAttribute(QtCore.Qt.WA_DeleteOnClose)
child = Widget(dockWidget)
dockWidget.layout().addWidget(child)
if show:
cmds.evalDeferred(
lambda *args: cmds.workspaceControl(
dockControl,
edit=True,
widthProperty="free",
restore=True
)
)
return child
def atClose():
mel.eval("setCameraNamesVisibility 1;")
mel.eval("setViewAxisVisibility 1;")
mc.setAttr("defaultResolution.width", WRESOLUTION)
mc.setAttr("defaultResolution.height", HRESOLUTION)
mc.setAttr("defaultResolution.deviceAspectRatio", ASPECTRATION)
def showUI():
ui = Dock(Thumb_Framing)
ui.show()
# Get a pointer and convert it to Qt Widget object
qw = omui.MQtUtil.findWindow(WindowsTitle)
widget = wrapInstance(int(qw), QWidget)
# Create a QIcon object
icon = QIcon(IconPath + "Windows_Ico2.png")
# Assign the icon
widget.setWindowIcon(icon)
mc.scriptJob(uiDeleted=['Thumbnail Framing', atClose])
return ui