Exemplo n.º 1
0
def unfoldBandUVs(object, divisions=1, history=True):
	"""
	This definition unfolds object band UVs.

	:param object: Object. ( String )
	:param divisions: Extrusion divisions. ( Integer )
	:param history: Keep construction history. ( Boolean )
	"""

	edgesCount = cmds.polyEvaluate(object, edge=True)
	edges = cmds.ls(object + ".e[0:" + str(edgesCount - 1) + "]", fl=True, l=True)

	cmds.select(object)
	cmds.polySelectConstraint(m=3, t=0x8000, w=1)
	cmds.polySelectConstraint(m=0)
	for i in range(divisions):
		mel.eval("GrowPolygonSelectionRegion();")
	bandEdges = cmds.ls(sl=True, fl=True, l=True)
	bandFaces = cmds.ls(cmds.polyListComponentConversion(bandEdges, fe=True, tf=True), fl=True)
	cmds.select(bandFaces)
	cmds.polyForceUV(unitize=True)
	cmds.polySelectConstraint(m=3, t=0x8000, sm=1)
	seamsEdges = cmds.ls(sl=True, fl=True, l=True)
	weldEdges = list(set(bandEdges).difference(set(seamsEdges)))
	cmds.polyMapSewMove(weldEdges)
	cmds.polyLayoutUV(bandFaces, scale=1, rotateForBestFit=0, layout=1)
	uvs = cmds.polyListComponentConversion(bandFaces, toUV=1)
	cmds.polyEditUV(uvs, u=1, v=0)

	not history and cmds.delete(object, ch=True)
Exemplo n.º 2
0
def unfoldBandUVs(object, divisions=1, history=True):
	"""
	Unfolds object band UVs.

	:param object: Object.
	:type object: str
	:param divisions: Extrusion divisions.
	:type divisions: int
	:param history: Keep construction history.
	:type history: bool
	"""

	edgesCount = cmds.polyEvaluate(object, edge=True)
	edges = cmds.ls(object + ".e[0:" + str(edgesCount - 1) + "]", fl=True, l=True)

	cmds.select(object)
	cmds.polySelectConstraint(m=3, t=0x8000, w=1)
	cmds.polySelectConstraint(m=0)
	for i in range(divisions):
		mel.eval("GrowPolygonSelectionRegion();")
	bandEdges = cmds.ls(sl=True, fl=True, l=True)
	bandFaces = cmds.ls(cmds.polyListComponentConversion(bandEdges, fe=True, tf=True), fl=True)
	cmds.select(bandFaces)
	cmds.polyForceUV(unitize=True)
	cmds.polySelectConstraint(m=3, t=0x8000, sm=1)
	seamsEdges = cmds.ls(sl=True, fl=True, l=True)
	weldEdges = list(set(bandEdges).difference(set(seamsEdges)))
	cmds.polyMapSewMove(weldEdges)
	cmds.polyLayoutUV(bandFaces, scale=1, rotateForBestFit=0, layout=1)
	uvs = cmds.polyListComponentConversion(bandFaces, toUV=1)
	cmds.polyEditUV(uvs, u=1, v=0)

	not history and cmds.delete(object, ch=True)
Exemplo n.º 3
0
def unwrapCylindrical():
    # Variables and selection
    mode = cmds.radioButtonGrp('mode', q=True, select=True)
    seam = cmds.ls(sl=True)

    cmds.SelectEdgeRingSp()
    cmds.ConvertSelectionToContainedFaces()

    body = cmds.ls(sl=True)

    # Chooses desired seams
    numEdges = (len(seam))
    if (numEdges == 1):
        seamSel = (seam[0])
    else:
        seamSel = (seam[0:numEdges])

    bodySel = (body[0:(len(body))])

    # Unwraps with or without unfolding

    if (mode == 1):
        cmds.polyPlanarProjection()
        cmds.select(seamSel, r=True)
        cmds.polyMapCut()
        cmds.unfold()

    elif (mode == 2):
        cmds.select(bodySel, r=True)
        cmds.ConvertSelectionToFaces()
        shell = cmds.ls(sl=True)
        cmds.polyForceUV(unitize=True)

        cmds.ConvertSelectionToContainedEdges()

        cmds.select(seamSel, d=True)
        cmds.polyMapSewMove()
        cmds.select(shell, r=True)
        cmds.ConvertSelectionToUVs()
        cmds.polyLayoutUV()
        cmds.select(shell, r=True)
