Example #1
0
def getGroup(modeName, main=None, checkOnly=False):
    ''' Returns the group that contains the space's proxy target, i.e. the node the zero space is actually constrained to.
    
    Args:
        modeName: str = One of the target modes, ex: 'PARENT', 'POINT_ORIENT', etc.
        main: PyNode = The main controller in case the scene has multiple.
        checkOnly: bool = If True, won't build the space and returns None if not found.
    '''
    modeName = toCamel(modeName)
    if not main:
        main = find.mainGroup()

    for child in main.listRelatives():
        if pdil.simpleName(child) == '__spaces__':
            spaceContainer = child
            break
    else:
        spaceContainer = group(em=True, n='__spaces__', p=main)
        hide(spaceContainer)

    for child in spaceContainer.listRelatives():
        if pdil.simpleName(child) == modeName:
            spaceGroup = child
            break
    else:
        if checkOnly:
            return None
        else:
            spaceGroup = group(em=True, name=modeName, p=spaceContainer)

    return spaceGroup
Example #2
0
    def exportCameras(self, cacheFolder, log):
        perspCameras = pm.listCameras(o=0, p=1)
        userCameras = []
        for cam in perspCameras:
            if 'persp' not in cam:
                userCameras.append(cam)
        self.userCameras = userCameras
        for cam in userCameras:
            startTime = pm.playbackOptions(query=True, minTime=True)
            endTime = pm.playbackOptions(query=True, maxTime=True)

            pm.select(cam)
            fileName = cam + '.abc'
            fileName = os.path.join(cacheFolder, fileName).replace('\\', '/')

            jobstring = "AbcExport "
            jobstring += "-j \" -fr %d %d -worldSpace" % (startTime, endTime)

            jobstring += ' -root ' + cam

            jobstring += ' -file ' + fileName
            jobstring += '\"'
            print jobstring

            try:
                pm.hide(all=True)
                pm.select(cam)
                pm.showHidden(above=True)
                pm.mel.eval(jobstring)
            except:
                pm.warning('Could not export %s cam' % cam)
Example #3
0
def assert_cache(namespace, path):

    cache_group = assert_group_chain('animated', '{}_group'.format(namespace), 'cache')

    pm.hide(cache_group)

    if not pm.hasAttr(cache_group, 'mmCachePath'):
        cache_group.addAttr('mmCachePath', dataType='string')

    nodes = pm.listRelatives(cache_group, children=True)
    if nodes:
        existing_path = cache_group.attr('mmCachePath').get()
        if not existing_path:
            raise ValueError("Cache group {} has children, but no mmCachePath set.".format(cache_group))
        if existing_path == path:
            print('    NOTE: Already up to date.')
            return nodes, True
        print('    WARNING: Out of date; deleting.')
        pm.delete(nodes)
        nodes = None

    if not nodes:
        before = set(pm.ls(assemblies=True))
        pm.AbcImport(path, ft='{}:[^:]*$'.format(namespace))
        nodes = list(set(pm.ls(assemblies=True)) - before)
        for node in nodes:
            pm.parent(node, cache_group)
        cache_group.attr('mmCachePath').set(path)

    return nodes, False
Example #4
0
def infoStore(storeName, storeValue=False):
    storeName = str(storeName)
    #Create info store if it doesn't exist
    try:
        py.ls('infoStore')[0]
    except:
        originalSelection = py.ls(selection=True)
        py.spaceLocator(n='infoStore')
        py.addAttr('infoStore',
                   shortName='progress',
                   longName='ProgressBarName',
                   dataType='string')
        py.select(originalSelection)
        py.hide('infoStore')
    #Get value from info store or create new attribute
    try:
        storedValue = ast.literal_eval(py.getAttr('infoStore.' + storeName))
    except:
        py.addAttr('infoStore', longName=storeName, dataType='string')
        py.setAttr('infoStore.' + storeName, '{}')
        storedValue = ast.literal_eval(py.getAttr('infoStore.' + storeName))
    #Write values to info store
    if storeValue != False:
        py.setAttr('infoStore.' + storeName, str(storeValue))
    return storedValue
Example #5
0
def rig_curveBetweenTwoPoints(start,end, name='curveBetween' , degree=1, colour='white', parent='allModel_GRP'):

    startPos = pm.xform( start, translation=True, query=True, ws=True)
    endPos = pm.xform( end, translation=True, query=True, ws=True)

    pm.select(cl=True)
    startJnt = pm.joint(name=name+'Start_JNT')
    pm.pointConstraint( start, startJnt )
    pm.select(cl=True)
    endJnt = pm.joint(name=name+'End_JNT')
    pm.pointConstraint( end, endJnt )

    curve = pm.curve( n=name+'_CRV', d=degree, p=(startPos, endPos), k=(0,1) )

    sc = pm.skinCluster( (startJnt, endJnt),curve , tsb=True, dr=1)

    pm.skinPercent( sc, curve.cv[0],tv=(startJnt, 1)  )
    pm.skinPercent( sc, curve.cv[1],tv=(endJnt, 1)  )

    col = name_to_rgb(colour)
    curve.overrideColorRGB.set(col[0], col[1], col[2])

    topGrp = 'puppetLinearCurves_GRP'
    if not pm.objExists(topGrp):
        topGrp = rig_transform(0, name='puppetLinearCurves', type='group',
                                    parent=parent).object

    pm.parent(curve,startJnt,endJnt, topGrp)
    pm.setAttr(curve+".inheritsTransform", 0)
    pm.setAttr(curve+".template", 1)

    pm.hide( startJnt, endJnt )

    return curve
