def on_actionConnectHairSystem_triggered(self, clicked=None):
        if clicked==None:return
        HairSystem = []
        for checkBox in self.HairSystemList.children():
            if checkBox.isChecked():
                HairSystem.append(str(checkBox.text()))
        if len(HairSystem) == 0:return

        ControlFile = os.path.join(scriptTool.getScriptPath(), 'jiesuankaiguan.ma')
        mc.file(ControlFile, i=True)

        #----------------------------
        HairControlG = mc.ls(assemblies=True)[-1]
        HairControl  = [x for x in mc.listRelatives(HairControlG, ad=True, path=True) if x.endswith('ctrl')][0]
        attractionScale = [x for x in mc.listRelatives(HairControlG, ad=True, path=True) if x.endswith('attractionScale')][0]

        mc.connectAttr('%s.%s'%(HairSystem[0], 'message'), '%s.%s'%(attractionScale, 'hairSystem'), f=True)
        for i, sysNode in enumerate(HairSystem):
            JointA = mc.connectionInfo('%s.%s'%(sysNode, 'iterations'), sfd=True)
            JointA = JointA.split('.')[0]
            mc.connectAttr('%s.%s'%(HairControl, 'chainStartEnveloppe'),  '%s.%s'%(JointA,  'chainStartEnveloppe'),  f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'chainStartFrame'),      '%s.%s'%(sysNode, 'startFrame'),           f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'chainStiffness'),       '%s.%s'%(sysNode, 'stiffness'),            f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'chainDamping'),         '%s.%s'%(sysNode, 'damp'),                 f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'chainGravity'),         '%s.%s'%(sysNode, 'gravity'),              f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'chainCollide'),         '%s.%s'%(sysNode, 'collide'),              f=True)
            mc.connectAttr('%s.%s'%(HairControl, 'StarCurveAttract'),     '%s.%s'%(sysNode, 'startCurveAttract'),    f=True)

            if i > 0:
                mc.connectAttr('%s.%s'%(HairSystem[0], 'attractionScale[0]'),  '%s.%s'%(sysNode, 'attractionScale[0]'))
                mc.connectAttr('%s.%s'%(HairSystem[0], 'attractionScale[1]'),  '%s.%s'%(sysNode, 'attractionScale[1]'))

        if mc.objExists('hairExp'):return
        mel.eval('source "%s"'%os.path.join(scriptTool.getScriptPath(), 'makeScriptNode.mel').replace('\\', '/'))
        mc.setAttr('hairExp.scriptType', 1)
Exemple #2
0
 def on_btn_makeDriver_clicked(self, args=None):
     if args==None:return
     nameData = ioTool.readData(os.path.join(scriptTool.getScriptPath(), 'Data.json'))
     for n in nameData:
         if not mc.objExists(n):continue
         if mc.objExists('%s_RIF_G'%n.rsplit('_', 2)[0]):continue
         makeRotateInfoForOneJoint(n)
     self.on_btn_refresh_clicked(True)
Exemple #3
0
 def on_btn_makeDriver_clicked(self, args=None):
     if args == None: return
     nameData = ioTool.readData(
         os.path.join(scriptTool.getScriptPath(), 'Data.json'))
     for n in nameData:
         if not mc.objExists(n): continue
         if mc.objExists('%s_RIF_G' % n.rsplit('_', 2)[0]): continue
         makeRotateInfoForOneJoint(n)
     self.on_btn_refresh_clicked(True)
    def on_actionCreateDynControl_triggered(self, clicked=None):
        if clicked==None:return
        SelOBJ = mc.ls(sl=True, type='joint')
        if len(SelOBJ) != 2:
            self.refreshHairSystems()
            return

        melScripts = os.path.join(scriptTool.getScriptPath(), 'makeIkHair.mel')
        melScripts = melScripts.replace('\\', '/')
        mel.eval('source "%s"'%melScripts)
        self.refreshHairSystems()
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('ControlSelecterWindow'):
            return
        super(ControlSelecterWnd, self).__init__(parent)
        self.setupUi(self)
        self.show()

        #- connect Signal
        for btn in self.groupBox.findChildren(QtGui.QPushButton):
            btn.clicked.connect(self.SelectControl)

        for btn in self.groupBox_2.findChildren(QtGui.QPushButton):
            btn.clicked.connect(self.SelectControl)

        #- refresh characters
        self.on_btn_loadCharacters_clicked(True)

        #- read control name Data
        f = open(os.path.join(scriptTool.getScriptPath(), 'ControlNameData.json'), 'r')
        self.CONTROL_NAME_DATA = json.load(f)
        f.close()
Exemple #6
0
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('CopyBlendShapeWeightUI'):
            return
        super(CopyBlendShapeWeightsUI, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #------------------
        iconPath = os.path.join(scriptTool.getScriptPath(), 'icons')

        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(os.path.join(iconPath, 'refresh.png')))
        self.btn_refresh.setIcon(icon)

        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(os.path.join(iconPath, 'arrow.png')))
        self.btn_Copy.setIcon(icon)
        #-+-+-+-+-+-+-+-+-+
        self.__srcModel = ListModel()
        self.__dstModel = ListModel()

        self.listView_Src.setModel(self.__srcModel)
        self.listView_Dst.setModel(self.__dstModel)
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('ControlSelecterWindow'):
            return
        super(ControlSelecterWnd, self).__init__(parent)
        self.setupUi(self)
        self.show()

        #- connect Signal
        for btn in self.groupBox.findChildren(QtGui.QPushButton):
            btn.clicked.connect(self.SelectControl)

        for btn in self.groupBox_2.findChildren(QtGui.QPushButton):
            btn.clicked.connect(self.SelectControl)

        #- refresh characters
        self.on_btn_loadCharacters_clicked(True)

        #- read control name Data
        f = open(
            os.path.join(scriptTool.getScriptPath(), 'ControlNameData.json'),
            'r')
        self.CONTROL_NAME_DATA = json.load(f)
        f.close()
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:32:39
#========================================
import os.path
import maya.cmds as mc
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

UIwndClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'quickSDKTool.ui'))
class quickSDK(UIwndClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('quickSDKwindow'):
            return

        super(quickSDK, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #-------------


    def on_actionLoadAttributes_triggered(self, clicked=None):
        if clicked==None:return


        mainChannelBox = 'mainChannelBox'
        ChannelBoxs = mc.lsUI(typ='channelBox')
        ChannelBoxs.remove(mainChannelBox)
        if len(ChannelBoxs) == 0:return
Exemple #9
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 07 May 2015 10:48:25
#========================================
import sys
from mpUtils import scriptTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
thisPath = scriptTool.getScriptPath()
thisPath in sys.path or sys.path.append(thisPath)
Exemple #10
0
 def on_btn_EditData_clicked(self, args=None):
     if args==None:return
     filePath = os.path.join(scriptTool.getScriptPath(), 'Data.json')
     filePath = filePath.replace('/', '\\')
     os.system('explorer.exe %s'%filePath)
            if self.__attributes[index.row()] in self.openAttrLst:
                return QtGui.QColor(255, 170, 127)

    def insertRow(self, row, value, index=QtCore.QModelIndex()):
        self.beginInsertRows(index, row, row)
        self.__attributes.insert(row, value)
        self.endInsertRows()

    def clear(self):
        self.beginRemoveColumns(QtCore.QModelIndex(), 0, self.rowCount())
        del self.__attributes[:]
        self.endRemoveRows()


shapeBaseClass, shapeWindowClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'ShapeBuilderUI.ui'))


class ShapeBuilderUI(shapeBaseClass, shapeWindowClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('ShapeBuilderWindow'):
            return

        super(ShapeBuilderUI, self).__init__(parent)
        self.setupUi(self)
        #---------------------------------------------------
        self.__AttributeModel = BlendShapeModel()
        self.listView_attributeList.setModel(self.__AttributeModel)
        #---------------------------------------------------
        self.widget_Bs.setEnabled(True)
        self.widget_BsBs.setEnabled(False)
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 16 Oct 2014 10:31:59
#========================================
import os.path
from mpUtils import scriptTool, uiTool
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
baseClass, windowClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'clusterWeightsUI.ui'))
class ClusterWeightsUI(baseClass, windowClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('MirrorClusterWindow'):
            return
        super(ClusterWeightsUI, self).__init__(parent)
        self.setupUi(self)
        self.show()


    def on_btn_Geometry_clicked(self, args=None):
        if args == None:return
        sel = mc.ls(sl=True)
        if len(sel) < 1:return
        if not mc.listRelatives(sel[0], s=True, type='mesh'):return
        self.let_Geometry.setText(sel[0])


    def on_btn_Source_clicked(self, args=None):
        if args == None:return
        sel = mc.ls(sl=True)
        if len(sel) < 1:return
Exemple #13
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:44:00
#========================================
import os.path, re, pymel.core
import maya.cmds as mc
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'mirrorCtlShp.ui'))


class MirrorControlShp(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('mirrorControlShapeUI'): return
        super(MirrorControlShp, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_btn_mirror_clicked(self, click=None):
        if click == None: return
        controlType = str(self.fld_controlType.text())

        flipAxis = 'X'
        if self.rdn_filpX.isChecked():
            flipAxis = 'X'
        elif self.rdn_filpY.isChecked():
            flipAxis = 'Y'
        else:
            flipAxis = 'Z'
#   date: Tue, 29 Jul 2014 09:29:32
#=============================================
import math, re, os
import maya.cmds as mc
from mpUtils import uiTool, scriptTool, mayaTool, mathTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

#-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#- Refresh Characters                                           +
#- Guess Character Type                                         +
#- Left arm, Right arm, Left leg, Right leg                     +
#- Left foreleg, Right foreleg, Left hindleg, Right hindleg     +
#-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Uiwnd, UiClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'IKFKSwitch.ui'))


class IKFKSwitch(Uiwnd, UiClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('DDikfkSwitchWindow'):
            return

        super(IKFKSwitch, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #--------
        self.on_actionRefreshCharacter_triggered(True)

    def on_actionRefreshCharacter_triggered(self, args=None):
        if args == None: return
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 10:40:33
#========================================
import os.path
from PyQt4 import QtGui
import maya.cmds as mc
import maya.mel as mel
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

UIClass, BaseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'DynControlUI.ui'))

class DynControl(UIClass, BaseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('dynControlWindow'):return

        super(DynControl, self).__init__(parent)
        self.setupUi(self)
        self.show()



    def refreshHairSystems(self):
        for checkBox in self.HairSystemList.children():
            checkBox.deleteLater()

        HairSysTem = mc.listRelatives(mc.ls(type='hairSystem'), p=True)
        HairSysTem = {}.fromkeys(HairSysTem, None).keys()
        HairSysTem.sort()
Exemple #16
0
    def data(self, index, role=QtCore.Qt.DisplayRole):
        if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
            return self.LIST_DATA[index.row()]


    def changeData(self, inputData):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, self.rowCount())
        del self.LIST_DATA[:]
        self.endRemoveRows()

        self.beginInsertRows(QtCore.QModelIndex(), 0, self.rowCount())
        self.LIST_DATA = inputData
        self.endInsertRows()


windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'weightsTool.ui'))

