Example #1
0
	def shuffleSlice(self,*args):
		getSel = pm.ls(sl=1,fl=1)
		cols = pm.intSliderGrp("colsSlider",q=1,v=1)
		if len(getSel)>=1 and len(getSel)>=cols:
			array = getSel
			self.result = randomSplitList().randListFunc(array,cols)
			if pm.radioButtonGrp("radioBtnGrp",q=1,sl=1) == 1:
				pm.text("warningText",e=1,l="---===List All Parts===---")
				pm.textScrollList("listScroll",e=1,ra=1)
				for i in range(0,len(self.result)):
					pm.textScrollList("listScroll",e=1,append="{0}{1}".format("ShuffledPart_",(i+1)))
			elif pm.radioButtonGrp("radioBtnGrp",q=1,sl=1) == 2:
				pm.textScrollList("listScroll",e=1,ra=1)
				allGrps=[]
				for i in range(0,len(self.result)):
					grp = pm.group(n=("{0}{1}".format("ShuffledPart_",(i+1))),em=1)
					pm.parent(self.result[i],grp)
					allGrps.append(grp)
				pm.select(allGrps,r=1)
		elif len(getSel)==0:
			pm.textScrollList("listScroll",e=1,ra=1)
			pm.text("warningText",e=1,l="---===Select Something!!!===---")
		elif len(getSel)>0 and len(getSel)<cols:
			pm.textScrollList("listScroll",e=1,ra=1)
			pm.text("warningText",e=1,l="---===Too Much Parts!!!===---")
Example #2
0
    def options_box_setup(self):
        self.optvars.add('zSplitBlendShapesBlendDistance', 'float', 2)
        self.optvars.add('zSplitBlendShapesPlane', 'int', 2)
        self.optvars.add('zSplitBlendShapesPlaneOrigin', 'float', 0)
        self.optvars.add('zSplitBlendShapesNamingPattern', 'string', '<name>_<L|R>')
        
        parent = pm.columnLayout(adjustableColumn=1)

        pm.optionMenuGrp('sbsList', label='Blend shape:', cc=self.fill_blend_target)
        self.fill_blend_shapes('sbsList|OptionMenu', False)

        pm.optionMenuGrp('sbsLeftOutput', label='Left output:')
        self.fill_blend_shapes('sbsLeftOutput|OptionMenu', True)

        pm.optionMenuGrp('sbsRightOutput', label='Right output:')
        self.fill_blend_shapes('sbsRightOutput|OptionMenu', True)

        # If something is selected, try to find a blend shape to select by default.
        selection = pm.ls(sl=True)
        if selection:
            history = pm.listHistory(selection)
            blend_shapes = pm.ls(history, type='blendShape')
            if blend_shapes:
                default_blend_shape = blend_shapes[0]
                self.select_blend_shape(default_blend_shape)

        pm.optionMenuGrp('sbsTargetList', label='Blend target:')
        self.fill_blend_target()

        pm.floatSliderGrp('sbsBlendDistance', label='Blend distance', field=True, min=0, max=10, fieldMinValue=0, fieldMaxValue=1000)
        pm.radioButtonGrp('sbsPlane', label='Plane:', numberOfRadioButtons=3, labelArray3=('XY', 'YZ', 'XZ'))
        pm.floatSliderGrp('sbsPlaneOrigin', label='Plane origin', v=0, min=0, max=1000)
        pm.textFieldGrp('sbsNamingPattern', label='Naming pattern')
 def createRadioBtnObj( self ):
     """ creates a RadioButton Element """    
     
     if mel.scrollLayout(self._scrollField, ex=True):
         
         mel.setParent( self._ActionCol)
         
         mel.separator(h=10,style="none")    
                      
         ObjUIpath = mel.frameLayout(mw=10,l="Radio Buttons")
         mel.columnLayout('sampleCol')
         mel.separator(h=10,style="none")
         
         mel.radioButtonGrp('rbg',nrb=3,
             l="Big Options",
             select=self.gSampleState['rbg'],
             la3=("Option 1", "Option 2", "Option 3"))
         mel.radioButtonGrp('rbg2',nrb=3,
             l="Little Options",
             select=self.gSampleState['rbg'],
             la3=("Option 4", "Option 5", "Option 6"))
         
         mel.separator(h=10,style="none")
         
         return ObjUIpath
    def setFingerSetup(self, fingerSetup):

        fingers = ['Thumb', 'Index', 'Middle', 'Ring', 'Pinky']
        for finger in fingers:
            if finger in fingerSetup[0]:
                pm.checkBox(self.handFingersInterface[finger]['checkBox'],
                            e=True,
                            v=1)
                pm.radioButtonGrp(
                    self.handFingersInterface[finger]['radioBtn'],
                    e=True,
                    sl=fingerSetup[0][finger])
            else:
                pm.checkBox(self.handFingersInterface[finger]['checkBox'],
                            e=True,
                            v=0)

            if finger in fingerSetup[1]:
                pm.checkBox(self.footFingersInterface[finger]['checkBox'],
                            e=True,
                            v=1)
                pm.radioButtonGrp(
                    self.footFingersInterface[finger]['radioBtn'],
                    e=True,
                    sl=fingerSetup[1][finger])
            else:
                pm.checkBox(self.footFingersInterface[finger]['checkBox'],
                            e=True,
                            v=0)
Example #5
0
def armTypeVis():
    armType=pm.radioButtonGrp("armType_Btn",q=True, sl=True)
    if armType == 1:
        ik_val = 1
        fk_val = 0
        ikfk_val = 0
    if armType == 2:
        ik_val = 0
        fk_val = 1
        ikfk_val = 0
    if armType == 3:
        ik_val = 1
        fk_val = 1
        ikfk_val = 1

    pm.text('ikStyleText', e=True, vis=ik_val)
    pm.optionMenu('ikIcon_Menu',e=True, vis=ik_val)
    pm.text('fkStyle_Text', e=True, vis=fk_val)
    pm.optionMenu('fkIcon_Menu',e=True, vis=fk_val)
    pm.optionMenu('handIcon_menu',e=True, vis=ikfk_val)
    pm.text('handStyle_Text',e=True,vis=ikfk_val)
    pm.text('pvStyle_Text',e=True, vis=ikfk_val)
    pm.optionMenu('pvIcon_menu',e=True,vis=ikfk_val)
    pm.text('PV_text',e=True,vis=ik_val)
    pm.radioButtonGrp('addPVElbow_btn',e=True,vis=ik_val)
def ui():
    columnWidth1st = 120

    if pm.window('AlembicMasterUI', q=True, exists=True) : pm.deleteUI('AlembicMasterUI')

    with pm.window('AlembicMasterUI',menuBar=True, s=True):
        with pm.columnLayout(adj=True):
            with pm.frameLayout( label='Export Alembic', mw=3, mh=3,cll=True, bs='etchedIn'):
                with pm.columnLayout(adj=True):
                    with pm.rowLayout(nc=3, adj=2):
                        pm.text(label='file :', w=columnWidth1st, align='right')
                        pm.textField('path_TFG', text="D:/")
                        pm.symbolButton( image='navButtonBrowse.png', c=pm.Callback( browseIt, 'path_TFG', 0, 'Alembic (*.abc)'  ) )
                        
                    with pm.rowLayout(nc=2, adj=2 ):
                        startFrame=pm.animation.playbackOptions(q=1, minTime=1)
                        EndFrame=pm.animation.playbackOptions(q=1, maxTime=1)
                        
                    with pm.rowLayout(nc=2, adj=2):
                        pm.text(l='',w=columnWidth1st)
                        pm.button(l='Export',bgc=(0.19,0.29,0.19),c=pm.Callback(exportScene))
                        
                    pm.radioButtonGrp( 'timeRange_RBG', label='Time range :', 
                        labelArray3=['Camera Setting','Time Slider', 'Start/End'], 
                        numberOfRadioButtons=3, 
                        select=1, 
                        cw = [1,columnWidth1st],
                        on1=pm.Callback( callback_timerangeSelect, 1), 
                        on2=pm.Callback( callback_timerangeSelect, 2),
                        on3=pm.Callback( callback_timerangeSelect, 3),
                        )
                        
                    pm.floatFieldGrp( 'timeRange_FFG', label='Start / End : ', value1=1, value2=24, numberOfFields=2, cw = [1,117], en=False)
            
            with pm.frameLayout( label='Rebuild Scene', mw=3, mh=3,cll=True, bs='etchedIn'):
                with pm.columnLayout(adj=True):
                    with pm.rowLayout(nc=2, adj=2):
                        pm.text(l='',w=columnWidth1st)
                        pm.button(l='New Scene', bgc=(0.24,0.49,0.24), c=pm.Callback(buildscene))
                    
            with pm.frameLayout( label='Import Alembic', mw=3, mh=3,cll=True, bs='etchedIn'):
                with pm.columnLayout(adj=True):
                    with pm.rowLayout(nc=3, adj=2):
                        pm.text(label='file :', w=columnWidth1st, align='right')
                        pm.textField('path_ABC2', text="D:/")
                        pm.symbolButton( image='navButtonBrowse.png', c=pm.Callback( browseIt, 'path_ABC2', 1, 'Alembic (*.abc)' ) )

                    with pm.rowLayout(nc=2, adj=2):
                        pm.text(l='',w=columnWidth1st)
                        pm.button(l='Import', bgc=(0.19,0.19,0.28), c=pm.Callback(importAbcFile))
                        
            with pm.frameLayout( label='Save Scene', mw=3, mh=3,cll=True, bs='etchedIn'):
                with pm.columnLayout(adj=True):
                    with pm.rowLayout(nc=3, adj=2):
                        pm.text(label='file :', w=columnWidth1st, align='right')
                        pm.textField('path_TFG2', text="D:/")
                        pm.symbolButton( image='navButtonBrowse.png', c=pm.Callback( browseIt, 'path_TFG2', 0 ) )
                    with pm.rowLayout(nc=2, adj=2):
                        pm.text(l='',w=columnWidth1st)
                        pm.button(l='Save Scene', w=64, bgc=(0.22,0.23,0.43), c=pm.Callback(saveScene))
def rh_dynamicJoint():
    #Create a variable for the window name
    winName = 'DynamicJoint'
    winTitle = 'rh_DynamicJoint_prototype_v0.23'
    #Delete the window if it exists
    if pm.window(winName, exists = True):
        pm.deleteUI(winName, window = True)
    #Build the main window
    pm.window(winName, title = winTitle, sizeable = True)
    #name field
    pm.textFieldGrp('NameTFG',label = 'Set up name:', text = 'Ribbon45hp', ed = True)
    pm.columnLayout(adjustableColumn = True)
    #side
    pm.radioButtonGrp('ColSel',nrb = 3,label = 'Side:',la3 = ['l','m','r'],sl = 1)    
    pm.columnLayout(adjustableColumn = True)
    #axis
    pm.radioButtonGrp('AxisSel',nrb = 3,label = 'Axis:',la3 = ['x','y','z'],sl = 1)    
    pm.columnLayout(adjustableColumn = True)
    #ccSize
    pm.floatSliderGrp('Cc_Size',label = 'Control Size:',f = True,min = 1,max = 10,fmn = 1,fmx = 100,v = 1)
    pm.columnLayout(adjustableColumn = True)
    #joint number
    pm.intSliderGrp('Joint_Num',label = 'Number Of Joints:',f = True,min = 4,max = 49,fmn = 1,fmx = 100,v = 4)
    pm.columnLayout(adjustableColumn = True)
    
    #inbound
    pm.button(label = 'Ready For Tasking', command = 'inbound()')
    pm.columnLayout(adjustableColumn = True)
    #bringTheRain
    pm.button(label = 'Target Acquire', command = 'bringTheRain()')
    pm.columnLayout(adjustableColumn = True)    
    
    #Show the window
    pm.showWindow(winName)
    pm.window(winName, edit = True, width = 378, height = 210)
