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()
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()
def __init__(self, parent=getMayaWindow(), debug=0): QtGui.QMainWindow.__init__(self, parent) #facial folder #facialDir = os.path.dirname(__file__) ### BUILD USER INTERFACE ############################## #create/set a central widget wid = QtGui.QWidget() self.setCentralWidget(wid) #setArt v2 stylesheet utils.setArtV2StyleSheet(wid, imageDirectory='/art2images') self.verticalLayout = QtGui.QVBoxLayout(wid) self.verticalLayout.setSpacing(2) #top face module picker self.label = QtGui.QLabel(self) self.label.setText("FacialNode:") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.addWidget(self.label) self.currentFacialNodeCMB = QtGui.QComboBox(self) self.horizontalLayout.addWidget(self.currentFacialNodeCMB) self.resize(530, 390) self.verticalLayout.addLayout(self.horizontalLayout) self.page1 = QtGui.QFrame() self.page1.setMinimumSize(QtCore.QSize( 530, 380 )) self.page1.setMaximumSize(QtCore.QSize( 530, 380 )) self.page2 = QtGui.QFrame() self.page2.setMinimumSize(QtCore.QSize( 530, 380 )) self.page2.setMaximumSize(QtCore.QSize( 530, 380 )) self.page3 = QtGui.QFrame() self.page3.setMinimumSize(QtCore.QSize( 530, 380 )) self.page3.setMaximumSize(QtCore.QSize( 530, 380 )) self.page4 = QtGui.QFrame() self.page4.setMinimumSize(QtCore.QSize( 530, 380 )) self.page4.setMaximumSize(QtCore.QSize( 530, 380 )) self.stackedWidget = QtGui.QStackedWidget() self.stackedWidget.addWidget(self.page1) self.stackedWidget.addWidget(self.page2) self.stackedWidget.addWidget(self.page3) self.stackedWidget.addWidget(self.page4) self.verticalLayout.addWidget(self.stackedWidget) #set the image backdrops image = (os.path.dirname(__file__) + '\\process_splash_align_mask.png').replace('\\','/') self.page1.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_align_eyes.png').replace('\\','/') self.page2.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_snap.png').replace('\\','/') self.page3.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_goodbye.png').replace('\\','/') self.page4.setStyleSheet("background-image: url(" + image + ");") #Add next button self.nextBTN = QtGui.QPushButton(self) self.nextBTN.setText('NEXT') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.nextBTN.setFont(font) self.nextBTN.setGeometry(420, 300, 90, 25) #Add back button self.backBTN = QtGui.QPushButton(self) self.backBTN.setText('BACK') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.backBTN.setFont(font) self.backBTN.setGeometry(420, 330, 90, 25) self.backBTN.setHidden(True) self.stackedWidget.setCurrentIndex(0) #build and hide the 'mesh chooser' self.meshBTN = QtGui.QPushButton(self) self.meshBTN.setText('<<') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.meshBTN.setFont(font) self.meshBTN.setGeometry(0, 0, 25, 25) #build and hide the 'mesh chooser' self.snapBTN = QtGui.QPushButton(self) self.snapBTN.setText('SNAP') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.snapBTN.setFont(font) self.snapBTN.setGeometry(300, 330, 90, 25) self.meshLBL = QtGui.QLabel(self) self.meshLBL.setText("Facial Mesh:") self.meshEdit = QtGui.QLineEdit(self) self.hMeshLayout = QtGui.QHBoxLayout() self.hMeshLayout.addWidget(self.meshLBL) self.hMeshLayout.addWidget(self.meshEdit) self.hMeshLayout.addWidget(self.meshBTN) self.hMeshLayout.setGeometry(QtCore.QRect(100, 300, 300, 25)) #close button self.closeBTN = QtGui.QPushButton(self) self.closeBTN.setText('Thank you Masky,\nI will alsways remember you..') font = QtGui.QFont() font.setPointSize(16) font.setBold(True) self.closeBTN.setFont(font) self.closeBTN.setGeometry(25, 250, 500, 70) self.closeBTN.setHidden(True) #button connects self.nextBTN.clicked.connect(self.nextFn) self.backBTN.clicked.connect(self.backFn) self.meshBTN.clicked.connect(self.meshFn) self.snapBTN.clicked.connect(self.snapFn) self.closeBTN.clicked.connect(self.close) self.snapVis(hide=True) self.refreshUI() #show joint movers and sdks cmds.showHidden(self.currentFace.jointMovers) cmds.showHidden(self.currentFace.sdks)
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()
def __init__(self, parent=getMayaWindow(), debug=0): QtGui.QMainWindow.__init__(self, parent) #facial folder #facialDir = os.path.dirname(__file__) ### BUILD USER INTERFACE ############################## #create/set a central widget wid = QtGui.QWidget() self.setCentralWidget(wid) #setArt v2 stylesheet utils.setArtV2StyleSheet(wid, imageDirectory='/art2images') self.verticalLayout = QtGui.QVBoxLayout(wid) self.verticalLayout.setSpacing(2) #top face module picker self.label = QtGui.QLabel(self) self.label.setText("FacialNode:") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.addWidget(self.label) self.currentFacialNodeCMB = QtGui.QComboBox(self) self.horizontalLayout.addWidget(self.currentFacialNodeCMB) self.resize(530, 390) self.verticalLayout.addLayout(self.horizontalLayout) self.page1 = QtGui.QFrame() self.page1.setMinimumSize(QtCore.QSize(530, 380)) self.page1.setMaximumSize(QtCore.QSize(530, 380)) self.page2 = QtGui.QFrame() self.page2.setMinimumSize(QtCore.QSize(530, 380)) self.page2.setMaximumSize(QtCore.QSize(530, 380)) self.page3 = QtGui.QFrame() self.page3.setMinimumSize(QtCore.QSize(530, 380)) self.page3.setMaximumSize(QtCore.QSize(530, 380)) self.page4 = QtGui.QFrame() self.page4.setMinimumSize(QtCore.QSize(530, 380)) self.page4.setMaximumSize(QtCore.QSize(530, 380)) self.stackedWidget = QtGui.QStackedWidget() self.stackedWidget.addWidget(self.page1) self.stackedWidget.addWidget(self.page2) self.stackedWidget.addWidget(self.page3) self.stackedWidget.addWidget(self.page4) self.verticalLayout.addWidget(self.stackedWidget) #set the image backdrops image = (os.path.dirname(__file__) + '\\process_splash_align_mask.png').replace('\\', '/') self.page1.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_align_eyes.png').replace('\\', '/') self.page2.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_snap.png').replace('\\', '/') self.page3.setStyleSheet("background-image: url(" + image + ");") image = (os.path.dirname(__file__) + '\\process_splash_goodbye.png').replace('\\', '/') self.page4.setStyleSheet("background-image: url(" + image + ");") #Add next button self.nextBTN = QtGui.QPushButton(self) self.nextBTN.setText('NEXT') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.nextBTN.setFont(font) self.nextBTN.setGeometry(420, 300, 90, 25) #Add back button self.backBTN = QtGui.QPushButton(self) self.backBTN.setText('BACK') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.backBTN.setFont(font) self.backBTN.setGeometry(420, 330, 90, 25) self.backBTN.setHidden(True) self.stackedWidget.setCurrentIndex(0) #build and hide the 'mesh chooser' self.meshBTN = QtGui.QPushButton(self) self.meshBTN.setText('<<') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.meshBTN.setFont(font) self.meshBTN.setGeometry(0, 0, 25, 25) #build and hide the 'mesh chooser' self.snapBTN = QtGui.QPushButton(self) self.snapBTN.setText('SNAP') font = QtGui.QFont() font.setPointSize(12) font.setBold(True) self.snapBTN.setFont(font) self.snapBTN.setGeometry(300, 330, 90, 25) self.meshLBL = QtGui.QLabel(self) self.meshLBL.setText("Facial Mesh:") self.meshEdit = QtGui.QLineEdit(self) self.hMeshLayout = QtGui.QHBoxLayout() self.hMeshLayout.addWidget(self.meshLBL) self.hMeshLayout.addWidget(self.meshEdit) self.hMeshLayout.addWidget(self.meshBTN) self.hMeshLayout.setGeometry(QtCore.QRect(100, 300, 300, 25)) #close button self.closeBTN = QtGui.QPushButton(self) self.closeBTN.setText( 'Thank you Masky,\nI will alsways remember you..') font = QtGui.QFont() font.setPointSize(16) font.setBold(True) self.closeBTN.setFont(font) self.closeBTN.setGeometry(25, 250, 500, 70) self.closeBTN.setHidden(True) #button connects self.nextBTN.clicked.connect(self.nextFn) self.backBTN.clicked.connect(self.backFn) self.meshBTN.clicked.connect(self.meshFn) self.snapBTN.clicked.connect(self.snapFn) self.closeBTN.clicked.connect(self.close) self.snapVis(hide=True) self.refreshUI() #show joint movers and sdks cmds.showHidden(self.currentFace.jointMovers) cmds.showHidden(self.currentFace.sdks)