Example #6
0
    def start(cls):
        temp = core.findNode.controllers()
        ctrls = temp[:-2]  # Cut out the main controller and root motion

        # Artificially add the parents of the selected controls so they are hidden as a result
        selectedControls = set(selected())
        for ctrl in selected():
            if type(ctrl) in (fossilNodes.SubController,
                              fossilNodes.RigController):
                selectedControls.update(ctrl.getAllParents())

        # Hide the spaces since the controls vis is locked and hidden to prevent accidentally being keyed hidden.
        cls.controlsToHide = set(ctrls).difference(selectedControls)
        for obj in cls.controlsToHide:
            hide(obj.getParent(), obj.getParent().getParent())

        main = temp[-2]
        cls.hideMain = main not in selectedControls

        if cls.hideMain:
            cls.mainShapes = core.shape.getShapes(main)
            hide(cls.mainShapes)
            print 'hide main', cls.mainShapes[0].isVisible()
            if cls.mainShapes[0].isVisible():
                plug = cls.mainShapes[0].visibility.listConnections(s=True,
                                                                    p=True)
                if plug:
                    plug[0].set(0)
Example #7
0
def import_file():
    base_path = get_file_path('ecAutoFaceImport.mb')
    if mc.objExists('Blend_Morph') is False:
        mc.file(base_path, i=True)
        py.hide('baseoffset', 'PhonemeController')
    else:
        pass
Example #8
0
def addControlsToCurve(name,
                       crv=None,
                       spec={
                           'shape': 'sphere',
                           'size': 10,
                           'color': 'blue 0.22'
                       }):  # noqa e128
    '''
    Given a curve, make a control sphere at each CV.
    
    :return: List of newly made controls.
    '''
    if not crv:
        crv = selected()[0]

    controls = []

    for i, cv in enumerate(crv.cv):
        #l = control.sphere( '{0}{1:0>2}'.format( name, i+1), size, 'blue', type=control.SPLINE )
        shape = controllerShape.build('{0}{1:0>2}'.format(name, i + 1),
                                      spec,
                                      type=controllerShape.ControlType.SPLINE)

        core.dagObj.moveTo(shape, cv)
        handle = cluster(cv)[1]
        handle.setParent(shape)
        hide(handle)
        controls.append(shape)

    return controls
Example #9
0
def ctrl_paintEffect(cv_list):
    cv_list = pm.ls(cv_list)

    pm.select(cv_list)
    mel.eval('AttachBrushToCurves;')

    stroke_list = []
    for cv in cv_list:
        cv_shape_list = cv.getShapes()
        for cv_shape in cv_shape_list:
            stroke = pm.listConnections(cv_shape.worldSpace)[-1]
            stroke_list.append(stroke)
            pm.rename(stroke, str(cv.name()) + '_stroke')

    ctrl_geo_list = []
    empty_grp_list = []
    pm.select(stroke_list)
    mel.eval('doPaintEffectsToPoly( 1,0,0,1,100000);')
    for ctrl_geo_shape in pm.ls(sl=True):
        stroke = pm.listConnections(ctrl_geo_shape.inMesh)[-1]
        ctrl_geo = ctrl_geo_shape.getParent()
        ctrl_geo_list.append(ctrl_geo)

        empty_grp_list.append(ctrl_geo.getParent())
        pm.rename(ctrl_geo, str(stroke).replace('_stroke', '_stroke_geo'))

    ctrl_geo_grp = pm.group(em=True, n='ctrl_geo_grp')
    stroke_grp = pm.group(stroke_list, n='stroke_grp', p=ctrl_geo_grp)
    cv_geo_grp = pm.group(ctrl_geo_list, n='ctrl_geo_grp', p=ctrl_geo_grp)

    pm.hide(stroke_grp)

    pm.delete(empty_grp_list)

    return ctrl_geo_list
Example #10
0
def lock_rig(lock=True):
    pm.hide(pm.ls(type='locator'))
    pm.select(pm.ls(type='locator'), add=True)
    pm.select(pm.ls(type='orientConstraint'), add=True)
    pm.select(pm.ls(type='parentConstraint'), add=True)
    pm.select(pm.ls(type='pointConstraint'), add=True)
    # pm.select(pm.ls(type='skinCluster'),add=True)
    # pm.select(pm.ls(type='blendShape'),add=True)
    pm.select(pm.ls(type='follicle'), add=True)
    pm.select(pm.ls(type='ikHandle'), add=True)
    pm.select(pm.ls('*miscGp'), hi=True, add=True)
    pm.select(pm.ls('*bonGp'), hi=True, add=True)
    pm.select(pm.ls('*genGp'), hi=True, add=True)
    # pm.select(pm.ls('*facialGp'),hi=True,add=True)
    sel = pm.selected()
    for i in sel:
        log.info("{}:lock:{}".format(i, lock))
        pm.lockNode(i, lock=lock)
        if i.nodeType() == 'skinCluster':
            for b in i.getInfluence():
                b.attr('lockInfluenceWeights').set(lock)
        try:
            for atr in i.listAttr():
                if 'vis' not in atr:
                    try:
                        if lock:
                            atr.lock()
                        else:
                            atr.unlock()
                    except:
                        pass
        except:
            pass
Example #11
0
def annotateSelectionHandle(obj, text, pos=None):
    '''
    Make an annotation of the `obj`'s selection handle, optionally specifying
    the position of the handle as well.
    '''

    obj.displayHandle.set( True )
    
    if pos:
        obj.selectHandle.set( pos )

    loc = spaceLocator()
    
    ann = annotate(loc, text=text).getParent()
    ann.setParent( obj )
    ann.t.set(obj.selectHandle.get())
    ann.r.lock()
    ann.s.lock()
    
    loc.setParent(ann)
    loc.t.set(0, 0, 0)
    hide(loc)
    
    add = createNode( 'plusMinusAverage' )
    
    ann.t >> add.input3D[0]
    add.input3D[1].set( 0, 1, 0 )
    add.output3D >> obj.selectHandle