Example #8
0
 def exportButton(self, mayaFalse):
     if pm.radioButtonGrp(self.exportOptionGrp, q=True, select=True) == 1:
         #print 'rig'
         self.exporter_rig()
     elif pm.radioButtonGrp(self.exportOptionGrp, q=True, select=True) == 2:
         #print 'anim'
         self.exporter_anim()
     elif pm.radioButtonGrp(self.exportOptionGrp, q=True, select=True) == 0:
         pm.confirmDialog(title = u'Prism 出力ツール', message = u'種類を選んで下さい \n Please select rig or motion')
 def __init__(self, inst):
     self.armModuleFrame = pm.frameLayout( parent = inst.simpleSetup_layout, w =244, label='simpleArm', borderStyle='out', cll = True, cl = True )
     self.armSide_RBGRP = pm.radioButtonGrp( label='Choose Arm Side', labelArray3=['Left', 'Center', 'Right'], numberOfRadioButtons=3 )
     self.armSpace_RBGRP = pm.radioButtonGrp( label='Choose Arm Space', labelArray3=['Top', 'Middle', 'Bottom'], numberOfRadioButtons=3 )
     self.armAttribute_ChkBoxGRP = pm.checkBoxGrp( parent = self.armModuleFrame, label = 'Arm Attributes   ', cw = ( [ 1, 90 ], [ 2, 70 ], [ 3, 100 ], [ 4, 60 ] ),numberOfCheckBoxes=3, labelArray3=['Stretchy', 'Elbow Pinning', 'Bendy Arms'], v1 = 1, v2 = 1, v3 =  1 )
     
     self.armModulebutton_layout = pm.rowColumnLayout(parent = self.armModuleFrame, nc = 3 )
     self.buildArm_Btn = pm.button(parent = self.armModulebutton_layout, w = 120, h = 24, label="Build Arm", command = self.build_armMod)
     self.mirrorArm_Btn = pm.button( parent = self.armModulebutton_layout, w = 120, h = 24, label = 'Mirror Arm', c = self.exe_MirrorArm )
     self.collapseArmModule_Btn = pm.button( parent = self.armModulebutton_layout, w = 120, h = 24, label = 'Collapse Arm Module', c = self.exe_collapseArmModule )
Example #10
0
 def getFingerSetup(self):
     handFingerSetup = []
     footFingerSetup = []
     fingers = ['Thumb', 'Index', 'Middle', 'Ring', 'Pinky']
     for finger in fingers:
         if pm.checkBox(self.handFingersInterface[finger]['checkBox'], q=True, v=True):
             folds = pm.radioButtonGrp(self.handFingersInterface[finger]['radioBtn'], q=True, sl=True)
             handFingerSetup.append((finger, folds))
         if pm.checkBox(self.footFingersInterface[finger]['checkBox'], q=True, v=True):
             folds = pm.radioButtonGrp(self.footFingersInterface[finger]['radioBtn'], q=True, sl=True)
             footFingerSetup.append((finger, folds))
     return handFingerSetup, footFingerSetup
Example #11
0
 def create(self):
     
     
      # this creates the actual GUI components
      #** returns the last component (the separator) so that the next group can be attached to it
     
     if self.control == '':
         # radioButtonGrp
         self.row01 = pm.radioButtonGrp( numberOfRadioButtons = 3, label = '%s' % self.name, labelArray3=['A+ -A', 'B+ -B', 'C+ -C'], onCommand = pm.Callback(self.radioCommand))
         self.row02 = pm.radioButtonGrp(  numberOfRadioButtons = 2, shareCollection = self.row01, label='', labelArray2=['D', 'F'], onCommand = pm.Callback(self.radioCommand))
         pm.formLayout( self.layout , edit=1, attachForm=[[self.row01, "top", 5], [self.row01, "left", 5]])
         pm.formLayout( self.layout , edit=1, attachForm=[self.row02, "left", 5, ], attachControl=[self.row02, "top", 5, self.row01])
         
         
         # intField for Grade
         self.intField = pm.intFieldGrp( numberOfFields = 1, label = 'Grade', changeCommand = pm.Callback(self.totalCommand), backgroundColor = [1,0,0])
         self.comments = pm.text( label = 'comments')
         
         # comment scrollField
         #scrollField = self.scrollField.create()
         self.separator = pm.separator( height=15, width=460, style='in' )
         
         # arranging components
         pm.formLayout( self.layout , edit=1, attachForm=[self.intField, "top", 5], attachControl=[self.intField, "top", 10, self.row02])
         pm.formLayout( self.layout , edit=1, attachForm=[self.scrollField, "left", 140], attachControl=[self.scrollField, "top", 10, self.intField])
         pm.formLayout( self.layout , edit=1, attachForm=[self.comments, "left", 60], attachControl=[self.comments, "top", 10, self.intField])
         pm.formLayout( self.layout , edit=1, attachForm=[self.separator, "left", 60], attachControl=[self.separator, "top", 10, self.scrollField])
     
         return self.separator
     
     else:
         # radioButtonGrp
         self.row01 = pm.radioButtonGrp( numberOfRadioButtons = 3, label = '%s' % self.name, labelArray3=['A+ -A', 'B+ -B', 'C+ -C'], onCommand = pm.Callback(self.radioCommand))
         self.row02 = pm.radioButtonGrp(  numberOfRadioButtons = 2, shareCollection = self.row01, label='', labelArray2=['D', 'F'], onCommand = pm.Callback(self.radioCommand))
         pm.formLayout( self.layout , edit=1, attachForm=[[self.row01, "top", 5], [self.row01, "left", 5]] , attachControl=[self.row01, "top", 5, self.control])
         pm.formLayout( self.layout , edit=1, attachForm=[self.row02, "left", 5, ], attachControl=[self.row02, "top", 5, self.row01])
         
         # intField for Grade
         self.intField = pm.intFieldGrp( numberOfFields = 1, label = 'Grade', cc = pm.Callback(self.totalCommand)
                                        , backgroundColor = [1,0,0])
         self.comments = pm.text( label = 'comments')
         
         # comment scrollField
         #scrollField = self.scrollField.create()
         self.separator = pm.separator( height=15, width=460, style='in' )
         
         # arranging components
         pm.formLayout( self.layout , edit=1, attachForm=[self.intField, "top", 5], attachControl=[self.intField, "top", 10, self.row02])
         pm.formLayout( self.layout , edit=1, attachForm=[self.scrollField, "left", 140], attachControl=[self.scrollField, "top", 10, self.intField])
         pm.formLayout( self.layout , edit=1, attachForm=[self.comments, "left", 60], attachControl=[self.comments, "top", 10, self.intField])
         pm.formLayout( self.layout , edit=1, attachForm=[self.separator, "left", 60], attachControl=[self.separator, "top", 10, self.scrollField])
     
         return self.separator
Example #12
0
 def option_box_load(self):
     pm.floatSliderGrp('sbsBlendDistance',
                       edit=True,
                       v=self.optvars['zSplitBlendShapesBlendDistance'])
     pm.radioButtonGrp('sbsPlane',
                       edit=True,
                       select=self.optvars['zSplitBlendShapesPlane'])
     pm.floatSliderGrp('sbsPlaneOrigin',
                       edit=True,
                       v=self.optvars['zSplitBlendShapesPlaneOrigin'])
     pm.textFieldGrp('sbsNamingPattern',
                     edit=True,
                     text=self.optvars['zSplitBlendShapesNamingPattern'])
Example #13
0
    def loadBtn(self, *a):
        home_team = pm.textFieldGrp('home_team_txt', q=True, text=True)
        diag = pm.checkBox('diagnose_tgl', q=True, value=True)

        if home_team == '':
            pm.warning(
                'Build Scene  ERROR Please enter a team name / tricode before proceeding.'
            )

        if (pm.radioButtonGrp('matchup_toggle', q=True, sl=True)) == 1:
            build.loadTeamsStadium(home_team, diagnostic=diag)

        elif (pm.radioButtonGrp('matchup_toggle', q=True, sl=True)) == 2:
            away_team = pm.textFieldGrp('away_team_txt', q=True, text=True)
            build.loadTeamsStadium(home_team, away_team, diagnostic=diag)
Example #14
0
    def displayOptions( self ):
        """Build the interface"""
        self.interface['TimeRange'] = cmds.radioButtonGrp( numberOfRadioButtons=2, label='Time Range', labelArray2=['Time Slider', 'Start/End'], onCommand=self.disableTimeRange )
        self.interface['StartTime'] = cmds.intFieldGrp( label='Start Time' )
        self.interface['EndTime']   = cmds.intFieldGrp( label='End Time' )
        self.interface['Focals']    = cmds.textFieldGrp( label='Focals' )
        self.interface['Cameras']   = cmds.textScrollList( allowMultiSelection=True, width=200, height=100 )
        # self.interface['CamerasLabel']   = cmds.text( label='Cameras' )

        self.formAttachPosition()

        cmds.formLayout(
            self.optionsForm, e=True,
            attachForm=(
                [ self.interface['TimeRange'], 'top', 10 ],
                [ self.interface['Cameras'], 'bottom', 100 ],
                [ self.interface['Cameras'], 'left', 150 ],
            ),
            attachControl=(
                [ self.interface['StartTime'], 'top', 0, self.interface['TimeRange'] ],
                [ self.interface['EndTime'], 'top', 0, self.interface['StartTime'] ],
                [ self.interface['Focals'], 'top', 0, self.interface['EndTime'] ],
                [ self.interface['Cameras'], 'top', 10, self.interface['Focals'] ],
                # [ self.interface['CamerasLabel'], 'top', 10, self.interface['Focals'] ],
                # [ self.interface['CamerasLabel'], 'right', -90, self.interface['Cameras'] ],
            ),
            attachNone=(
                [ self.interface['Cameras'], 'left' ],
                [ self.interface['Cameras'], 'right' ],
            )
        )
        self.editMenuResetCmd() # Set the default values in the interface
Example #15
0
    def set_json_location(self):
        json_location = pm.fileDialog2(dialogStyle=2,
                                       fileFilter="JSON File (*.json);;",
                                       fileMode=0,
                                       okc=u"选择文件",
                                       cc=u"取消")
        if os.path.isfile(json_location[0]):
            pm.textFieldButtonGrp("ARFileLocationField",
                                  e=True,
                                  text=json_location[0])
            self.ar_file_location = json_location[0]

        else:
            dict_data = {}
            mode = pm.radioButtonGrp(self.work_mode_control, q=True, sl=True)
            if mode == 1:
                dict_data = channel.face_unity_channels
            elif mode == 2:
                dict_data = channel.arkit_channels
            write_json(dict_data=dict_data, file_path=json_location[0])
            pm.textFieldButtonGrp("ARFileLocationField",
                                  e=True,
                                  text=json_location[0])
            self.ar_file_location = json_location[0]

        self.init_ar_channel_options(json_file=json_location[0])
        pm.optionVar(sv=('ARFaceEditor_jsonFileLocation',
                         self.ar_file_location))

        if pm.textScrollList(self.ar_item_scroll, q=True, ni=True) > 1:
            pm.textScrollList(self.ar_item_scroll, e=True, sii=1)
            self.selected_ar_item_in_scroll()

        return