class WeightsTool(windowClass, baseClass):
    SOURCE_DEFORM_TYPE = 'cluster'
    TARGET_DEFORM_TYPE = 'cluster'

    def __init__(self, parent=uiTool.getMayaWindow()):
        super(WeightsTool, self).__init__(parent)
        self.setupUi(self)
        self.show()

        self.SOURCE_MODEL = ListModel()
        self.TARGET_MODEL = ListModel()
        self.VIW_Source.setModel(self.SOURCE_MODEL)
        self.VIW_Target.setModel(self.TARGET_MODEL)
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Fri, 24 Oct 2014 10:45:39
#========================================
import string, re, os.path, checkingModels
import maya.cmds as mc
import maya.OpenMaya as OpenMaya
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

ICON_OK       = uiTool.QtGui.QIcon()
ICON_DEFAULT  = uiTool.QtGui.QIcon()
ICON_WARNING  = uiTool.QtGui.QIcon()

IMAGE_OK      = uiTool.QtGui.QPixmap(os.path.join(scriptTool.getScriptPath(), 'icon', 'check.png'))
IMAGE_DEFAULT = uiTool.QtGui.QPixmap(os.path.join(scriptTool.getScriptPath(), 'icon', 'question.png'))
IMAGE_WARNING = uiTool.QtGui.QPixmap(os.path.join(scriptTool.getScriptPath(), 'icon', 'exclamation.png'))

ICON_OK.addPixmap(IMAGE_OK, uiTool.QtGui.QIcon.Disabled, uiTool.QtGui.QIcon.Off)
ICON_DEFAULT.addPixmap(IMAGE_DEFAULT, uiTool.QtGui.QIcon.Disabled, uiTool.QtGui.QIcon.Off)
ICON_WARNING.addPixmap(IMAGE_WARNING, uiTool.QtGui.QIcon.Disabled, uiTool.QtGui.QIcon.Off)

SEARCH_ICON = uiTool.QtGui.QIcon(os.path.join(scriptTool.getScriptPath(), 'icon', 'search.png'))


UIwndClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'inspectScene.ui'))

class InspectSceneUI(UIwndClass, baseClass):

    def __init__(self, parent=uiTool.getMayaWindow()):
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Mon, 22 Sep 2014 10:35:13
#========================================
import os.path
import maya.cmds as mc
import maya.mel as mel
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

bodywndClass, bodybaseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'transWeights.ui'))
class transWeightsUI(bodywndClass, bodybaseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('transSkeletonToClusters'):
            return

        super(transWeightsUI, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_btn_LoadGeometry_clicked(self, clicked=None):
        if clicked == None:return
        sel = mc.ls(sl=True)
        if len(sel) < 1:
            return

        self.LET_Geometry.setText(sel[0])


    def on_btn_LoadSkeleton_clicked(self, clicked=None):
Exemple #19
0
#=================================
# author: changlong.zang
#   date: 2014-05-05
#=================================
import os, re, string
import maya.cmds as mc
from mpUtils import uiTool, scriptTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

WindowClass, BaseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'buildTargents.ui'))


class BuildTargents(WindowClass, BaseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('buildTargentsWindow'):
            return

        super(BuildTargents, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_actionLoad_Object_triggered(self, args=None):
        if args == None: return
        selOBJ = mc.ls(sl=True)
        if selOBJ == []: return

        self.LET_Geometry.setText(selOBJ[0])

        blendShapes = mc.ls(mc.listHistory(selOBJ[0]), type='blendShape')
        if blendShapes == []:
Exemple #20
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 30 Apr 2015 10:43:13
#========================================
import os.path
from mpUtils import scriptTool, uiTool
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'createControlSet.ui'))


class CreateControlSetUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('makeControlSetUI'):
            return
        super(CreateControlSetUI, self).__init__(parent)
        self.setupUi(self)
        self.show()

    #=============================================================================================
    def __createSet(self, name):
        if not mc.objExists(name):
            mc.sets(n=name, em=True)
        if name != 'Allctrls': return

        if mc.objExists('body_Ctrls'):
            mc.sets('body_Ctrls', add=name)
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:35:34
#========================================
import os
import maya.cmds as mc
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

UIClass, BaseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'quickSetDrivenKey.ui'))

class QuickSetDrivenKey(UIClass, BaseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('quickSetDrivenKeywindow'):
            return

        super(QuickSetDrivenKey, self).__init__(parent)
        self.setupUi(self)
        self.show()


    def _loadAttribute(self, LineEdit):
        SelectOBJ = mc.ls(sl=True)
        if len(SelectOBJ) == 0:return

        SelectAttriBute = mc.channelBox('mainChannelBox', q=True, sma=True)
        if SelectAttriBute == None:return

        LineEdit.setText('%s.%s'%(SelectOBJ[-1], SelectAttriBute[0]))
Exemple #22
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 16 Oct 2014 10:31:59
#========================================
import os.path
from mpUtils import scriptTool, uiTool
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
baseClass, windowClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'clusterWeightsUI.ui'))


