EwanRigTool (part 7)
Thu Sep 12 2024 07:14:16 GMT+0000 (Coordinated Universal Time)
Saved by @eugene98
for source_locator in source_objects: for target_joint in target_objects: if source_locator.replace(source_prefix, "") == target_joint.replace(target_prefix, ""): cmds.aimConstraint(target_joint, source_locator, aim=(0, 1, 0),mo=1) source_prefix = "eyelid_joint_lower_parent_" target_prefix = "lowerLidLoc_" source_objects = cmds.ls(source_prefix + "*", type="transform") target_objects = cmds.ls(target_prefix + "*", type="transform") for source_locator in source_objects: for target_joint in target_objects: if source_locator.replace(source_prefix, "") == target_joint.replace(target_prefix, ""): cmds.aimConstraint(target_joint, source_locator, aim=(0, 1, 0),mo=1) sel = cmds.ls("upperLidLoc_*",fl = True) new_list = sel[::2] crv = "upper_lid_crv" for s in new_list: pos = cmds.xform(s, q = 1, ws = 1, t = 1) u = getUParam (pos, crv) name = s.replace ("Loc_", "Pci_") pci = cmds.createNode("pointOnCurveInfo", n = name) cmds.connectAttr(crv + '.worldSpace', pci + '.inputCurve') cmds.setAttr(pci + '.parameter', u) cmds.connectAttr(pci + '.position', s + '.t') sel = cmds.ls("lowerLidLoc_*",fl = True) new_list = sel[::2] crv = "Lower_lid_crv" for s in new_list: pos = cmds.xform(s, q = 1, ws = 1, t = 1) u = getUParam (pos, crv) name = s.replace ("Loc_", "Pci_") pci = cmds.createNode("pointOnCurveInfo", n = name) cmds.connectAttr(crv + '.worldSpace', pci + '.inputCurve') cmds.setAttr(pci + '.parameter', u) cmds.connectAttr(pci + '.position', s + '.t') curve_name = [("Lower_lid_crv"),("upper_lid_crv")] for each in curve_name: cmds.rebuildCurve(each,ch=1,rpo=0,rt=0,end=1,kr=0,kcp=0,kep=1,kt=0,s=7,d=2,tol=0.01) cmds.delete (each, ch = 1) cmds.rename('Lower_lid_crvrebuiltCurve1','Lower_lid_skin') cmds.rename('upper_lid_crvrebuiltCurve1','upper_lid_skin') cmds.delete ('Lower_lid_skin','upper_lid_skin', ch = 1) # Convert the MEL command to Python mel_command = 'wire -gw false -en 1.000000 -ce 0.000000 -li 0.000000 -w {0} {1};'.format("Lower_lid_skin", "Lower_lid_crv") # Execute the MEL command as Python mel.eval(mel_command) # Convert the MEL command to Python mel_command = 'wire -gw false -en 1.000000 -ce 0.000000 -li 0.000000 -w {0} {1};'.format("upper_lid_skin", "upper_lid_crv") # Execute the MEL command as Python mel.eval(mel_command) list = [("Lower_lid_skin", "Lower_lid_BS"),("upper_lid_skin", "Lower_lid_close_BS"),("upper_lid_skin", "upper_lid_BS"),("Lower_lid_skin", "upper_lid_close_BS")] for each in list: cmds.duplicate(each[0], name=each[1]) list = [("Lower_lid_close_BS", "Lower_lid_BS","Lower_lid_blend"),("upper_lid_close_BS", "upper_lid_BS","upper"),("Lower_lid_BS", "Lower_lid_skin","Lower_lid_main_blend"),("upper_lid_BS", "upper_lid_skin","upper_lid_main_blend")] for each in list: cmds.blendShape(each[0],each[1],n = each[2], origin="world") cmds.setAttr('Lower_lid_main_blend.Lower_lid_BS',1) cmds.setAttr('upper_lid_main_blend.upper_lid_BS',1) # Define the upper lid curve and the CV indices curve_name = "upper_lid_skin" cv_indices = [8, 7, 6, 5, 4, 3, 2, 1, 0] # Create joints at the CV positions joints_upper = [] for index in cv_indices: # Get the world space position of the CV cv_position = cmds.pointPosition(curve_name + ".cv[{0}]".format(index), w=True) # Create a joint at the CV position joint_name = cmds.joint(position=cv_position, name="upper_lid_crv_jnt{0}".format(index)) #joints.append(joint_name) cmds.parent(w = True) # Define the lower lid curve and the CV indices curve_name = "Lower_lid_skin" cv_indices = [8, 7, 6, 5, 4, 3, 2, 1, 0] # Create joints at the CV positions joints_lower = [] for index in cv_indices: # Get the world space position of the CV cv_position = cmds.pointPosition(curve_name + ".cv[{0}]".format(index), w=True) # Create a joint at the CV position joint_name = cmds.joint(position=cv_position, name="Lower_lid_crv_jnt{0}".format(index)) cmds.parent(w = True) # Define the joint names and the curve name joint_prefix = "upper_lid_crv_jnt" curve_name = "upper_lid_skin" # Create a list of joint names joint_names_upper = ["{0}{1}".format(joint_prefix, i) for i in range(0, 9)] # Bind skin to the curve with a skin influence of 1 cmds.skinCluster(joint_names_upper, curve_name, toSelectedBones=True, bindMethod=0, skinMethod=0, maximumInfluences=1) # Define the joint names and the curve name joint_prefix = "Lower_lid_crv_jnt" curve_name = "Lower_lid_skin" # Create a list of joint names joint_names_lower = ["{0}{1}".format(joint_prefix, i) for i in range(0, 9)] # Bind skin to the curve with a skin influence of 1 cmds.skinCluster(joint_names_lower, curve_name, toSelectedBones=True, bindMethod=0, skinMethod=0, maximumInfluences=1) # Define the joint names and the radius of the control circles joint_names = ["upper_lid_crv_jnt8", "upper_lid_crv_jnt6", "upper_lid_crv_jnt4", "upper_lid_crv_jnt2", "upper_lid_crv_jnt0", "Lower_lid_crv_jnt6", "Lower_lid_crv_jnt4", "Lower_lid_crv_jnt2"] controller_radius = 0.1 # Adjust the radius as needed # Create circle controllers at joint positions controllers = [] for joint_name in joint_names: joint_position = cmds.xform(joint_name, query=True, translation=True, worldSpace=True) cmds.circle(name=joint_name + "_ctrl", radius=controller_radius, normal=[0, 0, 1]) controllergroup = cmds.group(n=joint_name + '_grp') cmds.xform(controllergroup, translation=joint_position, worldSpace=True) list = [('upper_lid_crv_jnt8_ctrl','inr_corner_lid_ctrl'),('upper_lid_crv_jnt8_grp','inr_corner_lid_ctrl_grp'),('upper_lid_crv_jnt6_ctrl','upr_lid_01_ctrl'),('upper_lid_crv_jnt6_grp','upr_lid_01_ctrl_grp'),('upper_lid_crv_jnt4_ctrl','upr_lid_02_ctrl'),('upper_lid_crv_jnt4_grp','upr_lid_02_ctrl_grp'),('upper_lid_crv_jnt2_ctrl','upr_lid_03_ctrl'),('upper_lid_crv_jnt2_grp','upr_lid_03_ctrl_grp'),('upper_lid_crv_jnt0_ctrl','otr_corner_lid_ctrl'),('upper_lid_crv_jnt0_grp','otr_corner_lid_ctrl_grp'),('Lower_lid_crv_jnt6_ctrl','lwr_lid_01_ctrl'),('Lower_lid_crv_jnt6_grp','lwr_lid_01_ctrl_grp'),('Lower_lid_crv_jnt4_ctrl','lwr_lid_02_ctrl'),('Lower_lid_crv_jnt4_grp','lwr_lid_02_ctrl_grp'),('Lower_lid_crv_jnt2_ctrl','lwr_lid_03_ctrl'),('Lower_lid_crv_jnt2_grp','lwr_lid_03_ctrl_grp')] for each in list: cmds.rename(each[0],each[1]) list = [('inr_corner_lid_ctrl','Lower_lid_crv_jnt8'),('inr_corner_lid_ctrl','upper_lid_crv_jnt8'),('inr_corner_lid_ctrl','upper_lid_crv_jnt7'),('upr_lid_01_ctrl','upper_lid_crv_jnt7'),('upr_lid_01_ctrl','upper_lid_crv_jnt6'),('upr_lid_01_ctrl','upper_lid_crv_jnt5'),('upr_lid_02_ctrl','upper_lid_crv_jnt5'),('upr_lid_02_ctrl','upper_lid_crv_jnt4'),('upr_lid_02_ctrl','upper_lid_crv_jnt3'),('upr_lid_03_ctrl','upper_lid_crv_jnt3'),('upr_lid_03_ctrl','upper_lid_crv_jnt2'),('upr_lid_03_ctrl','upper_lid_crv_jnt1'),('otr_corner_lid_ctrl','upper_lid_crv_jnt1'),('otr_corner_lid_ctrl','Lower_lid_crv_jnt0'),('otr_corner_lid_ctrl','upper_lid_crv_jnt0'),('otr_corner_lid_ctrl','Lower_lid_crv_jnt1'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt1'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt2'),('lwr_lid_03_ctrl','Lower_lid_crv_jnt3'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt3'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt4'),('lwr_lid_02_ctrl','Lower_lid_crv_jnt5'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt5'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt7'),('inr_corner_lid_ctrl','Lower_lid_crv_jnt7'),('lwr_lid_01_ctrl','Lower_lid_crv_jnt6')] for each in list: cmds.parentConstraint(each[0],each[1],mo = True) list = [('inr_corner_lid_ctrl'),('upr_lid_01_ctrl'),('upr_lid_01_ctrl'),('upr_lid_02_ctrl'),('upr_lid_03_ctrl'),('upr_lid_03_ctrl'),('otr_corner_lid_ctrl'),('lwr_lid_01_ctrl'),('lwr_lid_02_ctrl'),('lwr_lid_03_ctrl')] for each in list: cmds.setAttr(each + '.overrideEnabled' ,True) cmds.setAttr(each + '.overrideColor' ,4) cmds.setAttr(each + ".visibility" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".scaleX" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".scaleY" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".scaleZ" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".rotateX" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".rotateY" ,keyable = False, cb = False, lock = True) cmds.setAttr(each + ".rotateZ" ,keyable = False, cb = False, lock = True) cmds.addAttr('upr_lid_02_ctrl',sn='blink', min = 0, max=1 ,k=1) cmds.addAttr('upr_lid_02_ctrl',sn='blinkHeight', min = 0, max=1 ,k=1) cmds.shadingNode('condition',n = 'upr_lid_blink_cond',asUtility=1) cmds.shadingNode('condition',n = 'lwr_lid_blink_cond',asUtility=1) cmds.shadingNode('reverse',n = 'upr_lid_blink_rev',asUtility=1) list = [('upr_lid_02_ctrl.blink','lwr_lid_blink_cond.colorIfFalseR'),('upr_lid_02_ctrl.blinkHeight','lwr_lid_blink_cond.colorIfTrueR'),('upr_lid_02_ctrl.blinkHeight','lwr_lid_blink_cond.firstTerm'),('upr_lid_02_ctrl.blink','lwr_lid_blink_cond.secondTerm'),('upr_lid_02_ctrl.blinkHeight','upr_lid_blink_rev.inputX'),('upr_lid_02_ctrl.blink','upr_lid_blink_cond.colorIfFalseR'),('upr_lid_blink_rev.outputX','upr_lid_blink_cond.colorIfTrueR'),('upr_lid_02_ctrl.blink','upr_lid_blink_cond.secondTerm'),('upr_lid_blink_rev.outputX','upr_lid_blink_cond.firstTerm'),('lwr_lid_blink_cond.outColorR','Lower_lid_blend.Lower_lid_close_BS'),('upr_lid_blink_cond.outColorR','upper.upper_lid_close_BS')] for each in list: cmds.connectAttr(each[0],each[1]) cmds.setAttr('lwr_lid_blink_cond.operation',4) cmds.setAttr('upr_lid_blink_cond.operation',4) cmds.setAttr('upr_lid_02_ctrl.blinkHeight',0.5) locLowerSel = cmds.ls("lowerLidLoc_*",fl = True) locLowerSelList = locLowerSel[::2] cmds.group(n='lowerLidLoc_grp',em = True) cmds.parent(locLowerSelList,'lowerLidLoc_grp') locUpperSel = cmds.ls("upperLidLoc_*",fl = True) locUpperSelList = locUpperSel[::2] cmds.group(n='upperLidLoc_grp',em = True) cmds.parent(locUpperSelList,'upperLidLoc_grp') jntUpperSel = cmds.ls("eyelid_joint_upper_parent_*",fl = True) jntUpperSelList = jntUpperSel[::2] cmds.group(n='upperLidJnt_grp',em = True) cmds.parent(jntUpperSelList,'upperLidJnt_grp') jntLowerSel = cmds.ls("eyelid_joint_lower_parent_*",fl = True) jntLowerSelList = jntLowerSel[::2] cmds.group(n='lowerLidJnt_grp',em = True) cmds.parent(jntLowerSelList,'lowerLidJnt_grp') crvJntLowerSel = cmds.ls("Lower_lid_crv_jnt*",fl = True) crvJntLowerSelList = crvJntLowerSel[::2] cmds.group(n='lowerLidCrvJnt_grp',em = True) cmds.parent(crvJntLowerSelList,'lowerLidCrvJnt_grp') crvJntUpperSel = cmds.ls("upper_lid_crv_jnt*",fl = True) crvJntUpperSelList = crvJntUpperSel[::2] cmds.group(n='upperLidCrvJnt_grp',em = True) cmds.parent(crvJntUpperSelList,'upperLidCrvJnt_grp') list = [('lower_lid_crv_grp'),('upper_lid_crv_grp'),('lid_crv_grp'),('lid_ctrl_grp'),('lid_jnt_grp'),('lid_loc_grp'),('eyelid_grp')] for each in list: cmds.group(n=each,em = True) list = [('upper_lid_crv','upper_lid_crv_grp'),('upper_lid_skin','upper_lid_crv_grp'),('upper_lid_BS','upper_lid_crv_grp'),('upper_lid_close_BS','upper_lid_crv_grp'),('upper_lid_skinBaseWire','upper_lid_crv_grp'),('Lower_lid_crv','lower_lid_crv_grp'),('Lower_lid_skin','lower_lid_crv_grp'),('Lower_lid_BS','lower_lid_crv_grp'),('Lower_lid_close_BS','lower_lid_crv_grp'),('Lower_lid_skinBaseWire','lower_lid_crv_grp'),('inr_corner_lid_ctrl_grp','lid_ctrl_grp'),('upr_lid_01_ctrl_grp','lid_ctrl_grp'),('upr_lid_02_ctrl_grp','lid_ctrl_grp'),('upr_lid_03_ctrl_grp','lid_ctrl_grp'),('otr_corner_lid_ctrl_grp','lid_ctrl_grp'),('lwr_lid_01_ctrl_grp','lid_ctrl_grp'),('lwr_lid_02_ctrl_grp','lid_ctrl_grp'),('lwr_lid_03_ctrl_grp','lid_ctrl_grp'),('upperLidJnt_grp','lid_jnt_grp'),('lowerLidJnt_grp','lid_jnt_grp'),('lowerLidCrvJnt_grp','lid_jnt_grp'),('upperLidCrvJnt_grp','lid_jnt_grp'),('lowerLidLoc_grp','lid_loc_grp'),('upperLidLoc_grp','lid_loc_grp'),('eye_display_loc','lid_loc_grp'),('lid_crv_grp','eyelid_grp'),('lid_ctrl_grp','eyelid_grp'),('lid_jnt_grp','eyelid_grp'),('lid_loc_grp','eyelid_grp'),('upper_lid_crv_grp','lid_crv_grp'),('lower_lid_crv_grp','lid_crv_grp')] for each in list: cmds.parent(each[0],each[1]) list = [('lid_crv_grp.visibility'),('lowerLidCrvJnt_grp.visibility'),('upperLidCrvJnt_grp.visibility'),('lid_loc_grp.visibility')] for each in list: cmds.setAttr(each,0) print('Eyelid setup has created.') def rename_left(*args): existing_group_name = "eyelid_grp" prefix = "l_" objects_in_group = cmds.listRelatives(existing_group_name, allDescendents=True, fullPath=True) or [] for obj in objects_in_group: new_name = prefix + obj.split("|")[-1] cmds.rename(obj, new_name) cmds.rename("eyelid_grp","l_eyelid_grp") list = [('lowerLidPci_*'),('upperLidPci_*'),('upr_lid_blink_rev'),('lwr_lid_blink_cond'),('upr_lid_blink_cond'),('upper_lid_main_blend'),('upper'),('Lower_lid_main_blend'),('Lower_lid_blend')] for each in list: search_pattern = cmds.ls(each) for obj in search_pattern: new_name = prefix + obj cmds.rename(obj, new_name) # Define the target alias name, weight index, and blend shape node target_alias_name = "l_Lower_lid_close_BS" weight_index = 0 blend_shape_node = "l_Lower_lid_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "l_upper_lid_close_BS" weight_index = 0 blend_shape_node = "l_upper" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "l_Lower_lid_BS" weight_index = 0 blend_shape_node = "l_Lower_lid_main_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "l_upper_lid_BS" weight_index = 0 blend_shape_node = "l_upper_lid_main_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") print('Left eyelid has renamed.') def rename_right(*args): existing_group_name = "eyelid_grp" prefix = "r_" objects_in_group = cmds.listRelatives(existing_group_name, allDescendents=True, fullPath=True) or [] for obj in objects_in_group: new_name = prefix + obj.split("|")[-1] cmds.rename(obj, new_name) cmds.rename("eyelid_grp","r_eyelid_grp") list = [('lowerLidPci_*'),('upperLidPci_*'),('upr_lid_blink_rev'),('lwr_lid_blink_cond'),('upr_lid_blink_cond'),('upper_lid_main_blend'),('upper'),('Lower_lid_main_blend'),('Lower_lid_blend')] for each in list: search_pattern = cmds.ls(each) for obj in search_pattern: new_name = prefix + obj cmds.rename(obj, new_name) # Define the target alias name, weight index, and blend shape node target_alias_name = "r_Lower_lid_close_BS" weight_index = 0 blend_shape_node = "r_Lower_lid_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "r_upper_lid_close_BS" weight_index = 0 blend_shape_node = "r_upper" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "r_Lower_lid_BS" weight_index = 0 blend_shape_node = "r_Lower_lid_main_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") # Define the target alias name, weight index, and blend shape node target_alias_name = "r_upper_lid_BS" weight_index = 0 blend_shape_node = "r_upper_lid_main_blend" # Check if the alias already exists current_alias_name = cmds.aliasAttr(blend_shape_node + '.w[' + str(weight_index) + ']', query=True) if current_alias_name is not None: # Rename the alias cmds.aliasAttr(target_alias_name, blend_shape_node + '.w[' + str(weight_index) + ']') print("Target alias renamed to:", target_alias_name) else: print("Alias does not exist. Cannot rename.") print('Rigft eyelid has renamed.') def store_geometry_name(*args): global geometry_field selected = cmds.ls(selection=True) if selected: geometry_name = selected[0] cmds.textField(geometry_field, edit=True, text=geometry_name) print("Geometry Name:", geometry_name) else: cmds.textField(geometry_field, edit=True, text="") print("No geometry selected.") def store_head_joint_name(*args): global head_joint_field selected = cmds.ls(selection=True) if selected: head_joint_name = selected[0] cmds.textField(head_joint_field, edit=True, text=head_joint_name) print("Head Joint Name:", head_joint_name) else: cmds.textField(head_joint_field, edit=True, text="") print("No head joint selected.") def store_jaw_joint_name(*args): global jaw_joint_field selected = cmds.ls(selection=True) if selected: jaw_joint_name = selected[0] cmds.textField(jaw_joint_field, edit=True, text=jaw_joint_name) print("Jaw Joint Name:", jaw_joint_name) else: cmds.textField(jaw_joint_field, edit=True, text="") print("No jaw joint selected.") def create_upper_lip_edge(): selected_edges = cmds.ls(selection=True, flatten=True) curves = cmds.polyToCurve(form=2, degree=1, ch=False) curve = cmds.rename('upr_lip_crv') cmds.rebuildCurve('upr_lip_crv',rpo=0,ch=1,rt=0,end=1,kr=0,kcp=1,kep=1,kt=0,d=3,tol=0.01) cmds.rename('upr_lip_bound_crv') cmds.delete('upr_lip_bound_crv', constructionHistory = True) cmds.duplicate() cmds.rename('upr_lip_sticky_crv') cmds.duplicate() cmds.rename('upr_lip_wire_crv') head_joint_name = cmds.textField(head_joint_field, query=True, text=True) blendshape_node = cmds.blendShape('upr_lip_bound_crv','upr_lip_sticky_crv', 'upr_lip_wire_crv', automatic=True)[0] cmds.rename(blendshape_node, 'upperLip_wire_bShape') list = [('upr_lip_crv'),('upr_lip_bound_crv'),('upr_lip_sticky_crv')] for each in list: cmds.setAttr(each+'.visibility',0) cmds.setAttr('upperLip_wire_bShape.upr_lip_bound_crv',1) cmds.setAttr('upperLip_wire_bShape.upr_lip_sticky_crv',1) cmds.addAttr(head_joint_name, longName="Lf_Sticky_Lips", attributeType='double', minValue=0, maxValue=10, defaultValue=0) cmds.setAttr(head_joint_name + '.Lf_Sticky_Lips', keyable=True) cmds.addAttr(head_joint_name, longName="Rt_Sticky_Lips", attributeType='double', minValue=0, maxValue=10, defaultValue=0) cmds.setAttr(head_joint_name + '.Rt_Sticky_Lips', keyable=True) def create_lower_lip_edge(): selected_edges = cmds.ls(selection=True, flatten=True) curves = cmds.polyToCurve(form=2, degree=1, ch=False) curve = cmds.rename('lwr_lip_crv') cmds.rebuildCurve('lwr_lip_crv',rpo=0,ch=1,rt=0,end=1,kr=0,kcp=1,kep=1,kt=0,d=3,tol=0.01) cmds.rename('lwr_lip_bound_crv') cmds.delete('lwr_lip_bound_crv', constructionHistory = True) cmds.duplicate() cmds.rename('lwr_lip_sticky_crv') cmds.duplicate() cmds.rename('lwr_lip_wire_crv') blendshape_node = cmds.blendShape('lwr_lip_bound_crv','lwr_lip_sticky_crv', 'lwr_lip_wire_crv', automatic=True)[0] cmds.rename(blendshape_node, 'lowerLip_wire_bShape') list = [('lwr_lip_crv'),('lwr_lip_bound_crv'),('lwr_lip_sticky_crv')] for each in list: cmds.setAttr(each+'.visibility',0) cmds.setAttr('lowerLip_wire_bShape.lwr_lip_bound_crv',1) cmds.setAttr('lowerLip_wire_bShape.lwr_lip_sticky_crv',1) def build_lip_setup(): head_joint_name = cmds.textField(head_joint_field, query=True, text=True) lf_main_attr = (head_joint_name +".Lf_Sticky_Lips") rt_main_attr = (head_joint_name +".Rt_Sticky_Lips") upr_cv_count = cmds.getAttr('upr_lip_wire_crv.degree') + cmds.getAttr('upr_lip_wire_crv.spans') - 1 lwr_cv_count = cmds.getAttr('lwr_lip_wire_crv.degree') + cmds.getAttr('lwr_lip_wire_crv.spans') - 1 lip_val_list = [upr_cv_count, lwr_cv_count] lip_name_list = ['upperLip', 'lowerLip'] name_counter = 0 for each in lip_val_list: half_val = (each / 2) + 1 total_val = each + 1 div_val = 10.0 / half_val counter = 0 while(counter<half_val): lip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + str(counter+1) + '_setRange') cmds.setAttr(lip_sr + '.oldMaxX', (div_val * (counter+1))) cmds.setAttr(lip_sr + '.oldMinX', (div_val * counter)) cmds.setAttr(lip_sr + '.maxX', 0) cmds.setAttr(lip_sr + '.minX', 1) if counter == (half_val - 1): cmds.setAttr(lip_sr + '.minX', 0.5) cmds.connectAttr(lf_main_attr, lip_sr + '.valueX', f=True) lip_flip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='lf_' + lip_name_list[name_counter] + '_flip' + str(counter+1) + '_setRange') cmds.setAttr(lip_flip_sr + '.oldMaxX', 1) if counter == (half_val - 1): cmds.setAttr(lip_flip_sr + '.oldMaxX', 0.5) cmds.setAttr(lip_flip_sr + '.oldMinX', 0) cmds.setAttr(lip_flip_sr + '.maxX', 0) cmds.setAttr(lip_flip_sr + '.minX', 1) if counter == (half_val - 1): cmds.setAttr(lip_flip_sr + '.minX', 0.5) cmds.connectAttr(lip_sr + '.outValueX', lip_flip_sr + '.valueX', f=True) if counter == (half_val - 1): mid_pma = cmds.shadingNode( 'plusMinusAverage', asUtility=True, n='ct_' + lip_name_list[name_counter] + str(counter+1) + '_plusMinusAverage') cmds.connectAttr(lip_sr + '.outValueX', mid_pma + '.input2D[0].input2Dx', f=True) cmds.connectAttr(lip_flip_sr + '.outValueX', mid_pma + '.input2D[0].input2Dy', f=True) else: cmds.connectAttr(lip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(counter) + ']', f=True) cmds.connectAttr(lip_flip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(counter) + ']', f=True) counter = counter + 1 #div_val = 10.0 / 39 counter = half_val - 1 rev_counter = half_val while(counter<total_val): lip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='rt_' + lip_name_list[name_counter] + str(counter+1) + '_setRange') cmds.setAttr(lip_sr + '.oldMaxX', (div_val * rev_counter)) cmds.setAttr(lip_sr + '.oldMinX', (div_val * (rev_counter-1))) cmds.setAttr(lip_sr + '.maxX', 0) cmds.setAttr(lip_sr + '.minX', 1) if counter == (half_val - 1): cmds.setAttr(lip_sr + '.minX', 0.5) cmds.connectAttr(rt_main_attr, lip_sr + '.valueX', f=True) lip_flip_sr = cmds.shadingNode( 'setRange', asUtility=True, n='rt_' + lip_name_list[name_counter] + '_flip' + str(counter+1) + '_setRange') cmds.setAttr(lip_flip_sr + '.oldMaxX', 1) if counter == (half_val - 1): cmds.setAttr(lip_flip_sr + '.oldMaxX', 0.5) cmds.setAttr(lip_flip_sr + '.oldMinX', 0) cmds.setAttr(lip_flip_sr + '.maxX', 0) cmds.setAttr(lip_flip_sr + '.minX', 1) if counter == (half_val - 1): cmds.setAttr(lip_flip_sr + '.minX', 0.5) cmds.connectAttr(lip_sr + '.outValueX', lip_flip_sr + '.valueX', f=True) if counter == (half_val - 1): cmds.connectAttr(lip_sr + '.outValueX', mid_pma + '.input2D[1].input2Dx', f=True) cmds.connectAttr(lip_flip_sr + '.outValueX', mid_pma + '.input2D[1].input2Dy', f=True) cmds.connectAttr(mid_pma + '.output2Dx', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(int(counter)) + ']', f=True) cmds.connectAttr(mid_pma + '.output2Dy', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(int(counter)) + ']', f=True) else: cmds.connectAttr(lip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[0].targetWeights[' + str(int(counter)) + ']', f=True) cmds.connectAttr(lip_flip_sr + '.outValueX', lip_name_list[name_counter] + '_wire_bShape.inputTarget[0].inputTargetGroup[1].targetWeights[' + str(int(counter)) + ']', f=True) counter = counter + 1 rev_counter = rev_counter - 1 name_counter = name_counter + 1 upr_lip_wire_crv1 = cmds.duplicate("upr_lip_wire_crv", rr=True, name="upr_lip_wire_crv1")[0] upr_lip_wire_crv2 = cmds.duplicate("upr_lip_wire_crv", rr=True, name="upr_lip_wire_crv2")[0] cmds.xform(upr_lip_wire_crv1, cp=True) cmds.xform(upr_lip_wire_crv2, cp=True) cmds.setAttr(upr_lip_wire_crv1 + ".translateZ", 0.2) cmds.setAttr(upr_lip_wire_crv2 + ".translateZ", -0.2) lofted_surface = cmds.loft(upr_lip_wire_crv2, upr_lip_wire_crv1, ch=True, u=1, c=0, ar=True, d=3, ss=1, rn=0, po=0, rsn=True)[0] cmds.rename('upperLip_ribbon') cmds.delete('upr_lip_wire_crv1') cmds.delete('upr_lip_wire_crv2') lwr_lip_wire_crv1 = cmds.duplicate("lwr_lip_wire_crv", rr=True, name="lwr_lip_wire_crv1")[0] lwr_lip_wire_crv2 = cmds.duplicate("lwr_lip_wire_crv", rr=True, name="lwr_lip_wire_crv2")[0] cmds.xform(lwr_lip_wire_crv1, cp=True) cmds.xform(lwr_lip_wire_crv2, cp=True) cmds.setAttr(lwr_lip_wire_crv1 + ".translateZ", 0.2) cmds.setAttr(lwr_lip_wire_crv2 + ".translateZ", -0.2) lofted_surface = cmds.loft(lwr_lip_wire_crv2, lwr_lip_wire_crv1, ch=True, u=1, c=0, ar=True, d=3, ss=1, rn=0, po=0, rsn=True)[0] cmds.rename('lowerLip_ribbon') cmds.delete('lwr_lip_wire_crv1') cmds.delete('lwr_lip_wire_crv2') #upper lip num_spans_u = cmds.getAttr('upperLip_ribbon.spansU') for u in range(num_spans_u + 1): cmds.select('upperLip_ribbon.sf[{}][0]'.format(u), add=True) cmds.Rivet() uvPinOut = cmds.ls(sl=True) uvPin = uvPinOut.pop(0) pinOutput_objects = cmds.ls("pinOutput*", type="transform") pinOutput_objects.sort() index = 1 for obj in pinOutput_objects: new_name = "uprLipRivet{}".format(index) cmds.rename(obj, new_name) index += 1 cmds.select(clear=1) locators = cmds.ls('uprLipRivet*', type='transform') joints = [] for locator in locators: position = cmds.xform(locator, query=True, translation=True, worldSpace=True) joint = cmds.joint(position=position, name=locator.replace("uprLipRivet", "uprLipJoint")) joints.append(joint) joints = cmds.ls('uprLipJoint*', type='joint') for joint in joints: parent = cmds.listRelatives(joint, parent=True) if parent and parent[0] != 'world': cmds.parent(joint, world=True) locators = cmds.ls('uprLipRivet*', type='transform') joint = cmds.ls('uprLipJoint*', type='joint') for locator, joint in zip(locators, joints): cmds.parentConstraint(locator, joint, maintainOffset=True) #lower lip cmds.select(clear=1) num_spans_u = cmds.getAttr('lowerLip_ribbon.spansU') for u in range(num_spans_u + 1): cmds.select('lowerLip_ribbon.sf[{}][0]'.format(u), add=True) cmds.Rivet() uvPinOut = cmds.ls(sl=True) uvPin = uvPinOut.pop(0) pinOutput_objects = cmds.ls("pinOutput*", type="transform") pinOutput_objects.sort() index = 1 for obj in pinOutput_objects: new_name = "lwrLipRivet{}".format(index) cmds.rename(obj, new_name) index += 1 cmds.select(clear=1) locators = cmds.ls('lwrLipRivet*', type='transform') joints = [] for locator in locators: position = cmds.xform(locator, query=True, translation=True, worldSpace=True) joint = cmds.joint(position=position, name=locator.replace("lwrLipRivet", "lwrLipJoint")) joints.append(joint) joints = cmds.ls('lwrLipJoint*', type='joint') for joint in joints: parent = cmds.listRelatives(joint, parent=True) if parent and parent[0] != 'world': cmds.parent(joint, world=True) locators = cmds.ls('lwrLipRivet*', type='transform') joint = cmds.ls('lwrLipJoint*', type='joint') for locator, joint in zip(locators, joints): cmds.parentConstraint(locator, joint, maintainOffset=True) cmds.select('upperLip_ribbon', replace=True) cmds.select('upr_lip_wire_crv', add=True) wire_deformer = cmds.wire('upperLip_ribbon',n='upperLipStickyWire', wire=cmds.ls(selection=True)[1]) cmds.setAttr('upperLipStickyWire.dropoffDistance[0]', 10) cmds.select('lowerLip_ribbon', replace=True) cmds.select('lwr_lip_wire_crv', add=True) wire_deformer = cmds.wire('lowerLip_ribbon',n='lowerLipStickyWire', wire=cmds.ls(selection=True)[1]) cmds.setAttr('lowerLipStickyWire.dropoffDistance[0]', 10) num_cvs = cmds.getAttr('lwr_lip_bound_crv.degree') + cmds.getAttr('lwr_lip_bound_crv.spans') + 1 num_joints = num_cvs // 4 for i in range(num_joints): cv_index = i * 4 cv_position = cmds.pointPosition('lwr_lip_bound_crv.cv[{}]'.format(cv_index), world=True) joint = cmds.joint(position=cv_position, name='lwr_lip_joint_{}'.format(i+1)) last_cv_position = cmds.pointPosition('lwr_lip_bound_crv.cv[{}]'.format(num_cvs - 1), world=True) last_joint = cmds.joint(position=last_cv_position, name='lwr_lip_joint_{}'.format(num_joints + 1)) joints_to_unparent = cmds.ls('lwr_lip_joint_1', dag=True, type='joint') for joint in joints_to_unparent: cmds.parent(joint, world=True) num_cvs = cmds.getAttr('upr_lip_bound_crv.degree') + cmds.getAttr('upr_lip_bound_crv.spans') + 1 num_joints = num_cvs // 4 for i in range(num_joints): cv_index = i * 4 cv_position = cmds.pointPosition('upr_lip_bound_crv.cv[{}]'.format(cv_index), world=True) joint = cmds.joint(position=cv_position, name='upr_lip_joint_{}'.format(i+1)) last_cv_position = cmds.pointPosition('upr_lip_bound_crv.cv[{}]'.format(num_cvs - 1), world=True) last_joint = cmds.joint(position=last_cv_position, name='upr_lip_joint_{}'.format(num_joints + 1)) joints_to_unparent = cmds.ls('upr_lip_joint_1', dag=True, type='joint') for joint in joints_to_unparent: cmds.parent(joint, world=True) cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_2', 'lwr_lip_joint_3', 'lwr_lip_joint_4', 'lwr_lip_joint_5', 'lwr_lip_joint_6', 'lwr_lip_joint_7', 'lwr_lip_bound_crv'], replace=True) cmds.skinCluster(name='lwrLipSkinCrv') cmds.select(['lwr_lip_joint_1', 'upr_lip_joint_2', 'upr_lip_joint_3', 'upr_lip_joint_4', 'upr_lip_joint_5', 'upr_lip_joint_6', 'lwr_lip_joint_7', 'upr_lip_bound_crv'], replace=True) cmds.skinCluster(name='uprLipSkinCrv') cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_7', 'lwr_lip_sticky_crv'], replace=True) cmds.skinCluster(name='lwrLipStickySkinCrv') cmds.select(['lwr_lip_joint_1', 'lwr_lip_joint_7', 'upr_lip_sticky_crv'], replace=True) cmds.skinCluster(name='lwrLipStickySkinCrv') def create_circle_controller(name, size=1): circle = cmds.circle(name=name, ch=False, radius=size)[0] cmds.setAttr(circle+'.overrideEnabled',1) cmds.setAttr(circle + ".overrideColor" ,18) return circle def create_group(name): return cmds.group(name=name, empty=True) joint_names = ['lwr_lip_joint_1', 'lwr_lip_joint_2', 'lwr_lip_joint_3', 'lwr_lip_joint_4', 'lwr_lip_joint_5', 'lwr_lip_joint_6', 'lwr_lip_joint_7', 'upr_lip_joint_2', 'upr_lip_joint_3', 'upr_lip_joint_4', 'upr_lip_joint_5', 'upr_lip_joint_6'] for joint_name in joint_names: controller_name = joint_name.replace('_joint', '_ctrl') controller = create_circle_controller(controller_name) group_name = controller_name.replace('_ctrl', '_grp') controller_group = create_group(group_name) cmds.matchTransform(controller_group, joint_name, pos=True) cmds.parent(controller, controller_group) list = [('lwr_lip_ctrl_1'),('lwr_lip_ctrl_2'),('lwr_lip_ctrl_3'),('lwr_lip_ctrl_4'),('lwr_lip_ctrl_5'),('lwr_lip_ctrl_6'),('lwr_lip_ctrl_7'),('upr_lip_ctrl_2'),('upr_lip_ctrl_3'),('upr_lip_ctrl_4'),('upr_lip_ctrl_5'),('upr_lip_ctrl_6')] for each in list: cmds.setAttr(each+'.translateX',0) cmds.setAttr(each+'.translateY',0) cmds.setAttr(each+'.translateZ',0) controller_names = ['lwr_lip_ctrl_1','lwr_lip_ctrl_2','lwr_lip_ctrl_3','lwr_lip_ctrl_4','lwr_lip_ctrl_5','lwr_lip_ctrl_6','lwr_lip_ctrl_7','upr_lip_ctrl_2','upr_lip_ctrl_3','upr_lip_ctrl_4','upr_lip_ctrl_5','upr_lip_ctrl_6'] joint_names = ['lwr_lip_joint_1','lwr_lip_joint_2','lwr_lip_joint_3','lwr_lip_joint_4','lwr_lip_joint_5','lwr_lip_joint_6','lwr_lip_joint_7','upr_lip_joint_2','upr_lip_joint_3','upr_lip_joint_4','upr_lip_joint_5','upr_lip_joint_6'] for controller, joint in zip(controller_names, joint_names): cmds.parentConstraint(controller, joint, maintainOffset=True) list = [('lip_crv_grp'),('lip_ribbon_grp'),('lip_rivet_grp'),('lip_jnt_grp'),('lip_setup_grp')] for each in list: cmds.group(n=each,em=True) list = [('lwr_lip_joint_1'),('lwr_lip_joint_2'),('lwr_lip_joint_3'),('lwr_lip_joint_4'),('lwr_lip_joint_5'),('upr_lip_joint_2'),('upr_lip_joint_3'),('upr_lip_joint_4')] for each in list: cmds.parent(each,'lip_jnt_grp') list = ['upr_lip_wire_crv','lwr_lip_crv','lwr_lip_bound_crv','lwr_lip_sticky_crv','lwr_lip_wire_crv','upr_lip_crv','upr_lip_bound_crv','upr_lip_sticky_crv','upr_lip_wire_crvBaseWire','lwr_lip_wire_crvBaseWire'] for each in list: cmds.parent(each,'lip_crv_grp') list = [('lip_crv_grp','lip_setup_grp'),('lip_ribbon_grp','lip_setup_grp'),('lip_rivet_grp','lip_setup_grp'),('lip_jnt_grp','lip_setup_grp')] for each in list: cmds.parent(each[0],each[1]) cmds.setAttr('lip_setup_grp.visibility',0) cmds.parent('upperLip_ribbon','lip_ribbon_grp') cmds.parent('lowerLip_ribbon','lip_ribbon_grp') uprLipRivet_objects = cmds.ls('uprLipRivet*', type='transform') cmds.parent(uprLipRivet_objects,'lip_rivet_grp') lwrLipRivet_objects = cmds.ls('lwrLipRivet*', type='transform') cmds.parent(lwrLipRivet_objects,'lip_rivet_grp') lwrLipJoint_objects = cmds.ls('lwrLipJoint*', type='transform') cmds.parent(lwrLipJoint_objects,head_joint_name) uprLipJoint_objects = cmds.ls('uprLipJoint*', type='transform') cmds.parent(uprLipJoint_objects,head_joint_name) def build_inner_eyebrow_locator(*args): selection = cmds.ls(selection=True, flatten=True) if not selection: cmds.warning("Please select a vertex.") return vertex = selection[0] vertex_position = cmds.pointPosition(vertex, world=True) locator = cmds.spaceLocator(n='l_inr_eyebrow_loc')[0] cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator) def build_middle_eyebrow_locator(*args): selection = cmds.ls(selection=True, flatten=True) if not selection: cmds.warning("Please select a vertex.") return vertex = selection[0] vertex_position = cmds.pointPosition(vertex, world=True) locator = cmds.spaceLocator(n='l_mid_eyebrow_loc')[0] cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator) def build_outer_eyebrow_locator(*args): selection = cmds.ls(selection=True, flatten=True) if not selection: cmds.warning("Please select a vertex.") return vertex = selection[0] vertex_position = cmds.pointPosition(vertex, world=True) locator = cmds.spaceLocator(n='l_otr_eyebrow_loc')[0] cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator) def build_cheek_locator(*args): selection = cmds.ls(selection=True, flatten=True) if not selection: cmds.warning("Please select a vertex.") return vertex = selection[0] vertex_position = cmds.pointPosition(vertex, world=True) locator = cmds.spaceLocator(n='l_cheek_loc')[0] cmds.move(vertex_position[0], vertex_position[1], vertex_position[2], locator) def build_all(*args): list = [('l_inr_eyebrow_loc'),('l_mid_eyebrow_loc'),('l_otr_eyebrow_loc'),('l_cheek_loc')] for each in list: cmds.duplicate(each) list = [('l_inner_eyebrow_ctrl','l_inner_eyebrow_ctrl_grp'),('l_middle_eyebrow_ctrl','l_middle_eyebrow_ctrl_grp'),('l_outer_eyebrow_ctrl','l_outer_eyebrow_ctrl_grp'),('l_cheek_ctrl','l_cheek_ctrl_grp'),('r_inner_eyebrow_ctrl','r_inner_eyebrow_ctrl_grp'),('r_middle_eyebrow_ctrl','r_middle_eyebrow_ctrl_grp'),('r_outer_eyebrow_ctrl','r_outer_eyebrow_ctrl_grp'),('r_cheek_ctrl','r_cheek_ctrl_grp')] for each in list: circle = cmds.circle(n=each[0]) cmds.group(n=each[1]) list = [('l_inner_eyebrow_ctrl'),('l_middle_eyebrow_ctrl'),('l_outer_eyebrow_ctrl'),('l_cheek_ctrl'),('r_inner_eyebrow_ctrl'),('r_middle_eyebrow_ctrl'),('r_outer_eyebrow_ctrl'),('r_cheek_ctrl')] for each in list: cmds.setAttr(each + '.overrideEnabled',1) cmds.setAttr(each + ".overrideColor" ,18) list = [('l_inr_eyebrow_loc1','r_inr_eyebrow_loc'),('l_mid_eyebrow_loc1','r_mid_eyebrow_loc'),('l_otr_eyebrow_loc1','r_otr_eyebrow_loc'),('l_cheek_loc1','r_cheek_loc')] for each in list: cmds.rename(each[0],each[1]) cmds.group(n='r_eyebrow_cheek_loc_grp',em=True) list = [('r_inr_eyebrow_loc'),('r_mid_eyebrow_loc'),('r_otr_eyebrow_loc'),('r_cheek_loc')] for each in list: cmds.parent(each,'r_eyebrow_cheek_loc_grp') cmds.setAttr('r_eyebrow_cheek_loc_grp.scaleX',-1) list = [('l_inr_eyebrow_loc','l_inner_eyebrow_ctrl_grp'),('l_mid_eyebrow_loc','l_middle_eyebrow_ctrl_grp'),('l_otr_eyebrow_loc','l_outer_eyebrow_ctrl_grp'),('l_cheek_loc','l_cheek_ctrl_grp'),('r_inr_eyebrow_loc','r_inner_eyebrow_ctrl_grp'),('r_mid_eyebrow_loc','r_middle_eyebrow_ctrl_grp'),('r_otr_eyebrow_loc','r_outer_eyebrow_ctrl_grp'),('r_cheek_loc','r_cheek_ctrl_grp')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) list = [('l_inr_eyebrow_jnt'),('l_mid_eyebrow_jnt'),('l_otr_eyebrow_jnt'),('l_cheek_jnt'),('r_inr_eyebrow_jnt'),('r_mid_eyebrow_jnt'),('r_otr_eyebrow_jnt'),('r_cheek_jnt')] for each in list: cmds.joint(n=each) list = [('l_inner_eyebrow_ctrl','l_inr_eyebrow_jnt'),('l_middle_eyebrow_ctrl','l_mid_eyebrow_jnt'),('l_outer_eyebrow_ctrl','l_otr_eyebrow_jnt'),('l_cheek_ctrl','l_cheek_jnt'),('r_inner_eyebrow_ctrl','r_inr_eyebrow_jnt'),('r_middle_eyebrow_ctrl','r_mid_eyebrow_jnt'),('r_outer_eyebrow_ctrl','r_otr_eyebrow_jnt'),('r_cheek_ctrl','r_cheek_jnt')] for each in list: forDel = cmds.parentConstraint(each[0],each[1],mo=False) cmds.delete(forDel) cmds.makeIdentity( 'l_inr_eyebrow_jnt', apply=True, translate=True, rotate=True ) list = [('l_inner_eyebrow_ctrl','l_inr_eyebrow_jnt'),('l_middle_eyebrow_ctrl','l_mid_eyebrow_jnt'),('l_outer_eyebrow_ctrl','l_otr_eyebrow_jnt'),('l_cheek_ctrl','l_cheek_jnt'),('r_inner_eyebrow_ctrl','r_inr_eyebrow_jnt'),('r_middle_eyebrow_ctrl','r_mid_eyebrow_jnt'),('r_outer_eyebrow_ctrl','r_otr_eyebrow_jnt'),('r_cheek_ctrl','r_cheek_jnt')] for each in list: cmds.parentConstraint(each[0],each[1],mo=False) cmds.group(n='eyebrow_cheek_grp',em=True) list = [('l_inr_eyebrow_jnt'),('l_mid_eyebrow_jnt'),('l_otr_eyebrow_jnt'),('l_cheek_jnt'),('r_inr_eyebrow_jnt'),('r_mid_eyebrow_jnt'),('r_otr_eyebrow_jnt'),('r_cheek_jnt')] for each in list: cmds.parent(each,'eyebrow_cheek_grp') list = [('l_inr_eyebrow_loc'),('l_mid_eyebrow_loc'),('l_otr_eyebrow_loc'),('l_cheek_loc'),('r_eyebrow_cheek_loc_grp')] for each in list: cmds.delete(each) #------------------------------------------------------------------------------------------------# # ______________ _____ ___ _____ . _______ _____ # # | | \ \ / \ / / / \ | \ | | # # | __________| \ \ / \ / / / \ | \ | | # # | | \ \ / \ / / / \ | |\ \ | | # # | |__________ \ \ / . \ / / / . \ | | \ \ | | # # | | \ \ / / \ \ / / / / \ \ | | \ \ | | # # | __________| \ \/ / \ \/ / / /___\ \ | | \ \ | | # # | | \ / \ / / _____ \ | | \ \| | # # | |__________ \ / \ / / / \ \ | | \ | # # | | \ / \ / / / \ \ | | \ | # # |______________| \__/ \__/ /___/ \___\ |___| \_____| # # # #------------------------------------------------------------------------------------------------# ui()
Comments