Example #16
0
    def __init__(self):
        global offsetCurveOptions

        with pdil.ui.singleWindow(self.id):
            with columnLayout():
                self.mode = radioButtonGrp(
                    nrb=3,
                    la3=['Playback Range', 'User Defined', 'All'],
                    on1=Callback(self.setPlaybackMode),
                    on2=Callback(self.setUserMode),
                    on3=Callback(self.setAllMode),
                )

                with rowColumnLayout(nc=2) as self.range:
                    self.start = intField()
                    self.end = intField()

                with rowColumnLayout(nc=2):
                    #checkBox(l='Autokey', en=False)
                    button(label='Apply', c=Callback(self.apply))

            if offsetCurveOptions.uiMode == 1:
                self.setPlaybackMode()
            elif offsetCurveOptions.uiMode == 2:
                self.setUserMode()
            elif offsetCurveOptions.uiMode == 3:
                self.setAllMode()
Example #17
0
    def selected_ar_channel(self):
        u"""选择AR通道

        :return:
        """
        current_channel = pm.optionMenuGrp(self.ar_channel_options,
                                           q=True,
                                           value=True)
        pm.textScrollList(self.ar_item_scroll, e=True, ra=True)
        if len(self.ar_data.get_channel_joints(current_channel)) > 0:
            pm.textScrollList(
                self.ar_item_scroll,
                e=True,
                a=self.ar_data.get_channel_joints(current_channel))
            pm.textScrollList(self.ar_item_scroll, e=True, sii=1)
            self.selected_ar_item_in_scroll()

        # print(u"已选择通道:{}".format(current_channel))

        work_mode = [
            "FaceUnityPoseLib", "ArkitPoseLib"
        ][pm.radioButtonGrp(self.work_mode_control, q=True, sl=True) - 1]
        if pm.objExists(work_mode):
            pm.connectControl('arIDControlSlider',
                              '{}.{}'.format(work_mode, current_channel))

        return
Example #18
0
def setColor(color, *args):
    
    # Get current AOV name
    aov = pc.radioButtonGrp(uiWidgets['aovs'], q=1, select=1)
    
    if aov == 1:
        aovName = 'mtoa_constant_rgbMask'
    elif aov == 2:
        aovName = 'mtoa_constant_rgbMask1'
    elif aov == 3:
        aovName = 'mtoa_constant_rgbMask2'
    elif aov == 4:
        aovName = 'mtoa_constant_rgbMask3'
        
    if aovName is None:
        raise Exception('Error while determining which AOV to focus on.')
    
    print "AOV Name: %s" % aovName
    
    listSel = pc.ls(sl=1)
    
    if len(listSel) == 0:
        pc.confirmDialog(t="Error", message="Nothing selected.", icon='critical')
    else:
        for sel in listSel:
            recursiveAssign(aovName, sel, color)
Example #19
0
def inbound():
    
    global jointGuides,setUpName,jointGuidesGrp,side
    setUpName = pm.textFieldGrp('NameTFG', tx = True,q = True)
    colorSel = pm.radioButtonGrp('ColSel',q = True,sl = True) 
    
    if colorSel == 1:
        side = 'l'
    elif colorSel == 2:    
        side = 'm'
    elif colorSel == 3:    
        side = 'r'
        
    numOfJoints = pm.intSliderGrp('Joint_Num',q = True,v = True)   
    jointGuidesGrp = pm.group(em = 1,n = getUniqueName(side,setUpName + 'Gud', 'grp'))                
        
    for num in range(numOfJoints):
        loc = pm.spaceLocator(n = getUniqueName(side,setUpName,'loc'))
        pm.move(0,num * 2,0,loc)
        jointGuides.append(loc)
        loc.setParent(jointGuidesGrp)
    
    jointGuides.reverse()
    for num,loc in enumerate(jointGuides):
        if num < (len(jointGuides) - 1):
            jointGuides[num].setParent(jointGuides[num + 1])
    jointGuides.reverse()   
Example #20
0
def populateList():    
    # Get shader type
    shaderSel = pc.radioButtonGrp(uiWidgets['shaderType'], q=1, select=1)
    
    if shaderSel == 1:
        shaderType = 'lambert'
    elif shaderSel == 2:
        shaderType = 'blinn'
    elif shaderSel == 3:
        shaderType = 'phong'
        
    # Get shader prefix
    shaderPrefix = pc.textField(uiWidgets['shadersPrefix'], q=1, text=1)
    
    if len(shaderPrefix) == 0:
        listShaders = pc.ls(exactType=shaderType)
    else:
        listShaders = pc.ls(shaderPrefix+'*', exactType=shaderType)

    if len(listShaders) == 0:
        pc.confirmDialog(t="Error", message="No shaders fitting the given paramaters has been found.", icon='critical')
        exit(1)
    elif len(listShaders) > 0:
        pc.confirmDialog(t="Shaders found", message=str(len(listShaders))+" shader(s) found. Click confirm to continue.")
    else:
        exit("Unknown error.")
    
#    for info in infos.keys():
#        print "#######################"
#        print "### Shader: '%s'" % info
#        print " - Found %s shape(s)" % len(infos[info])
#        print "Shapes list: %s " % infos[info]
        
    return listShaders
Example #21
0
def MakeRadioButtonGroup(label, buttonTitlesTuple, onChangeCommand, vertical,
                         leftColumnWidth=__LEFT_COLUMN_WIDTH__, annotation=None):
    """
    Creates a radio button group.
    
    :param label: text label for the group as a whole. 
    :param buttonTitlesTuple: tuple (or list) of titles for each button.
    :param onChangeCommand: bound method to be called when a button is selected.
    :param vertical: True = group will be laid out vertically, False = horizontally.
    :param leftColumnWidth: float, width of label column.
    :param annotation: toolTip annotation, or None. 
    """
    numberOfButtons = len(buttonTitlesTuple)
    if(numberOfButtons < 1 or numberOfButtons > 4):
        raise ValueError("Attempt to create radioButtonGrp with %d buttons (expected 1-4)." % numberOfButtons)
    
    buttonKwargs = { "label" : label,
                     ("labelArray%d" % numberOfButtons) : buttonTitlesTuple,
                     "numberOfRadioButtons" : numberOfButtons,
                     "columnAttach" : (2, "left", 0),
                     "vertical" : vertical,
                     "select" : 1 }
    if(onChangeCommand is not None):
        buttonKwargs["changeCommand"] = onChangeCommand
    if(annotation is not None):
        buttonKwargs["annotation"] = annotation
    
    buttonGroup = pm.radioButtonGrp(**buttonKwargs)
    
    buttonGroup.columnWidth((1, leftColumnWidth))
    for index in xrange(numberOfButtons - 1):
        buttonGroup.columnWidth((index + 2, 80))
    
    return buttonGroup
Example #22
0
def renaming():
    preName = pm.textFieldGrp('pre',q = 1,tx = 1)
    
    sideB = pm.radioButtonGrp('side',q = 1,sl = 1)
    sideList = ['l','r','m']
    
    objName = pm.textFieldGrp('obj',q = 1,tx = 1)
    startNum = pm.textFieldGrp('starNum',q = 1,tx = 1)
    paddingNum = pm.textFieldGrp('paddingNum',q = 1,tx = 1)
    suffixName = pm.textFieldGrp('suffix',q = 1,tx = 1)
    jointEnd = pm.checkBox('je',q = 1,v = 1)
    
    sels = pm.ls(sl = 1)
    
    for num,sel in enumerate(sels):
    
        if len(str(startNum)) < paddingNum:
            number = str(0) + str(startNum)
        
        preNames = ''
        
        if preName != '':
            preNames = preName + '_'
            
        name = preNames + objName + '_' + sideList[sideB] + '_' + number + '_' + suffixName
         
        pm.rename(sel,name)
    
        if jointEnd == 1:
            name = preNames + objName + '_' + sideList[sideB] + '_' + number + '_' + 'je'
            pm.rename(sels[-1],name)
            print name
        startNum = int(startNum) + 1
    def UI_exporter(self, *mayaFalse):
        #setting basic UI height and width
        winWidth = 500
        winHeight = 300

        # checking for duplicate windows
        windowID = 'AdvSkeExporter'
        if pm.window(windowID, exists=True):
            pm.deleteUI(windowID)
        #re-adjusting UI if UI is not correct
        if pm.windowPref('AdvSkeExporter', q=True, height = True) != winHeight or pm.windowPref('AdvSkeExporter', q=True, width = True) != winWidth:
            pm.windowPref('AdvSkeExporter', remove=True)

        # creating window
        pm.window(windowID, title=u'Prism Exporter | Ver 2018 / 06 / 06', widthHeight=(winWidth, winHeight))

        rigExportFrame = pm.frameLayout(u'出力', width=500, nch = 10, labelIndent = 20)
        nameFormLayout = pm.formLayout('nameForm', parent = rigExportFrame, nch = 30, width = 500, height = 500, numberOfDivisions = 100)

        self.exportPathText = pm.text(label = u'出力先:' , parent = nameFormLayout, align = 'right', width = 50)
        self.exportPathField = pm.textField('exportPath', placeholderText = u'export path', width = 370)
        dirButton = pm.button(label='', width=20, height=20,
                              command= self.dirChange)
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.exportPathText, 'top', 40.5), (self.exportPathText, 'left', 40),#all text have an offset of 3 from top
                                                            (self.exportPathField, 'top', 37.5),
                                                            (self.exportPathField, 'left', 100),
                                                            (dirButton, 'top', 37.5),
                                                            (dirButton, 'left', 475)])

        self.fbxNameText = pm.text(label = u'ファイル名:', parent = nameFormLayout, align = 'right', width = 50)
        self.fbxNameField = pm.textField('fbxName', placeholderText = u'file name', width = 370)
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.fbxNameText, 'top', 68), (self.fbxNameText, 'left', 40),
                                                             (self.fbxNameField, 'top', 65),
                                                             (self.fbxNameField, 'left', 100)])

        self.exportOptionGrp = pm.radioButtonGrp('expRadioGrp', numberOfRadioButtons = 2, parent = nameFormLayout,
                                            label1 = u'リグ',
                                            label2 = u'モーション',
                                            width = 300,
                                            label = u'出力設定:',
                                            columnAlign = [1, 'right'],
                                            columnWidth = [(1, 90), (2, 100), (3, 100)],
                                            columnAttach = [(2, 'left', 15)])
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.exportOptionGrp, 'top', 100), (self.exportOptionGrp, 'left', 0)])

        self.expButton = pm.button(label = u'出力', parent = nameFormLayout, command = self.exportButton, width = 250)
        pm.formLayout(nameFormLayout, edit=True, attachForm=[(self.expButton, 'top', 200), (self.expButton, 'left', 100)])

        self.projectList()
        self.projListUI = pm.optionMenu(numberOfItems = len(self.prj_data), changeCommand = self.projectChange)
        for i in self.prj_data:
            pm.menuItem(i.split()[0], label = i.split()[0], parent = self.projListUI, annotation = i.split()[1].replace('\\', '/'))
            #pm.optionMenu(self.projListUI, edit = True, visibleChangeCommand = partial(self.projectChange, i.split()[1]))

        prjText = pm.text(label = u'案件:', align = 'right', parent = nameFormLayout, width = 50)
        pm.formLayout(nameFormLayout, edit=True,
                      attachForm=[(self.projListUI, 'top', 10), (self.projListUI, 'left', 99), (prjText, 'top', 13), (prjText, 'left', 40)])

        pm.showWindow()
Example #24
0
    def get_selected_surface_association_idx(self):
        for i in xrange(1, 5):
            if pm.radioButtonGrp('mpwSurfaceAssociation%i' % i,
                                 q=True,
                                 select=True):
                return i

        return 1
