Пример #1
0
    def heyWitch_jntFromLoop(self, *args):
        loopyJointPrompt = cmds.promptDialog(message="Enter name ",
                                             button=['OK', 'Cancel'],
                                             defaultButton='OK',
                                             cancelButton='Cancel',
                                             dismissString='Cancel')

        if loopyJointPrompt == 'OK':
            loopyJoint = cmds.promptDialog(query=True, text=True)
            cmds.DetachComponent()
            cmds.CreateCurveFromPoly()
            newCurve = cmds.ls(sl=True, type='transform')
            for x in newCurve:
                cmds.delete(x, ch=True)
                cmds.makeIdentity(x, apply=True, t=1, r=1, s=1, n=0)
                cmds.CenterPivot()
                cmds.select(clear=True)
                cmds.joint(name=loopyJoint)
                cmds.pointConstraint(x, loopyJoint)
                cmds.delete((loopyJoint + "_pointConstraint1"), x)
Пример #2
0
import maya.cmds as mc
import maya.mel as mel
oEdges = mc.ls(sl=True)
oObj = oEdges[0].split('.')[0]
oFace = ''
for i in oEdges:
    if '.f[' in i:
        oFace = i
mc.DetachComponent()
mc.select(cl=True)
mc.select(oFace)
mc.ConvertSelectionToShell()
oFacesFinal = mc.ls(sl=True)
mc.select(oObj)
mc.polyMergeVertex(d=0.0001)
mc.select(oFacesFinal)
mc.selectType(smp=0, sme=0, smf=1, smu=0, pv=0, pe=0, pf=1, puv=0)
mc.hilite(oObj, r=True)
mel.eval('doDelete;')
mc.select(oObj, r=True)
mc.polyCloseBorder()
Пример #3
0
def makeSym(*args):
    selLs = cmds.ls(sl = True)

    # When user select center edge loop.
    if '.e' in selLs[0]:
        numOfShells = cmds.polyEvaluate(shell = True)
        if numOfShells > 1:
            cmds.confirmDialog(title = 'Warning', message = 'Selected mesh is made of combining several geometry.\nSeparate mesh and try it again.')
            return False

        centerEdgeLoop = selLs
        objName = centerEdgeLoop[0].split('.')[0]
        uvKeepGeo = cmds.duplicate(objName, n = '{0}_uvKeep_geo'.format(objName))

        mel.eval('PolySelectConvert 3;')
        tak_misc.zeroVtx()

        cmds.select(centerEdgeLoop, r = True)
        cmds.DetachComponent()

        leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName)

        symOpt = cmds.radioButtonGrp('symOptRadButGrp', q = True, select = True)

        # If user select 'x to -x' mean left to right.
        if symOpt == 1:
            rightestVtx = getSidestVtx(rightVtxDic)
            cmds.select(rightestVtx, r = True)
            mel.eval('PolySelectConvert 1;') # Convert vertex selection to face.

            rightestFace = cmds.ls(sl = True, fl = True)[0]
            rightestFaceId = int(re.search(r'.+f\[(\d+)\]', rightestFace).group(1))
            cmds.polySelect(extendToShell = rightestFaceId)
            cmds.delete()

            # mirror geometry
            mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, mergeMode = 0, mergeThreshold = 0.001, ch = True)
            cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0)

        # If user select '-x to x' mean right to left.
        if symOpt == 2:
            leftestVtx = getSidestVtx(leftVtxDic)
            cmds.select(leftestVtx, r = True)
            mel.eval('PolySelectConvert 1;') # Convert vertex selection to face.

            leftestFace = cmds.ls(sl = True, fl = True)[0]
            leftestFaceId = int(re.search(r'.+f\[(\d+)\]', leftestFace).group(1))
            cmds.polySelect(extendToShell = leftestFaceId)
            cmds.delete()

            # mirror geometry
            mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, mergeMode = 0, mergeThreshold = 0.001, ch = True)
            cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0)

    # When user select object.
    else:
        objName = selLs[0]
        uvKeepGeo = cmds.duplicate(objName, n = '{0}_uvKeep_geo'.format(objName))

        leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName)

        symOpt = cmds.radioButtonGrp('symOptRadButGrp', q = True, select = True)

        if centerVtxDic.keys():
            cmds.select(centerVtxDic.keys(), r = True)
            mel.eval('SelectEdgeLoopSp;')
            tak_misc.zeroVtx()

        leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName) # Refresh vertex position information.

        # If user select 'x to -x' mean left to right.
        if symOpt == 1:
            cmds.select(rightVtxDic.keys(), r = True)
            mel.eval('PolySelectConvert 1;') # Convert vertex selection to face.
            cmds.delete()

            # mirror geometry
            mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, ch = True)
            cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0)

        # If user select 'x to -x' mean right to left.
        if symOpt == 2:
            cmds.select(leftVtxDic.keys(), r = True)
            mel.eval('PolySelectConvert 1;') # Convert vertex selection to face.
            cmds.delete()

            # mirror geometry
            mirrorNode = cmds.polyMirrorFace(objName, ws = True, direction = 1, ch = True)
            cmds.polyMirrorFace(mirrorNode, e = True, pivotX = 0.0)


    leftVtxDic, rightVtxDic, centerVtxDic = getVtxInfo(objName)
    if centerVtxDic.keys():
        cmds.select(centerVtxDic.keys(), r = True)
        cmds.polyMergeVertex(distance = 0.001)


    # Copy uv from uv keeped geometry to new symmetrized geometry.
    smpSpc = cmds.radioButtonGrp('symSmpSpcRdoBtn', q = True, select = True)
    if smpSpc == 2:
        smpSpc = 4
    elif smpSpc == 3:
        smpSpc = 5
    cmds.transferAttributes(uvKeepGeo, objName, transferUVs = 2, sampleSpace = smpSpc)

    # cmds.select(objName, r = True)
    # mel.eval("SoftPolyEdgeElements 1;")

    # cmds.select(objName, r = True)
    # mel.eval('polyNormalPerVertex -ufn true;')

    cmds.delete(objName, ch = True)
    cmds.delete(uvKeepGeo)

    cmds.select(objName, r = True)
Пример #4
0
def detachComponent():
    cmds.DetachComponent()