class ClusterWeightsUI(baseClass, windowClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('MirrorClusterWindow'):
            return
        super(ClusterWeightsUI, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_btn_Geometry_clicked(self, args=None):
        if args == None: return
        sel = mc.ls(sl=True)
        if len(sel) < 1: return
        if not mc.listRelatives(sel[0], s=True, type='mesh'): return
        self.let_Geometry.setText(sel[0])

    def on_btn_Source_clicked(self, args=None):
        if args == None: return
        sel = mc.ls(sl=True)
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Wed, 29 Apr 2015 10:09:50
#========================================
import os.path
from mpUtils import scriptTool, uiTool
from core import MDL, SUR, RIG, ANI, LGT, FX, CMP
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'MPToolkitUI.ui'))


class MPToolkitUI(windowClass, baseClass, MDL.Mdl_Class, SUR.Sur_Class,
                  RIG.Rig_Class, ANI.Ani_Class, LGT.Lgt_Class, FX.Fx_Class,
                  CMP.Cmp_Class):
    '''
    '''
    def __init__(self, parent=uiTool.getMayaWindow()):
        #-----------------------------------------------------
        if uiTool.windowExists('magicpowerToolKit'): return
        #-----------------------------------------------------
        super(MPToolkitUI, self).__init__(parent)
        self.setupUi(self)
        self.__initUI()
        self.show()

    def __initUI(self):
        #- hide tabwidget tabbar...
        self.tabWidget.tabBar().setVisible(False)
Exemple #24
0
#=============================================
# author: changlong.zang
#   mail: [email protected]
#   date: Wed, 16 Jul 2014 09:31:17
#=============================================
import os.path
import maya.cmds as mc
import maya.mel as mel
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'blendShapeWeights.ui'))
class BlendShapeWeightUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('blendShapeWeightsTool'):return
        super(BlendShapeWeightUI, self).__init__(parent)
        self.setupUi(self)
        self.show()


    def on_btn_mirrorE_clicked(self, clicked=None):
        if clicked == None:return
        doMirrorBlendShapeWeights(envelope=True)


    def on_btn_mirrorT_clicked(self, clicked=None):
        if clicked == None:return
        doMirrorBlendShapeWeights(envelope=False)


    def on_btn_inverE_clicked(self, clicked=None):
        if clicked == None:return
Exemple #25
0
#=============================================
# author: changlong.zang
#   mail: [email protected]
#   date: Wed, 09 Jul 2014 10:49:27
#=============================================
import os, math, re
from mpUtils import scriptTool, uiTool, ioTool
from PyQt4 import QtCore, QtGui
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'FixShape.ui'))


class ListModel(QtCore.QAbstractListModel):
    def __init__(self, L=[], parent=None):
        super(ListModel, self).__init__(parent)
        self.__data = L[:]

    def rowCount(self, index=QtCore.QModelIndex()):
        return len(self.__data)

    def data(self, index, role):
        if role == QtCore.Qt.DisplayRole:
            return self.__data[index.row()]

    def refresh(self):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, self.rowCount())
        del self.__data[:]
        self.endRemoveRows()
Exemple #26
0
    def rowCount(self, index):
        return len(self.__data)

    def data(self, index, role):
        if role == QtCore.Qt.DisplayRole:
            return self.__data[index.row()]

    def changeData(self, L):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, len(self.__data))
        self.__data = L
        self.endRemoveRows()


bodywndClass, bodybaseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'blendShapeWeights.ui'))