Example #25
0
 def get_types_cmd(self, *args):
     """Collects the selected type part when the radio button switched or selected
     :param args:
     :return: None
     """
     self.type_selection = (
         pm.radioButtonGrp(self.type_radio_btn, q=True, sl=True) - 1)
     self.infix = self.infix_list[self.type_selection]
Example #26
0
def bike_start_gui():
    nodes = mc.ls()
    if 'Character' in nodes:
        window = 'bike_ui'
        window_title = 'NIH/NASA Bike Rigger'
        width_height = (300, 100)
        if py.window(window, exists=True):
            py.deleteUI(window, window=True)
        window_obj = py.window(window, title=window_title, widthHeight=width_height, sizeable=False)
        py.columnLayout('main_col', p=window)
        py.button('import', label='1) Import the bike', width=width_height[0], command=py.Callback(import_bike))
        py.text('2) Place the character on the bike.')
        py.radioButtonGrp('gender_radio', label='Gender', labelArray2=['Male', 'Female'], numberOfRadioButtons=2)
        py.button('rig', label='3) Connect the Character and Save', width=width_height[0], command=py.Callback(rig_bike))

        window_obj.show()
    else:
        mc.warning('Character node not found! Cannot start bike rig without a Character node!')
Example #27
0
 def toggleMatchup(self, *a):
     get_bool = pm.radioButtonGrp('matchup_toggle', q=True, sl=True)
     if get_bool == 1:
         pm.textFieldGrp('away_team_txt', e=True, enable=False)
     elif get_bool == 2:
         pm.textFieldGrp('away_team_txt', e=True, enable=True)
     else:
         pm.warning(
             'SORT CONTROL  ERROR: Please select single-team or matchup.')
     return
Example #28
0
 def get_parts_cmd(self, *args):
     """Collects the selected part when the radio button switched or selected
     :param args:
     :return: None
     """
     # fk ik ikd
     self.part_selection = (
         pm.radioButtonGrp(self.part_radio_btn, q=True, sl=True) - 1)
     self.name = self.name_list[self.part_selection]
     self.name_end = self.name_end_list[self.part_selection]
Example #29
0
def reNamerUI():
    winName = 'reName_Tool'
    if(pm.window(winName,q=1,ex=1)):
        pm.deleteUI(winName)
    
    pm.window(winName,ret=1,mb=1)
    
    pm.columnLayout('reNameLayout',adj = 1)
    pm.textFieldGrp('pre',l = 'Prefix Name : ',tx = '',adj = 1,cl2 = ('left','left'))
    pm.radioButtonGrp('side',nrb = 3,la3 = ['left','center','right'],adj = 1,ad3 = 1)
    pm.textFieldGrp('obj',l = 'Object Name : ',tx = '',adj = 1,cl2 = ('left','left'))
    pm.textFieldGrp('starNum',l = 'Start Number : ',tx = 1,adj = 1,cl2 = ('left','left'))
    pm.textFieldGrp('paddingNum',l = 'Padding Number : ',tx = 0,adj = 1,cl2 = ('left','left'))
    pm.textFieldGrp('suffix',l = 'Suffix Name : ',tx = 'jj',adj = 1,cl2 = ('left','left'))
    pm.checkBox('je',l = 'make Last joint je',v = 1)
    
    pm.button('Select hierachy',c = 'selHierachy()')
    pm.button('Achtung!',c = 'renaming()')
    pm.showWindow(winName)
Example #30
0
def rig_bike():
    """
    Sets up constraints necessary for the character to be connected to the bikes.
    Also creates a male node for the male bike.
    Saves the scene to the file directory provided
    """
    if py.radioButtonGrp('gender_radio', q=True, sl=True) == 1:
        df.parent_constraint([('rt_hand_grp', 'RightHand_IK_CTRL'), ('lf_hand_grp', 'LeftHand_IK_CTRL'),
                              ('rt_foot_locator', 'RightFoot_IK_CTRL'), ('lf_foot_locator', 'LeftFoot_IK_CTRL')])
        df.save_file(save_as=True, ext='_bike', path=mi.GelUtil.file_path)
        mc.select(cl=True)
        mc.group(em=True, n='male')
        mc.parent('Character', 'male')

    elif py.radioButtonGrp('gender_radio', q=True, sl=True) == 2:
        df.parent_constraint([('rt_hand_ctrl_null', 'RightHand_IK_CTRL'), ('lf_hand_ctrl_null', 'LeftHand_IK_CTRL'),
                              ('rt_foot_ctrl_null', 'RightFoot_IK_CTRL'), ('lf_foot_ctrl_null', 'LeftFoot_IK_CTRL')])
        df.save_file(save_as=True, ext='_bike', path=mi.GelUtil.file_path)
    else:
        mc.warning('Must select a gender!')
Example #31
0
	def _UI(self):
		if pm.window("mainWin",exists=1):
			pm.deleteUI("mainWin",window=1)
		
		w=280
		
		window=pm.window("mainWin",t="Shuffle Slice Tool",s=0,mb=1,mnb=0,mxb=0,rtf=1,w=w)
		pm.columnLayout("mainColumn",p="mainWin",columnAttach=('both', 2), rowSpacing=10, columnWidth=w)
		pm.text("warningText",p="mainColumn",l="---===Select something to slice===---",al="center")
		pm.intSliderGrp("colsSlider",p="mainColumn",cw3=(30,45,50),field=True,label='Parts',minValue=1,fieldMinValue=1,value=1,fs=1,ss=1)
		pm.radioButtonGrp("radioBtnGrp",l=" ",labelArray2=['List', 'Group'],cw3=[60,90,80],numberOfRadioButtons=2,sl=1)
		
		pm.textScrollList("listScroll",p="mainColumn",numberOfRows=5, allowMultiSelection=False,sc=self.selPart)
		pm.popupMenu("listPopUp",p="listScroll")
		pm.menuItem(p="listPopUp",l="Create Group for the parts",c=self.groupPartsFunc)
		
		pm.button(p="mainColumn",l="Shuffle Slice",c=self.shuffleSlice)
		

		pm.showWindow("mainWin")
Example #32
0
 def __init__(self, opts):
     self.opts = opts
     with pm.frameLayout('Physics', collapsable=True, cl=False, bs='out'):
         with pm.columnLayout(width=250):
             pm.text(l='Collision Type:')
             self.phyType = pm.radioButtonGrp(labelArray3=['Convex Hull', 'Box', 'Sphere'],
                                              sl=self.opts['phyType'], nrb=3, cc=self.save,
                                              cw3=[94, 64, 64], width=250)
             self.maxVerts = pm.intSliderGrp(field=True, l='Max Vertices:', v=self.opts['maxVerts'],
                                             cl3=['left', 'left', 'left'], cw3=[64, 48, 128], cc=self.save)
             pm.button(l='Add Hull', w=250, c=self._addHull)
     self.save()
Example #33
0
 def __init__(self):
     title="joints_on_curve"
     if(pm.windowPref(title, q=True, ex=True)):
         pm.windowPref(title, remove=True)
     if(pm.window(title, q=True, ex=True)):
         pm.deleteUI(title)
     #splineIK UI
     self.win = pm.window(title, title="Joints on Curve")
     self.layout = pm.rowColumnLayout()
     self.jntPlaceBtn = pm.radioButtonGrp(parent=self.layout, numberOfRadioButtons=2, label="Joint Placement", labelArray2=("CV's", "Even"), cc=self.jntPlaceBtn_change)
     self.jntSnapBtn = pm.radioButtonGrp(parent=self.layout, enable=False, numberOfRadioButtons=2, sl = 1,  label="Snap To", labelArray2=("CV", "Closest Point On Curve"))
     self.jntLayoutBtn = pm.radioButtonGrp(parent=self.layout, enable=False, numberOfRadioButtons=2, sl = 1,  label="Joint Layout", labelArray2=("Solo", "Hierarchy"), on1 = self.jntLayoutBtn_on)
     self.jntNumSlider = pm.intSliderGrp(enable=False, field=True, label='number of joints', minValue=4, maxValue=100, fieldMinValue=4, fieldMaxValue=100, value=0)
     self.crvNameField = pm.textFieldButtonGrp(enable=False, label='Target Curve', placeholderText='Enter Curve Name Here', buttonLabel='load selected', buttonCommand=self.crvNameField_load)
     self.jntNameFeild = pm.textFieldGrp(parent=self.layout,enable=False, label='Joint Base Name', placeholderText="name your joints", editable=True, tcc=self.jntNameFeild_change)
     self.chkboxGrp = pm.checkBoxGrp(enable=False, numberOfCheckBoxes=3, label='Add', labelArray3=['splineIK', 'CTRLs', 'stretchy'])
     self.goBtn = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="GO!", command=self.execute)  
     self.noBtn = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="NO DONT DO IT!", command=self.close)   
     self.format_string = "{PREFIX}_{INDEX}_{SUFFIX}"
     self.delete = []
     self.win.show()
Example #34
0
 def window(self):
     win = pm.window(title='Frustum Selection',
                     width=400,
                     s=True,
                     resizeToFitChildren=True)
     pm.columnLayout(adj=True)
     radio = pm.radioButtonGrp(nrb=3,
                               l1='Use Time Slider',
                               l2='Start/End',
                               l3='Current Time',
                               sl=1)
     frameRange = pm.intFieldGrp(nf=2,
                                 l='Frame Range: Start',
                                 cw1=100,
                                 v1=1001,
                                 el='End',
                                 v2=1100,
                                 en=False)
     radio.onCommand2(pm.Callback(frameRange.setEnable, True))
     radio.offCommand2(pm.Callback(frameRange.setEnable, False))
     screen_size = pm.intFieldGrp(nf=2,
                                  l='Screen Size',
                                  cw1=100,
                                  v1=2048,
                                  el='Height',
                                  v2=858)
     offset = pm.floatFieldGrp(nf=1,
                               l='Selection Offset',
                               cw1=100,
                               el='%',
                               v1=0)
     invert = pm.checkBoxGrp(ncb=1, l='Invert Selection', cw1=100, v1=0)
     auto = pm.checkBoxGrp(ncb=1, l='Auto Get Camera', cw1=100, v1=1)
     pm.text(
         label=
         'Help: it is possible to select multiple cameras.\nfilmTranslate attribute on camera is NOT in effect on selecting, use filmOffset instead.\nPositive offset shrink selection while negative expanding.',
         align='left',
         fn='boldLabelFont',
         recomputeSize=True,
         wordWrap=True)
     #autoFunc, widthFunc, heightFunc, modeFunc, offsetFunc, invertFunc, startFunc, endFunc):
     pm.button(l='Select',
               command=pm.Callback(self.getObjectInFrustumShell,
                                   auto.getValue1, screen_size.getValue1,
                                   screen_size.getValue2, radio.getSelect,
                                   offset.getValue1, invert.getValue1,
                                   frameRange.getValue1,
                                   frameRange.getValue2))
     pm.button(l='Tag', command=pm.Callback(self.tagMasters))
     pm.button(l='Delete All Tags', command=pm.Callback(self.deleteAllTags))
     pm.separator(style='in', h=10)
     pm.button(label='Close', command=pm.Callback(pm.deleteUI, win.name()))
     pm.showWindow(win.name())