Example #12
0
def directPlacementMode(card):

    assert len(card.joints) == 3

    grp = group(em=True, n='DirectPlacement_Deletable')

    ctrls = []
    for bpj in card.joints:
        ctrl = tempWidget()
        pdil.dagObj.matchTo(ctrl, bpj)
        ctrls.append(ctrl)
        ctrl.setParent(grp)

    base, up, aim = ctrls

    aimLoc = spaceLocator()
    aimLoc.setParent(aim)
    aimLoc.t.set(0, 0, 0)

    baseLoc = spaceLocator()
    baseLoc.setParent(base)
    baseLoc.t.set(0, 0, 0)

    dist = distanceDimension(baseLoc, aimLoc)
    dist.getParent().setParent(grp)
    hide(dist)

    pointConstraint(base, card, mo=True)

    aimConstraint(aim,
                  card,
                  wut='object',
                  wuo=up,
                  aim=[0, -1, 0],
                  u=[0, 0, -1],
                  mo=True)

    # save base dimension
    # current dimesion / base dimension
    # multiply x, z by card's existing scale

    dist.addAttr('baseDist', at='double', dv=dist.distance.get())

    scaled = pdil.math.divide(dist.distance, dist.baseDist)

    mult = createNode('multiplyDivide')

    scaled >> mult.input1X
    scaled >> mult.input1Y
    scaled >> mult.input1Z

    mult.input2Y.set(card.sy.get())
    mult.input2Z.set(card.sz.get())

    mult.outputY >> card.sy
    mult.outputZ >> card.sz

    pointConstraint(up, card.joints[1], sk='x')
Example #13
0
    def makeGroupIfNotExist(self, grpName, isHidden):

        if not pm.objExists(grpName):
            grp = pm.group(n=grpName, em=1)
            if isHidden:
                pm.hide(grp)
        else:
            grp = pm.PyNode(grpName)

        return grp
Example #14
0
def ToggleHairCtrlVis(state='switch'):
    hairCtrlsGroup = pm.ls('HairCtrlGroup')[0]
    if not hairCtrlsGroup:
        return
    if state == 'switch':
        pass
    elif state == 'show':
        pm.showHidden(hairCtrlsGroup, below=True)
    elif state == 'hide':
        pm.hide([ctrl.getChildren() for ctrl in hairCtrlsGroup.getChildren()])
Example #15
0
 def disconnectNoise(self, cmd=''):
     # Parent camera to world
     pc.parent(self.camera, w=True)
     # Disconnect offset attributes and move the anim curves back to the camera
     self.disconnectOffsetAttributes()
     self.reconnectAnimationCurves(self.control, self.camera)
     # Add an extra attribute to the control locator to remember which camera was associated with. Then hide it
     self.addControlLinkedCameraAttribute()
     pc.hide(self.control)
     pc.select(self.camera)
     self.closeUI()
Example #16
0
 def disconnectNoise(self, cmd=''):
     # Parent camera to world
     pc.parent(self.camera, w=True)
     # Disconnect offset attributes and move the anim curves back to the camera
     self.disconnectOffsetAttributes()
     self.reconnectAnimationCurves(self.control, self.camera)
     # Add an extra attribute to the control locator to remember which camera was associated with. Then hide it
     self.addControlLinkedCameraAttribute()
     pc.hide(self.control)
     pc.select(self.camera)
     self.closeUI()
Example #17
0
 def fControl(self, newName, num):
     circ = controls.roundZ(curveScale=.2)
     pm.rename(circ, newName + "{0:02d}_fCTL".format(num))
     border = controls.square2()
     pm.hide(border)
     pm.rename(border, newName + "{0:02d}_fBDR".format(num))
     grp = pm.group(circ, border, n=newName + "{0:02d}_fGRP".format(num))
     grp2 = pm.group(grp, n=newName + "offSet_{0:02d}_fGRP".format(num))
     grp3 = pm.group(empty=True,
                     n=newName + "woldSpace_{0:02d}_fGRP".format(num))
     pm.parent(grp2, grp3)
     pm.setAttr(str(grp) + ".tz", -0.3)
Example #18
0
	def __init__(self, name):

		self.side = ''
		if name.startswith('l_'):
			self.side = 'l'
		if name.startswith('r_'):
			self.side = 'r'

		self.top = pm.PyNode(rig_transform(0, name=name+'Module').object)

		self.controls = pm.PyNode(rig_transform(0, name=name+'Controls',
		                                        parent=self.top).object)
		self.controlsSec = pm.PyNode(rig_transform(0, name=name + 'ControlsSecondary',
		                                        parent=self.controls).object)
		self.skeleton = pm.PyNode(rig_transform(0, name=name+'Skeleton',
		                                        parent=self.top).object)
		self.parts = pm.PyNode(rig_transform(0, name=name+'Parts',
		                                     parent=self.top).object)

		pm.hide(self.parts)

		pm.addAttr(self.top, longName='skeletonVis', at='long', k=True, min=0,
		           max=1)
		pm.connectAttr(self.top.skeletonVis, self.skeleton.visibility)

		pm.addAttr(self.top, longName='controlsVis', at='long', k=True, min=0,
		           max=1)
		pm.connectAttr(self.top.controlsVis, self.controls.visibility)

		pm.addAttr(self.top, longName='ikFkSwitch', at='long', k=True, min=0,
		           max=1)


		if pm.objExists('global_CTRL'):
			globalCtrl = pm.PyNode('global_CTRL')
			pm.connectAttr(globalCtrl.skeletonVis, self.top.skeletonVis)
			pm.connectAttr(globalCtrl.controlsVis, self.top.controlsVis)
			pm.setAttr(self.skeleton.overrideEnabled, 1)
			pm.setDrivenKeyframe(self.skeleton.overrideDisplayType,
			                     cd=globalCtrl.skeleton, dv=0, v=0)
			pm.setDrivenKeyframe(self.skeleton.overrideDisplayType,
			                     cd=globalCtrl.skeleton, dv=1, v=2)

		self.controlsList = []
		self.skeletonList = []
		self.partsList = []

		rigModule = 'rigModules_GRP'
		if pm.objExists(rigModule):
			pm.parent(self.top, rigModule)
			pm.addAttr(rigModule, longName=name+'Module', at='long', k=True,
			           min=0, max=1, dv=1)
			pm.connectAttr( rigModule+'.'+name+'Module', self.top.visibility  )
Example #19
0
 def matchMesh(self, btn):
     """ This function can execute all functions related to creating a match mesh
     Args:
         None
     Returns (None)
     """
     smoothMesh = self.get_smooth_mesh()
     skinMesh = self.get_skin_mesh()
     pm.hide(skinMesh)
     pm.showHidden(smoothMesh)
     print smoothMesh
     print 'YOU DID IT NOW MATCH THAT MESH!'