class BlendShapeWeightsUI(bodywndClass, bodybaseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('blendShapeWeightsToolUI'):
            return

        super(BlendShapeWeightsUI, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #-
        self.__skinModel = ListModel()
        self.__bspModel = ListModel()
        self.VIEW_skin.setModel(self.__skinModel)
        self.VIEW_bsp.setModel(self.__bspModel)
Exemple #27
0
def invert(base=None, corrective=None, progressBar=None, name=None):
    if not cmds.pluginInfo('cvShapeInverter.py', query=True, loaded=True):
        cmds.loadPlugin('%s/cvShapeInverter.py' % scriptTool.getScriptPath())
    # end if
    cmds.undoInfo(openChunk=True)
    if not base or not corrective:
        sel = cmds.ls(sl=True)
        if not sel or len(sel) != 2:
            cmds.undoInfo(closeChunk=True)
            raise RuntimeError, 'Select base then corrective'
        # end if
        base, corrective = sel
    # end if

    # Get points on base mesh
    basePoints = getPoints(base)
    numPoints = basePoints.length()

    # Get points on corrective mesh
    correctivePoints = getPoints(corrective)

    # Get the intermediate mesh
    shapes = cmds.listRelatives(base, children=True, shapes=True, path=True)
    for s in shapes:
        if cmds.getAttr('%s.intermediateObject' % s) and cmds.listConnections(
                '%s.worldMesh' % s, source=False):
            origMesh = s
            break
        # end if
    else:
        cmds.undoInfo(closeChunk=True)
        raise RuntimeError('No intermediate shape found for %s.' % base)
    # end for

    # Get the component offset axes
    origPoints = getPoints(origMesh)
    xPoints = OpenMaya.MPointArray(origPoints)
    yPoints = OpenMaya.MPointArray(origPoints)
    zPoints = OpenMaya.MPointArray(origPoints)

    for i in range(numPoints):
        xPoints[i].x += 1.0
        yPoints[i].y += 1.0
        zPoints[i].z += 1.0
    # end for
    setPoints(origMesh, xPoints)
    xPoints = getPoints(base)
    setPoints(origMesh, yPoints)
    yPoints = getPoints(base)
    setPoints(origMesh, zPoints)
    zPoints = getPoints(base)
    setPoints(origMesh, origPoints)

    # Create the mesh to get the inversion deformer
    if not name:
        name = '%s_inverted' % corrective
    # end if

    invertedShape = cmds.duplicate(base, name=name)[0]
    # Delete the unnessary shapes
    shapes = cmds.listRelatives(invertedShape, children=True, shapes=True)
    for s in shapes:
        if cmds.getAttr('%s.intermediateObject' % s):
            cmds.delete(s)
        # end if
    # end for
    setPoints(invertedShape, origPoints)
    # Unlock the transformation attrs
    for attr in 'trs':
        for x in 'xyz':
            cmds.setAttr('%s.%s%s' % (invertedShape, attr, x), lock=False)
        # end for
    # end for
    cmds.setAttr('%s.visibility' % invertedShape, 1)
    deformer = cmds.deformer(invertedShape, type='cvShapeInverter')[0]

    # Calculate the inversion matrices
    if progressBar:
        progressBar.setMaximum(numPoints)

    oDeformer = getMObject(deformer)
    fnDeformer = OpenMaya.MFnDependencyNode(oDeformer)
    plugMatrix = fnDeformer.findPlug('inversionMatrix', False)
    fnMatrixData = OpenMaya.MFnMatrixData()
    for i in range(numPoints):
        matrix = OpenMaya.MMatrix()
        setMatrixRow(matrix, xPoints[i] - basePoints[i], 0)
        setMatrixRow(matrix, yPoints[i] - basePoints[i], 1)
        setMatrixRow(matrix, zPoints[i] - basePoints[i], 2)
        matrix = matrix.inverse()
        oMatrix = fnMatrixData.create(matrix)

        plugMatrixElement = plugMatrix.elementByLogicalIndex(i)
        plugMatrixElement.setMObject(oMatrix)

        if progressBar:
            progressBar.setValue(i)

    if progressBar:
        progressBar.setMinimum(0)
        progressBar.setValue(0)
        progressBar.setMaximum(1)
    # end for

    # Store the base points.
    fnPointData = OpenMaya.MFnPointArrayData()
    oPointData = fnPointData.create(basePoints)
    plugDeformedPoints = fnDeformer.findPlug('deformedPoints', False)
    plugDeformedPoints.setMObject(oPointData)

    cmds.connectAttr('%s.outMesh' % getShape(corrective),
                     '%s.correctiveMesh' % deformer)
    cmds.setAttr('%s.activate' % deformer, True)

    cmds.undoInfo(closeChunk=True)

    return invertedShape
        Jnt = mc.joint(p=(0, 0, 0))
        Loc = mc.spaceLocator(p=(0, 0, 0))[0]
        uValue = 0.0

        if not uValuezerotoone:
            uValue = i
        else:
            uValue = (float(i) - 0) / (float(JointCounts - 1) -
                                       0) * (1.0 - 0.0) + 0.0

        _Attach(UppathCus, Loc, uValue, None, uValuezerotoone)
        _Attach(basePathCus, Jnt, uValue, Loc, uValuezerotoone)


UIwndClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'makeAttachJoints.ui'))


class makeAttachJoints(UIwndClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('makeAttachJointsWindow'):
            return

        super(makeAttachJoints, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #-------------

    def on_actionLoadBaseCurve_triggered(self, clicked=None):
        if clicked == None: return
        SelOBJ = mc.ls(sl=True)
Exemple #29
0
    def data(self, index, role=QtCore.Qt.DisplayRole):
        if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole:
            return self.LIST_DATA[index.row()]

    def changeData(self, inputData):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, self.rowCount())
        del self.LIST_DATA[:]
        self.endRemoveRows()

        self.beginInsertRows(QtCore.QModelIndex(), 0, self.rowCount())
        self.LIST_DATA = inputData
        self.endInsertRows()


windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'weightsTool.ui'))


class WeightsTool(windowClass, baseClass):
    SOURCE_DEFORM_TYPE = 'cluster'
    TARGET_DEFORM_TYPE = 'cluster'

    def __init__(self, parent=uiTool.getMayaWindow()):
        super(WeightsTool, self).__init__(parent)
        self.setupUi(self)
        self.show()

        self.SOURCE_MODEL = ListModel()
        self.TARGET_MODEL = ListModel()
        self.VIW_Source.setModel(self.SOURCE_MODEL)
        self.VIW_Target.setModel(self.TARGET_MODEL)
Exemple #30
0
#=============================================
# author: changlong.zang
#   mail: [email protected]
#   date: Wed, 09 Jul 2014 10:49:27
#=============================================
import os, math, re
from mpUtils import scriptTool, uiTool, ioTool
from PyQt4 import QtCore, QtGui
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'FixShape.ui'))