Example #35
0
    def getUIData(self, *args):
        self.prefix = pm.textFieldGrp(self.nameFld, query=True, text=True)

        self.loc1 = pm.textFieldButtonGrp(self.loc1Fld, query=True, text=True)
        self.loc2 = pm.textFieldButtonGrp(self.loc2Fld, query=True, text=True)
        self.loc3 = pm.textFieldButtonGrp(self.loc3Fld, query=True, text=True)

        self.shoulder = pm.textFieldButtonGrp(self.upperTorsoFld,
                                              query=True,
                                              text=True)
        self.cog = pm.textFieldButtonGrp(self.lowerTorsoFld,
                                         query=True,
                                         text=True)
        self.world = pm.textFieldButtonGrp(self.worldFld,
                                           query=True,
                                           text=True)

        self.hand_cnt = pm.textFieldButtonGrp(self.handCntFld,
                                              query=True,
                                              text=True)

        self.aim = pm.radioButtonGrp(self.aimFld, q=True, sl=True)
        self.aimPolarity = pm.radioButtonGrp(self.aimPolarityFld,
                                             q=True,
                                             sl=True)
        self.up = pm.radioButtonGrp(self.upFld, q=True, sl=True)
        self.upPolarity = pm.radioButtonGrp(self.upPolarityFld,
                                            q=True,
                                            sl=True)

        self.normal = pm.radioButtonGrp(self.nrFld, query=True, sl=True)
        self.radius = pm.floatFieldGrp(self.rFld, query=True, value1=True)

        self.build = pm.radioButtonGrp(self.buildFld, query=True, sl=True)
Example #36
0
    def __init__(self):
        with pm.frameLayout(l='Transform:', cll=True, cl=False, bs='out'):
            with pm.columnLayout():
                with pm.gridLayout(nc=5):
                    pm.iconTextButton(image1='pbUV/tRot90CCW.png', c=lambda *args: self.rotate(angle=90, dir='ccw'),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tRotCCW.png', c=lambda *args: self.rotate(dir='ccw'),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tTranslateUp.png', c=lambda *args: self.move(v=1),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tRotCW.png', c=lambda *args: self.rotate(dir='cw'))
                    pm.iconTextButton(image1='pbUV/tRot90CW.png', c=lambda *args: self.rotate(angle=90, dir='cw'),
                                      commandRepeatable=True)

                    flipuv = pm.iconTextButton(image1='pbUV/tFlipUV.png', c=lambda *args: self.flip(axis='u'),
                                               commandRepeatable=True)
                    pm.popupMenu(button=3, p=flipuv, pmc=lambda *args: self.flip(axis='v'))
                    pm.iconTextButton(image1='pbUV/tTranslateLeft.png', c=lambda *args: self.move(u=-1),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tTranslateDown.png', c=lambda *args: self.move(v=-1),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tTranslateRight.png', c=lambda *args: self.move(u=1),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tRot180CCW.png', c=lambda *args: self.rotate(angle=180, dir='ccw'),
                                      commandRepeatable=True)

                with pm.rowColumnLayout(nc=4):
                    self.manipValue = pm.floatField(v=1.0)
                    pm.iconTextButton(image1='pbUV/tScaleU.png', c=lambda *args: self.scale(axis='u'),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tScaleV.png', c=lambda *args: self.scale(axis='v'),
                                      commandRepeatable=True)
                    pm.iconTextButton(image1='pbUV/tScaleUV.png', c=lambda *args: self.scale(),
                                      commandRepeatable=True)

                pm.separator(st='in', width=160, height=8)

                with pm.rowLayout(nc=2):
                    pm.button(l='Orient Edge', c=self.orient_edge)
                    pm.button(l='Orient Bounds', c=self.orient_bounds)

                pm.separator(st='in', width=160, height=8)

                with pm.columnLayout(cal='left'):
                    pm.text(l='Pivot:')
                    self.pivType = pm.radioButtonGrp(nrb=2, labelArray2=['Selection', 'Custom'], cw2=[64, 64],
                                                     cc=self._piv_change, sl=1)
                    with pm.rowLayout(nc=3, en=False) as self.pivPos:
                        pm.text('POS:')
                        self.pivU = pm.floatField()
                        self.pivV = pm.floatField()
                    self.sampleSel = pm.button(l='Sample Selection', height=18, en=False, c=self.sample_sel_cmd)
Example #37
0
	def execRemap(*args):
		remapType = pm.optionMenu(match_mnu, q= 1, v= 1)
		tirm = tirm_mqsb.isChecked()
		sel_src = not hSrc_mqsb.isChecked()
		sel_dis = not hTrg_mqsb.isChecked()
		scale = pm.floatField(scale_flt, q= 1, v= 1)
		mirror = [None, 'X', 'Z', 'Y'][pm.radioButtonGrp('mirror_radioBtnGrp' , q= 1, sl= 1) - 1]
		if maya_mqsb.isChecked():
			if _setConn:
				mr.remoteRemap(beam, remapType, tirm, sel_src, sel_dis, scale, mirror)
		else:
			dis = [str(i) for i in pm.textScrollList(trg_sls, q= 1, ai= 1)]
			mr.localRemap(dis, remapType, tirm, sel_src, sel_dis, scale, mirror)
Example #38
0
 def __init__(self):
     self.mainLayout = pm.columnLayout(adjustableColumn = True)
     pm.button(label = 'new fields', command = pm.Callback(self.createFields))
     self.openButtons = pm.radioButtonGrp(numberOfRadioButtons = 2 , columnAlign = [ 1 , 'center' ],label = ' Choose Program ', label1 = 'Preview',label2 = 'Photoshop')
     pm.button(label = 'open images', command = pm.Callback(self.openImage))
     pm.button(label = 'open reference', command = pm.Callback(self.openReference))
     self.layout = pm.rowColumnLayout(nc=2 , cw =[(1, 400) ,(2, 80)])
     # self.num is a number, which will be used to give unique names to the dynamically created fields
     self.num = 1
     # the list of the paths for the images
     self.imageList = []
     # this list will have the base name of all the images
     self.nameList = []
Example #39
0
    def option_box_apply(self):
        kwargs = {}

        blend_shape = pm.optionMenuGrp('sbsList', q=True, v=True)
        blend_shape = pm.ls(blend_shape)[0]
        leftOutput = None
        rightOutput = None
        if pm.optionMenuGrp('sbsLeftOutput', q=True,
                            sl=True) != 1:  # "Same deformer as source"
            leftOutput = pm.optionMenuGrp('sbsLeftOutput', q=True, v=True)
            leftOutput = pm.ls(leftOutput)[0]
        if pm.optionMenuGrp('sbsRightOutput', q=True,
                            sl=True) != 1:  # "Same deformer as source"
            rightOutput = pm.optionMenuGrp('sbsRightOutput', q=True, v=True)
            rightOutput = pm.ls(rightOutput)[0]
        blendShapeTarget = ''
        if pm.optionMenuGrp('sbsTargetList', q=True, sl=True) != 1:  # "All"
            blendShapeTarget = pm.optionMenuGrp('sbsTargetList',
                                                q=True,
                                                v=True)
        distance = pm.floatSliderGrp('sbsBlendDistance', q=True, v=True)
        origin = pm.floatSliderGrp('sbsPlaneOrigin', q=True, v=True)
        plane = pm.radioButtonGrp('sbsPlane', q=True, sl=True)
        kwargs['naming_pattern'] = pm.textFieldGrp('sbsNamingPattern',
                                                   q=True,
                                                   text=True)

        plane_to_axis = {
            1: 2,
            2: 0,
            0: 1,
        }
        axis = plane_to_axis[plane]

        if blendShapeTarget != "":
            func = split_blend_shape_from_deformer
            kwargs['blendTarget'] = blendShapeTarget
        else:
            func = split_all_blend_shape_targets

        kwargs['blend_shape'] = blend_shape
        if leftOutput:
            kwargs['outputBlendShapeLeft'] = leftOutput
        if rightOutput:
            kwargs['outputBlendShapeRight'] = rightOutput
        split_args = {}
        kwargs['split_args'] = split_args
        split_args['fade_distance'] = distance
        split_args['axis'] = axis
        split_args['axis_origin'] = origin
        func(**kwargs)
Example #40
0
    def createRigCallback(self, *args):
        reaply = pm.checkBox(self.reapplySkinCheckbox, q=True, v=True)
        armRibChk = pm.checkBox(self.hasArmRibbonsCheckbox, q=True, v=True)
        armRibbons = pm.intField(self.armRibbonJointsIntField, q=True, v=True)
        armOffset = pm.floatFieldGrp(self.armRibbonFirstJointOffsetFloatField,
                                     q=True,
                                     v1=True)

        legRibChk = pm.checkBox(self.hasLegRibbonsCheckbox, q=True, v=True)
        legRibbons = pm.intField(self.legRibbonJointsIntField, q=True, v=True)
        legOffset = pm.floatFieldGrp(self.legRibbonFirstJointOffsetFloatField,
                                     q=True,
                                     v1=True)
        parentModulesSel = pm.radioButtonGrp(self.modulesConnectionRadioButton,
                                             q=True,
                                             sl=True)
        spineJnts = pm.intField(self.spineJointsIntField, q=True, v=True)

        print 'parent', parentModulesSel

        if parentModulesSel == 1:

            parentModules = True
        else:
            parentModules = False

        print armRibbons, legRibbons
        if not legRibChk:
            legRibbons = 0

        if not armRibChk:
            armRibbons = 0

        if reaply:
            self.quadrupedInstance.saveSkin()

        self.quadrupedInstance.generateRig(armRibbons=armRibbons,
                                           armOffsetStart=armOffset,
                                           armOffsetEnd=armOffset,
                                           legRibbons=legRibbons,
                                           legOffsetStart=legOffset,
                                           legOffsetEnd=legOffset,
                                           parentModules=parentModules,
                                           spineJnts=spineJnts)

        if reaply:
            try:
                self.quadrupedInstance.loadSkin()
            except:
                logger.error('nao tem rig ainda...')
Example #41
0
    def displayOptions(self):
        """Build the interface"""
        self.interface['TimeRange'] = cmds.radioButtonGrp(
            numberOfRadioButtons=2,
            label='Time Range',
            labelArray2=['Time Slider', 'Start/End'],
            onCommand=self.disableTimeRange)
        self.interface['StartTime'] = cmds.intFieldGrp(label='Start Time')
        self.interface['EndTime'] = cmds.intFieldGrp(label='End Time')
        self.interface['Focals'] = cmds.textFieldGrp(label='Focals')
        self.interface['Cameras'] = cmds.textScrollList(
            allowMultiSelection=True, width=200, height=100)
        # self.interface['CamerasLabel']   = cmds.text( label='Cameras' )

        self.formAttachPosition()

        cmds.formLayout(
            self.optionsForm,
            e=True,
            attachForm=(
                [self.interface['TimeRange'], 'top', 10],
                [self.interface['Cameras'], 'bottom', 100],
                [self.interface['Cameras'], 'left', 150],
            ),
            attachControl=(
                [
                    self.interface['StartTime'], 'top', 0,
                    self.interface['TimeRange']
                ],
                [
                    self.interface['EndTime'], 'top', 0,
                    self.interface['StartTime']
                ],
                [
                    self.interface['Focals'], 'top', 0,
                    self.interface['EndTime']
                ],
                [
                    self.interface['Cameras'], 'top', 10,
                    self.interface['Focals']
                ],
                # [ self.interface['CamerasLabel'], 'top', 10, self.interface['Focals'] ],
                # [ self.interface['CamerasLabel'], 'right', -90, self.interface['Cameras'] ],
            ),
            attachNone=(
                [self.interface['Cameras'], 'left'],
                [self.interface['Cameras'], 'right'],
            ))
        self.editMenuResetCmd()  # Set the default values in the interface
Example #42
0
    def to_repr(cls, repr_name):
        """replaces the related references with the given representation

        :param str repr_name: Desired representation name
        """
        # get apply to
        apply_to = \
            pm.radioButtonGrp('repr_apply_to_radio_button_grp', q=1, sl=1)

        if apply_to == 1:
            # work on every selected object
            selection = pm.ls(sl=1)

            # collect reference files first
            references = []
            for node in selection:
                ref = node.referenceFile()
                # get the topmost parent
                ref = ref.topmost_parent()

                if ref is not None and ref not in references:
                    references.append(ref)

            from anima.env.mayaEnv.repr_tools import RepresentationGenerator

            # now go over each reference
            for ref in references:
                if not ref.is_repr(repr_name):
                    parent_ref = ref
                    while parent_ref is not None:
                        # check if it is a look dev node
                        v = parent_ref.version
                        if v:
                            task = v.task
                            if RepresentationGenerator.is_look_dev_task(task) \
                               or RepresentationGenerator.is_vegetation_task(task):
                                # convert it to repr
                                parent_ref.to_repr(repr_name)
                                break
                            else:
                                # go to parent ref
                                parent_ref = parent_ref.parent()
                        else:
                            parent_ref = parent_ref.parent()
        elif apply_to == 2:
            # apply to all references
            for ref in pm.listReferences():
                ref.to_repr(repr_name)
Example #43
0
    def UI_exporter(self):
        #setting basic UI height and width
        winWidth = 500
        winHeight = 300

        # checking for duplicate windows
        windowID = 'AdvSkeExporter'
        if pm.window(windowID, exists=True):
            pm.deleteUI(windowID)
        #re-adjusting UI if UI is not correct
        if pm.windowPref('AdvSkeExporter', q=True, height = True) != winHeight or pm.windowPref('AdvSkeExporter', q=True, width = True) != winWidth:
            pm.windowPref('AdvSkeExporter', remove=True)

        # creating window
        pm.window(windowID, title=u'Prism Exporter | Ver 2018 / 06 / 06', widthHeight=(winWidth, winHeight))

        rigExportFrame = pm.frameLayout(u'出力', width=500, nch = 10, labelIndent = 20)
        nameFormLayout = pm.formLayout('nameForm', parent = rigExportFrame, nch = 30, width = 500, height = 500, numberOfDivisions = 100)

        self.exportPathText = pm.text(label = u'出力先:' , parent = nameFormLayout, align = 'right', width = 50)
        self.exportPathField = pm.textField('exportPath', placeholderText = u'export path', width = 300)
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.exportPathText, 'top', 25.5), (self.exportPathText, 'left', 40),#all text have an offset of 3 from top
                                                             (self.exportPathField, 'top', 22.5),
                                                             (self.exportPathField, 'left', 100)])

        self.fbxNameText = pm.text(label = u'ファイル名:', parent = nameFormLayout, align = 'right', width = 50)
        self.fbxNameField = pm.textField('fbxName', placeholderText = u'file name', width = 300)
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.fbxNameText, 'top', 53), (self.fbxNameText, 'left', 40),
                                                             (self.fbxNameField, 'top', 50),
                                                             (self.fbxNameField, 'left', 100)])

        self.exportOptionGrp = pm.radioButtonGrp('expRadioGrp', numberOfRadioButtons = 2, parent = nameFormLayout,
                                            label1 = u'リグ',
                                            label2 = u'モーション',
                                            width = 300,
                                            label = u'出力設定:',
                                            columnAlign = [1, 'right'],
                                            columnWidth = [(1, 90), (2, 100), (3, 100)],
                                            columnAttach = [(2, 'left', 15)])
        pm.formLayout(nameFormLayout, edit=True, attachForm = [(self.exportOptionGrp, 'top', 80), (self.exportOptionGrp, 'left', 0)])

        self.expButton = pm.button(label = u'出力', parent = nameFormLayout, command = self.exportButton, width = 250)
        pm.formLayout(nameFormLayout, edit=True, attachForm=[(self.expButton, 'top', 200), (self.expButton, 'left', 100)])


        pm.showWindow()
