Пример #1
0
    def refreshUI(self):

        for f in utils.getUType('faceModule'):

            self.currentFacialNodeCMB.clear()

            self.currentFacialNodeCMB.addItem(f)

            self.currentFace = face.FaceModule(faceNode=f)

            self.maskControlsLBL.setText(
                'Mask Controls: ' +
                str(len(self.currentFace.faceMask.controls)))

            if self.currentFace.jointMovers:

                self.facialMoversLBL.setText(
                    'Facial Joint Movers: ' +
                    str(len(self.currentFace.jointMovers)))

            self.maskGeoLBL.setText('Mask Geo: ' +
                                    self.currentFace.faceMask.maskGeo)

            if self.currentFace.sdks:

                self.drivenNodesLBL.setText('Driven Nodes: ' +
                                            str(len(self.currentFace.sdks)))
Пример #2
0
    def updateFaceAndMask(self):

        currentModule = self.currentFacialNodeCMB.currentText()

        self.currentFace = face.FaceModule(faceNode=currentModule)

        self.currentMask = self.currentFace.faceMask
Пример #3
0
    def refreshUI(self):

        for f in utils.getUType('faceModule'):

            self.currentFacialNodeCMB.addItem(f)

            self.currentFace = face.FaceModule(faceNode=f)

            self.buildPoseList()
Пример #4
0
    def refreshUI(self):

        for f in utils.getUType('faceModule'):

            self.currentFacialNodeCMB.addItem(f)

            self.currentFace = face.FaceModule(faceNode=f)

            self.buildExportTree(self.currentFace.jointMovers)
Пример #5
0
    def faceChangedFn(self):

        self.currentFace = face.FaceModule(
            faceNode=self.currentFacialNodeCMB.currentText())

        self.buildPoseList()
Пример #6
0
    def __init__(self, parent=getMayaWindow(), mode='choose', edit=0):

        QtGui.QMainWindow.__init__(self, parent)

        self.edit = edit

        self.currentFace = None

        #TODO this won't work with multiple faces

        for f in utils.getUType('faceModule'):

            print 'poseChooser_UI: Face initialized from:', f

            self.currentFace = face.FaceModule(faceNode=f)

        ### BUILD USER INTERFACE

        ##############################

        #create/set a central widget

        wid = QtGui.QWidget()

        self.setCentralWidget(wid)

        #setArt v2 stylesheet

        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.resize(400, 514)

        #top face module picker

        self.label = QtGui.QLabel(self)

        self.label.setText("FacialNode:")

        self.horizontalLayout = QtGui.QHBoxLayout()

        self.horizontalLayout.setSpacing(2)

        self.label.setMaximumSize(QtCore.QSize(78, 16777215))

        self.horizontalLayout.addWidget(self.label)

        self.currentFacialNodeCMB = QtGui.QComboBox(self)

        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        #header and instruction

        self.h2 = QtGui.QHBoxLayout()

        self.attachJointLBL = QtGui.QLabel(self)

        if self.edit:

            self.attachJointLBL.setText("Edit Face Poses")

        else:

            self.attachJointLBL.setText("Available Face Poses")

        font = self.attachJointLBL.font()

        font.setBold(True)

        font.setPointSize(13)

        self.attachJointLBL.setFont(font)

        #options horizontal layout

        self.optionsLayout = QtGui.QHBoxLayout()

        if self.edit:

            #zero out button

            self.zeroBTN = QtGui.QPushButton(self)

            self.zeroBTN.setText('ZERO ALL')

            self.zeroBTN.setMaximumSize(QtCore.QSize(75, 50))

            #mirror edit out button

            self.mirrorPoseBTN = QtGui.QPushButton(self)

            self.mirrorPoseBTN.setText('MIRROR SELECTED POSE')

            #checkboxes

            self.moveMirrorsCHK = QtGui.QCheckBox(self)

            self.moveMirrorsCHK.setText('Sync Movement of Mirror Poses')

        self.info = QtGui.QLabel(self)

        if self.edit:

            self.info.setText(
                "Check and edit the facial poses to make them better match your character"
            )

        else:

            self.info.setText(
                "These poses are available for your character's facial rig, based on the Facial Joint Movers you have selected"
            )

        self.info.setWordWrap(1)

        self.h2.setSpacing(2)

        self.h2.addWidget(self.attachJointLBL)

        #main vertical layout

        self.verticalLayout = QtGui.QVBoxLayout(wid)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.verticalLayout.addLayout(self.h2)

        self.verticalLayout.addWidget(self.info)

        #pose list

        self.poseList = QtGui.QListWidget(self)

        self.verticalLayout.addWidget(self.poseList)

        QtCore.QMetaObject.connectSlotsByName(self)

        self.setWindowTitle("Available Facial Poses")

        if self.edit:

            #options area

            self.verticalLayout.addWidget(self.moveMirrorsCHK)

            self.verticalLayout.addLayout(self.optionsLayout)

            self.optionsLayout.addWidget(self.zeroBTN)

            self.optionsLayout.addWidget(self.mirrorPoseBTN)

        #continue button

        self.continueBTN = QtGui.QPushButton(self)

        self.continueBTN.setText('>> Continue >>')

        self.continueBTN.setObjectName("blueButton")

        font = self.continueBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.continueBTN.setFont(font)

        #back button

        self.backBTN = QtGui.QPushButton(self)

        self.backBTN.setText('<< Back <<')

        self.backBTN.setObjectName("blueButton")

        font = self.backBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.backBTN.setFont(font)

        #button layout on bottom

        self.h3 = QtGui.QHBoxLayout()

        self.verticalLayout.addLayout(self.h3)

        self.h3.setSpacing(2)

        self.h3.addWidget(self.backBTN)

        self.h3.addWidget(self.continueBTN)

        #self.verticalLayout.setContentsMargins(2,2,2,2)

        self.verticalLayout.setSpacing(3)

        #Make SDK transforms editable

        #hide facial mask controls and mask

        #show special eye and jaw movers

        #unhide jointMovers, make LRAs unselectable

        #connections

        self.currentFacialNodeCMB.currentIndexChanged.connect(
            self.faceChangedFn)

        #self.moverTree.itemClicked.connect(self.check_status)

        #self.continueBTN.pressed.connect(self.continueFn)

        #set the mask

        self.mask = face.FaceMask

        self.mask.active = True

        ### CONNECTS

        if self.edit:

            self.zeroBTN.pressed.connect(self.zeroAllFn)

        ### FILL UI

        ##############################

        self.refreshUI()