Exemplo n.º 4
0
def unwrapByAngle():
    unf = cmds.checkBox('unf', q=True, v=True)
    lyt = cmds.checkBox('lyt', q=True, v=True)

    cmds.polyForceUV(unitize=True)
    cmds.selectType(pe=True)
    cmds.polySelectConstraint(m=3, t=0x8000,
                              sm=2)  # Constrains selection to soft edges
    selEdges = cmds.ls(sl=True)
    cmds.polyMapSewMove()
    cmds.polySelectConstraint(sm=0)  # Turns off constraint

    # Unfold if chosen
    if (unf == 1):
        cmds.unfold()

    # Layout if chosen
    if (lyt == 1):
        cmds.select(selEdges)
        cmds.ConvertSelectionToShell()
        cmds.ConvertSelectionToUVs()
        cmds.polyLayoutUV(sc=1, ws=True, rbf=2)
Exemplo n.º 5
0
def unwrapBySeams():

    # Variables and Selection
    unf = cmds.checkBox('unf', q=True, v=True)
    lyt = cmds.checkBox('lyt', q=True, v=True)
    selEdges = cmds.ls(sl=True)
    cmds.ConvertSelectionToShell()

    cmds.polyForceUV(unitize=True)
    cmds.ConvertSelectionToEdges()
    cmds.select(selEdges, d=True)
    cmds.polyMapSewMove()

    # Unfold if chosen
    if (unf == 1):
        cmds.unfold()

    # Layout if chosen
    if (lyt == 1):
        cmds.select(selEdges)
        cmds.ConvertSelectionToShell()
        cmds.ConvertSelectionToUVs()
        cmds.polyLayoutUV(sc=1, ws=True, rbf=2)