Example #44
0
 def __init__(self):
     self.mainLayout = pm.columnLayout(adjustableColumn=True)
     pm.button(label='new fields', command=pm.Callback(self.createFields))
     self.openButtons = pm.radioButtonGrp(numberOfRadioButtons=2,
                                          columnAlign=[1, 'center'],
                                          label=' Choose Program ',
                                          label1='Preview',
                                          label2='Photoshop')
     pm.button(label='open images', command=pm.Callback(self.openImage))
     pm.button(label='open reference',
               command=pm.Callback(self.openReference))
     self.layout = pm.rowColumnLayout(nc=2, cw=[(1, 400), (2, 80)])
     # self.num is a number, which will be used to give unique names to the dynamically created fields
     self.num = 1
     # the list of the paths for the images
     self.imageList = []
     # this list will have the base name of all the images
     self.nameList = []
Example #45
0
def prepareBatch(transfert, *args):

    # Retrieving values from UI
    subdivType = pc.radioButtonGrp(uiWidgets["subdivType"], q=1, sl=1)
    subdivIt = pc.intSliderGrp(uiWidgets["subdivIterations"], q=1, value=1)
    autobump = pc.checkBox(uiWidgets["autobump"], q=1, value=1)

    # Get the selected objects
    selections = pc.ls(sl=1)

    # If none, execution stops here
    if len(selections) == 0:
        pc.confirmDialog(t="Error", message="Nothing selected.", icon="critical")
    # Else, we batch set the primary visibility
    else:
        print "BATCH SET SMOOTH"

        for sel in selections:
            applySmooth(sel, subdivType, subdivIt, autobump, transfert)
Example #46
0
def bringTheRain():
    
    global jointGuides,setUpName,axis,size,side
    axisSel = pm.radioButtonGrp('AxisSel',q = True,sl = True)
    size = pm.floatSliderGrp('Cc_Size',q = True,v = True)  
    
    if axisSel == 1:
        axis = 'x'
    elif axisSel == 2:    
        axis = 'y'
    elif axisSel == 3:    
        axis = 'z'    
    
    jointGuidesGrp.v.set(0)    
    guidePos = [x.getTranslation(space = 'world') for x in jointGuides]
    guideRot = [x.getRotation(space = 'world') for x in jointGuides]   
     
    bc = BoneChain(baseName = setUpName,side = side,type = 'jj')
    bc.fromList(guidePos,guideRot,autoOrient = 1)  
      
    fk = FkChain(baseName = setUpName + 'Fk',side = side,size = size,type = 'fk',aimAxis = axis)
    fk.fromList(guidePos,guideRot,autoOrient = 1)
     
    ik = dynamicIkChain(baseName = setUpName + 'DynIk',side = side,type = 'ik')
    ik.fromList(guidePos,guideRot,autoOrient = 1)
    
    #create main Cc
    mainCtrl = Control(side,setUpName,size = size * 1.5,aimAxis = axis) 
    mainCtrl.circleCtrl()
    pm.xform(mainCtrl.controlGrp,ws = 1,matrix = ik.chain[0].worldMatrix.get()) 
#     jjPos = pm.xform(ik.chain[0],query=1,ws=1,rp=1)
#     pm.move(jjPos[0],jjPos[1],jjPos[2],mainCtrl.controlGrp)
    
    blendData = BoneChain.blendTwoChains(fk.chain,ik.chain,bc.chain,
                                         mainCtrl.control,'Dynamic',setUpName,side)
    
    lockAndHideAttr(mainCtrl.control , ['sx','sy','sz']) 
    jointGuidesGrp.setParent(ik.dynMainGrp) 
    ik.hairFol[0].setParent(mainCtrl.control)
    ik.chain[0].setParent(mainCtrl.control)
    fk.chain[0].setParent(mainCtrl.control)
    bc.chain[0].setParent(mainCtrl.control)
Example #47
0
 def __init__(self, opts):
     self.opts = opts
     with pm.frameLayout('Physics', collapsable=True, cl=False, bs='out'):
         with pm.columnLayout(width=250):
             pm.text(l='Collision Type:')
             self.phyType = pm.radioButtonGrp(
                 labelArray3=['Convex Hull', 'Box', 'Sphere'],
                 sl=self.opts['phyType'],
                 nrb=3,
                 cc=self.save,
                 cw3=[94, 64, 64],
                 width=250)
             self.maxVerts = pm.intSliderGrp(field=True,
                                             l='Max Vertices:',
                                             v=self.opts['maxVerts'],
                                             cl3=['left', 'left', 'left'],
                                             cw3=[64, 48, 128],
                                             cc=self.save)
             pm.button(l='Add Hull', w=250, c=self._addHull)
     self.save()
Example #48
0
 def build(self):
     #splineIK UI
     self.win = pm.window(self.title, title=self.title)
     self.layout = pm.rowColumnLayout()
     self.control_scheme_options = ['fk', 'ik', '...something else']
     self.tf_obj_start       = self._build_name_input(label='Load Start Object', parent=self.layout)
     self.tf_obj_end         = self._build_name_input(label='Load End Object', parent=self.layout)
     self.tf_obj_aim         = self._build_name_input(label='Load Aim Object', parent=self.layout)
     self.tf_obj_parent      = self._build_name_input(label='Load Parent Transform', parent=self.layout)
     
     self.slider_joints      = pm.intSliderGrp(enable=True, field=True, label='number of joints', minValue=3, fieldMinValue=3, fieldMaxValue=50, value=5, parent=self.layout)
     self.slider_controls    = pm.intSliderGrp(enable=True, field=True, label='number of controls', minValue=3, fieldMinValue=2, fieldMaxValue=20, value=3, parent=self.layout)
     self.tfg_ribbon_name    = pm.textFieldGrp(enable=True, label='ribbon', placeholderText='name of ribbon', editable=True, tcc=self._on_change_tfg_ribbon_name, parent=self.layout)
     self.rbg_control_scheme = pm.radioButtonGrp(label='Control Scheme', labelArray3=self.control_scheme_options, numberOfRadioButtons=3)
     self.rbg_control_scheme.setSelect(2)
     
     self.btn_execute        = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="Build", command=self._build_ribbon)  
     self.btn_cancel         = pm.button(parent=self.layout, enable=False,w = 100, h = 24, label="Cancel", command=self.close)   
     pm.setFocus(self.btn_execute)
     self.win.show()
Example #49
0
def gui():

    if (cmds.window(win, ex=1)):
        cmds.deleteUI(win)
    if (cmds.windowPref(win, ex=1)):
        cmds.windowPref(win, r=1)

    global polygon_choice, obj_no, area_no, scale_no

    cmds.window(win, s=1, vis=1, w=w, h=h)

    cmds.rowColumnLayout(w=w, h=h)

    cmds.text(l='')

    polygon_choice = pm.radioButtonGrp(
        la4=['Cube', 'Sphere', 'Cylinder', 'plane'],
        nrb=4,
        cw4=[67, 67, 67, 67],
        sl=1)

    cmds.text(l='', h=8)

    cmds.rowColumnLayout(nc=2)

    cmds.text(l='Number of Objects:')
    obj_no = pm.intField(v=10, w=w2)

    cmds.text(l='Area Scale:')
    area_no = pm.intField(v=11, w=w2)

    cmds.text(l='Max Object Scale:')
    scale_no = pm.intField(v=1, w=w2)

    cmds.text(l='')
    cmds.text(l='')

    cmds.button(l='do shit', c=do_shit)

    cmds.showWindow()