Example #20
0
def accessoryGroup():
    main = mainGroup()

    for child in main.listRelatives():
        if child.name() == 'accessory':
            grp = child
            break
    else:
        grp = group(n='accessory', em=True)
        grp.setParent(main)
        hide(grp)

    return grp
Example #21
0
def face_mesh_query():
    transforms = []
    transforms.append(py.getAttr('Blend_Morph.translate'))
    transforms.append(py.getAttr('Blend_Morph.rotate'))
    transforms.append(py.getAttr('Blend_Morph.scale'))
    py.setAttr('master_locator_grp.translate', transforms[0], type="double3")
    py.setAttr('master_locator_grp.rotate', transforms[1], type="double3")
    py.setAttr('master_locator_grp.scale', transforms[2], type="double3")

    py.setAttr('master_offset_grp.translate', transforms[0], type="double3")
    py.setAttr('master_offset_grp.rotate', transforms[1], type="double3")
    py.setAttr('master_offset_grp.scale', transforms[2], type="double3")
    py.hide('Blend_Morph')
Example #22
0
def shaderSwitch(pRenderStyle, *Args):

    skinMat = getMaterial('Eyelashes')
    fillMat = getMaterial('blocker')

    if pRenderStyle == 'Normal':
        applyMatToSelection(skinMat, ['Body_%s' % (globalGender[0]), 'Eyes'])
        pm.hide('Eyes', 'blocker', 'IconRenderer')
        pm.showHidden('Eyelashes')

    if pRenderStyle == 'Flat':
        applyMatToSelection(fillMat, ['Body_%s' % (globalGender[0]), 'Eyes'])
        pm.showHidden('Eyes', 'blocker', 'IconRenderer')
        pm.hide('Eyelashes')
Example #23
0
def connectingLine(src, dest):
    '''
    Draw an annotation arrow from the src to the dest.
    '''
    loc = spaceLocator()
    line = annotate(loc, tx='').getParent()
    line.setParent(src)
    line.t.set(0, 0, 0)
    shape = line.getShape()
    shape.overrideEnabled.set(True)
    shape.overrideDisplayType.set(1)

    loc.setParent(dest)
    loc.t.set(0, 0, 0)
    loc.t.lock()
    hide(loc.listRelatives())
Example #24
0
    def maketwistJoints(self, parentJnt, nTwistJoint, rotAxis):
        prefix = name.removeSuffix(parentJnt)
        parentJntChild = pm.listRelatives(parentJnt, c=1, type='joint')[0]

        # make twist joints
        twistJntGrp = pm.group(n=prefix + 'TwistJoint_GRP',
                               p=self.twistJointsMainGrp,
                               em=1)

        twistParentJnt = pm.duplicate(parentJnt,
                                      n=prefix + 'TwistStart_JNT',
                                      parentOnly=True)[0]
        twistChildJnt = pm.duplicate(parentJntChild,
                                     n=prefix + 'TwistEnd_JNT',
                                     parentOnly=True)[0]

        # adjust twist joints
        origJntRadius = pm.getAttr(parentJnt + '.radius')

        for j in [twistParentJnt, twistChildJnt]:
            pm.setAttr(j + '.radius', origJntRadius * 2)
            pm.color(j, ud=1)

        pm.parent(twistChildJnt, twistParentJnt)
        pm.parent(twistParentJnt, twistJntGrp)

        # attach twist joints
        pm.pointConstraint(parentJnt, twistParentJnt)

        # make IK handle
        twistIk = pm.ikHandle(n=prefix + 'TwistJoint_IKH',
                              sol='ikSCsolver',
                              sj=twistParentJnt,
                              ee=twistChildJnt)[0]
        pm.hide(twistIk)
        pm.parent(twistIk, twistJntGrp)
        pm.parentConstraint(parentJntChild, twistIk)

        pm.hide(twistParentJnt)

        innerJointList = self.makeInnerTwistJoints(prefix, twistParentJnt,
                                                   twistChildJnt, nTwistJoint,
                                                   rotAxis)
        pm.parent(innerJointList, twistJntGrp)

        # Constriant twistJoint group to main Joint
        pm.parentConstraint(parentJnt, twistJntGrp, mo=True)
Example #25
0
def addConnectingCurve(objs):
    '''
    Given a list of objects, make a curve that links all of them.
    '''
    crv = curve( d=1, p=[(0, 0, 0)] * len(objs) )

    grp = group(crv, n='connectingCurve')

    for i, obj in enumerate(objs):
        handle = cluster(crv.cv[i])[1]
        pointConstraint( obj, handle )
        handle.setParent( grp )
        hide(handle)
        
    crv.getShape().overrideEnabled.set( 1 )
    crv.getShape().overrideDisplayType.set( 2 )
        
    return grp
Example #26
0
def createProxyCTRL():
    import pymel.core as pm
    proxyGrp = pm.ls(sl=True)[0]
    grp = pm.duplicate(proxyGrp)
    ctrlShape = pm.listRelatives(grp, ad=True, type="nurbsCurve")
    ctrl = pm.listRelatives(ctrlShape, p=True)
    proxyCtrlShape = pm.listRelatives(proxyGrp, ad=True, type="nurbsCurve")
    proxyCtrl = pm.listRelatives(proxyCtrlShape, ap=True)
    proxyGrpHier = pm.listRelatives(proxyGrp, ad=True)
    for i in range(len(proxyGrpHier)):
        pm.rename(proxyGrpHier[i], proxyGrpHier[i] + "Proxy")
    pm.rename(proxyGrp, proxyGrp + "Proxy")
    pm.rename(grp, proxyGrp[:-5])
    for x in range(len(ctrl)):
        pm.connectAttr(ctrl[x].translate, proxyCtrl[x].translate)
        pm.connectAttr(ctrl[x].rotate, proxyCtrl[x].rotate)
    pm.hide(proxyGrp)
    pm.select(cl=True)