Пример #7
0
    def __init__(self, parent=getMayaWindow(), debug=0):

        QtGui.QMainWindow.__init__(self, parent)

        self.currentFace = None

        #facial folder

        facialDir = os.path.dirname(__file__)

        for f in utils.getUType('faceModule'):

            print 'jointMover_UI: Face initialized from:', f

            self.currentFace = face.FaceModule(faceNode=f)

        ### BUILD USER INTERFACE

        ##############################

        #create/set a central widget

        wid = QtGui.QWidget()

        self.setCentralWidget(wid)

        #setArt v2 stylesheet

        utils.setArtV2StyleSheet(wid, imageDirectory='/art2images')

        self.resize(315, 514)

        #top face module picker

        self.label = QtGui.QLabel(self)

        self.label.setText("FacialNode:")

        self.horizontalLayout = QtGui.QHBoxLayout()

        self.horizontalLayout.setSpacing(2)

        self.label.setMaximumSize(QtCore.QSize(78, 16777215))

        self.horizontalLayout.addWidget(self.label)

        self.currentFacialNodeCMB = QtGui.QComboBox(self)

        self.horizontalLayout.addWidget(self.currentFacialNodeCMB)

        #attachment joint

        self.h2 = QtGui.QHBoxLayout()

        self.attachJointLBL = QtGui.QLabel(self)

        self.attachJointLBL.setText("Face Attachment Joint:")

        self.h2.setSpacing(2)

        self.h2.addWidget(self.attachJointLBL)

        self.attachJointLINE = QtGui.QLineEdit(self)

        self.h2.addWidget(self.attachJointLINE)

        #main vertical layout

        self.verticalLayout = QtGui.QVBoxLayout(wid)

        self.verticalLayout.addLayout(self.horizontalLayout)

        self.verticalLayout.addLayout(self.h2)

        #joint mover tree

        self.moverTree = QtGui.QTreeWidget(self)

        self.moverTree.setObjectName("treeWidget")

        self.moverTree.headerItem().setText(0, "1")

        self.verticalLayout.addWidget(self.moverTree)

        self.moverTree.setHeaderHidden(True)

        QtCore.QMetaObject.connectSlotsByName(self)

        self.setWindowTitle("Select Joint Movers")

        #snap button

        self.continueBTN = QtGui.QPushButton(self)

        self.continueBTN.setText('>> Continue >>')

        self.continueBTN.setObjectName("blueButton")

        font = self.continueBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.continueBTN.setFont(font)

        #load button

        self.loadBTN = QtGui.QPushButton(self)

        self.loadBTN.setText('Template...')

        font = self.loadBTN.font()

        font.setBold(True)

        font.setPointSize(12)

        self.loadBTN.setFont(font)

        self.loadBTN.setMaximumSize(QtCore.QSize(75, 16777215))

        #button layout on bottom

        self.h3 = QtGui.QHBoxLayout()

        self.verticalLayout.addLayout(self.h3)

        self.h3.setSpacing(2)

        self.h3.addWidget(self.loadBTN)

        self.h3.addWidget(self.continueBTN)

        #connections

        self.moverTree.itemClicked.connect(self.check_status)

        self.continueBTN.pressed.connect(self.continueFn)

        #set the mask

        self.mask = self.currentFace.faceMask

        self.mask.active = True

        cmds.showHidden(self.currentFace.sdks)

        ### FILL UI

        ##############################

        self.attachJointLINE.setText('head')

        self.refreshUI()