class ListModel(QtCore.QAbstractListModel):
    def __init__(self, L=[], parent=None):
        super(ListModel, self).__init__(parent)
        self.__data = L[:]


    def rowCount(self, index=QtCore.QModelIndex()):
        return len(self.__data)


    def data(self, index, role):
        if role == QtCore.Qt.DisplayRole:
            return self.__data[index.row()]


    def refresh(self):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, self.rowCount())
        del self.__data[:]
        self.endRemoveRows()
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 20 Nov 2014 17:10:31
#========================================
import os.path, time, findCoincidentGeometry
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'findCoincidentGeometry.ui'))
class findCoincidentGeometryUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('findCoincidentGeometryUI'):
            return
        super(findCoincidentGeometryUI, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #------------------

    def on_pushButton_clicked(self, args=None):
        if args == None:return
        self.plainTextEdit.setPlainText('')
        self.plainTextEdit.appendPlainText('------ %s ------'%time.strftime("%H:%M:%S", time.localtime()))

        geometrys = findCoincidentGeometry.findCoincidentGeometrys()

        self.plainTextEdit.appendPlainText('\n'.join(geometrys))
        self.plainTextEdit.appendPlainText('------ %s ------'%time.strftime("%H:%M:%S", time.localtime()))
            return
        if not mc.attributeQuery(attribute, n=obj, ex=True):
            print 'Error -> attributes  %s  was not Exists...'%arg
            return

    mc.delete(mc.keyframe(dsn, q=True, n=True))

    driverValues = mc.keyframe(src, q=True, fc=True)
    drivenValues = mc.keyframe(src, q=True, vc=True)
    for drv, dnv in zip(driverValues, drivenValues):
        mc.setDrivenKeyframe(dsn, cd=dsr, dv=drv, v=dnv * mirror)




windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'mirrorDrivenKeys.ui'))
class MirrorDrivenKeysUI(windowClass, baseClass):

    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('mirrorDrivenkeysWindow'):
            return

        super(MirrorDrivenKeysUI, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #----------------------------------------------------------------
        self.__SrcOBJ = None
        self.__DstOBJ = None

        self.__model_SrcDriver = ListModel()
        self.__model_SrcDriven = ListModel()
#=================================
# author: changlong.zang
#   date: 2014-06-09
#=================================
import  os, sys, json, re
from PyQt4 import QtCore, QtGui
import maya.cmds as mc
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

if scriptTool.getScriptPath() not in sys.path:
    sys.path.append(scriptTool.getScriptPath())

class ContextMenu(QtGui.QMenu):
    def __init__(self, Point, btn, parent=None):
        super(ContextMenu, self).__init__(parent)
        self.Button = btn

        action_addControl = self.addAction('Add Controls')
        self.addSeparator()
        action_removeControl = self.addAction('Remove Controls')

        action_addControl.triggered.connect(self.addControls)
        action_removeControl.triggered.connect(self.removeControls)

        self.move(Point)
        self.exec_()


    def addControls(self):
        #- get select controls
Exemple #34
0
 def on_btn_EditData_clicked(self, args=None):
     if args == None: return
     filePath = os.path.join(scriptTool.getScriptPath(), 'Data.json')
     filePath = filePath.replace('/', '\\')
     os.system('explorer.exe %s' % filePath)
Exemple #35
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:39:42
#========================================
import os.path, pymel.core
import maya.cmds as mc
from PyQt4 import QtGui
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'addGroups.ui'))
class AddGroup(windowClass, baseClass):
    '''
    user control pannel...
    '''
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('addGroupWindow'):
            return

        super(AddGroup, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_btn_append_clicked(self, args=None):
        if args == None:return
        lineEdit = QtGui.QLineEdit(self.scrollArea)
        font = QtGui.QFont()
        font.setPointSize(10)
        lineEdit.setFont(font)
        lineEdit.setMinimumHeight(25)
Exemple #36
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 20 Nov 2014 17:10:31
#========================================
import os.path, time, findCoincidentGeometry
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'findCoincidentGeometry.ui'))


class findCoincidentGeometryUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('findCoincidentGeometryUI'):
            return
        super(findCoincidentGeometryUI, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #------------------

    def on_pushButton_clicked(self, args=None):
        if args == None: return
        self.plainTextEdit.setPlainText('')
        self.plainTextEdit.appendPlainText(
            '------ %s ------' % time.strftime("%H:%M:%S", time.localtime()))

        geometrys = findCoincidentGeometry.findCoincidentGeometrys()

        self.plainTextEdit.appendPlainText('\n'.join(geometrys))
        self.plainTextEdit.appendPlainText(
Exemple #37
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 28 Apr 2015 09:40:23
#========================================
from mpUtils import scriptTool, uiTool
import os.path, shaderCore
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'shaderUI.ui'))

class ShaderUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        #-----------------------------------------------------
        if uiTool.windowExists('shaderIOToolUI'):return
        #-----------------------------------------------------
        super(ShaderUI, self).__init__(parent)
        self.setupUi(self)
        self.show()


    def on_btn_export_clicked(self, args=None):
        if args == None:return
        shaderCore.exportGeometryShader()


    def on_btn_import_clicked(self, args=None):
        if args == None:return
        shaderCore.importGeometryShader()
Exemple #38
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:39:42
#========================================
import os.path, pymel.core
import maya.cmds as mc
from PyQt4 import QtGui
from mpUtils import scriptTool, uiTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

windowClass, baseClass = uiTool.loadUi(
    os.path.join(scriptTool.getScriptPath(), 'addGroups.ui'))


class AddGroup(windowClass, baseClass):
    '''
    user control pannel...
    '''
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('addGroupWindow'):
            return

        super(AddGroup, self).__init__(parent)
        self.setupUi(self)
        self.show()

    def on_btn_append_clicked(self, args=None):
        if args == None: return
        lineEdit = QtGui.QLineEdit(self.scrollArea)
        font = QtGui.QFont()
Exemple #39
0

    def clear(self):
        self.beginRemoveRows(QtCore.QModelIndex(), 0, self.rowCount())
        del self.__modelData[:]
        self.endRemoveRows()

    def change(self, L=[]):
        self.beginInsertRows(QtCore.QModelIndex(), 0, self.rowCount())
        self.__modelData = L[:]
        self.endInsertRows()




windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'replaceUV.ui'))
class ReplaceUV(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('replaceUVwindow'):return

        super(ReplaceUV, self).__init__(parent)
        self.setupUi(self)
        #----------------
        self.__listModel = ListModel()
        self.listView.setModel(self.__listModel)
        #----------------
        self.show()


    def on_btn_setFilePath_clicked(self, clicked=None):
        if clicked == None:return
Exemple #40
0
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Wed, 29 Apr 2015 10:09:50
#========================================
import os.path
from mpUtils import scriptTool, uiTool
from core    import MDL, SUR, RIG, ANI, LGT, FX, CMP
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'MPToolkitUI.ui'))
class MPToolkitUI(windowClass, baseClass, MDL.Mdl_Class, SUR.Sur_Class, RIG.Rig_Class, ANI.Ani_Class, LGT.Lgt_Class, FX.Fx_Class, CMP.Cmp_Class):
    '''
    '''
    def __init__(self, parent=uiTool.getMayaWindow()):
        #-----------------------------------------------------
        if uiTool.windowExists('magicpowerToolKit'):return
        #-----------------------------------------------------
        super(MPToolkitUI, self).__init__(parent)
        self.setupUi(self)
        self.__initUI()
        self.show()


    def __initUI(self):
        #- hide tabwidget tabbar...
        self.tabWidget.tabBar().setVisible(False)

        #- connect all of radiobuttons...
        self.__buttonGroup = uiTool.QtGui.QButtonGroup()
        for i, rdn in enumerate(self.wgt_rdnbox.findChildren(uiTool.QtGui.QRadioButton)):
            self.__buttonGroup.addButton(rdn, i)
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Thu, 30 Apr 2015 10:43:13
#========================================
import os.path
from mpUtils import scriptTool, uiTool
import maya.cmds as mc
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'createControlSet.ui'))
class CreateControlSetUI(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('makeControlSetUI'):
            return
        super(CreateControlSetUI, self).__init__(parent)
        self.setupUi(self)
        self.show()

    #=============================================================================================
    def __createSet(self, name):
        if not mc.objExists(name):
            mc.sets(n=name, em=True)
        if name != 'Allctrls': return

        if mc.objExists('body_Ctrls'):
            mc.sets('body_Ctrls', add=name)

        if mc.objExists('facial_Ctrls'):
            mc.sets('facial_Ctrls', add=name)

    def insertRow(self, row, value, index=QtCore.QModelIndex()):
        self.beginInsertRows(index, row, row)
        self.__attributes.insert(row, value)
        self.endInsertRows()


    def clear(self):
        self.beginRemoveColumns(QtCore.QModelIndex(), 0, self.rowCount())
        del self.__attributes[:]
        self.endRemoveRows()



shapeBaseClass, shapeWindowClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'ShapeBuilderUI.ui'))
class ShapeBuilderUI(shapeBaseClass, shapeWindowClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('ShapeBuilderWindow'):
            return

        super(ShapeBuilderUI, self).__init__(parent)
        self.setupUi(self)
        #---------------------------------------------------
        self.__AttributeModel = BlendShapeModel()
        self.listView_attributeList.setModel(self.__AttributeModel)
        #---------------------------------------------------
        self.widget_Bs.setEnabled(True)
        self.widget_BsBs.setEnabled(False)
        self.widget_SkinBs.setEnabled(False)
        Jnt = mc.joint(p=(0, 0, 0))
        Loc = mc.spaceLocator(p=(0, 0, 0))[0]
        uValue = 0.0

        if not uValuezerotoone:
            uValue = i
        else:
            uValue = (float(i) - 0) / (float(JointCounts - 1) - 0) * (1.0 - 0.0) + 0.0

        _Attach(UppathCus, Loc, uValue, None, uValuezerotoone)
        _Attach(basePathCus, Jnt, uValue, Loc, uValuezerotoone)




UIwndClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'makeAttachJoints.ui'))
class makeAttachJoints(UIwndClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('makeAttachJointsWindow'):
            return

        super(makeAttachJoints, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #-------------


    def on_actionLoadBaseCurve_triggered(self, clicked=None):
        if clicked==None:return
        SelOBJ = mc.ls(sl=True)
        if len(SelOBJ) == 1:
#=================================
# author: changlong.zang
#   date: 2014-06-09
#=================================
import os, sys, json, re
from PyQt4 import QtCore, QtGui
import maya.cmds as mc
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

if scriptTool.getScriptPath() not in sys.path:
    sys.path.append(scriptTool.getScriptPath())


class ContextMenu(QtGui.QMenu):
    def __init__(self, Point, btn, parent=None):
        super(ContextMenu, self).__init__(parent)
        self.Button = btn

        action_addControl = self.addAction('Add Controls')
        self.addSeparator()
        action_removeControl = self.addAction('Remove Controls')

        action_addControl.triggered.connect(self.addControls)
        action_removeControl.triggered.connect(self.removeControls)

        self.move(Point)
        self.exec_()

    def addControls(self):
        #- get select controls
Exemple #45
0
#   date: Tue, 29 Jul 2014 09:29:32
#=============================================
import math, re, os
import maya.cmds as mc
from mpUtils import uiTool, scriptTool, mayaTool, mathTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

#-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
#- Refresh Characters                                           +
#- Guess Character Type                                         +
#- Left arm, Right arm, Left leg, Right leg                     +
#- Left foreleg, Right foreleg, Left hindleg, Right hindleg     +
#-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Uiwnd, UiClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'IKFKSwitch.ui'))
class IKFKSwitch(Uiwnd, UiClass):
    def __init__(self, parent =uiTool.getMayaWindow()):
        if uiTool.windowExists('DDikfkSwitchWindow'):
            return

        super(IKFKSwitch, self).__init__(parent)
        self.setupUi(self)
        self.show()
        #--------
        self.on_actionRefreshCharacter_triggered(True)


    def on_actionRefreshCharacter_triggered(self, args=None):
        if args==None:return
        self.Controls = ' '.join(mc.ls())
#========================================
# author: changlong.zang
#   mail: [email protected]
#   date: Tue, 05 May 2015 11:44:00
#========================================
import os.path, re, pymel.core
import maya.cmds as mc
from mpUtils import scriptTool, uiTool, mayaTool
#--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
windowClass, baseClass = uiTool.loadUi(os.path.join(scriptTool.getScriptPath(), 'mirrorCtlShp.ui'))
class MirrorControlShp(windowClass, baseClass):
    def __init__(self, parent=uiTool.getMayaWindow()):
        if uiTool.windowExists('mirrorControlShapeUI'):return
        super(MirrorControlShp, self).__init__(parent)
        self.setupUi(self)
        self.show()


    def on_btn_mirror_clicked(self, click=None):
        if click == None:return
        controlType = str(self.fld_controlType.text())

        flipAxis = 'X'
        if self.rdn_filpX.isChecked():
            flipAxis = 'X'
        elif self.rdn_filpY.isChecked():
            flipAxis = 'Y'
        else:
            flipAxis = 'Z'

def invert(base=None, corrective=None, progressBar=None, name=None):
    if not cmds.pluginInfo('cvShapeInverter.py', query=True, loaded=True):
        cmds.loadPlugin('%s/cvShapeInverter.py'%scriptTool.getScriptPath())
    # end if
    cmds.undoInfo(openChunk=True)
    if not base or not corrective:
        sel = cmds.ls(sl=True)
        if not sel or len(sel) != 2:
            cmds.undoInfo(closeChunk=True)
            raise RuntimeError, 'Select base then corrective'
        # end if
        base, corrective = sel
    # end if

    # Get points on base mesh
    basePoints = getPoints(base)
    numPoints = basePoints.length()

    # Get points on corrective mesh
    correctivePoints = getPoints(corrective)

    # Get the intermediate mesh
    shapes = cmds.listRelatives(base, children=True, shapes=True, path=True)
    for s in shapes:
        if cmds.getAttr('%s.intermediateObject' % s) and cmds.listConnections('%s.worldMesh' % s,
                                                                              source=False):
            origMesh = s
            break
        # end if
    else:
        cmds.undoInfo(closeChunk=True)
        raise RuntimeError('No intermediate shape found for %s.' % base)
    # end for


    # Get the component offset axes
    origPoints = getPoints(origMesh)
    xPoints = OpenMaya.MPointArray(origPoints)
    yPoints = OpenMaya.MPointArray(origPoints)
    zPoints = OpenMaya.MPointArray(origPoints)

    for i in range(numPoints):
        xPoints[i].x += 1.0
        yPoints[i].y += 1.0
        zPoints[i].z += 1.0
    # end for
    setPoints(origMesh, xPoints)
    xPoints = getPoints(base)
    setPoints(origMesh, yPoints)
    yPoints = getPoints(base)
    setPoints(origMesh, zPoints)
    zPoints = getPoints(base)
    setPoints(origMesh, origPoints)


    # Create the mesh to get the inversion deformer
    if not name:
        name = '%s_inverted' % corrective
    # end if

    invertedShape = cmds.duplicate(base, name=name)[0]
    # Delete the unnessary shapes
    shapes = cmds.listRelatives(invertedShape, children=True, shapes=True)
    for s in shapes:
        if cmds.getAttr('%s.intermediateObject' % s):
            cmds.delete(s)
        # end if
    # end for
    setPoints(invertedShape, origPoints)
    # Unlock the transformation attrs
    for attr in 'trs':
        for x in 'xyz':
            cmds.setAttr('%s.%s%s' % (invertedShape, attr, x), lock=False)
        # end for
    # end for
    cmds.setAttr('%s.visibility' % invertedShape, 1)
    deformer = cmds.deformer(invertedShape, type='cvShapeInverter')[0]


    # Calculate the inversion matrices
    if progressBar:
        progressBar.setMaximum(numPoints)

    oDeformer = getMObject(deformer)
    fnDeformer = OpenMaya.MFnDependencyNode(oDeformer)
    plugMatrix = fnDeformer.findPlug('inversionMatrix', False)
    fnMatrixData = OpenMaya.MFnMatrixData()
    for i in range(numPoints):
        matrix = OpenMaya.MMatrix()
        setMatrixRow(matrix, xPoints[i] - basePoints[i], 0)
        setMatrixRow(matrix, yPoints[i] - basePoints[i], 1)
        setMatrixRow(matrix, zPoints[i] - basePoints[i], 2)
        matrix = matrix.inverse()
        oMatrix = fnMatrixData.create(matrix)

        plugMatrixElement = plugMatrix.elementByLogicalIndex(i)
        plugMatrixElement.setMObject(oMatrix)

        if progressBar:
            progressBar.setValue(i)

    if progressBar:
        progressBar.setMinimum(0)
        progressBar.setValue(0)
        progressBar.setMaximum(1)
    # end for


    # Store the base points.
    fnPointData = OpenMaya.MFnPointArrayData()
    oPointData = fnPointData.create(basePoints)
    plugDeformedPoints = fnDeformer.findPlug('deformedPoints', False)
    plugDeformedPoints.setMObject(oPointData)

    cmds.connectAttr('%s.outMesh' % getShape(corrective), '%s.correctiveMesh' % deformer)
    cmds.setAttr('%s.activate' % deformer, True)

    cmds.undoInfo(closeChunk=True)

    return invertedShape