Example #27
0
    def makeClavicle(self, prefix, limbJoints, scapulaJnt, rigScale,
                     rigmodule):
        clavicleCtrl = control.Control(prefix=prefix + 'Clavicle',
                                       translateTo=scapulaJnt,
                                       rotateTo=scapulaJnt,
                                       parent=rigmodule.controlsGrp,
                                       shape='sphere',
                                       lockChannels=['t', 's', 'v'])
        scapulaIk = pm.ikHandle(n=prefix + 'Scapula_IKH',
                                sol='ikSCsolver',
                                sj=scapulaJnt,
                                ee=limbJoints[0])[0]
        pm.hide(scapulaIk)
        pm.parentConstraint(self.baseAttachGrp, clavicleCtrl.Off, mo=1)
        pm.parent(scapulaIk, clavicleCtrl.C)
        pm.pointConstraint(clavicleCtrl.C, scapulaJnt)

        return clavicleCtrl
Example #28
0
    def __init__(self, prefix='new', baseObj=None):
        """
        :param prefix: str, prefix to name new objects
        :param baseObj: instance of base.module.Base class
        :return: None
        """

        self.topGrp = pm.group(n=prefix + 'Module_GRP', em=1)

        self.controlsGrp = pm.group(n=prefix + 'Controls_GRP',
                                    em=1,
                                    p=self.topGrp)
        self.secControlsGrp = pm.group(n=prefix + 'secondaryControls_GRP',
                                       em=1,
                                       p=self.topGrp)
        self.jointsGrp = pm.group(n=prefix + 'Joints_GRP', em=1, p=self.topGrp)
        self.partsGrp = pm.group(n=prefix + 'Parts_GRP', em=1, p=self.topGrp)
        self.partsNoTransGrp = pm.group(n=prefix + 'PartsNoTrans_GRP',
                                        em=1,
                                        p=self.topGrp)

        pm.hide(self.partsGrp, self.partsNoTransGrp)

        pm.setAttr(self.partsNoTransGrp + '.it', 0, l=1)

        if (pm.objExists('display_CTRL')):
            displayCtrl = pm.ls('display_CTRL')[0]

            levelGrp = [self.controlsGrp, self.secControlsGrp]
            pm.addAttr(displayCtrl,
                       ln=prefix,
                       at='enum',
                       enumName='none:block:all',
                       k=1,
                       dv=1)
            pm.setAttr(displayCtrl + '.' + prefix, cb=1)
            common.setDrivenKey(displayCtrl + '.' + prefix, [0, 1, 2],
                                levelGrp[0] + '.v', [0, 1, 1])
            common.setDrivenKey(displayCtrl + '.' + prefix, [0, 1, 2],
                                levelGrp[1] + '.v', [0, 0, 1])

        # parent module
        if baseObj:
            pm.parent(self.topGrp, baseObj.modulesGrp)
Example #29
0
def jointonselection(obj=list(), prnt=False, pivot=False):
    if not obj:
        obj = pm.ls(sl=True)
    if obj:
        retJoints = list()
        retCtrl = list()
        for i in range(len(obj)):
            pm.select(cl=True)
            jnt = pm.joint(n=obj[i] + '_Jnt')
            retJoints.append(jnt)
            endJnt = pm.joint(n=obj[i] + '_EndJnt', p=(0, 1, 0))
            prntConst = obj[i]
            if pivot:
                prntConst = pm.cluster(obj[i])
            pm.select(cl=True)
            pm.delete(pm.parentConstraint(prntConst, jnt))
            pm.select(cl=True)
            if pivot:
                pm.delete(prntConst)
            pm.hide(jnt)
            offsetJnt = pm.joint(n='FKOffset' + obj[i])
            retCtrl.append(offsetJnt)
            pm.setAttr(offsetJnt + '.drawStyle', 2)
            pm.delete(pm.parentConstraint(jnt, offsetJnt))
            ExtraGrp = pm.group(n='FKExtra' + obj[i], em=True)
            pm.delete(pm.parentConstraint(offsetJnt, ExtraGrp))
            pm.parent(ExtraGrp, offsetJnt)
            CTRL = pm.circle(n=obj[i] + '_CTRL', ch=False, nr=(0, 1, 0))
            pm.delete(pm.parentConstraint(jnt, CTRL))
            pm.parent(CTRL, ExtraGrp)
            jntNul = pm.joint(n='FK' + obj[i])
            pm.setAttr(jntNul + '.drawStyle', 2)
            pm.parentConstraint(CTRL, jnt)
            bind = pm.skinCluster(obj[i], jnt)

        print "Done...",
        if not prnt:
            return retJoints, retCtrl
        else:
            return retJoints, jntNul
    else:
        print "Please Select Object",
        return False, False
Example #30
0
def advancedTwist(start, end, baseCtrl, endCtrl, ik):
    # Setup advanced twist
    startAxis = duplicate(start, po=True)[0]
    startAxis.rename('startAxis')
    startAxis.setParent(baseCtrl)
    pdil.dagObj.lock(startAxis)

    endAxis = duplicate(start, po=True)[0]
    endAxis.rename('endAxis')
    endAxis.setParent(endCtrl)
    endAxis.t.set(0, 0, 0)
    pdil.dagObj.lock(endAxis)

    hide(startAxis, endAxis)

    ik.dTwistControlEnable.set(1)
    ik.dWorldUpType.set(4)
    startAxis.worldMatrix[0] >> ik.dWorldUpMatrix
    endAxis.worldMatrix[0] >> ik.dWorldUpMatrixEnd
Example #31
0
def generateBoids(model_lst, x1, y1, z1, x2, y2, z2, vMin, vMax, numOfBoids):
    boids = []
    for i in range(numOfBoids):
        model = model_lst[random.randint(0, len(model_lst)-1)]
        x = random.randint(x1, x2)
        y = random.randint(y1, y2)
        z = random.randint(z1, z2)
        vx = random.randint(vMin, vMax)
        vy = random.randint(vMin, vMax)
        vz = random.randint(vMin, vMax)
        
        new_boid = pm.duplicate(model)

        #print(new_boid,new_boid[0], randX, randY, randZ)
        pm.move(x, y, z, new_boid[0], worldSpace = True)
        boids.append(Boid(new_boid, x, y, z, vx, vy, vz)) 
    for m in model_lst:
        pm.hide(m)     
    return boids
