Python maya.cmds.group() Examples
The following are 22
code examples of maya.cmds.group().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
maya.cmds
, or try the search function
.
Example #1
Source File: dpFacialControl.py From dpAutoRigSystem with GNU General Public License v2.0 | 6 votes |
def dpLoadJointNode(self, itemList, *args): """ Load the respective items to build the joint target list (offset group node). """ leftPrefix = self.langDic[self.langName]["p002_left"]+"_" rightPrefix = self.langDic[self.langName]["p003_right"]+"_" offsetSuffix = "_Ctrl_Offset_Grp" for item in itemList: centerName = item+offsetSuffix leftName = leftPrefix+item+offsetSuffix rightName = rightPrefix+item+offsetSuffix if cmds.objExists(centerName): self.dpLoadJointTgtList(centerName) if cmds.objExists(leftName): self.dpLoadJointTgtList(leftName) if cmds.objExists(rightName): self.dpLoadJointTgtList(rightName)
Example #2
Source File: orientjoints.py From cmt with MIT License | 6 votes |
def create_arrow(jointName): curve = cmds.curve( name="%s_ForwardDirection" % jointName, degree=1, point=[ (-1, 0, 0), (-1, 2, 0), (-2, 2, 0), (0, 4, 0), (2, 2, 0), (1, 2, 0), (1, 0, 0), (-1, 0, 0), ], ) group = cmds.group() cmds.xform(objectSpace=True, pivots=(0, 0, 0)) jointScale = cmds.jointDisplayScale(query=True) jointRadius = cmds.getAttr("%s.radius" % jointName) jointScale *= jointRadius cmds.xform(scale=(jointScale, jointScale, jointScale)) return group
Example #3
Source File: jcRibbon.py From dpAutoRigSystem with GNU General Public License v2.0 | 6 votes |
def createElbowCtrl(self, myName='Limb_Ctrl', zero=True, armStyle=True, *args): """ Create the Ribbon Corner (Elbow) control. Returns the group, the control curve and it's zeroOut group. """ if armStyle: curve = self.ctrls.cvControl("id_039_RibbonCorner", myName, r=self.ctrlRadius, d=self.curveDegree, rot=(0, 90, 0)) else: curve = self.ctrls.cvControl("id_039_RibbonCorner", myName, r=self.ctrlRadius, d=self.curveDegree, rot=(90, 0, 0)) grp = None if zero: zero = cmds.group(curve, n=myName+'_Zero') grp = cmds.group(zero, n=myName+'_Grp') if armStyle: cmds.rotate(0, -90, -90, zero) else: cmds.rotate(-90, 0, -90, zero) cmds.addAttr(curve, longName='autoBend', attributeType='float', minValue=0, maxValue=1, defaultValue=0, keyable=True) cmds.addAttr(curve, longName='pin', attributeType='float', minValue=0, maxValue=1, defaultValue=0, keyable=True) self.dpUIinst.ctrls.setLockHide([curve], ['sx', 'sy', 'sz', 'v']) return [grp, curve, zero]
Example #4
Source File: mocap.py From video2mocap with MIT License | 6 votes |
def create_groups(mocap_data): """ Create groups from the matrices coming from the json data. Two additional groups are added to make sure a valid skeleton can be created using the HIK functionality in maya. :param dict mocap_data: :return: Group data :rtype: dict """ # variable groups = {} # matrix groups for name, matrix in mocap_data.get("matrices_3d").iteritems(): group = cmds.group(name=name, world=True, empty=True) groups[name] = group # extra groups for name in ["hip", "spine"]: group = cmds.group(name=name, world=True, empty=True) groups[name] = group return groups
Example #5
Source File: ml_arcTracer.py From ml_tools with MIT License | 5 votes |
def clearArcs(*args): ''' Simply deletes the arc group by name. ''' try: mc.delete('ml_arcGroup') except StandardError: pass
Example #6
Source File: ml_pivot.py From ml_tools with MIT License | 5 votes |
def bakePivot(self): if not mc.objExists(self.pivotHandle) or not mc.objExists(self.node): self.cleanup() return newPivot = mc.getAttr(self.pivotHandle+'.translate')[0] if newPivot == mc.getAttr(self.node+'.rotatePivot')[0]: self.cleanup() return if not mc.keyframe(self.node, attribute=('tx','ty','tz','rx','ry','rz'), query=True, name=True): mc.setAttr(self.node+'.rotatePivot', *newPivot) self.cleanup() return tempPosition = mc.group(em=True) mc.delete(mc.parentConstraint(self.pivotHandle, tempPosition)) utl.matchBake(source=[self.node], destination=[tempPosition], bakeOnOnes=True, maintainOffset=True, preserveTangentWeight=False, rotate=False) mc.setAttr(self.node+'.rotatePivot', *newPivot) utl.matchBake(source=[tempPosition], destination=[self.node], bakeOnOnes=True, maintainOffset=False, preserveTangentWeight=False, rotate=False) mc.delete(tempPosition) mc.select(self.node) self.cleanup() #end context try: qt_maya_window.removeEventFilter(self.keypressFilter) except: pass
Example #7
Source File: ml_pivot.py From ml_tools with MIT License | 5 votes |
def editPivotHandle(self): qt_maya_window.installEventFilter(self.keypressFilter) #create transform self.pivotHandle = mc.group(em=True, name='Adjust_Pivot') mc.setAttr(self.pivotHandle+'.rotate', lock=True) mc.setAttr(self.pivotHandle+'.rx', keyable=False) mc.setAttr(self.pivotHandle+'.ry', keyable=False) mc.setAttr(self.pivotHandle+'.rz', keyable=False) mc.setAttr(self.pivotHandle+'.scale', lock=True) mc.setAttr(self.pivotHandle+'.sx', keyable=False) mc.setAttr(self.pivotHandle+'.sy', keyable=False) mc.setAttr(self.pivotHandle+'.sz', keyable=False) mc.setAttr(self.pivotHandle+'.visibility', lock=True, keyable=False) mc.setAttr(self.pivotHandle+'.displayHandle', True) self.pivotHandle = mc.parent(self.pivotHandle, self.node)[0] mc.addAttr(self.pivotHandle, ln='ml_pivot_handle', at='bool', keyable=False) #set initial position mc.setAttr(self.pivotHandle+'.translate', *mc.getAttr(self.node+'.rotatePivot')[0]) #lock it so you don't delete it or something. mc.lockNode(self.pivotHandle, lock=True) self.scriptJob = mc.scriptJob(event=['SelectionChanged', self.cleanup], runOnce=True) mc.setToolTo('Move') mc.inViewMessage( amg='After moving the pivot, press <hl>Return</hl> to bake or <hl>Esc</hl> to cancel.', pos='midCenterTop', fade=True, fadeStayTime=4000, dragKill=True)
Example #8
Source File: ml_pivot.py From ml_tools with MIT License | 5 votes |
def doEditPivotDriver(self, *args): newValue = mc.floatSliderButtonGrp(self.floatSlider, query=True, value=True) try: mc.deleteUI(self.pivotDriverWindow) except: pass currentValue = mc.getAttr(self.pivotDriver) if newValue == currentValue: return oldRP = mc.getAttr(self.node+'.rotatePivot')[0] mc.setAttr(self.pivotDriver, newValue) newRP = mc.getAttr(self.node+'.rotatePivot')[0] mc.setAttr(self.pivotDriver, currentValue) parentPosition = mc.group(em=True) offsetPosition = mc.group(em=True) offsetPosition = mc.parent(offsetPosition, parentPosition)[0] mc.setAttr(offsetPosition+'.translate', newRP[0]-oldRP[0], newRP[1]-oldRP[1], newRP[2]-oldRP[2]) mc.delete(mc.parentConstraint(self.node, parentPosition)) utl.matchBake(source=[self.node], destination=[parentPosition], bakeOnOnes=True, maintainOffset=False, preserveTangentWeight=False) mc.cutKey(self.pivotDriver) mc.setAttr(self.pivotDriver, newValue) mc.refresh() utl.matchBake(source=[offsetPosition], destination=[self.node], bakeOnOnes=True, maintainOffset=False, preserveTangentWeight=False, rotate=False) mc.delete(parentPosition)
Example #9
Source File: orientjoints.py From cmt with MIT License | 5 votes |
def create_orient_manipulator(joint, material): joint_scale = cmds.jointDisplayScale(query=True) joint_radius = cmds.getAttr("{0}.radius".format(joint)) radius = joint_scale * joint_radius children = cmds.listRelatives(joint, children=True, path=True) if children: p1 = cmds.xform(joint, q=True, ws=True, t=True) p1 = OpenMaya.MPoint(*p1) p2 = cmds.xform(children[0], q=True, ws=True, t=True) p2 = OpenMaya.MPoint(*p2) radius = p1.distanceTo(p2) arrow_cvs = [ [-1, 0, 0], [-1, 2, 0], [-2, 2, 0], [0, 4, 0], [2, 2, 0], [1, 2, 0], [1, 0, 0], [-1, 0, 0], ] arrow_cvs = [[x[0] * radius, x[1] * radius, x[2] * radius] for x in arrow_cvs] shape = cmds.curve(name="{0}_zForward".format(joint), degree=1, point=arrow_cvs) # shape = cmds.sphere(n='{0}_zForward'.format(joint), p=(0, 0, 0), ax=(0, 0, -1), ssw=0, esw=180, r=radius, d=3, ut=0, tol=0.01, s=8, nsp=4, ch=0)[0] # cmds.setAttr('{0}.sz'.format(shape), 0) # cmds.select(shape) # cmds.hyperShade(assign=material) group = cmds.createNode("transform", name="{0}_grp".format(shape)) cmds.parent(shape, group) cmds.makeIdentity(shape, apply=True) cmds.addAttr(shape, longName=MESSAGE_ATTRIBUTE, attributeType="message") cmds.connectAttr( "{0}.message".format(joint), "{0}.{1}".format(shape, MESSAGE_ATTRIBUTE) ) for attr in ["tx", "ty", "tz", "ry", "rz", "v"]: cmds.setAttr("{0}.{1}".format(shape, attr), lock=True, keyable=False) return group, shape
Example #10
Source File: orientjoints.py From cmt with MIT License | 5 votes |
def template_joints(joints=None, reorient_children=True, reset_orientation=True): if joints is None: joints = cmds.ls(sl=True, type="joint") if not joints: raise RuntimeError("No joint selected to orient.") if reorient_children: children = cmds.listRelatives(fullPath=True, allDescendents=True, type="joint") joints.extend(children) red, green, blue = create_shaders() orient_group = cmds.createNode("transform", name=ORIENT_GROUP) manips = [] for joint in joints: if reset_orientation: cmds.makeIdentity(joint, apply=True) cmds.joint( joint, edit=True, orientJoint="xyz", secondaryAxisOrient="yup", children=False, zeroScaleOrient=True, ) if not cmds.listRelatives(joint, children=True): zero_orient([joint]) continue group, manip = create_orient_manipulator(joint, blue) manips.append(manip) cmds.parent(group, orient_group) cmds.parentConstraint(joint, group) cmds.setAttr(joint + ".template", 1) cmds.select(manips)
Example #11
Source File: main.py From ssds with MIT License | 5 votes |
def cloneMeshs(meshPaths): cloneMeshPaths = [] cloneGroup = cmds.group(empty = True, world = True, name = 'ssdsResult') cloneGroupSL = om.MGlobal.getSelectionListByName(cloneGroup) cloneGroupFn = om.MFnTransform(cloneGroupSL.getDagPath(0)) for path in meshPaths: mesh = om.MFnMesh(path) meshName = om.MFnDagNode(mesh.parent(0)).name() cloneMeshName = 'ssds:' + meshName sl = om.MSelectionList(); sl.clear() sl.add(path) om.MGlobal.setActiveSelectionList(sl) cmds.duplicate(returnRootsOnly = True, name = cloneMeshName, renameChildren = True) cmds.parent(cloneMeshName, cloneGroup) cmds.setAttr(cloneMeshName + '.inheritsTransform', False) cloneMeshSL = om.MGlobal.getSelectionListByName(cloneMeshName) cloneMeshPath = cloneMeshSL.getDagPath(0) cloneMeshPath.extendToShape() cloneMeshPaths.append(cloneMeshPath) return cloneMeshPaths, cloneGroup
Example #12
Source File: control.py From maya-spline-ik with GNU General Public License v3.0 | 5 votes |
def createControlShape(name, shape, colour_, num=None): """ Create a control with offset group. :param str name: Name of the control ( _ctrl will be appended ) :param str shape: Shape of the control. :param str colour_: Colour of the control. :param int num: Number of control ( padding of 3 ). :return: name of offset and control :rtype: tuple """ # handle number numSuffix = "_{0:03d}".format(num) if num != None else "" # get names ctrlName = "{0}_ctrl{1}".format(name, numSuffix) offsetName = "{0}_ctrl_offset{1}".format(name, numSuffix) # validate ctrl name if cmds.objExists(ctrlName): raise ValueError("createControlShape: name already exists!") # get shape position shapePoints = controlShape.getControlShape(shape) # create ctrl, shapes = curve.createCurveShape(ctrlName, shapePoints) offset = cmds.group(w=True, em=True, n=offsetName) # set colour colourString = colour.getColourFromString(colour_) for s in shapes: cmds.setAttr("{0}.overrideEnabled".format(s), 1) cmds.setAttr("{0}.overrideColor".format(s), colourString) # parent ctrl to offset ctrl = cmds.parent(ctrl, offset)[0] return offset, ctrl
Example #13
Source File: jcRibbon.py From dpAutoRigSystem with GNU General Public License v2.0 | 5 votes |
def createBendCtrl(self, myName='Bend_Ctrl', r=1, zero=True, *args): """ Create the Ribbon Bend control. Returns the group zeroOut and the control curve. """ grp = None curve = self.ctrls.cvControl("id_038_RibbonBend", myName, r=self.ctrlRadius, d=self.curveDegree, rot=(0, 90, 0)) self.dpUIinst.ctrls.setLockHide([curve], ['v']) if zero: grp = cmds.group(curve, n=myName+'_Grp') return [grp, curve]
Example #14
Source File: dpControls.py From dpAutoRigSystem with GNU General Public License v2.0 | 5 votes |
def cvCharacter(self, ctrlType, ctrlName, r=1, d=1, dir="+Y", rot=(0, 0, 0), *args): """ Create and return a curve to be used as a control. """ # get radius by checking linear unit r = self.dpCheckLinearUnit(r) curve = self.cvControl(ctrlType, ctrlName, r, d, dir, rot) # edit a minime curve: cmds.addAttr(curve, longName="rigScale", attributeType='float', defaultValue=1, keyable=True) cmds.addAttr(curve, longName="rigScaleMultiplier", attributeType='float', defaultValue=1, keyable=False) # create Option_Ctrl Text: try: optCtrlTxt = cmds.group(name="Option_Ctrl_Txt", empty=True) try: cvText = cmds.textCurves(name="Option_Ctrl_Txt_TEMP_Grp", font="Source Sans Pro", text="Option Ctrl", constructionHistory=False)[0] except: cvText = cmds.textCurves(name="Option_Ctrl_Txt_TEMP_Grp", font="Arial", text="Option Ctrl", constructionHistory=False)[0] txtShapeList = cmds.listRelatives(cvText, allDescendents=True, type='nurbsCurve') if txtShapeList: for s, shape in enumerate(txtShapeList): # store CV world position curveCVList = cmds.getAttr(shape+'.cp', multiIndices=True) vtxWorldPosition = [] for i in curveCVList : cvPointPosition = cmds.xform(shape+'.cp['+str(i)+']', query=True, translation=True, worldSpace=True) vtxWorldPosition.append(cvPointPosition) # parent the shapeNode : cmds.parent(shape, optCtrlTxt, r=True, s=True) # restore the shape world position for i in curveCVList: cmds.xform(shape+'.cp['+str(i)+']', a=True, worldSpace=True, t=vtxWorldPosition[i]) cmds.rename(shape, optCtrlTxt+"Shape"+str(s)) cmds.delete(cvText) cmds.parent(optCtrlTxt, curve) cmds.setAttr(optCtrlTxt+".template", 1) cmds.setAttr(optCtrlTxt+".tx", -0.72*r) cmds.setAttr(optCtrlTxt+".ty", 1.1*r) except: # it will pass if we don't able to find the font to create the text pass return curve
Example #15
Source File: dpControls.py From dpAutoRigSystem with GNU General Public License v2.0 | 5 votes |
def cvJointLoc(self, ctrlName, r=0.3, d=1, rot=(0, 0, 0), guide=True, *args): """Create and return a cvJointLocator curve to be usually used in the guideSystem and the clusterHandle to shapeSize. """ # create locator curve: cvLoc = self.cvLocator(ctrlName+"_CvLoc", r, d) # create arrow curves: cvArrow1 = cmds.curve(n=ctrlName+"_CvArrow1", d=3, p=[(-0.1*r, 0.9*r, 0.2*r), (-0.1*r, 0.9*r, 0.23*r), (-0.1*r, 0.9*r, 0.27*r), (-0.1*r, 0.9*r, 0.29*r), (-0.1*r, 0.9*r, 0.3*r), (-0.372*r, 0.9*r, 0.24*r), (-0.45*r, 0.9*r, -0.13*r), (-0.18*r, 0.9*r, -0.345*r), (-0.17*r, 0.9*r, -0.31*r), (-0.26*r, 0.9*r, -0.41*r), (-0.21*r, 0.9*r, -0.41*r), (-0.05*r, 0.9*r, -0.4*r), (0, 0.9*r, -0.4*r), (-0.029*r, 0.9*r, -0.33*r), (-0.048*r, 0.9*r, -0.22*r), (-0.055*r, 0.9*r, -0.16*r), (-0.15*r, 0.9*r, -0.272*r), (-0.12*r, 0.9*r, -0.27*r), (-0.35*r, 0.9*r, -0.1*r), (-0.29*r, 0.9*r, 0.15*r), (-0.16*r, 0.9*r, 0.21*r), (-0.1*r, 0.9*r, 0.2*r)] ) cvArrow2 = cmds.curve(n=ctrlName+"_CvArrow2", d=3, p=[(0.1*r, 0.9*r, -0.2*r), (0.1*r, 0.9*r, -0.23*r), (0.1*r, 0.9*r, -0.27*r), (0.1*r, 0.9*r, -0.29*r), (0.1*r, 0.9*r, -0.3*r), (0.372*r, 0.9*r, -0.24*r), (0.45*r, 0.9*r, 0.13*r), (0.18*r, 0.9*r, 0.345*r), (0.17*r, 0.9*r, 0.31*r), (0.26*r, 0.9*r, 0.41*r), (0.21*r, 0.9*r, 0.41*r), (0.05*r, 0.9*r, 0.4*r), (0, 0.9*r, 0.4*r), (0.029*r, 0.9*r, 0.33*r), (0.048*r, 0.9*r, 0.22*r), (0.055*r, 0.9*r, 0.16*r), (0.15*r, 0.9*r, 0.272*r), (0.12*r, 0.9*r, 0.27*r), (0.35*r, 0.9*r, 0.1*r), (0.29*r, 0.9*r, -0.15*r), (0.16*r, 0.9*r, -0.21*r), (0.1*r, 0.9*r, -0.2*r)] ) cvArrow3 = cmds.curve(n=ctrlName+"_CvArrow3", d=3, p=[(-0.1*r, -0.9*r, 0.2*r), (-0.1*r, -0.9*r, 0.23*r), (-0.1*r, -0.9*r, 0.27*r), (-0.1*r, -0.9*r, 0.29*r), (-0.1*r, -0.9*r, 0.3*r), (-0.372*r, -0.9*r, 0.24*r), (-0.45*r, -0.9*r, -0.13*r), (-0.18*r, -0.9*r, -0.345*r), (-0.17*r, -0.9*r, -0.31*r), (-0.26*r, -0.9*r, -0.41*r), (-0.21*r, -0.9*r, -0.41*r), (-0.05*r, -0.9*r, -0.4*r), (0, -0.9*r, -0.4*r), (-0.029*r, -0.9*r, -0.33*r), (-0.048*r, -0.9*r, -0.22*r), (-0.055*r, -0.9*r, -0.16*r), (-0.15*r, -0.9*r, -0.272*r), (-0.12*r, -0.9*r, -0.27*r), (-0.35*r, -0.9*r, -0.1*r), (-0.29*r, -0.9*r, 0.15*r), (-0.16*r, -0.9*r, 0.21*r), (-0.1*r, -0.9*r, 0.2*r)] ) cvArrow4 = cmds.curve(n=ctrlName+"_CvArrow4", d=3, p=[(0.1*r, -0.9*r, -0.2*r), (0.1*r, -0.9*r, -0.23*r), (0.1*r, -0.9*r, -0.27*r), (0.1*r, -0.9*r, -0.29*r), (0.1*r, -0.9*r, -0.3*r), (0.372*r, -0.9*r, -0.24*r), (0.45*r, -0.9*r, 0.13*r), (0.18*r, -0.9*r, 0.345*r), (0.17*r, -0.9*r, 0.31*r), (0.26*r, -0.9*r, 0.41*r), (0.21*r, -0.9*r, 0.41*r), (0.05*r, -0.9*r, 0.4*r), (0, -0.9*r, 0.4*r), (0.029*r, -0.9*r, 0.33*r), (0.048*r, -0.9*r, 0.22*r), (0.055*r, -0.9*r, 0.16*r), (0.15*r, -0.9*r, 0.272*r), (0.12*r, -0.9*r, 0.27*r), (0.35*r, -0.9*r, 0.1*r), (0.29*r, -0.9*r, -0.15*r), (0.16*r, -0.9*r, -0.21*r), (0.1*r, -0.9*r, -0.2*r)] ) cvArrow5 = cmds.curve(n=ctrlName+"_CvArrow5", d=1, p=[(0, 0, 1.2*r), (0.09*r, 0, 1*r), (-0.09*r, 0, 1*r), (0, 0, 1.2*r)] ) cvArrow6 = cmds.curve(n=ctrlName+"_CvArrow6", d=1, p=[(0, 0, 1.2*r), (0, 0.09*r, 1*r), (0, -0.09*r, 1*r), (0, 0, 1.2*r)] ) # rename curveShape: locArrowList = [cvLoc, cvArrow1, cvArrow2, cvArrow3, cvArrow4, cvArrow5, cvArrow6] self.renameShape(locArrowList) # create ball curve: cvTemplateBall = self.cvControl("Ball", ctrlName+"_CvBall", r=0.7*r, d=3) # parent shapes to transform: locCtrl = cmds.group(name=ctrlName, empty=True) ballChildrenList = cmds.listRelatives(cvTemplateBall, shapes=True, children=True) for ballChildren in ballChildrenList: cmds.setAttr(ballChildren+".template", 1) self.transferShape(True, False, cvTemplateBall, [locCtrl]) for transform in locArrowList: self.transferShape(True, False, transform, [locCtrl]) # set rotation direction: cmds.setAttr(locCtrl+".rotateX", rot[0]) cmds.setAttr(locCtrl+".rotateY", rot[1]) cmds.setAttr(locCtrl+".rotateZ", rot[2]) cmds.makeIdentity(locCtrl, rotate=True, apply=True) # create an attribute to be used as guide by module: cmds.addAttr(locCtrl, longName="nJoint", attributeType='long') cmds.setAttr(locCtrl+".nJoint", 1) # colorize curveShapes: self.colorShape([locCtrl], 'blue') # shapeSize setup: shapeSizeCluster = self.shapeSizeSetup(locCtrl) cmds.select(clear=True) return [locCtrl, shapeSizeCluster]
Example #16
Source File: dpBaseClass.py From dpAutoRigSystem with GNU General Public License v2.0 | 5 votes |
def connectShapeSize(self, clusterHandle, *args): """ Connect shapeSize attribute from guide main control to shapeSizeClusterHandle scale XYZ. """ cmds.connectAttr(self.moduleGrp+".shapeSize", clusterHandle+".scaleX", force=True) cmds.connectAttr(self.moduleGrp+".shapeSize", clusterHandle+".scaleY", force=True) cmds.connectAttr(self.moduleGrp+".shapeSize", clusterHandle+".scaleZ", force=True) # re-declaring Temporary Group and parenting shapeSizeClusterHandle: self.tempGrpName = 'dpAR_Temp_Grp' if not cmds.objExists(self.tempGrpName): cmds.group(name=self.tempGrpName, empty=True) cmds.setAttr(self.tempGrpName+".visibility", 0) cmds.setAttr(self.tempGrpName+".template", 1) cmds.parent(clusterHandle, self.tempGrpName)
Example #17
Source File: orientjoints.py From cmt with MIT License | 4 votes |
def rebuild_joints(*args): if not cmds.objExists(ORIENT_GROUP): return nodes = cmds.listRelatives(ORIENT_GROUP, ad=True, path=True) or [] joints = [] for node in nodes: attrs = cmds.listAttr(node, ud=True) or [] if MESSAGE_ATTRIBUTE not in attrs: continue joint = cmds.listConnections( "{0}.{1}".format(node, MESSAGE_ATTRIBUTE), d=False )[0] joints.append(joint) rotation = cmds.getAttr("{0}.rx".format(node)) children = cmds.listRelatives(joint, children=True, shapes=False, path=True) if children: # First unparent children so change in joint orient does not affect children children = [cmds.parent(child, world=True)[0] for child in children] # Add rotation offset to joint orient orient_x = cmds.getAttr("{0}.jointOrientX".format(joint)) orient_x += rotation while orient_x > 180.0: orient_x -= 360.0 while orient_x < -180.0: orient_x += 360.0 cmds.setAttr("{0}.jointOrientX".format(joint), orient_x) # Reparent child for child in children: cmds.parent(child, joint) else: # tip joint, just zero out joint orient cmds.setAttr("%s.jointOrientX" % joint, 0) cmds.setAttr("%s.jointOrientY" % joint, 0) cmds.setAttr("%s.jointOrientZ" % joint, 0) # Untemplate cmds.setAttr("{0}.template".format(joint), 0) # Delete arrow group cmds.delete(ORIENT_GROUP) cmds.select(joints)
Example #18
Source File: dpControls.py From dpAutoRigSystem with GNU General Public License v2.0 | 4 votes |
def distanceBet(self, a, b, name="temp_DistBet", keep=False, *args): """ Creates a distance between node for 2 objects a and b. Keeps them in the scene or delete. Returns the distance value only in case of not keeping distBet node or a list of distance value, distanceNode and two nulls used to calculate. """ if cmds.objExists(a) and cmds.objExists(b): if keep: # create nulls: nullA = cmds.group(empty=True, name=a+"_DistBetNull") nullB = cmds.group(empty=True, name=b+"_DistBetNull") nullC = cmds.group(empty=True, name=b+"_DistBetNull_OrigRef") cmds.pointConstraint(a, nullA, maintainOffset=False, name=nullA+"_ParentConstraint") cmds.pointConstraint(b, nullB, maintainOffset=False, name=nullB+"_ParentConstraint") tempToDel = cmds.pointConstraint(b, nullC, maintainOffset=False) cmds.delete(tempToDel) pointConst = cmds.pointConstraint(b, nullC, nullB, maintainOffset=False, name=nullB+"_ParentConstraint")[0] # create distanceBetween node: distBet = cmds.shadingNode("distanceBetween", n=name, asUtility=True) # connect aPos to the distance between point1: cmds.connectAttr(nullA+".tx", distBet+".point1X") cmds.connectAttr(nullA+".ty", distBet+".point1Y") cmds.connectAttr(nullA+".tz", distBet+".point1Z") # connect bPos to the distance between point2: cmds.connectAttr(nullB+".tx", distBet+".point2X") cmds.connectAttr(nullB+".ty", distBet+".point2Y") cmds.connectAttr(nullB+".tz", distBet+".point2Z") dist = cmds.getAttr(distBet+".distance") return [dist, distBet, nullA, nullB, nullC, pointConst] else: # get xform datas: aPos = cmds.xform(a, query=True, worldSpace=True, translation=True) bPos = cmds.xform(b, query=True, worldSpace=True, translation=True) # create distanceBetween node: distBet = cmds.shadingNode("distanceBetween", n=name, asUtility=True) # set aPos to the distance between point1: cmds.setAttr(distBet+".point1X", aPos[0]) cmds.setAttr(distBet+".point1Y", aPos[1]) cmds.setAttr(distBet+".point1Z", aPos[2]) # set bPos to the distance between point2: cmds.setAttr(distBet+".point2X", bPos[0]) cmds.setAttr(distBet+".point2Y", bPos[1]) cmds.setAttr(distBet+".point2Z", bPos[2]) dist = cmds.getAttr(distBet+".distance") cmds.delete(distBet) return [dist, None, None, None, None, None]
Example #19
Source File: sqStickyLipsSetup.py From dpAutoRigSystem with GNU General Public License v2.0 | 4 votes |
def sqGenerateCurves(self, *args): self.edgeList = cmds.ls(selection=True, flatten=True) if not self.edgeList == None and not self.edgeList == [] and not self.edgeList == "": self.baseCurve = cmds.polyToCurve(name="baseCurve", form=2, degree=1)[0] cmds.select(self.baseCurve+".ep[*]") cmds.insertKnotCurve(cmds.ls(selection=True, flatten=True), constructionHistory=True, curveOnSurface=True, numberOfKnots=1, addKnots=False, insertBetween=True, replaceOriginal=True) pointListA, pointListB, sideA, sideB = self.sqGetPointLists() toDeleteList = [] p = 2 for k in range((sideA+2), (sideB-1)): if p%2 == 0: toDeleteList.append(self.baseCurve+".cv["+str(k)+"]") toDeleteList.append(self.baseCurve+".cv["+str(k+len(pointListA)-1)+"]") p = p+1 q = 2 m = sideA-2 if m >= 0: while m >= 0: if not m == sideA and not m == sideB: if q%2 == 0: toDeleteList.append(self.baseCurve+".cv["+str(m)+"]") m = m-1 q = q+1 cmds.delete(toDeleteList) cmds.insertKnotCurve([self.baseCurve+".u["+str(len(pointListA)-1)+"]", self.baseCurve+".ep["+str(len(pointListA)-1)+"]"], constructionHistory=True, curveOnSurface=True, numberOfKnots=1, addKnots=False, insertBetween=True, replaceOriginal=True) pointListA, pointListB, sideA, sideB = self.sqGetPointLists() posListA, posListB = [], [] for i in range(0, len(pointListA)-1): posListA.append(cmds.xform(pointListA[i], query=True, worldSpace=True, translation=True)) posListB.append(cmds.xform(pointListB[i], query=True, worldSpace=True, translation=True)) self.mainCurveA = cmds.curve(name="StickyLips_Main_A_Crv", degree=1, point=posListA) self.mainCurveB = cmds.curve(name="StickyLips_Main_B_Crv", degree=1, point=posListB) cmds.rename(cmds.listRelatives(self.mainCurveA, children=True, shapes=True)[0], self.mainCurveA+"Shape") cmds.rename(cmds.listRelatives(self.mainCurveB, children=True, shapes=True)[0], self.mainCurveB+"Shape") cmds.select(self.mainCurveA+".cv[*]") self.curveLenght = len(cmds.ls(selection=True, flatten=True)) cmds.select(clear=True) self.sqCheckCurveDirection(self.mainCurveA) self.sqCheckCurveDirection(self.mainCurveB) self.baseCurveA = cmds.duplicate(self.mainCurveA, name=self.mainCurveA.replace("_Main_", "_Base_"))[0] self.baseCurveB = cmds.duplicate(self.mainCurveB, name=self.mainCurveB.replace("_Main_", "_Base_"))[0] cmds.delete(self.baseCurve) self.maxIter = len(posListA) cmds.group(self.mainCurveA, self.mainCurveB, self.baseCurveA, self.baseCurveB, name="StickyLips_StaticData_Grp") else: mel.eval("warning \"Please, select an closed edgeLoop.\";")
Example #20
Source File: ml_pivot.py From ml_tools with MIT License | 4 votes |
def reset_pivot(*args): sel = mc.ls(sl=True) if not sel: om.MGlobal.displayWarning('Nothing selected.') return if len(sel) > 1: om.MGlobal.displayWarning('Only works on one node at a time.') return node = sel[0] driver = None driver_value = None driver_default = None if is_pivot_connected(node): driver = pivot_driver_attr(node) if driver: dNode,dAttr = driver.split('.',1) driver_value = mc.getAttr(driver) driver_default = mc.attributeQuery(dAttr, node=dNode, listDefault=True)[0] if driver_default == driver_value: return else: om.MGlobal.displayWarning('Pivot attribute is connected, unable to edit.') return if not driver: pivotPosition = mc.getAttr(node+'.rotatePivot')[0] if pivotPosition == (0.0,0.0,0.0): return tempPosition = mc.group(em=True) tempPivot = mc.group(em=True) tempPivot = mc.parent(tempPivot, node)[0] if driver: mc.setAttr(driver, driver_default) newRP = mc.getAttr(node+'.rotatePivot')[0] mc.setAttr(driver, driver_value) mc.setAttr(tempPivot+'.translate', *newRP) else: mc.setAttr(tempPivot+'.translate', 0,0,0) mc.setAttr(tempPivot+'.rotate', 0,0,0) utl.matchBake(source=[tempPivot], destination=[tempPosition], bakeOnOnes=True, maintainOffset=False, preserveTangentWeight=False, rotate=False) if driver: mc.setAttr(driver, driver_default) else: mc.setAttr(node+'.rotatePivot', 0,0,0) mc.refresh() utl.matchBake(source=[tempPosition], destination=[node], bakeOnOnes=True, maintainOffset=False, preserveTangentWeight=False, rotate=False) mc.delete(tempPosition,tempPivot) mc.select(node)
Example #21
Source File: ml_controlLibrary.py From ml_tools with MIT License | 4 votes |
def exportControl(curves, name): '''Export a control curve ''' if not isinstance(curves, (list, tuple)): curves = [curves] grp = mc.group(em=True, name=name) for each in curves: ml_parentShape.parentShape(each, grp) mc.delete(grp, constructionHistory=True) tempFile = mc.internalVar(userTmpDir=True) tempFile+='tempControlExport.ma' mc.select(grp) mc.file(tempFile, force=True, typ='mayaAscii', exportSelected=True) with open(tempFile, 'r') as f: contents = f.read() ctrlLines = ['//ML Control Curve: '+name] record = False for line in contents.splitlines(): if line.startswith('select'): break if line.strip().startswith('rename'): #skip the uuid commands continue if line.startswith('createNode transform'): record = True ctrlLines.append('string $ml_tempCtrlName = `createNode transform -n "'+name+'_#"`;') elif line.startswith('createNode nurbsCurve'): ctrlLines.append('createNode nurbsCurve -p $ml_tempCtrlName;') elif record: ctrlLines.append(line) with open(controlFilePath(name), 'w') as f: f.write('\n'.join(ctrlLines)) return grp
Example #22
Source File: dpRivet.py From dpAutoRigSystem with GNU General Public License v2.0 | 4 votes |
def dpInvertAttrTranformation(self, nodeName, invT=True, invR=False, *args): """ Creates a setup to invert attribute transformations in order to avoid doubleTransformation. """ axisList = ['X', 'Y', 'Z'] if cmds.objExists(nodeName): nodePivot = cmds.xform(nodeName, query=True, worldSpace=True, rotatePivot=True) if invR: invRGrp = cmds.group(nodeName, name=nodeName+"_InvR_Grp") cmds.xform(invRGrp, worldSpace=True, rotatePivot=(nodePivot[0], nodePivot[1], nodePivot[2]), rotateOrder="zyx") rMD = cmds.createNode('multiplyDivide', name=nodeName+"_InvR_MD", skipSelect=True) cmds.setAttr(rMD+'.input2X', -1) cmds.setAttr(rMD+'.input2Y', -1) cmds.setAttr(rMD+'.input2Z', -1) for axis in axisList: cmds.connectAttr(nodeName+'.rotate'+axis, rMD+'.input1'+axis, force=True) cmds.connectAttr(rMD+'.output'+axis, invRGrp+'.rotate'+axis, force=True) if invT: invTGrp = cmds.group(nodeName, name=nodeName+"_InvT_Grp") cmds.xform(invTGrp, worldSpace=True, rotatePivot=(nodePivot[0], nodePivot[1], nodePivot[2])) tMD = cmds.createNode('multiplyDivide', name=nodeName+"_InvT_MD", skipSelect=True) cmds.setAttr(tMD+'.input2X', -1) cmds.setAttr(tMD+'.input2Y', -1) cmds.setAttr(tMD+'.input2Z', -1) for axis in axisList: cmds.connectAttr(nodeName+'.translate'+axis, tMD+'.input1'+axis, force=True) cmds.connectAttr(tMD+'.output'+axis, invTGrp+'.translate'+axis, force=True)