Exemplo n.º 6
0
	def execute(self):

		sx = self.sx
		sy = self.sy
		sdv = self.sdv
		sdu = self.sdu
		tap = self.tap
		degs = self.degs
		subCurve = self.subCurve
		clean = self.clean
		do_uvs = self.do_uvs
		rbc = self.rbc
		cTol = self.cTol
		cSubd = self.cSubd
		
		if cmds.checkBox(self.aUACCB, q=True, v=True):
			useAltShape = True
		else:
			useAltShape = False
		
		multSel = cmds.ls(sl=True,fl=True, ap=True)
		if cmds.objectType(multSel[0]) == 'mesh':
			thisIsAMesh = True
		else:
			thisIsAMesh = False
		# Select curve type to extrude along - convert and store
		for x in multSel:
			print x
			if thisIsAMesh != True:
				cmds.select(x)
			else:
				cmds.select(multSel)
				
			objSel = cmds.ls(sl=True,fl=True, ap=True)
			if self.ko == 1:
				dupObj = cmds.duplicate(objSel)
				objSel = dupObj
			if len(objSel) > 1:
				print objSel
				if degs == 0:
					curveDg = cmds.promptDialog(t='Enter Degrees:', m='Enter Degrees - ie. 1 for linear, 3 for curved')
					objSel = cmds.polyToCurve(f=2, dg=int(cmds.promptDialog(q=True, tx=True)))
				else:
					objSel = cmds.polyToCurve(f=2, dg=int(degs), n='%s_curve' %objSel[0].split('.')[0])
			else:
				objType = cmds.listRelatives(objSel[0], f=True)
				if cmds.objectType(objType[0]) != 'nurbsCurve' and cmds.objectType(objType[0]) != 'bezierCurve':
				    cmds.error('Select the nurbs curve first, then the object to align')
				if cmds.objectType(objType[0]) == 'bezierCurve':
					mm.eval("bezierCurveToNurbs;")
			# Create a nurbs curve for the extrusion
			if useAltShape:
				nurbsCir = self.objToUse
			else:	
				nurbsCir = cmds.circle(n='extrudeCircle', d=3, r=1, nr=(0,0,1), sw=360, ch=True, s=8)
			objCV = cmds.ls('%s.ep[*]' %objSel[0], fl=True)
			
			noOfCV = len(objCV)
			firstCV = 0
			lastCV = noOfCV - 1
			cvNumberToUse=firstCV
			
			# Rebuild the curve to help with uniformity
			if self.rev == 1:
				cmds.reverseCurve(objSel[0], ch=0, rpo=1)
			
			if rbc == 1:
				try:
					cmds.rebuildCurve(objSel[0], ch=0,rpo=1,rt=4,end=1,kr=0, kcp=0, kep=1, kt=0, s=cSubd, d=3, tol=cTol)
					cmds.rebuildCurve(objSel[0], ch=0,rpo=1,rt=0,end=1,kr=0, kcp=0, kep=1, kt=0, s=cSubd, d=3, tol=cTol)
				except:
					cmds.warning('Tolerance for rebuild likely to low, try a higher value or turn Rebuild Curve off')
			
			if do_uvs == 1:
				objShape = cmds.listRelatives(objSel[0], c=True, type='shape')
				mInfo = cmds.shadingNode('curveInfo', n='cMeasure', asUtility=True)
				cmds.connectAttr('%s.local' %objShape[0], '%s.inputCurve' %mInfo)
				curveLength = cmds.getAttr('%s.arcLength' %mInfo)
				cmds.delete(mInfo)
				
				self.uvRatio = float((((sx * sy)*2.0) * math.pi) / curveLength)
				print "uvRatio:  " + str(self.uvRatio)
				
			
			# Create a tangent contraint to position nurbs circle to the first cv
			cvPos = cmds.xform('%s.ep[%d]' %(objSel[0],cvNumberToUse), query=True, ws=True, t=True)
			cmds.xform(nurbsCir[0], ws=True, t=(cvPos[0],cvPos[1],cvPos[2]))
			fastCon = cmds.tangentConstraint(objSel[0], nurbsCir[0], aim=(0,0,1))
			cmds.delete(fastCon[0])
			
			# Extrude along curve and set attributes
			pipeExt = cmds.extrude(nurbsCir[0], objSel[0], n='%s_pipe' %objSel[0], ch=True, rn=subCurve, po=1, et=2, ucp=1, fpt=1,upn=1, rotation=0, scale=1,rsp=1) 
			pipeTes = cmds.listConnections(pipeExt[1], type='nurbsTessellate')
			if subCurve != 0:
				pipeSubCurve = cmds.listConnections(pipeExt[1], type='subCurve')
			
			cmds.setAttr('%s.format' %pipeTes[0],2)
			cmds.setAttr('%s.polygonType' %pipeTes[0],1)
			cmds.setAttr('%s.uType' %pipeTes[0],2)
			cmds.setAttr('%s.vType' %pipeTes[0],2)
			cmds.setAttr('%s.vNumber' %pipeTes[0],sdv)
			cmds.setAttr('%s.uNumber' %pipeTes[0],sdu)
			
			# Add attributes
			if clean == 0:
				cmds.addAttr(pipeExt[0], ln='________', k=True)
				cmds.setAttr('%s.________' %pipeExt[0], l=True)
				cmds.addAttr(pipeExt[0], ln='Ext_ScaleX', k=True, dv=sx)
				cmds.addAttr(pipeExt[0], ln='Ext_ScaleY', k=True, dv=sy)
				cmds.connectAttr('%s.Ext_ScaleX' %pipeExt[0], '%s.scaleX' %nurbsCir[0])
				cmds.connectAttr('%s.Ext_ScaleY' %pipeExt[0], '%s.scaleY' %nurbsCir[0])
				cmds.addAttr(pipeExt[0], ln='Ext_DivisionV', at='short', k=True, dv=sdv)
				cmds.connectAttr('%s.Ext_DivisionV' %pipeExt[0], '%s.vNumber' %pipeTes[0])
				cmds.addAttr(pipeExt[0], ln='Ext_DivisionU', at='short', k=True, dv=sdu)
				cmds.connectAttr('%s.Ext_DivisionU' %pipeExt[0], '%s.uNumber' %pipeTes[0])
				if subCurve != 0:
					cmds.addAttr(pipeExt[0], ln='Ext_Length', k=True, dv=1, max=1, min=0)
					cmds.connectAttr('%s.Ext_Length' %pipeExt[0], '%s.maxValue' %pipeSubCurve[1])
				cmds.addAttr(pipeExt[0], ln='Ext_Taper', k=True, dv=tap, min=0)
				cmds.connectAttr('%s.Ext_Taper' %pipeExt[0], '%s.scale' %pipeExt[1])
				cmds.addAttr(pipeExt[0], ln='Ext_Twist', k=True, dv=1)
				cmds.connectAttr('%s.Ext_Twist' %pipeExt[0], '%s.rotation' %pipeExt[1])
				cmds.addAttr(pipeExt[0], ln='Ext_ComponentPivot', k=True, dv=1)
				cmds.connectAttr('%s.Ext_ComponentPivot' %pipeExt[0], '%s.useComponentPivot' %pipeExt[1])

			curveGrpNode = cmds.createNode('transform', n='pipeCurves')
			cmds.parent(nurbsCir, curveGrpNode)
			cmds.parent(objSel, curveGrpNode)
	
			cmds.setAttr('%s.inheritsTransform' %curveGrpNode, 0)
			cmds.setAttr('%s.visibility' %curveGrpNode, 1)
			cmds.parent(curveGrpNode, pipeExt[0])
			cmds.select(pipeExt[0])
			if do_uvs == 1:
				cmds.polyLayoutUV(ps=0.2)
				cmds.polyEditUV(sv=1, su=self.uvRatio)
				cmds.polyEditUV(sv=0.95, su=0.95)
				cmds.select(pipeExt[0])
				CentreUVs()
				if clean == 1:
					cmds.delete(ch=True)
					cmds.delete(curveGrpNode)
					cmds.select(pipeExt[0])
			if thisIsAMesh == True:
				print 'hello'
				break					