Example #32
0
def createMatcher(ctrl, target):
    '''
    Creates an object that follows target, based on ctrl so ctrl can match it
    easily.
    '''
    matcher = duplicate(ctrl, po=True)[0]
    parentConstraint(target, matcher, mo=True)

    matcher.rename(ctrl.name() + '_matcher')
    hide(matcher)

    if not ctrl.hasAttr('matcher'):
        ctrl.addAttr('matcher', at='message')

    matcher.message >> ctrl.matcher

    if matcher.hasAttr('fossilCtrlType'):
        matcher.deleteAttr('fossilCtrlType')

    return matcher
Example #33
0
def getTrueWorld():
    ''' Make a node that stays in world space.
    '''
    main = find.mainGroup()
    if not main:
        return None

    for child in main.listRelatives():
        if pdil.shortName(child) == 'trueWorld':
            return child

    grp = group(em=True, name='trueWorld')
    for t in 'trs':
        for a in 'xyz':
            grp.attr(t + a).setKeyable(False)

    hide(grp)
    grp.setParent(main)
    grp.inheritsTransform.set(False)

    return grp
Example #34
0
def measure(start, end, name='measureLocs'):
    '''
    Given 2 objects, makes and point constrains locators to them and measures.
    '''

    a = spaceLocator()
    pointConstraint(start, a)

    b = spaceLocator()
    pointConstraint(end, b)

    dist = distanceDimension(a, b)

    hide(a, b, dist)

    grp = group(em=True, name=name)
    grp.inheritsTransform.set(False)
    a.setParent(grp)
    b.setParent(grp)

    return dist.getParent(), grp
Example #35
0
def show_group(shown_group):
    group_image = {'up_eye_locator_grp': 'thumb_upeye.png',
                   'low_eye_locator_grp': 'thumb_loweye.png',
                   'up_lip_locator_grp': 'thumb_upmouth.png',
                   'low_lip_locator_grp': 'thumb_lowmouth.png',
                   'head_locator_grp': 'thumb_jaw_head.png',
                   'cheek_locator_grp': 'thumb_cheek.png'}

    if shown_group == 'all':
        py.showHidden('up_eye_locator_grp',
                'low_eye_locator_grp',
                'up_lip_locator_grp',
                'low_lip_locator_grp',
                'head_locator_grp',
                'cheek_locator_grp')
    else:
        py.hide('up_eye_locator_grp',
                'low_eye_locator_grp',
                'up_lip_locator_grp',
                'low_lip_locator_grp',
                'head_locator_grp',
                'cheek_locator_grp')
        py.showHidden(shown_group)
        guide_gui(group_image[shown_group])
Example #36
0
 def hide(self):
     pm.hide('%s' % (self.light))
Example #37
0
def run():
    
    RawMovementVector = IntVector2( 0, 0 )
    numEnemies = 15
    playSpaceMinMaxX = 50
    playSpaceMinMaxY = 50
    enemyList = []
    
    # Init SDL
    if sdl2.SDL_Init(sdl2.SDL_INIT_TIMER|sdl2.SDL_INIT_GAMECONTROLLER|sdl2.SDL_INIT_EVENTS) != 0:
        print(sdl2.SDL_GetError())
        return -1
    
    # Init Controller
    controller = sdl2.SDL_GameController()
   
    for i in range(sdl2.SDL_NumJoysticks()):
        if sdl2.SDL_IsGameController(i):
            controller = sdl2.SDL_GameControllerOpen(i)
    
    # Create SDL Window    
    ctrlWindow = sdl2.SDL_CreateWindow( b"Control", sdl2.SDL_WINDOWPOS_UNDEFINED, sdl2.SDL_WINDOWPOS_UNDEFINED, 200, 150, sdl2.SDL_WINDOW_INPUT_FOCUS|sdl2.SDL_WINDOW_HIDDEN )
    if not ctrlWindow:
        print(sdl2.GetError())
        return -1
    
    # Init Player
    player = pm.polyCube( name="Player", w=1, h=1, d=1, cuv=0, ax=(0,1,0), sx=1, sy=1, sz=1 )
    if player is None:
        print "ERROR! Player not created!"
        return -1
    else:
        pm.selectType( pv=True )
        pm.polySelectConstraint( type=0x0001, mode=3 )
        pm.select()
        pVs = pm.ls( selection=True, fl=True )
        pm.select( cl=True )
        for v in range(len(pVs)):
            pm.polyColorPerVertex( pVs[v], colorRGB=(1.0,0.0,0.0), alpha=1.0, cdo=True, notUndoable=True )
    pSpeed = 40.0
    
    for i in range(numEnemies):
        thisE = spawnEnemy(-(playSpaceMinMaxX), playSpaceMinMaxX)
        enemyList.append(thisE)
    print enemyList
    
    # Start Ticks
    lastTime = 0
    cTime = sdl2.SDL_GetTicks()
    
    activeEnemies = numEnemies
    playerScale = 1.0
    
    # Start Game Loop
    running = True    
    while running:
        # See if Yout Won achieved
        #print activeEnemies
        if activeEnemies < 1:
            sdl2.SDL_DestroyWindow(ctrlWindow)
            sdl2.SDL_Quit()
            pm.select( all=True )
            pm.delete()
            return "You Won!"
            
        #Calculate Delta Time
        lastTime = cTime
        cTime = sdl2.SDL_GetTicks()
        dTime = cTime - lastTime
        if dTime > 16:
            dTime = 16
        
        deltaM = float(dTime)/float(1000)
              
        ButtonPressed = False
        # Process Input
        evnt = sdl2.SDL_Event()
        while sdl2.SDL_PollEvent(ctypes.byref(evnt)) != 0:
            if evnt.type == sdl2.SDL_QUIT:
                running = False
                break
            elif evnt.type == sdl2.SDL_CONTROLLERAXISMOTION:
                if evnt.caxis.axis == sdl2.SDL_CONTROLLER_AXIS_LEFTX:
                    RawMovementVector.x = evnt.caxis.value
                    break
                elif evnt.caxis.axis == sdl2.SDL_CONTROLLER_AXIS_LEFTY:
                    RawMovementVector.y = evnt.caxis.value
                    break
            elif evnt.type == sdl2.SDL_CONTROLLERBUTTONDOWN:
                if evnt.cbutton.button == sdl2.SDL_CONTROLLER_BUTTON_A:
                    ButtonPressed = True
                    break
            elif evnt.type == sdl2.SDL_CONTROLLERBUTTONUP:
                if evnt.cbutton.button == sdl2.SDL_CONTROLLER_BUTTON_A:
                    ButtonPressed = False
                    break
            elif evnt.type == sdl2.SDL_KEYDOWN:
                if evnt.key.keysym.sym == sdl2.SDLK_ESCAPE:
                    sdl2.SDL_DestroyWindow(ctrlWindow)
                    sdl2.SDL_Quit()
                    break
                        
        #print RawMovementVector.x, RawMovementVector.y, ButtonPressed
        # Remap Raw Movement to -1 to 1 in float
        Movement = RemapMovement( RawMovementVector.x, RawMovementVector.y )
        #print Movement.x, Movement.y
        pMoveX = Movement.x * (deltaM*pSpeed)
        pMoveY = Movement.y * (deltaM*pSpeed)
        moveObj( player[0], pMoveX, 0.0, pMoveY)
        for i in range(len(enemyList)):
            testList = enemyList
            testList[i] = updateEnemy( testList[i], playSpaceMinMaxX, playSpaceMinMaxY, deltaM )
            if detectCollision( player[0], testList[i][0][0] ) == True:
                vis = pm.getAttr( testList[i][0][0]+'.visibility' )
                if vis == True:
                    pm.hide( enemyList[i][0][0] )
                    activeEnemies = activeEnemies - 1
                    playerScale = playerScale + 0.5
                    pm.xform( player[0], scale=[playerScale, playerScale, playerScale] )
                      
        # redraw viewport        
        pm.refresh( cv=True )
             
            
    sdl2.SDL_DestroyWindow(ctrlWindow)
    sdl2.SDL_Quit()
    return 0