Example #50
0
    def __init__(self):
        title = 'curvyEdges'
        version = '1.01'

        self.ceObj = spline(self)

        if pm.window('curvyEdgesWin', exists=True):
            pm.deleteUI('curvyEdgesWin')

        with pm.window('curvyEdgesWin', title='{0} | {1}'.format(title, version),
                       mnb=False, mxb=False, sizeable=False) as window:
            with pm.columnLayout():

                # curve Frame
                with pm.frameLayout(l='Curve Settings', cll=True, cl=False, bs='out'):
                    with pm.columnLayout():
                        self.curveType = pm.radioButtonGrp(l='Curve Type:', sl=0, nrb=2, cw3=[96, 96, 128],
                                                           labelArray2=['BezierCurve', 'NurbsCurve'])
                        self.spans = pm.intSliderGrp(field=True, l='Curve Spans:', minValue=2, maxValue=24,
                                                     fieldMinValue=2, fieldMaxValue=128, value=2, cw3=[96, 64, 128])
                        with pm.rowColumnLayout(nc=2, cw=[1, 96], co=[1, 'right', 1]):
                            self.selOnly = pm.checkBox(v=False, l='Selection Only')
                            pm.button(l='Create Curve', c=self._create, width=201)

                # Deformer Frame
                with pm.frameLayout(l='Deformer Settings', bs='out', cl=False, cll=True):
                    with pm.columnLayout():
                        self.currentCrv = pm.textFieldGrp(editable=False, l='Current Curve:', cw2=[96, 195])

                        self.deformers = [attrSlider(1, 0, 1, 'envelope', self.ceObj),
                                          attrSlider(1, -10, 10, 'tension', self.ceObj),
                                          attrSlider(0, 0, 256, 'dropoffDistance[0]', self.ceObj),
                                          attrSlider(1, 0, 2, 'scale[0]', self.ceObj),
                                          attrSlider(1, 0, 1, 'rotation', self.ceObj)]

            window.show()
            pm.scriptJob(event=['SelectionChanged', self.select], protected=True, p=window)
            self.select()
Example #51
0
    def start_export(self):
        model_selected = pm.radioButtonGrp(self.work_mode, q=True, sl=True)

        if not os.path.exists(self.output_path):
            os.makedirs(self.output_path)

        if len(self.output_files) < 1:
            pm.error(u"任务列表不能为空")
        else:
            if model_selected == 1:  # 输出FBX
                self.export_to_fbx(self.output_files)
            if model_selected == 2:  # FBX优化
                self.start_optimize_fbx(self.output_files)
            if model_selected == 3:  # 全流程
                if self.export_to_fbx(self.output_files):
                    self.move_to_task_scroll()
                    self.output_files = pm.textScrollList(
                        self.task_scroll, q=True, ai=True)
                    self.start_optimize_fbx(self.output_files)

        print(u"输出成功")

        return
Example #52
0
    def build(self, *args):
        '''
        Call methods to build the joints on nurbs plane setup
        '''
        _name = 'build'
        pymelLogger.info('Started: %s' % _name)
        
        # Validate user input
        name = pm.textFieldGrp(self.nameFld, q=1, text=1)
        num = pm.intFieldGrp(self.numFld, q=1, v=1)[0]
        rad = pm.floatFieldGrp(self.radFld, q=1, v=1)[0]
        axis = pm.radioButtonGrp(self.buildFld, q=1, sl=1)
        objs = pm.ls(sl=1)
        
        if not name:
            pymelLogger.error('No name entered by user. Must enter a name. Exiting.')
            return            
        if num < 1 or num > 50:
            pymelLogger.error('%s is an invalid value for number of joints. Must be between 3 - 50. Exiting.' % num)
            return    
        if rad < 0.009 or rad > 10:
            pymelLogger.error('%s is an invalid value for joint radius. Must be between 0.01 - 10. Exiting.' % rad)
            return    
        if not objs:
            pymelLogger.error('No objects selected. Must select objects to build curve along. Exiting.')
            return

        # Call build methods
        crv1, crv2 = self._createCurves(objs=objs, axis=axis, num=num)
        plane = self._createPlane(name=name, crv1=crv1, crv2=crv2)
        follicles = self._createFollicles(name=name, plane=plane, num=num)
        self._createJoints(name=name, follicles=follicles, rad=rad)
        
        pm.delete(crv1, crv2)

        pymelLogger.info('Ended: %s' % _name)
        pymelLogger.info('Build successful!')
Example #53
0
 def ui(self):
     '''
     Create UI
     '''
     _name = 'ui'
     pymelLogger.info('Started: %s' % _name)
     
     winName = 'ms_jointsOnNurbsPlaneWin'
     if(pm.window(winName, exists=True)):
         pm.deleteUI(winName, window=True)
     win = pm.window(winName)
     
     with pm.formLayout() as form:
         self.nameFld = pm.textFieldGrp(l='Name')
         self.numFld = pm.intFieldGrp(l='Joints (3-50)', v1=3)
         self.radFld = pm.floatFieldGrp(l='Radius (0.01 - 10)', v1=0.5, pre=2)
         self.buildFld = pm.radioButtonGrp(l='Plane Curve Duplicate', labelArray3=['x', 'y', 'z'], nrb=3, sl=3)
         pm.text('Select objects to create plane along, then press "Build"')
         pm.button(l='>> Build <<', c=self.build)
         
     form.redistribute()
     
     pm.showWindow()
     pymelLogger.info('Ended: %s' % _name)
Example #54
0
    def getUIData(self, *args):
        self.prefix = pm.textFieldGrp(self.nameFld, query=True, text=True)
        
        self.loc1 = pm.textFieldButtonGrp(self.loc1Fld, query=True, text=True)
        self.loc2 = pm.textFieldButtonGrp(self.loc2Fld, query=True, text=True)
        self.loc3 = pm.textFieldButtonGrp(self.loc3Fld, query=True, text=True)

        self.shoulder = pm.textFieldButtonGrp(self.upperTorsoFld, query=True, text=True)
        self.cog = pm.textFieldButtonGrp(self.lowerTorsoFld, query=True, text=True)
        self.world = pm.textFieldButtonGrp(self.worldFld, query=True, text=True)

        self.hand_cnt = pm.textFieldButtonGrp(self.handCntFld, query=True, text=True)

        self.aim = pm.radioButtonGrp(self.aimFld,q=True,sl=True)
        self.aimPolarity = pm.radioButtonGrp(self.aimPolarityFld,q=True,sl=True)
        self.up = pm.radioButtonGrp(self.upFld,q=True,sl=True)
        self.upPolarity = pm.radioButtonGrp(self.upPolarityFld,q=True,sl=True)

        self.normal = pm.radioButtonGrp(self.nrFld, query=True, sl=True)
        self.radius = pm.floatFieldGrp(self.rFld, query=True, value1=True)

        self.build = pm.radioButtonGrp(self.buildFld, query=True, sl=True)
Example #55
0
def _get_settings_for_postproc(robot):
    """
    Get program settings from the Mimic UI.
    :return program_settings: dictionary
    """
    # Get all important settings
    using_time_interval = pm.radioCollection('sample_rate_radio_collection',
                                             query=True,
                                             select=True) == 'rb_timeInterval'
    using_keyframes_only = not using_time_interval  # TODO: Clever, but not expandable
    time_interval_value = pm.textField('t_timeBetweenSamples',
                                       query=True,
                                       text=True)
    time_interval_units = 'seconds' \
        if pm.radioButtonGrp('time_unit_radio_group', query=True, sl=True) == 1 \
        else 'frames'
    ignore_warnings = pm.checkBox('cb_ignoreWarnings', value=True, query=True)
    processor_type = pm.optionMenu('postProcessorList', query=True, value=True)
    output_directory = pm.textField('t_programDirectoryText',
                                    text=True,
                                    query=True)
    output_filename = pm.textField('t_outputFileName', text=True, query=True)
    template_filename = pm.textField('t_templateFileName',
                                     text=True,
                                     query=True)
    overwrite_option = pm.checkBox('cb_overwriteFile', value=True, query=True)

    # Get time interval in seconds
    animation_settings = _get_settings_for_animation(robot)
    framerate = animation_settings['Framerate']
    if time_interval_units == 'seconds':
        sample_rate_sec = float(time_interval_value)
    else:  # time_interval_units == 'frames'
        sample_rate_sec = float(time_interval_value) / float(framerate)
    time_interval_in_seconds = sample_rate_sec

    # Check for warnings
    if using_time_interval:
        # Confirm that the time interval is valid
        try:
            time_interval_value = float(time_interval_value)
            assert time_interval_value > 0
        except ValueError:
            if time_interval_units == 'seconds':
                warning = 'Time interval must be a float'
                raise Exception(warning)
            else:  # time_interval_units == 'frames'
                warning = 'Time interval must be a float'
                raise Exception(warning)
        except AssertionError:
            if time_interval_units == 'seconds':
                warning = 'Time interval must be greater than zero'
                raise Exception(warning)
            else:  # time_interval_units = 'frames'
                warning = 'Time interval must be greater than zero'
                raise Exception(warning)

    # Check if the robot-postproc compatibility warning was triggered
    processor = postproc_setup.POST_PROCESSORS[processor_type]()
    warning = _check_robot_postproc_compatibility(robot, processor)
    if warning != '':
        if not ignore_warnings:
            raise Exception(warning)
        else:
            warning += '\n'
            pm.scrollField(OUTPUT_WINDOW_NAME, insertText=warning, edit=True)

    # Assign values to output dict
    postproc_settings = {
        'Using Time Interval': using_time_interval,
        'Using Keyframes Only': using_keyframes_only,
        'Time Interval Value': time_interval_value,
        'Time Interval Units': time_interval_units,
        'Time Interval in Seconds': time_interval_in_seconds,
        'Ignore Warnings': ignore_warnings,
        'Processor Type': processor_type,
        'Output Directory': output_directory,
        'Output Filename': output_filename,
        'Template Filename': template_filename,
        'Overwrite Option': overwrite_option
    }
    return postproc_settings
Example #56
0
def AutoRig_UI():
    
    if pm.window("AutoRig_JT", q=True, exists = True):
            pm.deleteUI("AutoRig_JT")
    
    windowUI = pm.window("AutoRig_JT",titleBarMenu=True, menuBar=True, mxb = False, t="AutoRig_JT", w = 300, h = 500, sizeable = False, bgc=[0.15,0.15,0.15],maximizeButton=False)
	
    pm.menu( label='File', tearOff=True )
    pm.menuItem( label='Quit', c = partial(quit, "AutoRig_JT"))
    pm.menu( label='Help', helpMenu=True )
    pm.menuItem( 'Application..."', label='About Creator', c = about )
    pm.menuItem( 'Instructions', label='Instructions', c = instructions )
	
		
    mainLayout = pm.columnLayout(adj = True, w=300, h=700)

    # unique UI stuff

    imagePath = pm.internalVar(upd = True) + "icons/autoRig_banner.jpg"
    pm.image(w = 300, h = 100,image = imagePath, parent = mainLayout)
    pm.separator(style = 'none', h=20)

    pm.rowColumnLayout(nc = 2, cw = [(1,100),(2,200)],parent = mainLayout, columnOffset = ([(1,"left",10),(2,"left",0)]))

    pm.text(l='    Rig_Prefix : ')

    RigPrefix = pm.textFieldGrp("RigPrefix",tx='Character_',w=80) 

    pm.separator(style = 'none', h=20)
    pm.separator(style = 'none', h=20)
	
    
	
    pm.text(l='Spine Joints : ')
    spineNumberField = pm.intFieldGrp("spineNumberField",numberOfFields=1,v1=3,w=190)
	
    pm.setParent(u=True)
	
	
    pm.separator(style = 'none', h=20)
    pm.separator(style = 'none', h=20)

    pm.separator(style = 'none',h=20)
    pm.button(l='Create Reference Skeleton',c=referenceSkeleton, w=190,h=40,bgc=[0.2,0.2,0.2])

    pm.separator(style = 'none', h=20)

    pm.button(l='Mirror Locators (X+ to -X) (edit)', c=mirrorLocators, w=190, h=40, bgc=[0.2, 0.2, 0.2])

    pm.separator(style='none', h=20)
    
    pm.button(l='Create Joint Skeleton (edit)', c=jointSkeleton, w=190, h=40, bgc=[0.2, 0.2, 0.2])

    pm.separator(style='none', h=20)
    
    pm.radioButtonGrp('ZAxisOption', label='Z Align Axis', labelArray3=['X', 'Y', 'Z'], numberOfRadioButtons=3,cw=[(1,70),(2,35),(3,35)] )

    pm.radioButtonGrp('directionOption', label='+ or -', labelArray2=['+', '-'], numberOfRadioButtons=2,cw=[(1,70),(2,35)] )
    
    pm.button(l='Align Joints (select joints in chain you want to align)', c=alignChain, w=190, h=40, bgc=[0.2, 0.2, 0.2])

    pm.separator(style='none', h=20)

    pm.button(l='Finalize Rig',c=finalize, w=190,h=40,bgc=[0.2,0.2,0.2])

    pm.separator(style = 'none', h=20)


    pm.button(l='Exit',c=partial(quit,"AutoRig_JT"), w=190,h=40,bgc=[0.2,0.2,0.2])	

    print windowUI

    pm.showWindow(windowUI)
	
    pm.window("AutoRig_JT", e=True,w=300,h=600)