Exemplo n.º 7
0
    def execute(self):

        sx = self.sx
        sy = self.sy
        sdv = self.sdv
        sdu = self.sdu
        tap = self.tap
        degs = self.degs
        subCurve = self.subCurve
        clean = self.clean
        do_uvs = self.do_uvs
        rbc = self.rbc
        cTol = self.cTol
        cSubd = self.cSubd

        if cmds.checkBox(self.aUACCB, q=True, v=True):
            useAltShape = True
        else:
            useAltShape = False

        multSel = cmds.ls(sl=True, fl=True, ap=True)
        if cmds.objectType(multSel[0]) == 'mesh':
            thisIsAMesh = True
        else:
            thisIsAMesh = False
        # Select curve type to extrude along - convert and store
        for x in multSel:
            print x
            if thisIsAMesh != True:
                cmds.select(x)
            else:
                cmds.select(multSel)

            objSel = cmds.ls(sl=True, fl=True, ap=True)
            if self.ko == 1:
                dupObj = cmds.duplicate(objSel)
                objSel = dupObj
            if len(objSel) > 1:
                print objSel
                if degs == 0:
                    curveDg = cmds.promptDialog(
                        t='Enter Degrees:',
                        m='Enter Degrees - ie. 1 for linear, 3 for curved')
                    objSel = cmds.polyToCurve(f=2,
                                              dg=int(
                                                  cmds.promptDialog(q=True,
                                                                    tx=True)))
                else:
                    objSel = cmds.polyToCurve(f=2,
                                              dg=int(degs),
                                              n='%s_curve' %
                                              objSel[0].split('.')[0])
            else:
                objType = cmds.listRelatives(objSel[0], f=True)
                if cmds.objectType(
                        objType[0]) != 'nurbsCurve' and cmds.objectType(
                            objType[0]) != 'bezierCurve':
                    cmds.error(
                        'Select the nurbs curve first, then the object to align'
                    )
                if cmds.objectType(objType[0]) == 'bezierCurve':
                    mm.eval("bezierCurveToNurbs;")
            # Create a nurbs curve for the extrusion
            if useAltShape:
                nurbsCir = self.objToUse
            else:
                nurbsCir = cmds.circle(n='extrudeCircle',
                                       d=3,
                                       r=1,
                                       nr=(0, 0, 1),
                                       sw=360,
                                       ch=True,
                                       s=8)
            objCV = cmds.ls('%s.ep[*]' % objSel[0], fl=True)

            noOfCV = len(objCV)
            firstCV = 0
            lastCV = noOfCV - 1
            cvNumberToUse = firstCV

            # Rebuild the curve to help with uniformity
            if self.rev == 1:
                cmds.reverseCurve(objSel[0], ch=0, rpo=1)

            if rbc == 1:
                try:
                    cmds.rebuildCurve(objSel[0],
                                      ch=0,
                                      rpo=1,
                                      rt=4,
                                      end=1,
                                      kr=0,
                                      kcp=0,
                                      kep=1,
                                      kt=0,
                                      s=cSubd,
                                      d=3,
                                      tol=cTol)
                    cmds.rebuildCurve(objSel[0],
                                      ch=0,
                                      rpo=1,
                                      rt=0,
                                      end=1,
                                      kr=0,
                                      kcp=0,
                                      kep=1,
                                      kt=0,
                                      s=cSubd,
                                      d=3,
                                      tol=cTol)
                except:
                    cmds.warning(
                        'Tolerance for rebuild likely to low, try a higher value or turn Rebuild Curve off'
                    )

            if do_uvs == 1:
                objShape = cmds.listRelatives(objSel[0], c=True, type='shape')
                mInfo = cmds.shadingNode('curveInfo',
                                         n='cMeasure',
                                         asUtility=True)
                cmds.connectAttr('%s.local' % objShape[0],
                                 '%s.inputCurve' % mInfo)
                curveLength = cmds.getAttr('%s.arcLength' % mInfo)
                cmds.delete(mInfo)

                self.uvRatio = float(
                    (((sx * sy) * 2.0) * math.pi) / curveLength)
                print "uvRatio:  " + str(self.uvRatio)

            # Create a tangent contraint to position nurbs circle to the first cv
            cvPos = cmds.xform('%s.ep[%d]' % (objSel[0], cvNumberToUse),
                               query=True,
                               ws=True,
                               t=True)
            cmds.xform(nurbsCir[0], ws=True, t=(cvPos[0], cvPos[1], cvPos[2]))
            fastCon = cmds.tangentConstraint(objSel[0],
                                             nurbsCir[0],
                                             aim=(0, 0, 1))
            cmds.delete(fastCon[0])

            # Extrude along curve and set attributes
            pipeExt = cmds.extrude(nurbsCir[0],
                                   objSel[0],
                                   n='%s_pipe' % objSel[0],
                                   ch=True,
                                   rn=subCurve,
                                   po=1,
                                   et=2,
                                   ucp=1,
                                   fpt=1,
                                   upn=1,
                                   rotation=0,
                                   scale=1,
                                   rsp=1)
            pipeTes = cmds.listConnections(pipeExt[1], type='nurbsTessellate')
            if subCurve != 0:
                pipeSubCurve = cmds.listConnections(pipeExt[1],
                                                    type='subCurve')

            cmds.setAttr('%s.format' % pipeTes[0], 2)
            cmds.setAttr('%s.polygonType' % pipeTes[0], 1)
            cmds.setAttr('%s.uType' % pipeTes[0], 2)
            cmds.setAttr('%s.vType' % pipeTes[0], 2)
            cmds.setAttr('%s.vNumber' % pipeTes[0], sdv)
            cmds.setAttr('%s.uNumber' % pipeTes[0], sdu)

            # Add attributes
            if clean == 0:
                cmds.addAttr(pipeExt[0], ln='________', k=True)
                cmds.setAttr('%s.________' % pipeExt[0], l=True)
                cmds.addAttr(pipeExt[0], ln='Ext_ScaleX', k=True, dv=sx)
                cmds.addAttr(pipeExt[0], ln='Ext_ScaleY', k=True, dv=sy)
                cmds.connectAttr('%s.Ext_ScaleX' % pipeExt[0],
                                 '%s.scaleX' % nurbsCir[0])
                cmds.connectAttr('%s.Ext_ScaleY' % pipeExt[0],
                                 '%s.scaleY' % nurbsCir[0])
                cmds.addAttr(pipeExt[0],
                             ln='Ext_DivisionV',
                             at='short',
                             k=True,
                             dv=sdv)
                cmds.connectAttr('%s.Ext_DivisionV' % pipeExt[0],
                                 '%s.vNumber' % pipeTes[0])
                cmds.addAttr(pipeExt[0],
                             ln='Ext_DivisionU',
                             at='short',
                             k=True,
                             dv=sdu)
                cmds.connectAttr('%s.Ext_DivisionU' % pipeExt[0],
                                 '%s.uNumber' % pipeTes[0])
                if subCurve != 0:
                    cmds.addAttr(pipeExt[0],
                                 ln='Ext_Length',
                                 k=True,
                                 dv=1,
                                 max=1,
                                 min=0)
                    cmds.connectAttr('%s.Ext_Length' % pipeExt[0],
                                     '%s.maxValue' % pipeSubCurve[1])
                cmds.addAttr(pipeExt[0], ln='Ext_Taper', k=True, dv=tap, min=0)
                cmds.connectAttr('%s.Ext_Taper' % pipeExt[0],
                                 '%s.scale' % pipeExt[1])
                cmds.addAttr(pipeExt[0], ln='Ext_Twist', k=True, dv=1)
                cmds.connectAttr('%s.Ext_Twist' % pipeExt[0],
                                 '%s.rotation' % pipeExt[1])
                cmds.addAttr(pipeExt[0], ln='Ext_ComponentPivot', k=True, dv=1)
                cmds.connectAttr('%s.Ext_ComponentPivot' % pipeExt[0],
                                 '%s.useComponentPivot' % pipeExt[1])

            curveGrpNode = cmds.createNode('transform', n='pipeCurves')
            cmds.parent(nurbsCir, curveGrpNode)
            cmds.parent(objSel, curveGrpNode)

            cmds.setAttr('%s.inheritsTransform' % curveGrpNode, 0)
            cmds.setAttr('%s.visibility' % curveGrpNode, 1)
            cmds.parent(curveGrpNode, pipeExt[0])
            cmds.select(pipeExt[0])
            if do_uvs == 1:
                cmds.polyLayoutUV(ps=0.2)
                cmds.polyEditUV(sv=1, su=self.uvRatio)
                cmds.polyEditUV(sv=0.95, su=0.95)
                cmds.select(pipeExt[0])
                CentreUVs()
                if clean == 1:
                    cmds.delete(ch=True)
                    cmds.delete(curveGrpNode)
                    cmds.select(pipeExt[0])
            if thisIsAMesh == True:
                print 'hello'
                break
Exemplo n.º 8
0
def polyLayoutUV(*args, **kwargs):
    res = cmds.polyLayoutUV(*args, **kwargs)
    if not kwargs.get('query', kwargs.get('q', False)):
        res = _factories.maybeConvert(res, _general.PyNode)
    return res