Example #38
0
    def create(cls, base_flaps, num_images,
               rows, columns, radius, layout_index=0):
        '''
        :param base_flaps: Base flaps to choose from
        :param num_images: Number of images in sequence
        :param rows: Number of rows in layout
        :param columns: Number of columns in layout
        :param radius: Radius
        :param layout_index: Index in row column layout
        '''

        ProgressBar.setup(
            title='Creating Split Flaps',
            text='...',
            maximum=100,
            parent=utils.get_maya_window()
        )

        flaps = utils.create_flaps(
            num_images,
            base_flaps,
            layout_index,
            rows,
            columns)

        ProgressBar.set(10, 'Creating cloth flaps...')
        cloth_flaps = [utils.create_cloth_flap(flaps[0])]
        cloth_flaps.extend([cloth_flaps[0].duplicate(rc=True)[0]
                            for i in xrange(num_images - 1)])

        ProgressBar.set(20, 'Radially arranging flaps...')
        utils.radial_arrangement(flaps, radius)

        ProgressBar.set(30, 'Radially arranging cloth flaps')
        utils.radial_arrangement(cloth_flaps, radius)

        r, c = utils.get_row_col(layout_index, None, columns)
        rowcol = '{:02d}{:02d}'.format(int(r), int(c))
        cloth_name = 'cloth_flap_{}'.format(rowcol)
        flaps_name = 'flaps_{}'.format(rowcol)

        ProgressBar.set(50, 'Combining cloth geo...')
        cloth = pm.polyUnite(
            cloth_flaps,
            ch=False,
            mergeUVSets=True,
            name=cloth_name + '_geo',
        )[0]
        ProgressBar.set(60, 'Combining flap geo...')
        flaps = pm.polyUnite(
            flaps,
            ch=False,
            mergeUVSets=True,
            name=flaps_name + '_geo',
        )[0]
        pm.hide(cloth)

        # Create colliders
        ProgressBar.set(70, 'Creating Collider...')
        collider = utils.create_collider(flaps, radius)

        ProgressBar.set(80, 'Grouping geometry...')
        flaps_grp = pm.group([flaps, collider],
                             name='flaps_{}_geo_grp'.format(rowcol))
        rotate_grp = pm.group(cloth, name='rotate_{}_grp'.format(rowcol))
        copy_grp = pm.group(em=True, name='copy_{}_grp'.format(rowcol))
        split_flap = pm.group(
            [copy_grp, rotate_grp, flaps_grp],
            name=flaps_name + '_grp'
        )
        ProgressBar.set(90, 'Adding attributes...')
        split_flap.addAttr('split_flap', at='bool', dv=True)
        split_flap.addAttr('layout_index', at='long', dv=layout_index)
        split_flap.addAttr('layout_row', at='long', dv=r)
        split_flap.addAttr('layout_column', at='long', dv=c)
        split_flap.addAttr('number_of_rows', at='long', dv=rows)
        split_flap.addAttr('number_of_columns', at='long', dv=columns)
        split_flap.addAttr('flaps', at='message')
        split_flap.addAttr('cloth', at='message')
        split_flap.addAttr('collider', at='message')
        split_flap.addAttr('rotate_grp', at='message')
        split_flap.addAttr('copy_grp', at='message')
        copy_grp.message.connect(split_flap.copy_grp)
        rotate_grp.message.connect(split_flap.rotate_grp)
        flaps.message.connect(split_flap.flaps)
        cloth.message.connect(split_flap.cloth)
        collider.message.connect(split_flap.collider)

        # Rename hierarchy
        ProgressBar.set(95, 'Renaming hierarchy')
        utils.replace_in_hierarchy(split_flap, r'\d+', 'BASE')

        ProgressBar.set(100, 'Done!')
        ProgressBar.hide()
        return cls(split_flap)