Example #57
0
    def buildGUI(self,*args):
        """
        Create the GUI
        """
        if(pm.window("msArmRigWin", exists=True)):
            pm.deleteUI("msArmRigWin", window=True)

        with pm.window("msArmRigWin", title="Arm Rig v%s" % __version__, menuBar=True, w=400, h=600, rtf=1) as mainWin:
            with pm.menu(label="Help",helpMenu=True) as m:		
                pm.menuItem( m, label='Directions', command=self.helpWin )

            with pm.columnLayout(adj=0) as col:
                # UI elements
                self.nameFld = pm.textFieldGrp(l='Name:', text='r_arm', adj=1)
                
                pm.separator(w=500, style='out')
                
                self.loc1Fld = pm.textFieldButtonGrp(l="Shoulder Locator:", bl="Load", text='locator1', adj=1)
                pm.textFieldButtonGrp( self.loc1Fld, e=1, bc=partial(self.loadText, self.loc1Fld))
                
                self.loc2Fld = pm.textFieldButtonGrp(l="Elbow Locator:", bl="Load", text='locator2', adj=1)
                pm.textFieldButtonGrp( self.loc2Fld, e=1, bc=partial(self.loadText, self.loc2Fld))
                
                self.loc3Fld = pm.textFieldButtonGrp(l="Wrist Locator:", bl="Load", text='locator3', adj=1)
                pm.textFieldButtonGrp( self.loc3Fld, e=1, bc=partial(self.loadText, self.loc3Fld))
                
                pm.separator(w=500, style='out')
                
                self.upperTorsoFld = pm.textFieldButtonGrp(l="Upper Torso:", bl="Load", text='joint4', adj=1)
                pm.textFieldButtonGrp( self.upperTorsoFld, e=1, bc=partial(self.loadText, self.upperTorsoFld))
                
                self.lowerTorsoFld = pm.textFieldButtonGrp(l="Lower Torso:", bl="Load", text='joint2', adj=1)
                pm.textFieldButtonGrp( self.lowerTorsoFld, e=1, bc=partial(self.loadText, self.lowerTorsoFld))
                
                self.worldFld = pm.textFieldButtonGrp(l="World Mover:", bl="Load", text='joint1', adj=1)
                pm.textFieldButtonGrp( self.worldFld, e=1, bc=partial(self.loadText, self.worldFld))  
                                
                pm.separator(w=500, style='out')
                
                self.handCntFld = pm.textFieldButtonGrp(l="Switch Control:", bl="Load", text='nurbsCircle1', adj=1)
                pm.textFieldButtonGrp( self.handCntFld, e=1, bc=partial(self.loadText, self.handCntFld))                
                
                pm.separator(w=500, style='out')
                
                self.nrFld = pm.radioButtonGrp(l="FK Control Normal Axis:", nrb=3, labelArray3=('X', 'Y', 'Z'), sl=1, adj=1)
                self.rFld = pm.floatFieldGrp(l="FK Control radius:", numberOfFields=1, v1=3, adj=1)

                pm.separator(w=500, style='out')

                self.aimFld = pm.radioButtonGrp(l=' Aim Axis:', nrb=3, labelArray3=('X', 'Y', 'Z'), sl=1, adj=1)
                self.aimPolarityFld = pm.radioButtonGrp(l=' Aim Polarity:', nrb=2, labelArray2=('+', '-'), sl=1, adj=1)
                self.upFld = pm.radioButtonGrp(l=' Up Axis:', nrb=3, labelArray3=('X', 'Y', 'Z'), sl=2, adj=1)
                self.upPolarityFld = pm.radioButtonGrp(l=' Up Polarity:', nrb=2, labelArray2=('+', '-'), sl=1, adj=1)

                pm.separator(w=500, style='out')

                self.buildFld = pm.radioButtonGrp(l='Rig Build Type:', nrb=2, labelArray2=('Positive', 'Negative'), sl=2, adj=1)
                #self.stretchyFld = pm.radioButtonGrp(l="Stretchy?", nrb=2, labelArray2=('Yes', 'No'), sl=2, adj=1)

                pm.separator(w=500, style='out')

                pm.button(label="Build Rig", c=self.createArm, w=500)
                          
                
            mainWin.show()
Example #58
0
    def ui(self):
        frameLayOpt  = dict( cll=True, bs='etchedIn', mw=3, mh=3 )
        rowLayOpt    = dict( nc=2 )
        textLabelOpt = dict( align='right', width=250)

        #with pm.frameLayout(lv=False, bv=False,mw=3, mh=3):
        with ui.stackLayout(adj=1, mw=3, mh=3):
            with pm.tabLayout( scr=True, cr=True ) as self.tabLay:
                # Arnold --------------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3):
                    with pm.columnLayout(adj=1):
                        '''
                        with pm.tabLayout( tv=False ):
                            with pm.columnLayout(adj=1):
                                pm.text(l="Solid Angle Arnold", h= 32, en=False)
                        pm.separator( h=6, style='none')
                        '''
                        with pm.frameLayout(lv=False, bv=True, bs='etchedIn', mw=3, mh=3):
                            with pm.columnLayout(adj=1):
                                pm.checkBoxGrp( l='Arnold options : ', ncb=1, vr=True,
                                    l1='Set opaque (Shape node)', v1=self.setAiOpaque.get(), cc1=self.setAiOpaque.set,
                                    #l2='Assign To Object',  v2=self.assignToObject.get(), cc2=self.assignToObject.set,
                                    #l3='self.boolAttr3', v3=self.boolAttr3.get(), cc3=self.boolAttr3.set 
                                    )                                    
                        pm.separator( h=6, style='none')

                        #with pm.frameLayout( l=u'Maya Software → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Maya Software → Arnold', cl=self.collapseFrames.get()[0], cc=pm.Callback( self.frameColCmd, 0, 1 ), ec=pm.Callback( self.frameColCmd, 0, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( **rowLayOpt ):
                                    pm.text(l=u'Lambert, Blinn, Phong, PhongE  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert', c=pm.Callback( self.mayaShader_to_aiStandard ) )                       
                        
                        #with pm.frameLayout( l=u'Mentalray → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Mentalray → Arnold', cl=self.collapseFrames.get()[1], cc=pm.Callback( self.frameColCmd, 1, 1 ), ec=pm.Callback( self.frameColCmd, 1, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( en=False, **rowLayOpt ):
                                    pm.text(l=u'mia_material_x  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert')
                                
                                with pm.rowLayout( en=False, **rowLayOpt ):
                                    pm.text(l=u'mia_car_paint_phen_x  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert')
                        #with pm.frameLayout( l=u'Vray → Arnold', **frameLayOpt):
                        with pm.frameLayout( l=u'Vray → Arnold', cl=self.collapseFrames.get()[2], cc=pm.Callback( self.frameColCmd, 2, 1 ), ec=pm.Callback( self.frameColCmd, 2, 0 ), **frameLayOpt):
                            with pm.columnLayout(adj=1):
                                with pm.rowLayout( **rowLayOpt ):
                                    pm.text(l=u'VRayMtl  →  aiStandard : ', **textLabelOpt )
                                    pm.button(l='Convert', c=pm.Callback( self.VRayMtl_to_aiStandard ) )

                # Vray --------------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
                
                # Mentalray ---------------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
                
                # Maya Software -----------------------------------------------------------------------
                with pm.frameLayout(lv=False, bv=False,mw=3, mh=3, en=False):
                    with pm.columnLayout(adj=True):
                        pm.button()
            with pm.frameLayout( l=u'Advanced Options', cl=self.collapseFrames.get()[3], cc=pm.Callback( self.frameColCmd, 3, 1 ), ec=pm.Callback( self.frameColCmd, 3, 0 ), **frameLayOpt):
                with pm.columnLayout(adj=True):
                    pm.radioButtonGrp( l='Select : ', nrb=2, vr=True, cw4=(140,30,30,30),
                        select=self.selectOpt.get(), 
                        l1='Selected shaders only',     on1=pm.Callback( self.selectOpt.set, 1),
                        l2='All Shaders in this scene', on2=pm.Callback( self.selectOpt.set, 2),
                        #l3='3', on3=pm.Callback( self.selectOpt.set, 3),
                        )
                    pm.separator( h=8, style='in')
                    pm.checkBoxGrp( l='Options : ', numberOfCheckBoxes=4, vertical=True,
                        l1='Delete old shader',             v1=self.deleteOldShader.get(),  cc1=self.deleteOldShader.set,
                        l2='Assign to object',              v2=self.assignToObject.get(),   cc2=self.assignToObject.set,
                        l3='Add subfix',                    v3=self.addSubfix.get(),        cc3=self.addSubfix.set,
                        l4='Reconnect Hardware Texture',    v4=self.reconnectHwTx.get(),    cc4=self.reconnectHwTx.set,
                        
                    )
                    pm.checkBoxGrp( l='', numberOfCheckBoxes=1, vertical=True,                        
                        l1='Display process (slow)',   v1=self.processDisplay.get(),  cc1=self.processDisplay.set,
                        #l2='Assign to object',  v2=self.assignToObject.get(),  cc2=self.assignToObject.set,
                        #l3='Add subfix',        v3=self.addSubfix.get(),       cc3=self.addSubfix.set,
                        #l4='Display process (slow)',   v4=self.processDisplay.get(),  cc4=self.processDisplay.set,
                    )
        #
        # 탭 조정
        #
        self.tabLay.setTabLabel( [
            ( self.tabLay.getChildren()[0], 'Arnold'),
            ( self.tabLay.getChildren()[1], 'VRay'),
            ( self.tabLay.getChildren()[2], 'Mentalray'),
            ( self.tabLay.getChildren()[3], 'Maya Software'),
            ] )        
        self.tabLay.changeCommand( lambda: self.selectedTab.set( self.tabLay.getSelectTabIndex() ) )
        try:
            self.tabLay.setSelectTabIndex( self.selectedTab.get() )
        except:
            self.selectedTab.set(1)
            self.tabLay.setSelectTabIndex( self.selectedTab.get() )