Example #39
0
def make_offset_groups(**kwargs):
    py.showHidden('baseoffset')
    py.hide('master_locator_grp')
    delete_bool = kwargs.setdefault('delete', False)
    if delete_bool is True:
        for key in cl.EcGroup.group_offset_dict:
            for i in range(0, len(cl.EcGroup.group_offset_dict[key])):
                try:
                    print 'deleting %s' % key
                    py.delete(cl.EcGroup.group_offset_dict[key][i].group_name)
                except:
                    print 'Tried to delete %s' % key
        py.delete('cn_head_jnt', 'low_jaw_grp')
        py.showHidden('master_locator_grp')
        py.hide('baseoffset')
        locator_placement_gui()
    else:
        master_jaw_grp = cl.EcGroup(groupName='low_jaw_grp').set_parent(operation='offset', parent='master_offset_grp')\
            .match(DriveObject='cn_head_low_jaw_jnt').match(DrivenObject='master_offset_grp', DriveObject='cn_head_jnt',
                                                            type='parent', maintainOffset=True)\
            .match(DrivenObject='follicles_grp', DriveObject='cn_head_jnt', type='parent', maintainOffset=True)
        for key in cl.EcGroup.loc_name_pos_dict:
            num = 2
            parent = 'master_offset_grp'
            side = ['rt_', 'lf_']
            if key == 'head_low_jaw' or key == 'head':
                main_offset = [None]
            elif key == 'mouth_center_up':
                main_offset = []
                main_offset.append(cl.EcGroup(groupName='cn_'+key+'_m_grp'))
                offset_group = cl.EcGroup(groupName='cn_'+key+'_offset_grp')
                main_offset[0].set_parent(operation='offset', parent=parent)\
                        .match(DriveObject='cn_'+key+'_jnt')
                offset_group.set_parent(operation='offset', parent=main_offset[0].group_name)\
                        .match(DriveObject='cn_'+key+'_jnt')\
                    .match(DriveObject='cn_'+key+'_f', deleteConstraint=False, maintainOffset=True)
                offset = cl.EcOffset(key, 'cn_', offset_group.group_name)
            elif 'mouth' in key:
                if 'low' in key:
                    if key == 'mouth_center_low':
                        side = ['cn_']
                        num = 1
                        parent = 'low_jaw_grp'
                    else:
                        parent = 'low_jaw_grp'
                main_offset = []
                for i in range(0, num):
                    main_offset.append(cl.EcGroup(groupName=side[i]+key+'_m_grp'))
                    offset_group = cl.EcGroup(groupName=side[i]+key+'_offset_grp')
                    main_offset[i].set_parent(operation='offset', parent=parent)\
                        .match(DriveObject=side[i]+key+'_jnt')
                    offset_group.set_parent(operation='offset', parent=main_offset[i].group_name)\
                        .match(DriveObject=side[i]+key+'_jnt')\
                        .match(DriveObject=side[i]+key+'_f', deleteConstraint=False, maintainOffset=True)
                    rotate_offset = cl.EcGroup(groupName=side[i]+key+'_rotate_grp')\
                        .set_parent(operation='offset', parent=offset_group.group_name)
                    if 'low' in key:
                        rotate_offset.match(DriveObject='cn_head_low_jaw_jnt', deleteConstraint=False, type='parent')
                    offset = cl.EcOffset(key, side[i], rotate_offset.group_name).freeze()
            else:
                main_offset = []
                for i in range(0, num):
                    main_offset.append(cl.EcGroup(groupName=side[i]+key+'_m_grp'))
                    offset_group = cl.EcGroup(groupName=side[i]+key+'_offset_grp')
                    main_offset[i].set_parent(operation='offset', parent=parent)\
                        .match(DriveObject=side[i]+key+'_jnt')
                    offset_group.set_parent(operation='offset', parent=main_offset[i].group_name)\
                        .match(DriveObject=side[i]+key+'_jnt')\
                    .match(DriveObject=side[i]+key+'_f', deleteConstraint=False, maintainOffset=True)
                    offset = cl.EcOffset(key, side[i], offset_group.group_name)
            cl.EcGroup.group_offset_dict[key] = main_offset
        py.hide('baseoffset')
        offset_gui()
Example #40
0
	pm.parentConstraint(ctrls[i], jnt)
	Colorize(ctrls[i],color='r')
# parent first and last lower joints to first and last upper controls curves
pm.parentConstraint(ctrls[0], lowControlJnts[-1])
pm.parentConstraint(ctrls[4], lowControlJnts[0])
# create extra groups above control curves
ctrlZeroGrps = ZeroGrp(ctrls)[0]
# make controls more animation friendly by parenting them under each other
pm.parentConstraint(ctrls[0], ctrls[2], ctrlZeroGrps[1], mo=True)
pm.parentConstraint(ctrls[2], ctrls[4], ctrlZeroGrps[3], mo=True)
pm.parentConstraint(ctrls[0], ctrls[2], ctrlZeroGrps[1], mo=True)
pm.parentConstraint(ctrls[4], ctrls[6], ctrlZeroGrps[5], mo=True)
pm.parentConstraint(ctrls[6], ctrls[0], ctrlZeroGrps[7], mo=True)

# cleanup outliner
# =========================================================================
lidSkinJnts_grp = pm.group( uppJnts, lowJnts, name=prefix+"_lidSkinJnts_grp" )
lidControlJnts_grp = pm.group( uppControlJnts, lowControlJnts, name=prefix+"_lidControlJnts_grp" )
lidLocs_grp = pm.group( uppLocs, lowLocs, name=prefix+"_lidLocs_grp" )
lidCtrls_grp = pm.group( ctrlZeroGrps, name=prefix+"_lidCtrls_grp" )
pm.hide(uppLocs, lowLocs, uppControlJnts, lowControlJnts)

# mirror everthing
# =========================================================================
lid_rig_grp = pm.group(lidSkinJnts_grp, lidControlJnts_grp, lidLocs_grp, lidCtrls_grp, uppCurve, lowCurve, center, upVec, upVec, name=prefix+"_lid_rig_grp")
pm.xform(lid_rig_grp, os=True, piv=(0,0,0))
otherSide_lid_rig_grp = pm.duplicate(lid_rig_grp,rr=True,un=True)[0]
otherSide_lid_rig_grp.scaleX.set(-1)
mel.eval( 'searchReplaceNames "L_" "R_" "hierarchy"' )
mel.eval( 'searchReplaceNames "grp1" "grp" "selected"' )